구금 행을 작성


63

소개

나쁜 소식들-구금되었습니다. 영어 교사가이 사이트를 이해하지 못하고 "디지털 도치에 수학을 그만두십시오. 영어 수업입니다!"

그녀는 칠판에 자신이 가장 좋아하는 말을 25 번 써야한다고 판결했습니다. 칠판에 총 100 줄을 줄 것입니다.

The eighteen-hundreds were a time for rum.
The nineteen-hundreds were a time for fun.
The two-thousands are a time to run
a civilized classroom.

운이 좋으면, 당신은 열렬한 독자입니다 (전문가 코드 골퍼는 말할 것도 없습니다)! 쉽게 벗어날 수있는 트릭에 대해 읽었습니다.

폭스 트롯

(Bill Amend의 Foxtrot)

불행하게도 Jason에게는 효과가 없었습니다. 그러나 더 좋은 아이디어가 있습니다! 영어 선생님이 수학을하고 있다고 생각하기 때문에 프로그램에서 모든 숫자를 남기면 효과가 있습니다! 또한 학생이 게으르고 칠판에 많이 쓰지 않기 때문에 프로그램을 최대한 짧게 유지하려고합니다.

다음 규칙을 준수하는 프로그램을 작성하십시오.

  • 프로그램은 위의 4 줄을 25 번 인쇄해야합니다. 행은 순서대로 반복해서 출력해야합니다. 총 100 줄의 출력 (최후 끝에 후행 줄 바꿈 또는 맨 처음에 줄 바꿈 개행은 괜찮습니다).
  • 문자를 사용할 수 없습니다 0123456789. 선생님은 수학에 혼란스러워 전화 할 것입니다!
  • 가져 오기를 계산하지 않고 가져 오기 및 외부 라이브러리를 사용할 수 있습니다. 영어 교사는 프로그래밍에 대해 모른다. Jason은 글 #include <stdio.h>을 쓰지 않음 으로써 많은 작업을 절약 할 수 있었으며 자신도 같은 실수를하고 싶지 않습니다!
  • byte카운트로 프로그램 점수를 매기십시오 . 최저 점수가 이깁니다!

2
텍스트가 "1900s"를 읽은 경우 출력을 작성하는 것이 약간 까다로 웠습니다.
Ingo Bürk

30
comix에게 : 그는 \ n 's를 인쇄하지 않고 있으며, 1부터의 루프는 꽤 어색합니다 (C 본성과 반대).
VX

11
@VX Bill Amend는 오랜 파스칼 다이 하드이며, C를 쓸 때마다 매우 분명해집니다.
푹신한

5
이것은 내 오래된 영어 교사 중 하나와 매우 흡사합니다.
Kaz Wolfe

2
금지 +는 여기에서 의미가 있었지만 어쩌면 너무 어려웠을 것입니다.
Pharap

답변:


9

CJam, 109 107 106 104 103 바이트

0000000: 22 0c 20 4f 18 41 e4 d8 a5 f3 95 cf 5e 2b cb 1c  ". O.A......^+..
0000010: 44 64 2f bf 28 23 e2 47 4e 4e 77 73 fc 43 09 a2  Dd/.(#.GNNws.C..
0000020: 09 0b fb 18 29 e8 e8 49 5d fc 00 da b8 70 b6 3e  ....)..I]....p.>
0000030: 0c 24 d7 5a 5b 28 1c 45 2e 90 63 86 04 5c 3e 95  .$.Z[(.E..c..\>.
0000040: 4b ae 66 22 48 48 2a 62 46 47 2b 62 22 54 0a 20  K.f"HH*bFG+b"T. 
0000050: 2d 2e 22 27 7b 2c 57 25 7c 66 3d 7b 28 2f 29 2a  -."'{,W%|f={(/)*
0000060: 7d 5a 2a 43 44 2b 2a                             }Z*CD+*

위는 가역 xxd 덤프입니다.

테스팅

온라인 인터프리터 에서 이것을 실행하여 위의 코드를 생성하고 실행할 수 있습니다 .

"bxyyeighxrum.yninexfun.ytwo-thousands abto run
a civilized classroom.y
The xteen-hundreds webfor bre a time ""T
 -."'{,W%|f#31bHH*b:c`'\2*/'\*"HH*bFG+b""T
 -."`"'{,W%|f={(/)*}Z*CD+*"]:+~

생성 된 코드를 보지 않고 실행하려면 final을 제거하십시오 ~.

바이트 수를 계산하려면 (ISO-8859-1에서 한 문자는 1 바이트 임) final ~을 a 로 바꿉니다 ,.

인쇄 가능한 버전 (122 바이트)

"bxyyeighxrum.yninexfun.ytwo-thousands abto run
a civilized classroom.y
The xteen-hundreds webfor bre a time "{(/)*}Z*CD+*

문자열 (S)을 누르면 다음이 실행됩니다.

{    }Z*        " Repeat 3 times:     ";
 (              "     Q := S.shift()  ";
  /             "     T := S.split(Q) ";
   )            "     R := T.pop()    ";
    *           "     S := T.join(R)  ";
        CD+*    " S *= 12 + 13        ";

무어 골프

인쇄 할 수없는 문자열 (U)을 누르면 다음이 실행됩니다.

HH*b                        " U := U.base(17 * 17) ";
    FG+b                    " U := U.base(15 + 16) ";
        "T\n -."            " P := 'T\n -.'        ";
                '{,W%|      " P |= 'zyx...\0'      ";
                      f=    " U[i] -> P[U[i]]      ";

인쇄 가능한 버전의 문자열을 푸시합니다. 나머지 코드는 이전과 같이 작동합니다.


코드를 사용하면 144 바이트 인 생성 된 코드를 얻습니다 . 내가 뭔가 잘못하고 있습니까?
Optimizer

UTF-8 인코딩은 바이트 수를 증가시킵니다. ISO-8859-1로, 바이트 수 당신은 대체 할 수있는 109 인 ~으로 ,확인합니다.
Dennis

2
Optimizer가 정확한 결과를 얻었지만 추가하면 ]:+~효과가 있습니다. 왜 코드에 추가하지 않습니까?
Luminous

