푸쉬 , 20 17 16 또는 13 바이트
허용되는 내용에 따라 두 가지 솔루션이 있습니다.
16 바이트 :
@$LT1U&Wm:v;O"cI
명령 행에 인수를 제공하십시오 $ pushy hiccup.pshy 'hiccupinator'. 이것은 각각의 '딸꾹질'다음에 줄 바꿈 문자가 인쇄됩니다. 고장은 다음과 같습니다.
% Implicit: input on stack as charcodes
@ % Reverse input, so chars are pulled from start
$ I % While there are items on stack:
T1U % Push a random number, 1-10
&W % Wait that many seconds
L m: % min(time waited, chars left) times do:
v; % Pull a char from the input.
O"c % Print & delete pulled chars
13 바이트 :
위의 답변을 코딩하는 동안이 훨씬 짧은 솔루션을 생각해 냈습니다.
N@$L1TU&Wm:'.
비슷한 작업을 수행하지만 더 적은 바이트로 새 문자열을 구성하는 대신 문자열에서 직접 인쇄합니다. 이것은N 프로그램 시작시 줄 바꿈 문자를 방지 . 그렇지 않으면 각 문자가 줄 바꿈 문자가됩니다.
그러나 이것을 테스트하는 동안 버그 stdout가 있음을 알았습니다. 라인 버퍼링되어 프로그램이 전체 길이를 기다린 다음 딸꾹질 된 문자열을 표시합니다.
간단한 추가 를 통해 최신 커밋 에서이 문제를 해결했습니다 ..flush() 이 기술적으로 단지 버그를 수정, 언어에 새로운 기능을 추가하는 것이 아니라, 당신의 계정에이 대답을하지 않으면 이해 :) -
분석은 다음과 같습니다.
% Implicit: input on stack as charcodes
N % Set trailing newlines to False
@ % Reverse stack (so the charcodes are pulled off in order)
$ % While there are items left to print:
L % Push stack length
1TU % Push a random number 1-10
&W % Wait that amount of time
m: % min(time waited, chars left) times do:
'. % Pop and print last char