hackertyper.net


11

소개

hackertyper.net 은 입력 한 문자 당 3 자 속도로 입력 할 때 Linux 커널의 암호화 섹션에서 복잡한 코드를 화면에 출력하여 "미디어 해킹"을 시뮬레이션하는 웹 사이트입니다.

도전

프로그램 / 함수는 파일을 명령 줄 인수로 받거나 파일 경로를 하드 코딩했거나 [파일에있을 것] 텍스트를 명령 줄이나 함수 인수로 받아 들여야 하며 hackertyper.net을 모방 해야합니다. STDIN 등을 통해 수신 된 각 파일에 대해 파일에서 화면에 3 개의 문자 (STDOUT 또는 이와 동등한)를 출력합니다.

EOF에 도달하면 프로그램은 파일의 처음부터 문자를 다시 출력하기 시작합니다 (랩).

명세서

간단하게하기 위해 STDIN이 이미 버퍼 없음 및 에코 모드 없음으로 설정되었다고 가정 할 수 있습니다. 이는 입력을 프로그램에 전달하기 전에 사용자가 enter를 누를 때까지 기다리지 않고 입력 한 문자를 표시하지 않습니다.

파일에는 개행이 포함될 수 있지만 입력 에는 개행이 포함되지 않습니다 .

이것이 어떻게 작동하는지 보여주는 C (골프 아님)로 작성된 작은 예제는 this를 참조 하십시오 .

녹색 텍스트와 검은 색 배경은 필요하지 않습니다.

입력 및 출력 예

파일:

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

입력:

hello world

산출:

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

파일:

hello

입력:

hello world

산출:

hellohellohellohellohellohellohel

1
1. 함수가 허용됩니까 (두 문자열을 인수로 사용하고 다른 문자열을 반환)? 2. 스펙은 모든 입력에 대해 3 개의 문자를 출력하라고 말하지만 예제에서는 모든 입력에 대해 1 개의 문자 만 출력합니다.
Doorknob

1
@Doorknob 1. 그렇습니다. 2. 실수였습니다.
Majora320

우리가 파일로의 파일 정보를 가지고, 또는 우리는 함수의 인수 또는 동등한를 통해 정보를받을 수 있습니까? 필요한 경우 해당 파일의 이름은 무엇입니까? 스크립트와 다른 디렉토리에 있거나 스크립트와 같은 디렉토리에 있습니까?
R. Kap


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.

나는 항상 "금형"이 무엇을 의미하는지 궁금했습니다.
Leaky Nun

18
@KennyLau 빵을 버릴 때가되었다고 생각합니다.
Alex A.

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

자바 스크립트 (ES6), 40 바이트

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

s데이터 문자열은 어디에 t있고 사용자 문자열입니다. 길이 s가 비어 있지 않다고 가정 l하고 길이가 최소한 l첫 번째 l문자를 반환 할 수 있도록 길이를 적어도 l반복합니다 t.


3

하스켈, 25 바이트

첫 번째 논거는 "타이핑 된"것이고, 두 번째 논점은 표시 할 것입니다

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

또는 더 나은 가독성을 위해 비점 유형입니다.

h a=take(3*length a).cycle

무엇입니까 cycle?
CalculatorFeline

@CatsAreFluffy cycle는 목록을 가져 와서 무한 반복합니다. 예 :cycle "hi" == "hihihihi..
Michael Klein

당신은 고려 했습니까 $?
CalculatorFeline

@CatsAreFluffy 어디서 사용할지 잘 모르겠습니다. 어떻게 생각하십니까?
Michael Klein

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)가 입력 한 문자 인 두 개의 인수를 취하는 익명 함수입니다 . 그러면이 세 문자마다 포함되는 발전기 생성 g모든 인덱싱에 의해 발견되며, i다음 i+3문자를 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.size0이됩니다)

$><<($<.read*s=3*STDIN.read.size)[0,s]
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.