1
@ user23013 : Java 인터프리터 는 I / O에 대해 $ LANG 을 존중 합니다. 내부적으로 CJam에는 16 비트 문자 만 있습니다.
Dennis

3
압축 자체가 없으면 124 바이트에 불과하므로 다른 솔루션을 꺾기 때문에 실제로 솔루션을 유니 코드화 할 필요는 없습니다.
Optimizer

77

자바 스크립트 (ES6) 164

B='teen-hundreds were a time',alert(B.replace(/./g,
"The eigh"+B+" for rum.\nThe nine"+B+" for fun.\nThe two-thousands are a time to run\na civilized classroom.\n"))

FireFox / FireBug 콘솔에서 테스트하십시오 .


19
이것은 천재입니다!
Optimizer

1
예, 각 문자를 더 큰 문자열로 바꿉니다. 더 큰 줄의 25 개 사본 만들기.
Optimizer

1
그 @Optimizer 입니다 :) 천재
FryAmTheEggman

3
@Malvolio 실제로 반복되는 섹션은 30 자입니다. 그리고이 간단한 솔루션을 찾기 전에 단어를 추가하고 자르고 대체를 대체하는 일련의 시도를 보여줄 수있었습니다.
edc65

1
@IsmaelMiguel ES6 브라우저를 의미한다고 생각합니다. 문제 :이 도전 과제가 게시 될 당시 템플릿 문자열은 어떤 브라우저에서도 구현되지 않았습니다. Firefox는 최초-rel 34, 2014 년 12 월-그리고 Chrome, 2015 년 3 월입니다. . 답변으로 게시해야합니다.
edc65

34

파이썬 : 188 173 160 153

a="teen-hundreds were a time"
print"The eigh%s for rum.\nThe nine%s for fun.\nThe two-thousands are a time to run\na civilized classroom.\n"%(a,a)*len(a)

나는 파이썬을별로하지 않지만 이것은 나에게 꽤 짧은 것 같습니다.

편집 : 그래서 내가 틀렸다, 전혀 짧지 않았다! 의견에 도움을 주셔서 감사합니다 : D


1
줄 바꿈을 잃고 for 루프에서 들여 쓰기하여 몇 바이트를 절약 할 수 있습니다.
Holloway

1
@Geobits, 나는 그것을 157로 만든다
Holloway

1
@Geobits는 Windows 컴퓨터에서 실행 중입니까? 윈도우의 라인 인코딩은 종종 \ n 대신 \ r \ n입니다. 이것이 157 바이트를 표시하지만 160은 표시하는 이유 일 수 있습니다.
Rob Watts

2
이것은 160 입니다. 당신은 아마 탈출로 인해 세 가지 \를 건너 뛸 것입니다 \n...
Optimizer

1
에 대한 값을 : 보다 높은 우선 순위 b로 이동할 수 있습니다 . print%*
FryAmTheEggman

29

CJam, 151 140 135 132 130 128 바이트 (Tweetable)

"TeighYrum.TnineYfun.Ttwo-thousands are a time to run
a civilized classroom.""YT"["teen-hundreds were a time for ""
The "]erAF+*

여기 사용해보십시오

이것을 유니 코드로 변환하여 110 바이트로 줄일 수는 있지만 다른 유니 코드 솔루션을 두드리지 않기 때문에 오히려 넣지 않을 것입니다. :)


23
저기요, 저 :D이모티콘이 뭐에요?! 구금 중에 친구에게 문자 메시지를 보내고 있습니까? 교장실로 가십시오!
Doorknob

2
@Doorknob : D : P
옵티 마이저

어쩌면에 T별칭을 .\nThe 만든 다음 출력 문자열의 시작 부분에서 생성되는 추가 줄을 제거 할 수 있습니다 (cjam-fu는 쉽게 수행 할 수 있는지 여부를 파악하기에 충분하지 않습니다)

@professorfish는 저장하는 것보다 더 많은 바이트를 소비합니다. mothereff.in/… * % 28Y % 2F % 28 % 40 \
옵티 마이저

Nitpicking : ASCII 호환 코드 페이지의 상위 128 바이트를 사용하는 것은 유니 코드와 관련이 없습니다.
Dennis

23

PHP, 0 바이트



가져 오기를 계산하지 않고 가져 오기 및 외부 라이브러리를 사용할 수 있습니다.

