태그 보관물: kolmogorov-complexity

kolmogorov-complexity

구금 행을 작성 있다고 생각하기 때문에

소개

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

그녀는 칠판에 자신이 가장 좋아하는 말을 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카운트로 프로그램 점수를 매기십시오 . 최저 점수가 이깁니다!


답변

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]]      ";

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


답변

자바 스크립트 (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 콘솔에서 테스트하십시오 .


답변

파이썬 : 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


답변

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 바이트로 줄일 수는 있지만 다른 유니 코드 솔루션을 두드리지 않기 때문에 오히려 넣지 않을 것입니다. 🙂


답변

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 덕분에 더 이상 숫자 나 내선 번호가 없습니다.


답변

루비, 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}


답변

자바 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 ")));
    }
}