태그 보관물: kolmogorov-complexity

kolmogorov-complexity

ASCII 체스 판을 그립니다! 전체 보드는 다음과 같습니다. rnbqkbnr pppppppp …….. …….. …….. …….. PPPPPPPP RNBQKBNR 이것은 kolmogorov-complexity 질문이므로 입력

간단한 도전은 다음과 같습니다. 체스 판의 ASCII 표현을 생성해야합니다. 흰색은 대문자로 표시되고 검은 색은 소문자로 표시됩니다. 빈 타일은로 표시됩니다 .. 전체 보드는 다음과 같습니다.

rnbqkbnr
pppppppp
........
........
........
........
PPPPPPPP
RNBQKBNR

이것은 질문이므로 입력 할 수 없으며 파일 저장, STDOUT으로 인쇄 또는 함수에서 복귀와 같은 기본 방법으로이 보드를 출력해야합니다. 선택적으로 하나의 후행 줄 바꾸기를 생성 있습니다 . 표준 허점이 적용되며 가장 짧은 프로그램은 바이트 단위입니다!

그러나 이것은 같은 언어로 제출 한 작품들 사이의 경쟁과 동일하다는 것을 기억하십시오. Java와 같은 언어가 perl과 같은 언어 또는 pyth 또는 cjam과 같은 골프 언어를 능가 할 가능성은 없지만 Java 답변이 가장 짧은 것이 여전히 인상적입니다! 각 언어에서 가장 짧은 답변을 추적 할 수 있도록이 리더 보드를 사용하면 언어 및 전체적으로 가장 짧은 제출을 표시 할 수 있습니다.

리더 보드

답변이 표시되도록하려면 다음 마크 다운 템플릿을 사용하여 헤드 라인으로 답변을 시작하십시오.

# Language Name, N bytes

N제출물의 크기는 어디에 있습니까 ? 당신이 당신의 점수를 향상시킬 경우에, 당신은 할 수 있습니다 를 통해 눈에 띄는에 의해, 헤드 라인에 오래된 점수를 유지한다. 예를 들어 :

# Ruby, <s>104</s> <s>101</s> 96 bytes

헤더에 여러 숫자를 포함하려는 경우 (예 : 점수가 두 파일의 합계이거나 인터프리터 플래그 페널티를 별도로 나열하려는 경우) 실제 점수가 헤더 의 마지막 숫자 인지 확인하십시오 .

# Perl, 43 + 2 (-p flag) = 45 bytes

언어 이름을 링크로 만들어 리더 보드 스 니펫에 표시 될 수도 있습니다.

# [><>](http://esolangs.org/wiki/Fish), 121 bytes



답변

젤리 , 25 24 바이트

“.“.“p“rnbqkbn”ṁ€8µṚ;ŒuY

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

1 바이트를 골라 낸 @Lynn에게 감사드립니다!

작동 원리

“.“.“p“rnbqkbn”ṁ€8µṚ;ŒuY  Main link. No arguments.

“.“.“p“rnbqkbn”           Yield [".", ".", "p", "rnbqkbnr"].
               ṁ€8        Mold-each 8; reshape each string like the array
                          [1, 2, 3, 4, 5, 6, 7, 8], i.e., cyclically repeat its
                          contents to create strings of length 8.
                          This yields the upper half of the board in reversed
                          order, i.e., the string array
                          A := "........", "........", "pppppppp", "rnbqkbnr"].
                  µ       Begin a new, monadic chain. Argument: A
                   Ṛ      Reverse A.
                     Œu   Convert all characters in A to uppercase.
                    ;     Concatenate the results to both sides.
                       Y  Join the strings, separating by linefeeds.


답변

Vim, 26 바이트

irnbqkbnr<Esc>Y6p5Vr.VrpYGPgUj