이 코드를 실행하려면 다음 data://text/plain,<?php...classroom.\n";과 같은 라이브러리를 가져와야합니다 .

<?php require_once 'data://text/plain,<?php
  for($i=ord("z");$i>ord("a");$i--)
    echo "The eighteen-hundreds were a time for rum.
The nineteen-hundreds were a time for fun.
The two-thousands are a time to run
a civilized classroom.
";'; ?>

그리고 allow_url_include에서 활성화 해야 합니다 php.ini.

Dennis 덕분에 더 이상 숫자 나 내선 번호가 없습니다.


9
나의 첫 번째 본능은 허점에 대해 뭔가를 소리 치는 것이었지만,이 답변은 실제로 자체적으로 포함되어 있기 때문에, 이것은 파이썬 답변을 위해 의도적으로 만들어진 허점을 이용하기 위해 PHP를 사용하는 영리한 방법이라고 생각합니다. 이미 부정 행위를하고 있기 때문에 shrequire_once "data://text/plain,The eighteen-hundreds...";필요 없고 숫자를 사용하지 않고 여전히 0 바이트 인을 사용할 수 있습니다.
Dennis

10
나는 창의성을 위해 이것을지지하지만 나는 이것을 받아들이지 않을 것이다.
hmatt1

14

루비, 185 180 176 바이트

편집 : 문자열 보간, 감사합니다 @britishtea

그것은 나의 첫 번째 골프이고, 나는 Rubist를별로하지 않습니다 (그러나 나는 Ruby를 확실히 좋아합니다). 어쨌든 이것이 바로 (손잡이의 제안이 짧아짐)입니다.

t=' were a time for '
s="The eighteen-hundreds#{t}rum.
The nineteen-hundreds#{t}fun.
The two-thousands are a time to run
a civilized classroom."
s.split.size.next.times{puts s}

1
반복되는 단어 / 단어 그룹 중 일부를 문자열 보간으로 대체하여 이것을 더 아래로 골프 수 있습니다.
britishtea

3
+1 문자열에 거의 25 개의 단어가 있다는 것을 알기 위해 –1
Digital Trauma

2
s.split.size.next5자를 저장합니다 (분할 공간을 지정할 필요가 없습니다).
Doorknob

루비를 모르지만 (s.split.size+1).times1 바이트가 더 짧지 않습니까?
seequ

1
@Sieg는 숫자를 사용할 수 없습니다!
rjdown

13

자바 249 231 230 222

내 첫 대답! 내가 잘 알고있는 언어를 사용하여 시작해보십시오.

class c{public static void main(String[]g){for(int a='!';a++<':';out.println("The eighxrum.\nThe ninexfun.\nThe two-thousands are a time to run\na civilized classroom.".replaceAll("x","teen-hundreds were a time for ")));}}

언 골프

import static java.lang.System.*;
class c
{
    public static void main(String[]g)
    {
        for(int a='!';a++<':';out.println("The eighxrum.\nThe ninexfun.\nThe two-thousands are a time to run\na civilized classroom.".replaceAll("x","teen-hundreds were a time for ")));
    }
}

9
어서 오십시오! 당신은 public당신의 수업에 대한를 제거 args하고 단일 문자로 단축 할 수 있습니다. a++<':'별도로 증분하는 대신에 할 수도 있습니다 . OP는 수입을 계산하지 않기 때문에을 (를) 사용하여 조금 더 절약 할 수 있으며 나중에 계산할 import static java.lang.System.*;필요가 없습니다 System.. 그렇게하면 약 230 개 정도 가됩니다. 아직 Java 팁 페이지 를 보지 않았 으면 좋을 것입니다.
Geobits

@Optimizer 감사합니다! 나는 위의 파업을 보지 못했습니다.
Luminous

@Luminous NP :)
Optimizer

@Geobits 감사합니다! 분명히 코드를 루프 자체에 바로 붙일 수도 있습니다. 아무것도 추가하거나 제거하지 않았지만 더 골프처럼 보입니다.
Luminous

4
루프 남용은 매우 일반적입니다. 당신이 있다면 여러 본문에 문을, 당신은 (당신이 어쨌든 밖에서 세미콜론이 필요하기 때문에) 단일 문자를 저장하는 내부 외부에 하나 나머지를 넣을 수 있습니다. 많은 골프가 그런 식으로 하나의 큰 고리가됩니다. 또한, "더 골프처럼 보입니다"는 그것이 저장하지 않아도 무엇이든 할 수있는 완전히 유효한 이유입니다. : P
Geobits

11

C 171

a='a';b="teen-hundreds were a time for ";main(){for(;a++<'z';)printf("The eigh%srum.\nThe nine%sfun.\nThe two-thousands are a time to run\na civilized classroom.\n",b,b);}

처음에는 다른 C 솔루션보다 나은 단순한 버전 (189 바이트)을 시도했습니다 ...

main(a){for(a='a';a<'z';++a)printf("The eighteen-hundreds were a time for rum.\nThe nineteen-hundreds were a time for fun.\nThe two-thousands are a time to run\na civilized classroom.\n");}

나중에 조금 최적화했습니다 ...


1
허, 괜찮습니다. 문자열 리터럴이있는 정적 변수는 암시 적으로 유형이 있음을 알지 못했습니다 char *.
FireFly

