hackertyper.net

11

Вступление

hackertyper.net - это веб-сайт, который имитирует «взлом» (как его изображает медиа), выводя сложный код из крипто-раздела ядра Linux на экран, когда вы печатаете со скоростью 3 символа на каждый введенный.

Вызов

Ваша программа / функция должна либо принять файл в качестве аргумента командной строки, либо жестко закодировать путь к файлу, либо принять текст [который будет в файле] в качестве аргумента командной строки или функции, и имитировать hackertyper.net выводя 3 символа на экран (STDOUT или эквивалент) из файла для каждого из них, полученных через STDIN или эквивалент.

Как только EOF достигнут, программа должна снова начать вывод символов из начала файла (перенос).

Спекуляции

Для простоты вы можете предположить, что STDIN уже был установлен без буфера и без режима эха, то есть он не ждет, пока пользователь нажмет ввод, перед передачей ввода в вашу программу и без отображения введенных вами символов.

Файл может содержать символы новой строки, в то время как ввод не будет содержать строки .

Для небольшого примера, написанного на C (не игра в гольф), который демонстрирует, как это работает, посмотрите это .

Зеленый текст и черный фон не требуются.

Пример ввода и вывода

Файл:

#include <stdio.h>
int main() { }

Входные данные:

hello world

Выход:

#include <stdio.h>
int main() { }

Файл:

hello

Входные данные:

hello world

Выход:

hellohellohellohellohellohellohel
Majora320
источник
1
1. Разрешены ли функции (которые принимают две строки в качестве аргумента и возвращают другую строку)? 2. Ваша спецификация требует вывода трех символов для каждого ввода, но примеры выводят только один для каждого ввода.
Ручка двери
1
@ Doorknob 1. Да, и 2. Это была ошибка, исправлена.
Majora320
У нас есть взять информацию о файле в виде файла, или мы можем также получить эту информацию через аргумент функции или эквивалент? Если нам нужно, как будет называться этот файл? Будет ли он находиться в определенном каталоге вдали от наших сценариев или в том же каталоге, что и наши сценарии?
Р. Кап
1
Связанные с.
Мартин Эндер
3
Бонусы плохие. Кроме того, очень немногие получат штраф, и называть его «бонусом» непонятно.
CalculatorFeline

Ответы:

7

Желе , 4 байта

ẋ3ṁ@

Попробуйте онлайн!

Как это работает

ẋ3ṁ@    Main link. Arguments: s (input string), t (file string)

ẋ3      Repeat s three times.
  ṁ@    Mold; reshape t like the previous result.
        This repeats the elements of t over and over until the length matches that
        of s repeated thrice.
Деннис
источник
Я всегда задавался вопросом, что означает «плесень» ...
Утренняя монахиня
18
@KennyLau Я думаю, это значит, что пришло время выбросить хлеб.
Алекс А.
4

J 7 байт

$~(3*#)

Принимает два аргумента: текст для повторения и вводимый пользователем текст.

использование

Вводимый текст форматируется там, где ,означает присоединение, и LFявляется символом новой строки.

   f =: $~(3*#)
   ('#include <stdio.h>', LF, 'int main() { }') f 'hello world'
#include <stdio.h>
int main() { }
   'hello' f 'hello world'
hellohellohellohellohellohellohel

Попробуйте онлайн. (Tryj.tk)

миль
источник
4

Желе, 9 байт

⁴L×3
ẋ¢ḣ¢

Попробуйте онлайн!

⁴L×3     Define nilad as ¢:

 L       length of
⁴        second argument
  ×3     tripled


ẋ¢ḣ¢     Main chain:

         the first argument (implicit)
ẋ        repeated
 ¢       ¢ many times
  ḣ¢     then get the first ¢ characters of it.
Дрянная Монахиня
источник
2
Я полагаю, вы немного "желе" из ответа Денниса?
Деннис ван Гилс
Желе это зло ..
CalculatorFeline
3

JavaScript (ES6), 40 байт

(s,t)=>s.repeat(l=t.length*3).slice(0,l)

Где sстрока данных и строка tпользователя. Предполагается, что sон непустой и повторяет это lвремя, чтобы гарантировать, что его длина хотя бы lтак, чтобы он мог вернуть первые lсимволы, где lв три раза больше длины t.

Нил
источник
3

Haskell, 25 байт

Первый аргумент - это то, что «напечатано», второй - источник для отображения

(.cycle).take.(3*).length

Или неточечное, для (возможно) лучшей читабельности:

h a=take(3*length a).cycle
Майкл Кляйн
источник
Что cycle?
CalculatorFeline
@CatsAreFluffy cycleберет список и повторяет его бесконечно. Напримерcycle "hi" == "hihihihi..
Майкл Кляйн
Вы рассматривали $?
CalculatorFeline
@CatsAreFluffy Я не уверен, где бы я это использовал, о чем ты думал?
Майкл Кляйн
3

Python 3.5, 77 65 63 байта:

lambda g,f:''.join((g*len(f))[i:i+3]for i in range(0,len(f)*3,3))

Достаточно просто. Анонимная функция, которая принимает два аргумента: первый - «file» ( g), а второй - символы, введенные пользователем ( f). Затем это создает генератор, содержащий каждые три символа in g, которые найдены путем индексации для каждого iи затем i+3символов in g, где iнаходится диапазон 0=>(length of f)*3. Наконец, он возвращает каждый объект в генераторе, объединенный в одну большую строку. Вы вызываете эту функцию, присваивая ей переменную, а затем вызывая переменную, заключенную в print()выражение. Так что, если имя функции было q, она будет выполнена как print(q(<byte array here>)).

Попробуйте онлайн! (Repl.it)

Р. Кап
источник
2

05AB1E , 7 байтов

Код:

3×g©×®£

Объяснение:

3×        # Multiply the input string three times.
  g       # Take the length.
   ©      # Copy that to the register.
    ×     # Multiply by the second input.
     ®    # Retrieve the length from the register.
      £   # Only keep [0:length * 3] from the new string.

Попробуйте онлайн! ,

Аднан
источник
2

Рубин, 39 байт

В Ruby $<считывает из предоставленного файла аргументы командной строки, а не $stdinесли он задан. (Если вы забыли поставить файл, вы получите чистый выход , потому что он читает все из $stdinв $<.readи , таким образом , STDIN.read.sizeбудет 0.)

$><<($<.read*s=3*STDIN.read.size)[0,s]
Значение чернил
источник