Các hệ thống chính là một ghi nhớ thiết bị để chuyển đổi số thành chữ để họ có thể được ghi nhớ dễ dàng hơn.
Nó dựa trên cách các từ phát âm theo ngữ âm, nhưng để mọi thứ đơn giản cho thử thách, chúng ta sẽ chỉ quan tâm đến cách các từ được đánh vần. Điều này có nghĩa là sẽ có một số chuyển đổi không chính xác, nhưng không sao.
Để chuyển đổi một số thành một từ bằng cách sử dụng hệ thống chính được đơn giản hóa của chúng tôi:
- Thay thế
0
bằngs
hoặcz
. (Một số có thểs
và một số có thểz
. Cùng đi bên dưới.)- Thay thế từng
1
cót
hayd
hayth
.- Thay thế
2
bằngn
.- Thay thế
3
bằngm
.- Thay thế
4
bằngr
.- Thay thế
5
bằngl
.- Thay thế từng
6
cój
haysh
haych
.- Thay thế từng
7
cók
hayc
hayg
hayq
.- Thay thế từng
8
cóf
hayv
.- Thay thế từng
9
cóp
hayb
.- Thêm các chữ cái
aehiouwxy
ở bất cứ đâu với số lượng bất kỳ để tạo ra một từ tiếng Anh thực sự, nếu có thể .
Ngoại lệ duy nhất làh
có thể không được chèn sau mộts
hoặcc
.Số thực sự có thể là bất kỳ chuỗi nào trong các chữ số 0-9 (không có số thập phân hoặc dấu phẩy hoặc dấu).
Từ chỉ có thể chứa các chữ cái viết thường az.
Ví dụ
Số 32
phải được chuyển đổi thành ?m?n?
, trong đó ?
đại diện cho bất kỳ chuỗi hữu hạn nào được tạo từ các chữ cái aehiouwxy
(một chuỗi từ monoid miễn phí nếu bạn thích). Có nhiều cách điều này có thể được làm thành một từ tiếng Anh thật: mane
, moon
, yeoman
vv
Số 05
có thể được chuyển đổi thành ?s?l?
hoặc ?z?l?
. Một số khả năng là easily
, hassle
, và hazel
. Từ shawl
này không được phép vì h
có thể không được đặt sau s
; nó sẽ được đọc không chính xác như là 65
.
Thử thách
Viết chương trình hoặc hàm lấy một chuỗi các chữ số 0-9 và tìm tất cả các từ mà nó có thể được chuyển đổi thành sử dụng hệ thống ghi nhớ chính được đơn giản hóa.
Chương trình của bạn có quyền truy cập vào tệp văn bản danh sách từ xác định tất cả các từ tiếng Anh "thực" là gì. Có một từ az chữ thường trên mỗi dòng của tệp này và bạn có thể tùy ý giả sử nó có một dòng mới. Dưới đây là danh sách các từ thực bạn có thể sử dụng để kiểm tra. Bạn có thể giả sử tệp danh sách từ này được gọi f
(hoặc một cái gì đó dài hơn) và nằm trong bất kỳ thư mục thuận tiện.
Đối với hình phạt 35 byte (thêm 35 vào điểm số của bạn), bạn có thể giả sử danh sách từ đã được tải vào một biến dưới dạng danh sách các chuỗi. Điều này chủ yếu dành cho các ngôn ngữ không thể đọc tệp, nhưng bất kỳ nội dung gửi nào cũng có thể tận dụng lợi thế của nó.
Chương trình của bạn phải xuất tất cả các từ trong danh sách từ mà số đầu vào có thể được chuyển đổi thành. Chúng nên được in ra thiết bị xuất chuẩn (hoặc tương tự), mỗi dòng trên một dòng (với một dòng mới tùy chọn) hoặc chúng có thể được trả về dưới dạng danh sách các chuỗi nếu bạn chọn viết hàm. Danh sách từ không nhất thiết phải được sắp xếp theo thứ tự chữ cái và đầu ra không cần phải là một trong hai.
Nếu không có từ nào có thể thì đầu ra (hoặc danh sách) sẽ trống. Đầu ra cũng trống nếu chuỗi trống là đầu vào.
Đưa đầu vào qua stdin, dòng lệnh hoặc làm đối số chuỗi cho hàm. Danh sách từ, hoặc tên tệp của nó, không nên là một phần của đầu vào, chỉ là chuỗi chữ số.
Bạn chỉ kết hợp các từ đơn trong danh sách từ, không phải các chuỗi từ. Từ noon
này có thể là một trong những kết quả cho 22
, nhưng chuỗi từ no one
sẽ không.
Các trường hợp thử nghiệm
Giả sử đây là danh sách từ:
stnmrljkfp
zthnmrlshqfb
asatanamaralajakafapa
aizxydwwwnhimouooraleshhhcavabe
zdnmrlshcvb
zdnmrlshchvb
sthnmrlchgvb
shthnmrlchgvb
bob
pop
bop
bopy
boppy
Đầu vào 0123456789
sẽ cung cấp cho tất cả các từ dài ngoại trừ zdnmrlshchvb
và shthnmrlchgvb
:
stnmrljkfp
zthnmrlshqfb
asatanamaralajakafapa
aizxydwwwnhimouooraleshhhcavabe
zdnmrlshcvb
sthnmrlchgvb
Đầu vào 99
sẽ cho:
bob
pop
bop
bopy
(Các từ đầu ra có thể theo thứ tự bất kỳ.)
Chấm điểm
Đệ trình ngắn nhất tính bằng byte thắng. Tiebreaker đi đến trình gửi đăng đầu tiên.
Trang web liên quan tiện lợi: numzi.com .