@FireFly GCC는 a기본적으로 값을 int받아 들일 수 있기 때문에 기본값으로 잘 컴파일됩니다 char. b내가 전화 하지 않으면 좋아하지 않습니다 char[]. VX, 어떤 컴파일러를 사용하고 있습니까?
레벨 리버 스트리트

b 이다 int 도하지만 리터럴 문자열에 대한 포인터를 보유하고 있습니다. GCC에서는 완전히 괜찮습니다 (내 컴퓨터에는 4.8.2가 있습니다).
VX

1
for(a='a';++a<'z';)
seequ

9

자바 스크립트, ES6, 174 (172) 154 바이트

@ edc65의 replace트릭을 사용합니다. 감사!

alert((d="teen-hundreds were a time").replace(/./g,`The eigh${d} for rum.
The nine${d} for fun.
two-thousands are a time to run
a civilized classroom.
`))

템플릿 문자열을 사용하기 때문에 최신 Firefox (34 이상)에서만 작동합니다.


@Nijikokun 당신은 25 대신 30 번의 반복이 발생할 것이라는 것을 알고 있습니다.
Optimizer

나는 ff 34가 최신 버전 (방금 확인 된) 이후 베타 또는 무언가라고 추측하고 있으며 33이고 거기에서 작동하지 않습니다
Sammaye

8

BrainFuck ( 1,597 자 )

+++++++++++++++++++++++++[>->-[--->+<]>-.[---->+++++<]>-.---.--[--->+<]>-.+[->+++<]>++.++++.--.+.++++++++++++.+++[->+++<]>..+++++++++.[----->++<]>+.[->++++++++<]>.[--->+<]>---.-------.----------.++++++++++++++.-------------.-.--[--->+<]>---.+[---->+<]>+++.--[->++++<]>-.[->+++<]>.+++++++++++++.-------------.--[--->+<]>-.[->+++<]>+.-[->+++<]>.---[->++++<]>.-----------.++++.--------.--[--->+<]>-.++[->+++<]>.+++++++++.+++.[-->+++++<]>+++.---[----->++<]>.+++.--------.+[----->++<]>++.>++++++++++.>-[--->+<]>-.[---->+++++<]>-.---.--[--->+<]>-.+[----->+<]>+.-----.+++++.---------.[--->+<]>---.+++[->+++<]>..+++++++++.[----->++<]>+.[->++++++++<]>.[--->+<]>---.-------.----------.++++++++++++++.-------------.-.--[--->+<]>---.+[---->+<]>+++.--[->++++<]>-.[->+++<]>.+++++++++++++.-------------.--[--->+<]>-.[->+++<]>+.-[->+++<]>.---[->++++<]>.-----------.++++.--------.--[--->+<]>-.++[->+++<]>.+++++++++.+++.[-->+++++<]>+++.++[->+++<]>.-[--->+<]>--.-------.[----->++<]>++.>++++++++++.>-[--->+<]>-.[---->+++++<]>-.---.--[--->+<]>-.---[->++++<]>.+++.--------.[->+++++<]>++.+[--->++<]>.------------.+++++++.++++++.--.++[->+++<]>++.+++++++++++++.----------.--[--->+<]>---.+[---->+<]>+++.[->+++<]>+.--[--->+<]>---.-------------.--[--->+<]>-.[->+++<]>+.-[->+++<]>.---[->++++<]>.-----------.++++.--------.--[--->+<]>-.---[->++++<]>.-----.[--->+<]>-----.---[----->++<]>.+++.-------.>++++++++++.--[--->++++<]>+.-[->+++<]>.+[->+++<]>.++++++.[->++++++<]>.[------>+<]>.+++.---.-[--->+<]>++.---[->+++<]>.-.-[--->+<]>-.+[->+++<]>.+++++++++.-----------.--[--->+<]>--..-.---..--.+[----->++<]>++.>++++++++++.[[-]<+]<-]

관심이 있으시다면 여전히 더 골프를 칠 수 있습니다.

이를 테스트하여 모든 규칙을 충족하는 동안 올바른 출력을 제공하는지 확인할 수 있습니다 .


5
이게 뭐야? 무작위 구불 구불 한 문장이 아니라 문장을 쓰라고했습니다! 여기에는 아무 단어도 없습니다!
Riking

5
음 .. 목표는 가장 적은 문자 를 사용하는 것 입니다. 당신은 확실히 "
반골

7

펄-145

많은 답변을 드리겠습니다. Perl 솔루션이 있습니다.

$s="teen-hundreds were a time for";print"The eigh$s rum.
The nine$s fun.
The two-thousands are a time to run
a civilized classroom.
"for b..z

7

