도전
도전은 간단합니다 : 뱀을 인쇄하십시오 .
뱀 길이를 입력으로 얻습니다.
길이 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를 사용하여 제작 )
설명:
루프, 카운터가 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
.
이전 인수가없는 경우 전체 일치가 기본 인수로 사용됩니다.
답변
답변
하스켈, 25 바이트
f n=('='<$[1..n])++"(:)-"
'='<$[1..n]
와 같습니다 replicate n '='
.