좋아하는 문구를 프로그래밍하십시오


28

와 같이 정확히 5 단어 길이 인 따옴표 나 구를 선택하십시오 Programming puzzles and code golf!.

자신을 n 번 추가 할 때 구의 처음 n + 1 단어를 순서대로 출력 하는 프로그램을 작성 하십시오.

예를 들어, 프로그램 코드가 MYPROG있고 문구가 인 Programming puzzles and code golf!경우 ...

  • MYPROG 출력해야합니다 Programming
  • MYPROGMYPROG 출력해야합니다 Programming puzzles
  • MYPROGMYPROGMYPROG 출력해야합니다 Programming puzzles and
  • MYPROGMYPROGMYPROGMYPROG 출력해야합니다 Programming puzzles and code
  • MYPROGMYPROGMYPROGMYPROGMYPROG 출력해야합니다 Programming puzzles and code golf!

4 번 이상 추가하는 것은 정의되어 있지 않으며, 프로그램이 무엇이든 할 수 있습니다.

규칙

  • 문구는 문법적으로 의미있는 영어 여야합니다. 이상적으로는 대문자와 구두점을 적절히 사용해야합니다.
  • 문구 길이는 제한이 없지만 http://www.shannonentropy.netmark.pl/ 에 의해 계산 된 엔트로피 는 3.5보다 작을 수 없습니다 .
    (구문에 붙여 넣고 계산을 누르고 마지막 H (X)를 찾으십시오 .)
  • 문구는 인쇄 가능한 ASCII 문자 (16 진수 20 ~ 7E) 만 포함 할 수 있습니다 . 코드에는 인쇄 가능한 ASCII, 탭 및 줄 바꿈 만 포함될 수 있습니다.
  • 문구에는 정확히 5 개의 고유 한 단어와 4 개의 공백이 있어야합니다 . 공백이 아닌 모든 단어는 단어의 일부로 계산됩니다. 공백은 단어 경계입니다. 그들은 선행하거나 후행하지 않을 수 있습니다. 마지막 단어 외에는 하나가 있어야합니다.
  • 결과는 단어 사이에 하나의 공백도 포함해야합니다. 각 추가 단계의 출력에는 후행 공백은 포함되지만 선행 공백은 포함되지 않을 수 있습니다.
  • 표준 출력으로 출력합니다. 입력이 없습니다.

채점

점수는 추가되지 않은 초기 프로그램의 길이 (바이트)입니다. (예 : MYPROG6 점)

이것이 코드 골프이기 때문에 가장 낮은 점수가 이깁니다.


21
아, 엔트로피와 독창성 요구 사항은 "버팔로"에 대한 나의 생각을 항목으로 삼는다.
Sparr

4
"코드에 인쇄 가능한 ASCII와 탭 및 줄 바꿈 만 포함 할 수 있습니다." :(
Sp3000

3
@ Sp3000 명예 답변을 환영합니다. 나는 Piet 솔루션을보고 싶습니다 :)
Calvin 's Hobbies

이것은 하스켈의 순도가 문제가되는 유일한 상황입니다 ...
Rhymoid

문법적으로 의미있는 영어 문법과 의미에 대한 다른 해석으로 인해 "문법적 의미있는 영어"가 무엇인지 명확하지 않습니다.
MilkyWay90

답변:


6

CJam-24

"TheguywasnotI"Lm3<]S*:L

http://cjam.aditsu.net/ 에서 시도 하십시오

설명:

Lm"TheguywasnotI '에서 L (초기") "에 포함 된 문자를 제거하는
3<제 3 개 문자를 얻어
]배열 스택의 콘텐츠를 수집
S*세퍼레이터로서 스페이스를 사용하여 어레이 조인
:L양수인 L로 얻어진 문자열 (역시 스택에두고 )

이전 버전 (28 바이트) :

"He is but a dog."S/W):W=]S*

설명:

S/공간 분할에 의해
W):W증가 (= 처음 W-1) W
=W'th 워드 가져
]배열 스택의 콘텐츠를 수집은
S*세퍼레이터로 공간을 사용하여 배열을 결합


이 언어는 정말 흥미 롭습니다. 그들이 말하는 것처럼 "매일 새로운 언어에 대해 배웁니다"또는 이와 유사한 것. 잘 했어!
Brobin

이것이 처음 게시 된 Dennis의 똑같은 짧은 대답 대신 이것을 수락하십시오 .
Calvin 's Hobbies

28