그녀가 수학을 너무 싫어하기 때문에 왜 Mathematica (177)

   a = "teen-hundreds were a time for "; Do["The eigh" <> a <> "rum.
   The nine" <> a <> "fun.
   The two-thousands are a time to run a civilized classroom." // Print, {StringLength@a}]

6

자바 스크립트 ES6, 198 193 바이트

m=Math;alert("The eighteen-hundreds were a time for rum.\nThe nineteen-hundreds were a time for fun.\nThe two-thousands are a time to run\na civilized classroom.\n".repeat(~~(m.exp(m.PI)+m.E)))

선생님은 숫자를 원하지 않지만 영어 선생님이기 때문에 어떤 Math.floor(Math.exp(Math.PI)+Math.E)의미 인지 알 수 없습니다 .

더 읽기 쉽게 :

alert("The eighteen-hundreds were a time for rum.\n\
 The nineteen-hundreds were a time for fun.\n\
 The two-thousands are a time to run\na civilized\n classroom.".repeat(Math.floor(Math.exp(Math.PI)+Math.E)))

최신 파이어 폭스에서 실행해야합니다


1
끝에 줄 바꿈이 없으므로 첫 번째 행과 마지막 행이 추가되어 75 개의 행이 추가됩니다.
edc65

XKCD의 e ^ pi 참조로 규칙을 구부린 것에 대해 +1을 수여하지만 -pi ... Bravo!
WallyWest

-4 바이트 :with(Math)alert("long string here".repeat(exp(PI)+E|[]))
nderscore

음, 수학은 잊어 버리 (q='aaaaa'.length)*q
세요

@ edc65 코멘트도 잊어 버려! 이것을 사용하십시오 : "\x18".charCodeAt()! (화살표를 하드 코드하면 톤을 절약 할 수 있습니다!)
Ismael Miguel

6

자바 스크립트 -178 바이트 176 바이트

나의 첫번째 골프는 내가 조금 twiddling 연산자와 함께 그것을 줄 것이라고 생각했지만, 희망만큼 잘 밝혀지지는 않았지만, 오 잘!

c="teen-hundreds were a time for "
b=!!c
alert(Array((b+b+b<<b+b)+b<<b).join("The eigh"+c+"rum.\nThe nine"+c+"fun.\nThe two-thousands are a time to run\na civilized classroom.\n"))

내가 이미 구금되어 있고 분명히 행동하는 데 어려움이 있기 때문에 ... Javascript-71 바이트

이것은 아마도 더 큰 어려움에 처하게 될 것입니다. 그러나 이미 구금 상태에 처해 있고 구금을 속이려고 계획하고 있다면 분명히 수업 시간에 어떻게 행동해야하는지에 대한 올바른 판단이 부족합니다. 어쩌면 내가 선생님에게 하나를 끌어 당길 수 있다면, 다른 모든 골퍼에게 하나를 끌어 당길 수 있습니다.

b=+true;alert( Array((b+b+b<<b+b)+b<<b).join($('code')[+!b].innerHTML))

빨리! Chrome / IE 11 / Firebug 사용자는 지금 바로 콘솔을 열고 사용해보십시오.

(너무 많이 아프게 하지마, 재미 있다고 생각 했어)


1
72는 재미있다. 176은 여러 번 잘못되었습니다. Array (25) .join ()은 24 번 반복되고 끝 문장의 줄 바꿈이 없습니다. 100 대신 24 * 3 = 72 행 전체 (게으른 소년!)
edc65

8 월, 고정. 지금 178과 71.
Sidney

1
"een-hundreds ... for"에 t와 후행 공백을 추가하여 2 바이트를 절약 할 수 있습니다.
Luminous

두 번째 코드는 무엇입니까?
justhalf

1
@justhalf, SO 네트워크가 사용하는 공통 JavaScript 라이브러리 인 JQuery를 사용합니다. $는 실제로 많은 다른 것들 중에서 DOM 요소 선택에서 많은 작업을 수행하는 함수입니다. 이 경우 'code'태그가있는 모든 요소 인 $ ( '<selector>')를 사용하면 모든 요소를 ​​포함하는 객체를 얻습니다. [+! b]를 사용하여 0의 정수 값인 false를 얻습니다. 따라서 0 번째 색인을 선택합니다.이 색인은 OP의 첫 번째 코드 블록으로, 실제로 교사들이 가장 좋아하는 말입니다.
Sidney

5

C # -229 216 바이트

무료 usingFTW!

using c=System.Console;
class S{static void Main(){var a="teen-hundreds were a time";for(int b=a.Length,i=b-b;i++<b;)c.Write("The eigh"+a+" for rum.\nThe nine"+a+" for fun.\nThe two-thousands are a time to run\na civilized classroom.\n");}}

대체, 동일한 바이트 수 ( using하지만 더 많은 남용)

using i=System.Int32;
using c=System.Console;
class S{static void Main(){var a="teen-hundreds were a time";for(int b=new i();b++<a.Length;)c.Write("The eigh"+a+" for rum.\nThe nine"+a+" for fun.\nThe two-thousands are a time to run\na civilized classroom.\n");}}

4
~~ (╯ ° □ °) ╯︵ ┻━┻
William Barbosa

당신은에 "를"추가 할 수 있습니다a
FryAmTheEggman

@FryAmTheEggman 문자열의 길이는 25 자이며 숫자 25를 이산 적으로 얻기 위해 사용합니다. 그러나 그는이 방법을 교체하여 단순히 문자를 서로 빼기 ( ':'-'!'== 25)하는 것보다 짧으며 ( == 25) a.Length제안한대로 포함 할 수 있습니다. (Alternativly는 다른 답변에 보이는대로 수행 사이 단지 루프 !:우리 모두가 같은 문자를 선택하는 방법, 재미)
VisualMelon

@VisualMelon Whoops, 당신은 완전히 옳습니다.
FryAmTheEggman

1
사용 횟수도 계산되지 않았으므로 OP가 이것을 명확히 했습니까?
William Barbosa

5

비 펀지 - 93 268 260 256 (격자 크기 : 72x6 = 432)

#v"K">:!#@_v>$"enin">,,,,::-" rof emit a erew sderdnuh neet">:#,_$::!!-#
, ,,,"The "<|\!\%-"\^"::%-" #":-!!:
   -"#-"-::$_ "hgie"^v1"two-thousands are a time to run"
$_$  "nuf"v"rum"
v1-"##",,,<      >:#,_"moorssalc dezilivic a"1
_# < ^,,\-"AK."$_,#!:

이것은 골프가 처음이기 때문에 다른 문제를 추가하지 않기 때문에이 문제에 대해 아직 수행되지 않은 언어를 시도 할 것이라고 생각했습니다. Befunge-93과 호환되므로 (80x25 그리드에 적합하고 Befunge-93 명령어 만 사용) Befunge-98에서도 작동합니다. 경우에 따라서는 포인터가 공백 이외의 문자 이외의 문자를 전달하는 것을 피했습니다. 사양에서 실제로 해당 문자를 no-ops로 정의했는지 여부를 기억할 수 없었으며 코 악마 가 없습니다. 으며 내 코드에 입니다.

Befunge 코드를 실제로 해제 할 수는 없습니다. 여기서 주목할 점은 Befunge가 문자를 ASCII 값으로 스택에 푸시하므로 문자를 참조하지 않고 숫자를 참조하는 것이 비교적 간단하다는 것입니다. "K"왼쪽 상단은 반복 횟수를 참조, 75 반복 당 "은"조항의 수 나는이 숫자에 대한 계수와 다른 도구를 사용하여 각 처리에서 인쇄를 수행 할 경로를 결정합니다. ::-0에 대한 좋은 관용구이며 0으로 끝나는 문자열에 유용합니다. 나는 여기에 두 번 사용합니다.

때로는 포인터가 문자열을 정의하는 장소를 통과해야하므로 특정 지점에서 특정 숫자를 얻는 데 사용되는 특정 문자 선택이 필요합니다.

많은 Befunge 통역사에 대한 좋은 점은 격자 주위의 포인터 다트를 볼 수 있고 스택에 어떤 값이 있는지 볼 수 있다는 것입니다. 그렇게하면 프로그램이 어느 정도 작동하는지 직접 확인할 수 있습니다. 선호하는 Befunge 통역사가없는 경우 http://befungius.aurlien.net/을 사용하는 것이 좋습니다 .

이것은 아마도 조금 더 많이 파싱 될 수 있습니다. 의견을 보내주세요! 더 나은 설명이 필요하면 누군가 알려주세요. 나는 이것에 익숙하지 않다.

편집 - 프로그램 종료가 (단지 퍼팅 마지막 행에 불필요한 리디렉션을 제거하기로 몇 바이트를 면도 @를 Where ^로 사용을).

또 다른 편집 -다양한 장소에서 더 많은 바이트를 삭감했으며 주로 속임수를 사용했습니다. (Befunge 답변의 추세 인 것처럼 그리드 크기를 추가했습니다.)


Kasran 안녕하세요, codegolf 스택 교환에 오신 것을 환영합니다! 이 대답은 좋아 보인다. 귀하의 설명은 훌륭하고 Befunge 통역사와 연결되어 있습니다.이 언어는 모든 사람이 컴파일러를 가지고 있지 않은 이상한 언어에 도움이됩니다 (사람들은 일반적으로 "여기에서 실행"과 같은 일을 수행합니다).
hmatt1

Befunge는 정말 어려운 언어이므로 작성시 코드 자체의 크기를 기억해야합니다. 코드가 멋지게 보이고 작동합니다. 그러나 re a time 어딘가에 저장하면 크기가 줄어 듭니까?
Ismael Miguel

나는 내가 알고있는 Funge-98 관련 지침이나 행동을 사용하지 않고 있지만이 답변을 쓴 이후 Befungius 인터프리터의 특정 행동이 표준이 아니라는 것을 알게되었습니다. 즉 #줄의 한쪽 끝을 사용 하여 건너 뜁니다 다른 쪽 끝에있는 문자 ( 예를 들어, CCBI# 에서, 다른 쪽 끝에있는 문자와 그 사이에있는 무한 공간을 건너 뛰는)는이 프로그램을 중단시킵니다. 이 문제를 염두에두고이 제출물을 수정하고 귀찮게하지 않았습니다.
Kasran

거기에 1허용되지 않는 몇 자리가 있습니다
Jo King

4

Pyth 135 136 140

*ltG%"The eigh%srum%snine%sfun%stwo-thousands are a time to run\na civilized classroom.\n"*hhZ("teen-hundreds were a time for "".\nThe 

후행 공백에 유의하십시오.

파이썬 응답 에서 @Geobits 및 그의 주석 작성자와 거의 동일한 트릭을 사용 하여 문자열을 구성합니다. 이제이 답변 중 일부를 사용합니다 .

이 내장 된 가변 사용 G포함 abcdefghijklmnopqrstuvwxyz하고, 출력 (25)을 생산하는 길이보다 하나 적은을 얻는다.


1
이것은 135가 아닌 136 바이트 인 것 같습니다
Optimizer

1
죄송합니다 @Optimizer, 나는 내 자신의 노트를 읽어야 내가 거기에 자신을 붙여 넣을 때이 후행 공백을 잊었 : S
FryAmTheEggman

4

루비 - 152 141

puts"The eight#{e="een-hundreds were a time for "}rum.
The ninet#{e}fun.
The two-thousands are a time to run
a civilized classroom.
"*(?X-??)

http://repl.it/2Om/6


1
1.8의 문자 리터럴을 영리하게 사용하십시오! String#*대신 줄을 25 번 반복하는 데 사용할 수 있습니다 Integer#times.
britishtea

@britishtea-치료를했습니다 :)
Mikey

1
먼저 줄을 할당하지 않으면 몇 바이트를 더 줄일 수 있습니다. 풋과 문자열 리터럴 사이의 공백은 선택 사항입니다 (적합합니다 puts"hi").
britishtea

보간 내부에 e를 할당 하는 것은 좋은 터치입니다.
Wayne Conrad

3

파이썬, 165 바이트

h="hundreds were a time for "
t="The "
for i in h:print t+"eighteen-"+h+"rum.\n"+t+"nineteen-"+h+"fun.\n"+t+"two-thousands are a time to run\na civilized classroom."

h의 길이가 25 인 것은 정말 좋았습니다. 의도적이지 않았습니다. =)


