태그 보관물: kolmogorov-complexity

kolmogorov-complexity

스네이크 등호가 몇 개인 지 입니다. 용법 C ++ 구현을

도전

도전은 간단합니다 : 뱀을 인쇄하십시오 .
뱀 길이를 입력으로 얻습니다.
길이 2의 뱀은 다음과 같습니다.

==(:)-

길이가 7 인 뱀은 다음과 같습니다.

=======(:)-

다시 말해, 뱀의 길이는 머리 앞의 등호가 몇 개인 지 입니다.

용법

C ++ 구현을 만들어서 컴파일했다고 가정 해 봅시다 ./getsnake.
나는 그렇게 실행할 수 있습니다 :

$ ./getsnake 10
==========(:)-

설명

  • 표준 허점은 허용되지 않습니다.
  • 허용되는 방식으로 입력 및 출력을 얻을 수 있습니다.
  • 주어진 모든 입력이 양의 정수라고 가정 할 수 있습니다.
  • 일반 프로그램 대신 함수를 작성할 수 있습니다.


답변

헥사 고니 , 33 바이트

이길 수는 없지만 여전히 시원합니다. 골프를 더 많이 할 수 있습니다.

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

골프 :

61}?.$)@$j;(3<./;.}l/.400;5\j;.'\

형식화 :

    6 1 } ?
   . $ ) @ $
  j ; ( 3 < .
 / ; . } l / .
  4 0 0 ; 5 \
   j ; . ' \
    . . . .

컬러 ( Timwi의 Hexagony Colorer를 사용하여 제작 )

당신은 비밀 스 ek을 발견!  ======= (:)-

설명:

루프, 카운터가 0에 도달 할 때까지 “=”를 인쇄하십시오.

    6 1 } ?
   . $ . . $
  . . ( . . .
 / . . } . . .
  . . . ; . .
   . . . ' .
    . . . .

“(“인쇄

    . . . .
   . . . . .
  . . . . . .
 / ; . . . . .
  4 . . . . .
   j . . . .
    . . . .

“:”인쇄

    . . . .
   . . . . .
  . ; ( 3 < .
 . . . } l / .
  . . . . . .
   . . . . .
    . . . .

“)”인쇄

    . . . .
   . . . . .
  j . . . . .
 . . . . . . .
  . . . ; 5 \
   . . . . \
    . . . .

위의 값은 간단한 파이썬 스크립트를 사용하여 생성되었습니다. 그러나 나는 “-“를위한 공간이 부족하다. 그래서 나는 더 고급의 트릭에 의지해야했습니다.

프로그램이 “)”를 출력 할 때 셀의 값은 41이 아니라 1065입니다. Hexagony는 인쇄 할 때 값을 변경합니다. 결과적으로, “-“에 대한 ASCII 값인 45에서 하나만 떨어진 (1065 * 1000 + 4) % 256 = 44입니다. 그런 다음 인쇄 후 어딘가에서 @를 증가시키고 인쇄하고 삽입합니다.

    . . . .
   . $ ) @ $
  j . . 3 . .
 / . . } . . .
  4 0 0 . 5 \
   . ; . . \
    . . . .


답변

계피 껌, 7 바이트

0000000: 7043 dc95 6d4f ce                        pC..mO.

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

이전 p구문 으로 6 바이트 였을 것입니다 : /

설명

에 압축 해제 p~=~(:)-p단계는 단순히 입력을 판독하고, 반복 =횟수 (N)만큼.


답변

Brian & Chuck , 31 바이트

,{-?>}-):(=?
#}<<.{?_<.<.<.<.<.

바이트 값 의 형태로 입력, 예를 들어 입력 !은 길이가 33 인 뱀을 제공합니다.

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

오랜만이야…

설명

빠른 Brian & Chuck 입문서 :

  • 프로그램의 첫 번째 줄은 Brian이고 두 번째 줄은 Chuck입니다.
  • Brian과 Chuck은 Brainfuck과 같은 두 인스턴스입니다. 주요 문제점은 척의 프로그램이 브라이언의 테이프이고 그 반대도 마찬가지입니다. 테이프 헤드 / 명령 포인터는 각 테이프의 첫 번째 셀에서 시작되고 실행은 Brian에서 시작됩니다.
  • 명령은 몇 가지 차이점이 있습니다. Brian만이 ,(입력)을 사용할 수 있고 Chuck만이 .(출력)을 사용할 수 있습니다 . 이외에도 <하고 >있다 {그리고 }다음 제로 셀로 테이프 헤드를 이동하는 (또는 경우에 {테이프의 좌단 방식에는 제로 셀이없는 경우). 대신에 현재 셀이 0이 아닌 경우 [...]제어 플로우가 ?다른 인스턴스로 제어를 전환하는 것이 유일한 제어 플로우입니다 . 다른 셀에서 첫 번째로 실행 된 명령어는 조건 이후의 명령어입니다. 그리고 마지막으로 _편의상 널 바이트의 별명입니다.

이제 코드입니다. 브라이언은 이것으로 시작합니다 :

,{-?

이것은 입력을 Chuck의 첫 번째 셀로 읽은 다음 테이프 헤드를 왼쪽으로 이동하고 {(지금은 아무것도하지 않음) -값이 여전히 0이 아닌 경우 Chuck에 대한 제어를 전환하기 전에 입력을 줄 입니다. 메인 루프가 시작됩니다. 그런 다음 척은이 비트를 실행합니다.

}<<.{?

이렇게하면 Brian의 테이프 헤드가 맨 끝으로 이동하고 두 개의 셀이 왼쪽으로 이동 한 =다음 테이프 헤드의 왼쪽 끝까지 인쇄 된 다음 컨트롤이 Brian으로 다시 전환됩니다. 이것이 일반적으로 B & C에서 루프가 작동하는 방식입니다.

입력이 0으로 줄어들면, ?Brian의 테이프는 아무 것도하지 않습니다. 그런 다음 Brian은이 부분을 실행합니다.

>}-):(=?

):(=실제 코드 그냥 그래서, 어떤 작전 없습니다 >}-?. 우리와 제로 세포 떨어져 이동 >까지 이동, _}, 그 영이 아닌 척에 스위치를 만들기 위해를 감소 ?. 그런 다음 척의 마지막 비트가 실행됩니다.

<.<.<.<.<.

이렇게하면 Chuck 앞에 5 개의 문자가 인쇄 =(:)-됩니다. =메인 루프는 N-1입력을 위해서만 실행되므로 다른 것을 인쇄해야합니다 N.


답변

V , 8 바이트

Àé=A(:)-

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

V는 “Latin1″인코딩을 사용합니다.

설명:

À        "Arg1 times:
 é=      "Insert an '='
   A(:)- "Append the head


답변

망막 , 10 바이트

.+
$*=(:)-

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

이것은 간단한 정규식 대체입니다.

.+전체 입력과 일치 하는 항목을 찾은 다음로 대체합니다 $*=(;)-.

$*망막의 독특한 기능입니다 : 그것은 문자 반복 특수 연산자입니다.

예를 들어, 5$*x될 것입니다 xxxxx.

이전 인수가없는 경우 전체 일치가 기본 인수로 사용됩니다.


답변

파이썬, 21 바이트

lambda n:"="*n+"(:)-"

무시 했어!


답변

하스켈, 25 바이트

f n=('='<$[1..n])++"(:)-"

'='<$[1..n]와 같습니다 replicate n '='.