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

1
1. Разрешены ли функции (которые принимают две строки в качестве аргумента и возвращают другую строку)? 2. Ваша спецификация требует вывода трех символов для каждого ввода, но примеры выводят только один для каждого ввода.
Ручка двери

1
@ Doorknob 1. Да, и 2. Это была ошибка, исправлена.
Majora320

У нас есть взять информацию о файле в виде файла, или мы можем также получить эту информацию через аргумент функции или эквивалент? Если нам нужно, как будет называться этот файл? Будет ли он находиться в определенном каталоге вдали от наших сценариев или в том же каталоге, что и наши сценарии?
Р. Кап


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)




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]
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.