3

파이썬 2-143

바보 같은 대답 :

from this import i
a="teen-hundreds were a time for ",".\nThe "
print"The eigh%srum%snine%sfun%stwo-thousands are a time to run\na civilized classroom.\n"%(a+a)*i

전체 수는 162입니다. from this import i .

내 pyth 전략과 비슷한 대체물을 사용하지만 가져 오기의 유쾌함을 발견 한 후에 게시하지 않을 수 없었습니다. :)


+1 사용 from this import i! 그걸 어떻게 알았어?
Beta Decay

1
@BetaDecay 나는 실제로 지루했고 파이썬의 선을 읽기로 결정했기 때문에 통역사에게 가서 썼습니다 import this. 그런 다음 " this모듈 에 무엇이있을 수 있습니까?" 그래서 전화했습니다 dir(this). Lo와 보라, 사전, 깨진 문자열, "!"변수 와 함께 숫자 상수는 25와
같았다

3

PHP (175 157156 바이트; 유닉스 EOF와 152) :

가장 골프 솔루션은 아니지만 확실히 일을하고 일부 시도보다 작습니다.

코드는 다음과 같습니다.

$a=a;$f='re a time';$r="teen-hundreds we$f for";while($a++<z)echo"The eigh$r rum.
The nine$r fun.
The two-thousands a$f to run
a civilized classroom.
";