Piet (명예 답변)

여기에 이미지 설명을 입력하십시오

아래로 내려가 뱀이 오른쪽으로 튀어 나와 녹색으로 다시 들어갑니다. 밖으로 인쇄 "과일은 바나나처럼 날아."

PietCreator 를 사용 하여이 작업 을 시도했지만 여기서 시도해 볼 수 있습니다 . Piet 프로그램을 다시 만드는 것은 고통스럽기 때문에 35x35에서 시작하여 그런 식으로 계속했습니다. 즉, 필요한 것보다 훨씬 많은 코덱을 사용했습니다.

실제 크기 버전

여기에 이미지 설명을 입력하십시오 여기에 이미지 설명을 입력하십시오 여기에 이미지 설명을 입력하십시오 여기에 이미지 설명을 입력하십시오 여기에 이미지 설명을 입력하십시오


11

> <> (42)

물고기는 정말 최고의 애완 동물입니다. 어떤 사람들은 이해할 수없는 논리의 부족으로 인해 벌레를 애완 동물로 키 웁니다. 이 프로그램은 그러한 사람들과 추론하기 위해 최선을 다합니다.

!v'?od gub yna nac tahW;'00p!
<<|ov!
voo <

이 프로그램에는 줄 바꿈이 없습니다. 첫 번째 줄에서 전체 출력이 반전됩니다. 완전한 문구는 "버그는 무엇을 할 수 있습니까?"입니다. (엔트로피 3.58418).

전체 설명 :

리플렉션을 사용하는 첫 번째 프로그램이기 때문에 이것은 내가 작성한 더 재미있는> <> 프로그램 중 하나입니다. 첫 번째 줄은 프로그램의 핵심입니다.

!v!다음 명령어를 건너 뛰기 때문에 no-op 입니다.

'?od gub yna nac tahW;' 전체 문구를 스택에 저장합니다 (각 문자가 쓰여진 순서대로 스택에 푸시되기 때문에 거꾸로됩니다. 따라서 멋지게 튀어 나오려면 뒤집어 야합니다).

00p진정한 마법이 시작되는 곳입니다. 문구를 저장하는 것뿐만 아니라을 저장했습니다 ;. 00p(0, 0) 위치에있는 최상위 문자를 스택에 프로그램에 삽입하므로 이제 프로그램의 첫 번째 문자는 ;입니다.

!은 해당 세미콜론을 건너 뛰고 커서를로 이동 v하여 프로그램 흐름을 아래쪽으로 향하게합니다.

여기서부터는 모두 인쇄 루틴 일뿐입니다. 후행 줄 바꿈이 없기 때문에 프로그램의 연속 추가는 실제로 마지막 두 줄을 추가합니다. 첫 번째 줄은 오른쪽에 voo <있으므로 실행되지 않습니다.

마지막으로, 커서는 프로그램의 왼쪽 아래로 향하고, 왼쪽 상단으로 되돌아 가서 ;이전에 삽입되어 프로그램을 종료합니다.


1 분 전에 이것은 기술적으로 유효하지 않지만 코드에서 줄 바꿈 (및 탭)이 허용되도록 사양을 변경했습니다 (원래 내가 원했던 것).
Calvin 's Hobbies

오, 내 나쁜, 문구뿐만 아니라 소스에 적용되는 것을 완전히 놓쳤다. > <> 프로그램이 개행에 상당히 의존하고 있다는 것이 기쁘다.
Mike Precup

이 부분을 조금만 골라 내려면 11 개의 문자가 포함 된 문구를 사용하고 문구가 문자를 반복하는 등 반복되는 문자가없는 문구를 사용할 수 "It is by a rope."있으므로 엔트로피가 가능한 것보다 낮습니다.
isaacg

문제는> <>가 공백을 쉽게 감지 할 수 없기 때문에 각 출력이 기본적으로 동일한 인쇄 길이를 가져야한다는 것입니다. 더 짧은 것을 찾을 수 없었습니다.
Mike Precup

2
@isaacg 개인적으로 나는 Mike의 문구를 선호한다;)
Calvin 's Hobbies

10

파이썬 66

i='i'in dir()and i+1;print("Tfpcfhaialetgny"[i::5],end=" ."[i>3]);

엔트로피 : 3.61635

출력 :

The fat pig can fly.

변수 감지 부분을 단축하는 데 도움이되는 팁은 @JasonS와 @grc에게 감사합니다.