신선한 Vim에 의존하거나 그렇지 않으면 5V잘못된 영역을 선택할 수 있습니다.

  • irnbqkbnr<Esc>: 맨 위 줄을 씁니다. 충분히 쉽다.
  • Y6p: 하나를 제외한 나머지 행을 만듭니다 . 물론 맨 위와 맨 아래 행을 제외한 모든 문자에 잘못된 문자가 포함되어 있습니다.
  • 5Vr.: 아직 세션에서 비주얼 모드를 사용하지 않은 경우 5 줄을 선택하기 위해 이와 같은 작업을 수행 할 수 있습니다. 같은 것을 다시 입력하면 25 줄을 선택하려고 시도합니다. Vim은 그렇게 이상합니다.
  • Vrp: 우리는 이미 2 번 라인에 있습니다. 폰을 만들어 봅시다.
  • YGP그 폰 라인을 맨 아래에 복사합니다. 이것이 바로 내가 6p대신 사용했던 이유 7p입니다.
  • gUj: 흰색 조각을 대문자로 표시하십시오.

답변

Brainfuck , 224 바이트

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

이것을 얻기 위해 거의 1 시간 걸렸다.


답변

파이썬 2, 63 바이트

print"\n".join(["rnbqkbnr","p"*8]+["."*8]*4+["P"*8,"RNBQKBNR"])

불행히도, 매우 간단한 접근 방식은 처음에 시도한 “영리한”것보다 훨씬 짧았습니다 …

보너스 답변, 63 바이트 :

print"\n".join(["rnbqkbnr"]+[c*8for c in"p....P"]+["RNBQKBNR"])


답변

05AB1E , 24 바이트

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

"rnbqkbnr"'p8×'.8×D)Âu«»

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

설명

"rnbqkbnr"                # push the string "rnbqkbnr"
                          # STACK: "rnbqkbnr"
          'p8×            # push the char "p" repeated 8 times
                          # STACK: "rnbqkbnr", "pppppppp"
              '.8×        # push the char "." repeated 8 times
                          # STACK: "rnbqkbnr", "pppppppp", "........"
                  D       # duplicate
                          # STACK: "rnbqkbnr", "pppppppp", "........", "........"
                   )      # wrap in list
                          # STACK: ["rnbqkbnr", "pppppppp", "........", "........"]
                    Â     # push a reversed copy of the list
                          # STACK: ["rnbqkbnr", "pppppppp", "........", "........"],
                                   ["........", "........", "pppppppp", "rnbqkbnr"]
                     u«   # convert to upper-case and concatenate
                          # STACK: ['rnbqkbnr', 'pppppppp', '........', '........',
                                    '........', '........', 'PPPPPPPP', 'RNBQKBNR']
                       »  # join list by newline


답변

실제로 26 바이트

'p8*"rnbqkbnr"│û@û4'.8*n((

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

설명:

'p8*"rnbqkbnr"│û@û4'.8*n((
'p8*                        "p"*8 ["pppppppp"]
    "rnbqkbnr"              that string ["rnbqkbnr", "pppppppp"]
              │             duplicate stack ["rnbqkbnr", "pppppppp", "rnbqkbnr", "pppppppp"]
                û@û         uppercase the dupes ["RNBQKBNR", "PPPPPPPP", "rnbqkbnr", "pppppppp"]
               4   '.8*n    "."*8, 4 times ["RNBQKBNR", "PPPPPPPP", "........", "........", "........", "........", "rnbqkbnr", "pppppppp"]
                        ((  move the uppercase strings to the bottom of the stack, implicitly print


답변

체다, 56 바이트

a=['rnbqkbnr','p'*8]+['.'*8]*2->(a+a.rev=>@.upper).vfuse

새로운 =>기능을 사용합니다 .

설명

a=                      // set a to the first half
  ['rnbqkbnr','p'*8] +  // First two rows
  ['.'*8]*2             // Next two dots
->(
   a +
   a.rev=>@.upper       // Reverse and map all items to uppercase
).vfuse                 // Join on newlines