여기서 작업은 .rle
파일 이름이 제공 되는 Golly 또는 일반 텍스트 파일 (선택한 파일) (STDIN 또는 명령 줄 인수로)을 읽고 그 안에 인코딩 된 그리드에서 공통 패턴을 식별하고 계산하는 것입니다.
또는 파일의 내용을 STDIN을 통해 직접 제공하도록 선택할 수도 있습니다.
귀하의 프로그램은 최소한 15 개의 가장 일반적인 엄격한 정물 과 5 개의 가장 일반적인 오실레이터 와 글라이더 를 식별하고 구별 할 수 있어야합니다 .
글라이더의 모든 4 단계와 마찬가지로이 발진기의 모든 단계를 인식해야합니다.
각 패턴의 최종 개수와 각 패턴의 이름과 수량을 별도의 줄에 포함하는 목록을 출력해야합니다. 프로그램은 이러한 모든 패턴 또는 하나 이상을 찾은 패턴을 출력 목록에 포함 할 수 있습니다.
계산되는 다른 패턴의 일부인 패턴은 계산되지 않아야합니다. (예를 들어, 비콘의 8 셀 단계는 2 개의 블록으로 계산되어서는 안되며, 선박 타이는 2 개의 선박으로 간주되어서는 안됩니다)
입력이 이미 안정화되었으며 위에서 언급 한 세트에없는 패턴이 없다고 가정 할 수 있습니다. 입력 그리드가 1024x1024 상자에 맞는다고 가정 할 수도 있습니다.
이것은 code-golf 이므로 가장 짧은 프로그램이 승리합니다.
RLE 파일 형식 설명
RLE 파일에는 실행 길이 인코딩 된 라이프 그리드가 있습니다. 로 시작하는 모든 줄 #
은 주석이므로 무시해야합니다.
비어 있지 않은, 주석이없는 첫 줄은 형식 x=<width>,y=<height>,rule=<rule>
입니다. 이 작업의 목적 상 규칙은 항상입니다 B3/S23
. 이 행을 처리하기 전에 제거해야하는 공백이 포함될 수 있습니다 (물론이 행을 전혀 처리 할 필요는 없습니다).
첫 줄 이후의 주석이 아닌 행은 단일 문자열로 처리해야합니다. 이것은 단지 소수점 숫자, 문자로 구성되어야합니다 $
, b
그리고 o
, 줄 바꿈 및 숫자로 끝나지 않을 것입니다. 줄 바꿈은 무시해야하지만 줄 바꿈이 문자열을 방해하지 않는다고 가정 할 수 있습니다.
이것은 단일로 종료 될 수 있습니다 !
.
b
는 죽은 셀을 o
나타내고 라이브 셀을 $
나타내며 행의 끝을 나타냅니다. 십진수는 다음 기호가 여러 번 반복되는 것으로 취급됨을 나타냅니다.
평문 패턴 인코딩
다른 옵션은 여기에 설명 된 다른 일반 텍스트 형식으로 패턴을 읽는 것입니다. 이 인코딩에서 오프 셀은 하이픈으로 표시되고 온 셀은 대문자 Os로 표시되며 줄 바꿈은 행으로 구분됩니다.
주석이 아닌 모든 행은 하이픈으로 같은 길이로 채워 진다고 가정 할 수 있습니다.
로 시작하는 줄 !
은 주석이므로 무시해야합니다.
일부 테스트 사례
RLE :
#This is a comment
x = 35, y = 16, rule = B3/S23
bo$2o$obo5$22bo$22bo$22bo2$18b3o3b3o2$22bo$22bo10b2o$22bo10b2o!
일반 텍스트:
!This is a comment
-O---------------------------------
OO---------------------------------
O-O--------------------------------
-----------------------------------
-----------------------------------
-----------------------------------
-----------------------------------
----------------------O------------
----------------------O------------
----------------------O------------
-----------------------------------
------------------OOO---OOO--------
-----------------------------------
----------------------O------------
----------------------O----------OO
----------------------O----------OO
결과 :
Glider 1
Blinker 4
Block 1
RLE :
x = 27, y = 15, rule = B3/S23
5b2o$5b2o9$11bo$o9bobo$o9bobo$o10bo12b3o!
#Here's a comment at the end
일반 텍스트:
-----OO--------------------
-----OO--------------------
---------------------------
---------------------------
---------------------------
---------------------------
---------------------------
---------------------------
---------------------------
---------------------------
-----------O---------------
O---------O-O--------------
O---------O-O--------------
O----------O------------OOO
!Here's a comment at the end
결과 :
Block 1
Blinker 2
Beehive 1
RLE :
#You may have multiple comments
#As shown here
x = 13, y = 11, rule = B3/S23
2o$2o2$12bo$12bo$12bo$2b2o$2b2o4b2o$7bo2bo$7bobo$8bo!
일반 텍스트:
!You may have multiple comments
!As shown here
OO-----------
OO-----------
-------------
------------O
------------O
------------O
--OO---------
--OO----OO---
-------O--O--
-------O-O---
--------O----
결과 :
Block 2
Blinker 1
Loaf 1
RLE :
# Pentadecathlon
# Discovered by John Conway
# www.conwaylife.com/wiki/index.php?title=Pentadecathlon
x = 10, y = 3, rule = B3/S23
2bo4bo2b$2ob4ob2o$2bo4bo!
일반 텍스트:
! Pentadecathlon
! Discovered by John Conway
! www.conwaylife.com/wiki/index.php?title=Pentadecathlon
--O----O--
OO-OOOO-OO
--O----O--
결과 :
Pentadecathlon 1
보너스
두 입력 형식을 모두 지원 하는 경우 (파일 확장자 [ .rle
rle 파일 및 .cells
다른 확장자를 읽는 방법은 정의되지 않음] 또는 명령 줄 플래그를 사용하여 구별 할 수 있음)를 사용하면 점수에서 5 %를 뺄 수 있습니다.
OOO.OO\n....OO