업데이트 : 이를 55 바이트로 낮추는 악의적 인 랩 어라운드 트릭에 대한 JasonS의 답변 을 참조하십시오 . :)


i=locals().get('i',-1)+1;-5 바이트입니다
Jason S

날 이길! 나는 사용하려고했다 i='i'in dir()and i+1. 편집 : 규칙이 변경되었습니다.
grc

자, 그건 또 다른 -4입니다
Jason S

: 파이썬 2와 60 바이트i='i'in dir()and i+1;print"Tfpcfhaialetgny"[i::5]+" ."[i>3],
nyuszika7h

9

파이썬 3, 55 (보너스 67)

# 55 bytes, H(X)=3.72, Based on bitpwner's 66. "Mix dog and cat fur."
i=0;print("Mdacfionauxgdtr"[i::5],end=" ."[i>3]);i+=1;i

# 67 bytes, H(X)=4.28. "Thanks for supporting Python development."
q=b"qx!%%0077C";a,b,*q=q;print((str(credits)*2)[49:][a:b],end='');q

# 60 bytes, H(X) = 3.51. "Fix the bed old pal"
s="Fixthebedoldpal";a,b,c,*s=s;print(a+b+c,end='. '[s>[]]);s

당신은 그것이 감싸는 것을 의미합니까?

좋아, # 2에 대한 설명 (스포일러)

  • credits사용하려는 텍스트가 포함 된 파이썬 내장 프로그램입니다. repr대화 형 인터프리터에 입력하고 멋진 출력을 볼 수 있도록 형식이 지정된 특수 유형입니다. 그래야 str()합니다. 나는 이것을 위해 내장을 보면서 꽤 많은 시간을 보냈다.

  • 많은 텍스트가 있고 5 단어 만 원하므로 각 하위 문자열의 시작 및 끝 위치를 저장하고 싶습니다. 그것은 시작 부분의 바이트입니다. bytespython3의 객체는 시퀀스 작업을 사용할 때 정수 배열처럼 작동합니다.

  • 그러나 코드에는 인쇄 가능한 문자 만 포함될 수 있으므로 모든 위치 값을 문자로 인쇄 할 수 있도록 오프셋 (49)을 찾아야했습니다.

  • "감사합니다"는 문자열의 시작 부분에 가깝고 다른 단어는 끝 부분에 가까워서 내 위치 값이 너무 멀리 떨어져서 인쇄 가능한 범위 내에 있지 않습니다. 문자열을 2 씩 곱하면 다른 단어에 더 가까운 "감사"의 또 다른 사본이 만들어집니다.

  • [49:]문자열 슬라이스를 취하면 a와 b 모두에 49를 추가하는 것보다 소스 바이트가 1 줄어 듭니다.

  • 세 가지 답변 모두에 사용 된 구문은 x=<value>;dostuff and increment;x입니다. 후행 x은 전혀 아무것도하지 않지만 다음 코드 사본과 결합 xx=<value>되면 x카운터를 덮어 쓰지 못하게 됩니다.

  • a,b,*q=q 완벽하게 정상적인 Python 3 시퀀스 압축 풀기입니다.


+1. 악한 속임수. :) 내 답변으로 업데이트 할 수 있습니까?
벡터화

글쎄, 난 당신의 중간 사용
제이슨 S

나는 현재 당신의 두 번째 답변에 감탄하고 있습니다. 너무 많은 트릭이 들어 있습니다.
벡터화

2
두 번째 답변이 어떻게 작동하는지 알려주세요.
sajas

8

파이썬 2 (37)

Sarah가 지역 Mensa 지부의 회장이 된 후, 그녀는 지적인 파트너를 찾는 남성들로부터 낭만적 인 관심의 초점이되었습니다. 모든 날마다 사라는 개인적으로 연결하려고 노력했지만 남자들은 그녀를 애매한 철학적 질문으로 조사했습니다. 아무도 그녀의 감정적 측면에 관심이 없다는 것에 좌절하면서 그녀는 외쳤다.

i=4;print"mniIMeosQy!t"[i::5],;i-=1;i

산출:

My
My IQ
My IQ is
My IQ is not
My IQ is not me!

엔트로피는 H(x)=3.5정확히입니다.

대답은 기본적으로 도매를 사용 했던 Jason S. 입니다. ii랩 어라운드 트릭은 훌륭합니다.


좋은! 올바른 엔트로피로 더 짧은 문구를 찾기위한 소품. 나는 포기 했어. 또한 py2 print는 공백을 추가하지 않고 앞에 붙는 것을 잊었습니다.
Jason S

