컴퓨터 통역사 골프


9

소개

컴퓨팅은 난해한 농담 언어입니다.

로부터 esolangs 항목 :

계산에는 필요한 구문이 없으며 모든 문제를 해결할 수있는 힘이 있습니다. 인간의 언어 (영어, 스페인어, 라틴어 등), 프로그래밍 언어 (C ++, Java, brainfuck 등) 또는 생각할 수있는 모든 종류의 데이터를 해석하는 것이 현명합니다. 유일한 몰락은 I / O가 전혀 없다는 것입니다.

일부 예제 프로그램

Hello World

기본적인 Hello World 프로그램

What is love?

사랑은 (아기가 나를 아프게하지 않았다)이었다고 결정합니다.

When will we ever graduate?

이 사이트가 베타에서 벗어날 정확한 날짜를 결정합니다.

도전

당신의 임무는 전체 컴퓨팅 통역사를 작성하는 것입니다. 이것은 꽤 어렵게 들리지만 Compute에는 절대적으로 I / O가 없다는 것을 명심하십시오. 따라서 인터프리터는 입력 프로그램의 모든 에 대해 1 초 동안 잠자고이 \n\nDone.후에 출력 합니다 (이것은 I / O가없는 유일한 예외입니다).

이 사이트 의 하단에서 공식 통역사를 찾을 수 있습니다 .
공식 통역사는 주어진 소스 코드의 모든 문자에 대해 1 초간 일시 정지됩니다. 의미있는 질문으로 통역사를 테스트하는 동안 대기 시간이 길어지는 것을 피하기 위해이 과제에 계속 대응하고 있습니다 .

규칙

  • 입력에 a로 구분 된 여러 줄이 포함될 수 있습니다 \n. 항상 한 줄 이상이 있어야합니다.
  • 공식 구현과 달리 파일을 입력으로 사용할 필요는 없습니다. 원하는 입력 형식으로 Compute 프로그램을 사용할 수 있습니다.
  • 허용되는 유일한 출력은입니다 \n\nDone.. 후행 줄 바꿈이 허용됩니다.
  • 기능 또는 전체 프로그램이 허용됩니다.
  • 입 / 출력의 기본 규칙 .
  • 표준 허점이 적용됩니다.
  • 이것은 바이트 수가 가장 적습니다. Tiebreaker는 이전에 제출되었습니다.

1
필자에게 이것을
Luis Mendo

14
글쎄, 우리는 졸업 할 때 알려주는 프로그램이 필요하지 않습니다. 우리는 이미 그것이 26 일이라는 것을 알고 있습니다.
Doorknob

7
몇 세기의 @Doorknob?
msh210

1
@DenkerAffe 도전이 언어와 정확히 일치하지 않는다는 것을 분명히해야한다고 생각합니다.
PurkkaKoodari

9
@ msh210, 아니, 그것은 세기입니다.
피터 테일러

답변:


5

05AB1E , 16 15 14 13 바이트

암호:

