나는 다른 날에 생일 파티를 위해 호박 패치를 걷고 있었고, 소용돌이, 고리 및 파생물과 함께 호박 덩굴이 멋진 패턴을 만드는 것을 보았습니다. 여기서는 ASCII 아트로이를 시뮬레이션 할 것입니다.
(())
\
p--q p-----q
/ \ / \
(()) b--d (())
포도 나무 건설 규칙
\ / - p q b d
캐릭터 로만 구성된 하나의 메인 포도 나무가 있습니다 .- 포도 나무는 화면을 가로 질러 왼쪽에서 오른쪽으로 만 이동합니다. 다시 말해, 가장 왼쪽의 포도 나무 캐릭터에서 시작하는 개미라고 가정 해 봅시다. 메인 덩굴의 다음 인접 캐릭터로 진행할 때 하나의 열을 오른쪽으로 이동 해야합니다 .
- 덩굴이 방향을 바꾸면
p q b d
루프를 시뮬레이션하기 위해 캐릭터 중 하나 가 필요합니다. 은p
1, 동쪽으로 동북 여행 덩굴에 합류q
남동쪽 동쪽를 들어,b
남동쪽에서 동쪽으로, 그리고d
동쪽에서 북동에. 문자의 "루프"는 가로 덩굴에 연결되고 문자의 "줄무늬"는 대각선에 연결됩니다. - 포도 나무의 시작은
p
또는b
(당신의 선택, 무작위 일 필요는 없음) 중 하나이어야하며 수평으로 시작합니다. 포도 나무의 끝은 하나q
또는d
(당신의 선택, 무작위 일 필요는 없음)이어야하고 수평으로 끝나야합니다. - 루프는 다른 루프에 바로 인접하여 배치 될 수 있지만 (예 :
pd
포도 나무의 유효한 하위 문자열 임) 나중에 호박을 배치하기가 더 어려울 수 있습니다.- / \
루프 직후에 (내 예제에서와 같이) 항상 하나를 원할 수도 있지만 필수는 아닙니다.
호박 규칙
- 호박은
(())
(이 정확한 줄) 로만 구성 됩니다. - 주요 덩굴에서 호박은 파생물로 붙어 있습니다. 이 파생물은
p q b d
루프 에만 부착 할 수 있고 정확히 하나\
또는/
길이이며 호박에 부착하여 파생물의 "끝"이 중간에 오도록합니다. - 그들은 주요 포도 나무 위 또는 아래에 연결할 수 있습니다.
- 파생물은 "왼쪽"으로 연결될 수 있습니다.
- 오프 슛당 하나의 호박 만, 루프 당 하나의 오프 슛 만 부착 할 수 있습니다.
무작위성
- 가로로 여행 할 때 포도 나무는 가로로 50 %, 북동으로 25 %, 남동으로 25 %의 확률을가집니다.
- 대각선으로 여행 할 때 포도 나무는 90 %의 확률로 수평으로 돌고 10 %의 확률로 대각선으로 계속됩니다.
- 더 많은 회전이 허용되지만 호박의 입력 수를 지원하기에 충분한 회전이 있어야합니다.
- 덩굴이 만들어지면 호박은 이미 호박이 차지하지 않는 구석에 무작위로 놓을 수 있습니다.
- 호박은 덩굴이나 다른 호박과 겹칠 수 없습니다.
도전
입력 번호가 주어지면 위의 규칙에 따라 무작위 호박 패치를 출력하십시오. 동일한 입력으로 코드를 여러 번 실행하면 다른 결과가 나타납니다. 주어진 입력 번호에 대해 가능한 모든 호박 패치는 반드시 0이 아닌 가능성이 있어야합니다.
입력
편리한 형식n
의 패치에서 호박 수를 나타내는 단일 정수 입니다 . 간결한 코드를 위해 입력이이라고 가정 할 수 있습니다 0 < n < 256
.
산출
결과 호박 패치는 화면에 인쇄 / 표시되거나 문자열 / 문자열 배열 등으로 반환됩니다.
규칙
- 이것은 골프 골프 이므로 골프에 대한 모든 일반적인 규칙이 적용되고 가장 짧은 코드 (바이트)가 이깁니다.
- "무작위" 의 표준 정의 를 사용하십시오 .
- 전체 프로그램 또는 기능이 허용됩니다.
- 표준 허점 은 금지되어 있습니다.
- 선행 / 후행 공백 / 개행은 모두 완전히 선택 사항입니다.
예
input의 경우 n = 3
, 위 규칙 (공백 줄 바꿈으로 구분)에 따라 호박 패치에 대한 올바른 예가 있습니다.
(())
\
p--q p-----q
/ \ / \
(()) b--d (())
(()) (())
\ /
b-q (())
\ /
b-q
p-----------------------q (())
/ \ /
(()) b-q
/
(())
다음은 입력 n = 3
에 대한 일부 잘못된 예 와 설명 #
입니다.
(()) (())
/ /
p---q----q
\
(())
# The vine continued horizontally after a loop was placed.
(()(())
\ /
p---q
\
(())
# The pumpkins are both overlapping and sprouting from the same loop.
p----------------q
\ \ \
(()) (()) (())
# The pumpkin is attached to the middle of the vine, not at a loop.
7
이제 이것을 구문으로 사용하여 2D 언어를 디자인하십시오. :)
—
Martin Ender