이것은 파이썬 답변의 놀랍도록 짧습니다! 잘 했어.
isaacg

프로그램 중간에있는 쉼표를 제거하여 36 자로 줄일 수 있습니다.
xleviator

8

C-65

댓글 남용 :)

char*z="Ah, \0the \0good \0ol' \0times!";
for(printf(z);*z++;);//

이 때문에 새 줄이 중요하며 코드는 다음과 같이 추가해야합니다.

char *z="Ah, \0the \0good \0ol' \0times!";
for(printf(z);*z++;);//char *z="Ah, \0the \0good \0ol' \0times!";
for(printf(z);*z++;);//...

이것은 좋은 해결책입니다!
MilkyWay90

4

CJam, 24 바이트

"LwOtmiaKoezs"W):W>5%]S*

다섯 번 실행하면 Liz was OK to me 나에게 인쇄 됩니다. 구두점은 포함되지 않았습니다. 죄송합니다.

작동 원리

"LwOtmiaKoezs"  " Push that string. ";
W):W            " Push W (initially -1), increment and save the result in W. ";
>               " Shift that many characters from the string. ";
5%              " Select every fifth character, starting with the first. ";
]S*             " Wrap the stack in an array and join its strings using spaces. ";

멋진 아이디어, 문구가 다소 약하지만 : p
aditsu

나는 그것을 인정하지만 반복되는 문자없이 xxx xxx xx xx xx 여야했습니다 . 그게 내가 이해할 수있는 유일한 문장입니다.
Dennis

"태양은 나에게 괜찮아"어때? "Sun"을 다른 단어 나 이름으로 바꿀 수도 있습니다.
aditsu

감사합니다.
Dennis

3

피 이스 , 32

p?kqZ4d@P"It is by a rope."dZ~Z1

문구 : "로프에 의한 것입니다."

엔트로피 : 3.5

작동 방식 :

p 지정된 구분 기호로 인쇄하는 것을 의미합니다.

첫 번째 인수 ?kqZ4d는 구분 기호를 제공합니다. ?kqZ4d의미 k if Z==4 else d합니다. k''반면이 d있다 ' '.

인쇄 할 값인 두 번째 인수는 P공간 ( d)에서 ( )을 분할 하고에서 해당 목록 ( @) 으로 인덱싱하여 생성됩니다 Z.

마지막으로, Z자동으로 0으로 초기화되는는 1 ( ~Z1) 씩 증가합니다 .


2
이 단계가 자연스럽게 맞는 상황을 생각할 수 없었습니다 ^^
flawr

1
@flawr "공은 어디에서 살았나요?" "로프입니다."
isaacg

3

골프 스크립트, 53

이것은 재미 있었다.

{'1'-print}:puts;.'You; are; not; a; duck.'';'/\,=\1+

문구 : "당신은 오리가 아닙니다." (완전히 사실입니다. 엔트로피 3.5110854081804286)

설명:

스택은 ''첫 번째 "실행"에서 시작합니다 (STDIN이 제공되지 않기 때문에). '1'코드가 붙여진 횟수를 나타 내기 위해 s가 추가됩니다.

{'1'-print}:puts;             # Hacky stuff (see below)
.                             # Stack: '' ''
'You; are; not; a; duck.'';'/ # Initialize the array of words
\,                            # Get the length of the string of '1's (0)
                              # Stack: '' [words] 0
=                             # Stack: '' 'You'
\1+                           # Stack: 'You' '1'

이제 두 번째 실행에서 일어나는 일 :

{'1'-print}:puts;             # Hacky stuff (see below)
.                             # Stack: 'You' '1' '1'
'You; are; not; a; duck.'';'/ # Initialize the array of words
\,                            # Get the length of the string of '1's (1)
                              # Stack: 'You' '1' [words] 1
=                             # Stack: 'You' '1' ' are'
\1+                           # Stack: 'You' ' are' '11'

등등.

"하지만, 1을 어떻게 출력하지 않습니까?" 아, 그건 재밌는 해키 부분입니다. Golfscript는 다음과 같이 구현합니다 puts(프로그램이 종료 될 때 호출 됨).

{print n print}:puts;

나는 단순히 그것을

{'1'-print}:puts;

따라서 1최종 출력에서 ​​s가 억제됩니다.


3

J-42 자

나는 더 짧은 문구로 갈 수 있지만 왜? 내가 가장 좋아하는 것은 아닙니다.