[Ig>#w’

D€µ.

설명:

[        # Starts an infinite loop
 I       # Input string
  g>     # Length + 1
    #    # If equal to 1, break out of the loop
     w   # Wait 1 second

이 부분은 다음과 같습니다 "\n\nDone.".

      ’  # Push "\n\nDone." on top of the stack

D€µ.     # The compressed string is ended implicitly
         # Implicit, print top of the stack

온라인으로 사용해보십시오!

CP-1252 인코딩을 사용합니다 .


4

Oration , 117 바이트

I need time!
To iterate, input().
Inhale.
Now sleep(1).
Backtracking.
Boring,
boring.
Listen!
Capture Done.
Carry on!

이것을 설명합시다. 먼저 이것은 다음으로 번역됩니다.

import time
while input():
    time.sleep(1)
print("\n")
print("\n")
print("Done")

아직도 혼란스러워? 이것을 다음과 같이하자 :

I need time!

모듈을 가져옵니다 time.

To iterate, input().

조건이 인 while 루프입니다 input().

Inhale.

우리의 프로그램은 이제 숨을 쉬어야하며 inhale건강은 떨어지지 만 골퍼입니다.

Now sleep(1).

Now가장 최근에 가져온 모듈을 가져 와서 추가 .sleep(1)합니다.

Backtracking.

while 루프를 종료합시다.

Boring,
boring.

두 줄 바꿈을 인쇄합니다.

Listen!

문자열 캡처를 시작합니다.

Capture Done.

Done.캡처 한 문자열에 추가합니다 .

Carry on!

문자열 캡처를 완료합니다.


3
재미있는 언어처럼 보입니다. 통역사 + 문서에 대한 링크를 추가 하시겠습니까?
Denker

@DenkerAffe 문서와 통역사는 모두 방금 편집 한 제목에서 찾을 수 있습니다.
Conor O'Brien

@ 코너 감사합니다, 그것을 볼 것입니다. :)
Denker

4

자바 스크립트 쉘 REPL, 38 바이트

프로그램을 문자열 인수로 승인하고 결과를 리턴하는 함수로서 :

s=>sleep(s.split`
`.length)||`

Done.`

함수가 행 배열 형식으로 입력을 승인 할 수 있거나 문자 당 1 초 동안 대기해야하는 경우 29 바이트 :

s=>sleep(s.length)||`

Done.`

프로그램과 비슷하고 명시 적으로 완료를 인쇄해야하는 경우 34 바이트 :

s=>sleep(s.length)||print`

Done.`

이것은 독립형 Spidermonkey 인터프리터에서 작동합니다.


4

자바 스크립트 ES6, 46 45 바이트

a=>setTimeout(x=>alert`

Done.`,a.length*1e3)

1 바이트 저장을위한 ӍѲꝆΛҐӍΛПҒЦꝆ 덕분에

배열을 입력으로 가정합니다.

양쪽으로 ӍѲꝆΛҐӍΛПҒЦꝆedc65는 지적 다음을 쓸 수 있지만, 그것은하지 않습니다 어떤 바이트 저장 :

a=>setTimeout("alert`\n\nDone`",a.length*1e3)

1
1e3보다 낫다 10e2.
Mama Fun Roll

또한 화살표 기능을 문자열로 변환하십시오. 참조 codegolf.stackexchange.com/a/60960/41247
엄마 재미 롤을

@ ӍѲꝆΛҐӍΛПҒЦꝆ 그게 효과가 있을지 모르겠습니다. 그는 이미 템플릿 문자열을 가지고 있기 때문에이를 피해야합니다
Cyoce

@ ӍѲꝆΛҐӍΛПҒЦꝆ 1e3 is better than 10e2는 내가 그것을 놓쳤다는 것을 믿을 수 없습니다.
andlrc

@ edc65 당신은 그것에 대해 이야기 한 첫 번째가 아니며, ӍѲꝆΛҐӍΛПҒЦꝆ도 언급했습니다. :-)
andlrc

4

배쉬 + 코어 유틸리티, 28

sleep `wc -l`
echo "

Done."

모든 라인에 대해 1 초간 대기합니다. wc -c모든 바이트 또는 wc -m모든 문자에 대신 사용하십시오 .


1
추가 줄 바꿈이 없어야합니까?
user253751

@immibis 예-당신 말이 맞아요.
Digital Trauma

3

Pyth, 15 14 바이트

.dcl.z1b"Done.

( 온라인으로 시도해 볼 수는 있지만 실제로 그렇게 할 필요는 없습니다.)


당신은 이후 다른 기간에 Done누군가에게 같은 말을했기 때문에 꽤 재밌습니다. : P
Denker

@DenkerAffe 감사합니다. (바이트 수는 맞습니다.)
PurkkaKoodari

@muddyfish 그 도전은 말합니다. 공식 통역사는 현명하게 진행되었지만 대기 시간을 피하기 위해 줄로 변경했습니다.
Denker

@DenkerAffe 이제 우리의 항목은 정확히 동일합니다. 누가 보관해야합니까? 나는 그들이 정확했기 때문에 Pietu1998을 가정 할 것입니다
Blue

