s←⊢⊆⍨' '≠⊢
a b c←2097144 131064 1957895
f←{(⊂⍵)∊(12↑v),(s'yi ya ye yao you yan yang yin ying yong yu yue yuan yun wu wa wo wai wei wan wang wen weng nv lv nve lve'),(,⊤(a-8)1966080 393208 1966064 2096720 1966072 1048568a a 2056184a 131048a 7288b 7280 106488b 7280b 0 1958911 73735c c 352263c 24583 1859591c,5⍴7)/,('bpmfdtnlgkhzcs',s'zh ch sh r j q x')∘.,v←'aoe',s'ai ei ao ou an ang en eng ong u ua uo uai ui uan uang un ueng i ia ie iao iu ian iang in ing iong u ue uan un'}
Hãy thử trực tuyến!
Chơi gôn trong tiến trình.
Ung dung
s←{⍵⊆⍨' '≠⍵}
con←s'b p m f d t n l g k h z c s zh ch sh r j q x'
vwl←s'a o e ai ei ao ou an ang en eng ong u ua uo uai ui uan uang un ueng i ia ie iao iu ian iang in ing iong u ue uan un'
tab←con∘.,vwl
bin←,⊤2097136 1966080 393208 1966064 2096720 1966072 1048568 2097144 2097144 2056184 2097144 131048 2097144 7288 131064 7280 106488 131064 7280 131064 0 1958911 73735 1957895 1957895 352263 1957895 24583 1859591 1957895 7 7 7 7 7
all←'aoe',(12↑vwl),(s'yi ya ye yao you yan yang yin ying yong yu yue yuan yun wu wa wo wai wei wan wang wen weng nv lv nve lve'),bin/,tab
f←{(⊂⍵)∊all}
Hãy thử trực tuyến!
Hàm trợ giúp s
giải nén chuỗi được phân tách bằng dấu cách:
{⍵⊆⍨' '≠⍵} monadic function taking a string
' '≠⍵ 0s at spaces, 1s elsewhere
⍵⊆⍨ Partition (split at 0s)
Trước tiên tôi lưu trữ các chuỗi ban đầu và cuối cùng có thể có trong âm tiết, sau đó tạo một bảng tab
chứa phần nối của mỗi chuỗi từ danh sách đầu tiên với mỗi chuỗi từ danh sách thứ hai.
Tiếp theo, tôi lưu trữ dữ liệu nhị phân dưới dạng danh sách các số nguyên. Một số số nguyên được lặp lại và do đó có thể được lưu trữ trong các biến, điều này cũng cho phép bỏ qua một số khoảng trắng.
Mỗi số nguyên được giải mã thành nhị phân và đại diện cho một hàng của bảng. Mỗi bit trong số biểu thị cho dù một âm tiết nhất định trong hàng đó có phải là một âm tiết hợp lệ hay không, với MSB đại diện cho cột đầu tiên. Tất cả các âm tiết không hợp lệ được loại bỏ khỏi bảng.
Chúng tôi làm phẳng bảng thành một danh sách, thêm vào các biểu mẫu không có phụ âm đầu tiên như một trường hợp đặc biệt và cuối cùng kiểm tra xem đầu vào của chúng tôi có trong danh sách không.
Tiềm năng chơi gôn có thể hơn nữa:
- Viết mã hóa base64 hoặc base255
- Sắp xếp lại các cột và hàng để làm cho các số nhỏ hơn.
Kịch bản hữu ích Python và trình tạo trường hợp thử nghiệm: Hãy thử trực tuyến!
nar
nào? : P