(#~1=6|#\)&.;: :,'You multiplied 6 by 9. '

이것은 J의 모나드 / 다이어 드 이중성 (monad / dyad duality) 때문에 작동합니다. 모든 동사는 오른쪽에 하나의 인수가있는 모나드 또는 왼쪽에 하나의 인수가있는 다이나 드로 호출 될 수 있습니다.

J REPL과의 다음 세션을 고려하십시오.

   'You multiplied 6 by 9. '
You multiplied 6 by 9.
   'You multiplied 6 by 9. ' , 'You multiplied 6 by 9. '
You multiplied 6 by 9. You multiplied 6 by 9.
   ;: 'You multiplied 6 by 9. ' , 'You multiplied 6 by 9. '   NB. break into words
+---+----------+-+--+--+---+----------+-+--+--+
|You|multiplied|6|by|9.|You|multiplied|6|by|9.|
+---+----------+-+--+--+---+----------+-+--+--+
   (#\) ;: 'You multiplied 6 by 9. ' , 'You multiplied 6 by 9. '             NB. count off
1 2 3 4 5 6 7 8 9 10
   (6 | #\) ;: 'You multiplied 6 by 9. ' , 'You multiplied 6 by 9. '         NB. mod 6
1 2 3 4 5 0 1 2 3 4
   (1 = 6 | #\) ;: 'You multiplied 6 by 9. ' , 'You multiplied 6 by 9. '
1 0 0 0 0 0 1 0 0 0
   (#~ 1 = 6 | #\) ;: 'You multiplied 6 by 9. ' , 'You multiplied 6 by 9. '  NB. select
+---+----------+
|You|multiplied|
+---+----------+
   (#~ 1 = 6 | #\)&.;: 'You multiplied 6 by 9. ' , 'You multiplied 6 by 9. ' NB. undo ;:
You multiplied

거기에는 ,두 개의 인수 사이에 있기 때문에 dyad로 취급되며 (#~1=6|#\)&.;:왼쪽 인수가 없기 때문에 모나드입니다. 그래서 우리가 이따 일 때 ,(#~1=6|#\)&.;:모나 딕 할 때 처럼 행동 할 수있는 동사가 있다면, 우리는 설정 될 것입니다.

이미 짐작했듯이 이러한 연결은 존재하며 다음과 같습니다 :. Monadic는와 f :gf으며, g이분법 일 때 와 같습니다 . 이것은 문제를 해결합니다.

tryj.tk 에서 직접 시도해 볼 수있는 예제 :

   (#~1=6|#\)&.;: :,'You multiplied 6 by 9. '
You
   (#~1=6|#\)&.;: :,'You multiplied 6 by 9. '(#~1=6|#\)&.;: :,'You multiplied 6 by 9. '
You multiplied
   (#~1=6|#\)&.;: :,'You multiplied 6 by 9. '(#~1=6|#\)&.;: :,'You multiplied 6 by 9. '(#~1=6|#\)&.;: :,'You multiplied 6 by 9. '
You multiplied 6
   (#~1=6|#\)&.;: :,'You multiplied 6 by 9. '(#~1=6|#\)&.;: :,'You multiplied 6 by 9. '(#~1=6|#\)&.;: :,'You multiplied 6 by 9. '(#~1=6|#\)&.;: :,'You multiplied 6 by 9. '
You multiplied 6 by
   (#~1=6|#\)&.;: :,'You multiplied 6 by 9. '(#~1=6|#\)&.;: :,'You multiplied 6 by 9. '(#~1=6|#\)&.;: :,'You multiplied 6 by 9. '(#~1=6|#\)&.;: :,'You multiplied 6 by 9. '(#~1=6|#\)&.;: :,'You multiplied 6 by 9. '
You multiplied 6 by 9.

그리고 네, 역의 성질은 ;:후행 공백이 없도록 만듭니다.

It is by a rope.문구로 사용 하면 35 문자가 제공 (#~1=6|#\)&.;: :,'It is by a rope.'됩니다. 우리는 내 문장과 같은 ;:비열한 이유 때문에 후행 공백이 필요하지 않습니다 .


3

BBC 기본, 40

하나의 줄 바꿈을 포함합니다. 키워드가 ASCII 대신 토큰 화 된 것으로 간주 될 수있는 경우 30이됩니다.

나는 여자 친구를 우유 배달원과 자고 잡았 기 때문에 그녀를 버리고 그녀의 여동생과 복수 자고 있습니다. As my ex do I!(독특한 문자가 포함 된 5 글자 2 글자 "단어")는 엔트로피가 충분하지 않으므로 엔트로피를 정확히 3.5로 만들기 위해 끝에 혀를 낸 스마일을 추가했습니다. 결국, 나는 이상한 평범한 삶이 아니라 이상한 연속극을 가지고 있습니다.

  READa$:PRINTa$;" ";
  DATAAs,my,ex,do,I:-P

우리가 얻는 프로그램을 5 번 반복

  READa$:PRINTa$;" ";
  DATAAs,my,ex,do,I:-P
  READa$:PRINTa$;" ";
  DATAAs,my,ex,do,I:-P
  READa$:PRINTa$;" ";
  DATAAs,my,ex,do,I:-P
  READa$:PRINTa$;" ";
  DATAAs,my,ex,do,I:-P
  READa$:PRINTa$;" ";
  DATAAs,my,ex,do,I:-P

5 개의 READ명령문 만 실행되고 첫 번째 DATA명령문 에서 처음 5 개의 데이터 항목을 읽습니다 . 나머지 데이터는 중복됩니다. 산출:

  (once)
  As 
  (5 times)
  As my ex do I:-P 

2

루비, 50

puts'The fat pig can fly.'[0..File.size($0)/12-1]#

인쇄 할 단어 수를 결정하기 위해 자체 길이를 사용합니다. 주석 문자로 끝나는 반복은 무시됩니다 #. bitpwner 에서 빌린 문구 : 각 단어에 같은 수의 문자가 포함 된 짧은 문구를 갖는 것이 매우 편리합니다.

끝 각 단어 + 4 개 문자이기 때문에, 식 (56) 길이의 프로그램 예를 들어, 다음과 같습니다 (File.size($0)/56)*4 - 1,하지만, 시간을 미리 나눌 수 있습니다 56/4 = 14, 그래서 File.size($0)/14 - 1, 몇 문자를 저장. 50의 배수는 4아니지만 12필요한 범위에 충분히 가깝습니다.


2

, 165 + 3 = 168 바이트

깃발 +3 -w

| ,z `Z`Z  `Z
| |ZZZ>Z>ZZZ>ZZZZ
>((((((((((((((((
|)-)))-)-)))-))))g
|)d)xx-x-)xx-))x)e
||b+))-x-x))-x)xc
|`v))xa(-x(x-((^d
|*`.))d| b | b
|Z~<b( |~Zf|
>~T| | |   |

"나는 빨간 옷을 입었다"(3.5) (나는 실제로 그런 것을 얻지 못했다) (... 아직)

마지막 줄 바꿈에 유의하십시오. 따라서 연결된 사본이 기존 코드 아래에 나타납니다.

온라인으로 사용해보십시오! (원본)
온라인으로 사용해보십시오! (원본 및 4 부 모두)

이것은 약간 엉킨 엉망입니다. 가장 까다로운 비트는 종료 조건이었습니다. (첫 번째 반복은 단어를 인쇄 한 다음 끝없는 null 바이트 스트림을 출력했습니다 ...).

작동 원리

첫 번째 문구 :
12 개의 고유 문자 + 4 개의 공백 = 정확히 3.5 개의 엔트로피.

그리고 코드 :
각 사본은 첫 번째 단어를 인쇄 한 다음 아래 사본에 다음 단어를 인쇄하도록 지시합니다. 인스턴스가 하나만 있으면 두 번째 사본이 없으므로 첫 번째 단어 이외의 것은 인쇄되지 않습니다.

두 개의 사본이있는 경우 두 단어가 모두 첫 번째 단어를 동시에 인쇄하고 (바이트가 OR로 연결되어 있어도 괜찮음) 두 번째 사본 만 두 번째 단어를 인쇄합니다.

5 개 사본이 모두 있으면 첫 번째 단어 등이 인쇄되고 다섯 번째 사본이 마지막 단어 자체를 인쇄합니다.

모든 사본이 인쇄되지 않으면 종료 회로가 프로그램을 종료합니다.



1

펄, 37

print qw(My IQ is not me!)[$i++].' ';

comperendinous와 유사하지만 펄의 qw을 활용하여 몇 가지 문자를 더 절약 할 수 있습니다.


1

Rebmu 메시지 길이 + 27

"나의 IQ는 내가 아니야!" 그것은 43이 될 것입니다. 그러나 나는이 메시지를지지합니다 :

uV?'s[S[{The}{rebellion}{against}{software}{complexity.}]]proTKsPROsp

동등한 Rebol / Red :

unless value? 's [
    s: [{The}{rebellion}{against}{software}{complexity.}]
]

print/only take s
print/only space

Rebol에는 IF, EITHER 및 UNLESS의 세 가지 기본 조건이 있습니다. UNLESS는 IF NOT과 동일하지만 더 명확 할 수 있습니다. "항상 다음 조건을 충족하지 않으면이 조건이 적용됩니다."

이 경우에 우리가 테스트하는 조건은 현재 컨텍스트에서 기호 S에 값이 주어 졌는지 확인하는 것입니다. 조건부 표현식에 따옴표없는 S를 사용하려고하면 따옴표를 평가하고 오류가 발생할 수 있으므로 따옴표를 사용해야합니다. ( value?기본적으로 매개 변수를 인용하지 않습니다. 확인하려는 기호를 변수에 넣고 싶을 수 있습니다. 예 sym: 's를 들어 if value? sym [...]SYM이 아닌 S가 정의되었는지 실제로 확인합니다)

프로그램의 첫 번째 붙여 넣기 만이 일련의 문자열을 S에 할당합니다. 연속적인 붙여 넣기는 계열의 헤드에서 문자열을 가져 와서 PRINT / ONLY로 전달하여 줄 바꿈을 추가하지 않고 인수를 인쇄합니다.

(참고 : PRINT / ONLY는 Rebol 3 및 Red에서 고려되고있는 PRIN을 대체 할 수있는 권장되는 대체 방법입니다. 이제 Rebmu에서 인쇄 대체물을 테스트하고 있습니다.)


1

AHK , 44 바이트

i++
Send % SubStr("He is an OK ex",i*3-2,3)

마지막 줄 바꿈에 유의하십시오. 여기에서 유일하게 영리한 것은 문자열이 3 글자 단어이므로 아무 것도 나눌 필요가 없다는 것입니다. 대신, 우리는에 따라 부분 문자열을 가져옵니다 i. 키보드에서 입력 한 것처럼 활성 화면으로 출력됩니다.


0

자바 스크립트 (53)

나는 텍스트와 함께 멋진 일을하지 않기 때문에 aditsu에서 텍스트를 가져 왔습니다. 따라서 선택한 단어는 솔루션에 다소 관련이 없습니다 (바이트 수 제외).

var i=i|0;alert("He 0is 0but 0a 0dog".split(0)[i++]);

않습니다 alert이 경우 계산? 편집 : 문자열을 공백으로 결합하지 않기 때문에 규칙을 읽으면 아마 그렇지 않습니다. 공평하게하기 위해 공백을 추가하겠습니다.

또한 var이 경우 고가 는 실제로 관련이 있습니다.


var i|=0;여기에서 작동하지 않는지 설명 할 수 있습니까 ???
flawr

@flawr을 (를) 사용 |=하거나 이와 유사한 작업을 수행 할 수 없습니다 var. 없이는 var을 얻습니다 ReferenceError: i is not defined. var i=i|0로 확장 var i=undefined|0하고, undefined|0분명히있다 0.
nyuszika7h

이것은 게양 때문에 작동합니다. var i=i|0와 같습니다 var i;i=i|0. 그래서 참조 오류가 발생하지 않습니다. 그것이 처음으로 0으로 설정되는 이유는 @ nyuszika7h가 말한 것입니다.
Ingo Bürk

1
그러나 이것은 별도로 단어를 경고합니다.
자부심을 가진 haskeller

0

펄, 43 56

print substr'Mine was not Red 5!',4*$i++,4;

나는 이걸 이길 수 없다는 것을 받아들입니다. 내 원래 시도는 이유를 설명합니다.

@a=('This',' code',' is',' too',' long.');print$a[$i++];

0

루아, 77

아주 간단한 해결책 :

i=(i or 0)+1;io.write((i==1 and""or" ")..("Thebigfoxwasup."):sub(3*i-2,3*i))

(H (X) = 4.23)


0

자바 스크립트, 138

g=this;clearTimeout(g.t);g.i|=0;i++;g.t=setTimeout(
    function(){console.log(["I'll","sleep","when","I'm","dead."].slice(0,i).join(' '))},0);

(추가 개행은 가독성을 위해서만 추가됨)

인쇄 I'll sleep when I'm dead합니다. 타이머를 사용하여 출력이 한 번만 인쇄되도록합니다


0

순수한 배쉬, 51 바이트

a=(All you need is Love!)
printf "${i:+ }${a[i++]}"

H (X) = 3.59447

이것은 짧은 문구 중 하나를 밀려서 조금 더 골프를 칠 수는 있지만, 데카르트의 레논의 가장 유명한 인용문 을 고수하게되어 기쁩니다 . (죄송합니다 @Descartes, 그러나 모든 단어는 고유해야합니다).

산출:

$ ./phrase.sh 
All$ cat phrase.sh phrase.sh phrase.sh > phrase3.sh
$ chmod +x phrase3.sh 
$ ./phrase3.sh 
All you need$ 
$ cat phrase.sh phrase.sh phrase.sh phrase.sh phrase.sh > phrase.sh
$ chmod +x phrase5.sh 
$ ./phrase5.sh 
All you need is Love!$ 

단어 사이에 공백을 삽입하되 선행 또는 후행 공백은 없습니다.

bash에서 정의되지 않은 변수는 문자열로 확장 될 때 ""값을 갖지만 확장 될 때 산술적으로 값이 0이라는 사실에 의존합니다.


5 단어는 독특해야합니다 ...
trichoplax

코드가 5 단어 구문을 처리 할 수있을 정도로 다재다능 해 보이므로 필요한 엔트로피가 3.5 (이 중 너무 많은 이중 문자 ...) 인 코드를 생각할 수 있습니다.
trichoplax

@ githubphagocyte 나는 당신이 나에게 반올림의 혜택을 줄 것이라고 기대했다. ;-) 좋아, 나는 그것을 여분으로 고쳤다 !.
디지털 외상

0

PHP 89 78 자

조금 장황하고 가장 확실하게이기는 것은 아니지만 어쨌든 재미있었습니다. 여기에 내가 생각해 낸 것이 있습니다.

구:

code golf is pretty fun

엔트로피 = 3.82791

암호:

<?
$i=(isset($i)?$i+1:0);
$w=["code","golf","is","really","fun"];
echo $w[$i].";

골프 :

<?$i=(isset($i)?$i+1:0);$w=["code","golf","is","really","fun"];echo $w[$i].

0

Python3-122 바이트

포드 베이 도어 열기 [HAL]

나는 이것으로 약간의 괴상함을 얻게 될 것 같습니다. 질문만으로 한 단어를 더 허용한다면 ...

내 프로그램은 파일 이름 (p.py는 기본)을 취하고 기본 이름이 몇 번 반복되는지 확인합니다. 그런 다음 문자열 n시간 에서 슬라이스를 가져옵니다 . 파일 이름에서 s n의 개수입니다 p.

import sys,re
for i in range(len(re.findall(re.compile('p'),sys.argv[0]))):print('Otpbdphoaoeedyon   r    s'[i::5],end='')

~ $ python p.py
Open

~ $ python pp.py
Open the

~ $ python ppp.py
Open the pod

~ $ python pppp.py
Open the pod bay

~ $ python ppppp.py
Open the pod bay doors

정규식의 장점은 프로그램을 원하는대로 호출 할 수 있으며 코드에서 기본 이름을 변경하면 여전히 작동합니다. 내 원래 프로그램은 golfed.py입니다.


0

05AB1E , 21 바이트 (비경쟁)

“€Œ‰‹€‡Øš‹É.“ª#¾è¼?ð?

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

용도 :

This works for literally anything. 
H(x) = 4.02086

설명

“€Œ‰‹€‡Øš‹É.“ª#¾è¼?ð?
“€Œ‰‹€‡Øš‹É.“ª        # Pushes "This works for literally anything."
              #       # Split on spaces
               ¾è     # get element at index of counter_variable (default 0)
                 ¼    # Increment the counter_variable
                  ?   # Print the selected element
                   ð? # Prints a space

“€í€Ü€…‚¿‹·“hehe
Magic Octopus Urn


0

SmileBASIC, 54 바이트

DATA"Does"," anybody"," have"," a"," key?
READ W$?W$;

나는 "모래를 먹을 수 있습니다"를 선호했을 것입니다. 그러나 그것은 엔트로피 테스트에 실패합니다. 물론 나는 더 짧은 문구를 골랐지만 지루하다.

READ키워드는에서 값을 읽어 DATA변수에 저장을. READ다시 사용 하면 다음 항목을 얻을 수 있습니다.


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