구 버전:

$a=a;while($a++!=z)echo"The eighteen-hundreds were a time for rum.
The nineteen-hundreds were a time for fun.
The two-thousands are a time to run
a civilized classroom.
";

이것은 PHP가 문자를 순환하기 때문에 작동 z하며 멈추지 않는지 확인합니다 .

(호기심은 PHP가에 도달 z하면로 이동한다는 것 aa입니다.)


3
여기서 일반적인 규칙은 줄 바꿈을 1 바이트로 계산하는 것입니다. 언어가 너무 완고하지 않으면 CRLF 만 허용하며 PHP의 경우는 아닙니다.
nyuszika7 시간

3

파이썬 2-155

참고 : 제어 문자는 SE에 표시되지 않으므로로 대체했습니다\x19.

a,b='\nThe ','teen-hundreds were a time for '
print(a+'eigh'+b+'rum.'+a+'nine'+b+'fun.'+a+'two-thousands are a time to run\na civilized classroom.')*ord('\x19')

기본 64 버전 :

YSxiPScKVGhlICcsJ3RlZW4taHVuZHJlZHMgd2VyZSBhIHRpbWUgZm9yICcKcHJpbnQoYSsnZWln
aCcrYisncnVtLicrYSsnbmluZScrYisnZnVuLicrYSsndHdvLXRob3VzYW5kcyBhcmUgYSB0aW1l
IHRvIHJ1bgphIGNpdmlsaXplZCBjbGFzc3Jvb20uJykqb3JkKCcZJyk=

가져 오기에 관해서는 조금만 저장 from string import *해도되지만 파이썬에서 호출 할 수 있다고 생각합니다.
FireFly

1
"teen"을 b로 옮길 수 있습니다.
FryAmTheEggman

2
[]첫 번째 줄에서 괄호를 제거하면 튜플이 내재적으로 생성 된 다음 압축이 풀립니다.
Doorknob

ord('d')//len('aaaa') to before the string so you don't have to bracket it.
FryAmTheEggman

1
@Dennis OP의 최신 편집을 통해 줄 바꿈이 가능합니다.
Beta Decay

3

라이브 스크립트-181

p=(a,b)->"The #{a}teen-hundreds were a time for #b.\n"
each console.log,map (->(p \eigh \rum)+(p \nine \fun)+'The two-thousands are a time to run\na civilized classroom.'),[\A to\Y]

필요한 수입품 :