b가 필요합니까?
busukxuan

2

펄, 21 + 1 = 22 바이트

sleep 1}{$_="\n\nDone."

-p플래그가 필요합니다 :

$ perl -pe'sleep 1}{$_="\n\nDone."' <<< $'a\nb\nc'


Done.              

2

파이썬 3, 58 바이트

import time
while input():time.sleep(1)
print("\n\nDone.")

그냥 이것을 지적하고 싶을 때, 파이썬 2에서는 2 바이트가 짧아지고, 프린트 "\ n \ nDone"
Random Guy

네, 잊어 버렸습니다 ... 죄송합니다.
랜덤 가이

2

MATL , 17 바이트

10c'Done.'`jt?1Y.

빈 줄 (뒤에 줄 바꿈)이 입력 끝을 표시하는 데 사용됩니다. 입력은 대화식이며 각 입력은 개행 문자로 끝나기 때문에 MATL에서 필요합니다.

온라인으로 사용해보십시오!

10c           % push newline character
'Done.'       % push string
`             % do...while
  j           % input string
  t           % duplicate
  ?           % if non-empty
    1Y.       % pause for 1 second
              % loop condition is the current string. If non-empty: next iteration
              % If empty: exit loop and print stack contents. There are two strings
              % and a newline is printed after each, so the desired output is obtained

이후 기간이 누락 Done되었습니까?
PurkkaKoodari

@ Pietu1998 으악. 수정했습니다. 감사!
Luis Mendo

2

Q 기본, 54 바이트

LINE INPUT x$
IF x$=""GOTO 1
SLEEP 1
RUN
1?
?
?"Done."

빈 줄로 끝나는 사용자 입력에서 프로그램을 한 줄씩 가져옵니다. 각 행을 읽은 후 1 초 동안 일시 중지하여 영의 가능성은 없지만 율법의 서한을 준수하십시오. (사양에서는 기술적으로 입력이 완료된 후 일시 중지가 모두 발생해야한다고 말하지 않습니다.) 너무 그늘이있는 것으로 간주되면 전체 프로그램이 입력 된 후 일시 중지되는 64 바이트 버전이 있습니다.

DO
LINE INPUT x$
IF x$=""GOTO 1
t=t+1
LOOP
1SLEEP t
?
?
?"Done."

파일 I / O가 포함 된 보너스 버전 (87 바이트) :

INPUT f$
OPEN f$FOR INPUT AS 1
1LINE INPUT #1,x$
SLEEP 1
IF 0=EOF(1)GOTO 1
?
?
?"Done."

1

루비, 32 바이트

$<.map{sleep 1}
puts"\n\nDone."

stdin에서 읽습니다.


1

OCaml, 61 바이트

fun a->List.iter(fun _->Unix.sleep 1)a;print_string"\n\nDone"

입력이 목록이라고 가정합니다.


0

젤리 , 12 바이트 (비경쟁)

ỴLœS@⁷⁷“ẋḲp»

온라인으로 사용해보십시오!

참고 : 압축 문자열에 넣지 것을 권장 하지 않습니다 . ⁷⁷더 길어집니다 ( “¡OÑL[Ṁ»).

설명:

ỴLœS@⁷⁷“ẋḲp» Main link. Arguments: z.
ỴL           The number of lines in z. (x)
     ⁷       Newline ("\n") (y)
  œS@        After sleeping for x seconds, return y.
      ⁷      Newline ("\n")
       “ẋḲp» Compressed string ("Done.")

이 때문에 경쟁이 아닙니다 œS.
Outgolfer Erik

0

awk, 34 바이트

END{print"\nDone."|"cat;sleep "NR}

I / O가없고 최종 결과가 불가피하기 때문에 Done.부품은 처음에 바로 출력됩니다.

$ awk 'END{print"\nDone."|"cat;sleep "NR}' file

awk에서 잠드는 유일한 방법은 system을 사용하는 것입니다 sleep. 그것을 불러내는 가장 짧은 방법은 print|"sleep "NR우리가 그 쓸모없는 것을 남용하는 것 print입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.