Nhiệm vụ ở đây là đọc từ .rle
tệp Golly hoặc plaintext (lựa chọn của bạn) có tên tệp được cung cấp (trên STDIN hoặc dưới dạng đối số dòng lệnh) và xác định và đếm các mẫu phổ biến trong lưới được mã hóa trong đó.
Ngoài ra, bạn có thể chọn để có nội dung của tệp được cung cấp trực tiếp qua STDIN.
Chương trình của bạn sẽ có thể xác định và phân biệt ít nhất mười lăm cuộc sống nghiêm ngặt phổ biến nhất và năm dao động phổ biến nhất , cộng với tàu lượn .
Tất cả các pha của các bộ dao động này phải được nhận ra, cũng như tất cả bốn pha của tàu lượn.
Nó sẽ xuất ra một danh sách chứa số đếm cuối cùng của mỗi mẫu, với tên và số lượng của mỗi mẫu trên một dòng riêng biệt. Chương trình của bạn có thể bao gồm trong danh sách ouput tất cả các mẫu này hoặc chỉ những mẫu có ít nhất một mẫu được tìm thấy.
Các mẫu là một phần của các mẫu khác đang được tính không nên được tính. (ví dụ, pha 8 ô của đèn hiệu cũng không nên được tính là hai khối và không nên tính một chiếc cà vạt tàu là hai tàu)
Bạn có thể cho rằng đầu vào đã ổn định và không chứa các mẫu không có trong bộ đã nói ở trên. Bạn cũng có thể giả định rằng lưới đầu vào sẽ nằm trong hộp 1024x1024.
Đây là môn đánh gôn , vì vậy chương trình ngắn nhất sẽ thắng.
Mô tả định dạng tệp RLE
Tệp RLE chứa lưới tuổi thọ được mã hóa theo chiều dài. Tất cả các dòng bắt đầu với #
là ý kiến và nên được bỏ qua.
Dòng không trống, không bình luận đầu tiên có dạng x=<width>,y=<height>,rule=<rule>
. Đối với các mục đích của nhiệm vụ này, quy tắc sẽ luôn luôn là B3/S23
. Nó có thể chứa các khoảng trắng cần được loại bỏ trước khi xử lý dòng này (tất nhiên, không cần thiết phải xử lý dòng này.)
Các dòng không bình luận sau lần đầu tiên nên được coi là một chuỗi đơn. Điều này sẽ chỉ gồm các chữ số thập phân, các nhân vật $
, b
và o
, và ngắt dòng và sẽ không kết thúc bằng một chữ số. Ngắt dòng sẽ bị bỏ qua, nhưng bạn có thể cho rằng ngắt dòng sẽ không làm gián đoạn chuỗi chữ số.
Điều này có thể được chấm dứt bởi một !
.
b
đại diện cho một tế bào chết, o
đại diện cho một tế bào sống và $
đại diện cho sự kết thúc của một hàng. Bất kỳ số thập phân nào chỉ ra rằng ký hiệu sau sẽ được coi là lặp lại nhiều lần.
Mã hóa mẫu văn bản
Tùy chọn khác là đọc mẫu ở định dạng văn bản gốc khác được mô tả ở đây. Trong mã hóa này, các ô tắt được biểu thị bằng dấu gạch nối và trên các ô được biểu thị bằng chữ hoa Os, với các dòng mới ngăn cách các hàng.
Bạn có thể cho rằng tất cả các dòng không bình luận sẽ được đệm với chiều dài bằng với dấu gạch nối.
Các dòng bắt đầu bằng !
các bình luận và được bỏ qua.
Một số trường hợp thử nghiệm
RLE:
#This is a comment
x = 35, y = 16, rule = B3/S23
bo$2o$obo5$22bo$22bo$22bo2$18b3o3b3o2$22bo$22bo10b2o$22bo10b2o!
Văn bản thô:
!This is a comment
-O---------------------------------
OO---------------------------------
O-O--------------------------------
-----------------------------------
-----------------------------------
-----------------------------------
-----------------------------------
----------------------O------------
----------------------O------------
----------------------O------------
-----------------------------------
------------------OOO---OOO--------
-----------------------------------
----------------------O------------
----------------------O----------OO
----------------------O----------OO
Các kết quả:
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
Văn bản thô:
-----OO--------------------
-----OO--------------------
---------------------------
---------------------------
---------------------------
---------------------------
---------------------------
---------------------------
---------------------------
---------------------------
-----------O---------------
O---------O-O--------------
O---------O-O--------------
O----------O------------OOO
!Here's a comment at the end
Các kết quả:
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!
Văn bản thô:
!You may have multiple comments
!As shown here
OO-----------
OO-----------
-------------
------------O
------------O
------------O
--OO---------
--OO----OO---
-------O--O--
-------O-O---
--------O----
Các kết quả:
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!
Văn bản thô:
! Pentadecathlon
! Discovered by John Conway
! www.conwaylife.com/wiki/index.php?title=Pentadecathlon
--O----O--
OO-OOOO-OO
--O----O--
Các kết quả:
Pentadecathlon 1
Tiền thưởng
Nếu bạn hỗ trợ cả hai định dạng đầu vào (sử dụng phần mở rộng tệp [ .rle
cho tệp rle và .cells
cho bản rõ - cách đọc các phần mở rộng khác không được xác định] hoặc cờ dòng lệnh để phân biệt giữa chúng), bạn có thể trừ 5% khỏi điểm số của mình.
OOO.OO\n....OO