{each, map} = require 'prelude-ls'

당신은 Node.js를 아래를 실행하려는 경우, 설치 LiveScript( 하지 livescript )와 prelude-ls, NPM에서 패키지를 대체 alert하여 console.log실행 lsc prog.ls여기서 prog.ls프로그램이 포함되어 있습니다.


13
규칙을 참조하십시오 : "문자를 사용할 수 없습니다 0123456789"
Paul R

2
좋은 캐치, 고정.
nyuszika7h

2

T-SQL : 206

구를 선택하여 25 개의 행을 생성하기 위해 5 개의 행에서 교차 결합을 사용합니다. 줄 바꿈은 출력에 중요합니다.

with c as(SELECT\ N FROM(VALUES(\),($),($),($),($))A(B))SELECT REPLACE('The eigh$rum.
The nine$fun.
The two-thousands are a time to run
a civilized classroom.','$','teen-hundreds were a time for ')FROM c a,c b

2

배쉬, 151 바이트

당신 자신의 대답 의 직선 포트

t="teen-hundreds were a time for"
for i in {a..y};{
echo "The eigh$t rum.
The nine$t fun.
The two-thousands are a time to run
a civilized classroom."
}

2

C, 196 자

이것은 좋은 일을하기에는 쉬운 일이 아닙니다. C. "% steen-hundreds ..."패턴을 고려하면 전체 2 개가 절약됩니다. 글자 .

명확성을위한 공백은 포함되지 않습니다.

#include <stdio.h>
main(){
  for (char*p="The %steen-hundreds were a time for %s.\n",
           *s="The two-thousands are a time to run\na civilized classroom.",
           *q=p;
       *q++ - 'a';
       puts(s))
   printf(p,"eigh","rum"), printf(p,"nine","fun");
}

2

루비, 145

?K.upto(?c){puts"The eigh#{x="teen-hundreds we#{t="re a time "}for "}rum.
The nine#{x}fun.
The two-thousands a#{t}to run
a civilized classroom."}

설명

  • 사용하다 String#upto줄을 25 번 인쇄하는 데 합니다. 범위"K".."c" 는 25 자입니다.
  • 기본 문자열 보간을 사용하여 줄을 줄입니다.

2
#{a="The "}실제로 더 많은 캐릭터를 요합니다! #{a}와 같은 길이The
Mikey

2

라켓 173

(let([x"teen-hundreds were a time for "])(for([z(+ #xa #xf)])(displayln(~a"The eigh"x"rum.\nThe nine"x"fun.\nThe two-thousands are a time to run\na civilized classroom."))))

언 골프 드 :

(let ([x "teen-hundreds were a time for "])
  (for([z(+ #xa #xf)])
    (displayln (~a "The eigh"x"rum.\nThe nine"x"fun.\nThe two-thousands are a
     time to run\na civilized classroom."))))

2

C, 215 (203) 199 바이트

main(a){a<<='\xC'+'\xD';while(a>>=!!a)printf("The eighteen-hundreds were a time for rum.\nThe nineteen-hundreds were a time for fun.\nThe two-thousands are a time to run\na civilized classroom.\n");}

언 골프

main(a)
{
  a<<='\xC'+'\xD';
  while(a>>=!!a)
    printf("The eighteen-hundreds were a time for rum.\nThe nineteen-hundreds were a time for fun.\nThe two-thousands are a time to run\na civilized classroom.\n");
}

비트 쉬프팅을 사용하여 숫자없이 반복했습니다.

a<<='\xC'+'\xD' a를 0b1으로 설정 [25 zeros]

a>>=!!a 루프를 반복 할 때마다 1 비트 씩 오른쪽으로 이동

편집 : a argc와 같으므로 프로그램이 인수없이 실행될 때 해당 값은 이미 1입니다. 4 바이트 더 짧은 것으로 변경 a>>='\xB'-'\xA'되었습니다 a>>=!!'\xA'. 또한 텍스트는 24 회만 표시되었습니다. 고쳤다. 에서 추가 괄호를 제거했습니다 while.

편집 2 :로 변경 !!'\xA'되었습니다 !!a. 작동하고 4 바이트를 절약합니다


1
puts더 많은 바이트를 절약 하는 데 사용할 수 있습니다 .
Spikatrix 2016 년

2

Rant, 191 바이트

가장 짧은 해결책은 아니지만 여전히 시원합니다. 처음 세 줄을 쓰는 서브 루틴을 작성하고 빈 인수로 호출하여 25 자 길이의 문자열을 반환하도록 설계했습니다. 그런 다음 길이를 리피터에 전달합니다.

[pin:][$[_:a]:The [arg:a][sync:;ordered]{thousands a|teen-hundreds we}re a time ][r:[len:[$_:]]]{[step:][$_:eigh]for rum.\N[$_:nine]for fun.\N[step:][$_:two-]to run\Na civilized classroom.\N}

언 골프 드 :

[pin:]
[$[_:a]:The [arg:a][sync:;ordered]{thousands a|teen-hundreds we}re a time ]
[r:[len:[$_:]]]
{
    [step:]
    [$_:eigh]for rum.\N
    [$_:nine]for fun.\N
    [step:]
    [$_:two-]to run\N
    a civilized classroom.\N
}

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

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