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'}
온라인으로 사용해보십시오!
골프가 진행 중입니다.
언 골프
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}
온라인으로 사용해보십시오!
도우미 함수 s는 공백으로 구분 된 문자열의 압축을 풉니 다.
{⍵⊆⍨' '≠⍵} monadic function taking a string
' '≠⍵ 0s at spaces, 1s elsewhere
⍵⊆⍨ Partition (split at 0s)
먼저 가능한 초기 및 최종 문자열을 음절에 저장 한 다음 tab첫 번째 목록의 각 문자열과 두 번째 목록의 각 문자열을 연결 하는 테이블을 만듭니다 .
다음으로 이진 데이터를 정수 목록으로 저장합니다. 일부 정수는 반복되므로 변수에 저장하여 일부 공백을 제거 할 수 있습니다.
각 정수는 이진수로 디코딩되며 테이블의 한 행을 나타냅니다. 숫자의 각 비트는 해당 행의 특정 음절이 유효한 음절인지 여부를 나타내며 MSB는 첫 번째 열을 나타냅니다. 유효하지 않은 모든 음절이 표에서 제거됩니다.
테이블을 목록으로 병합하고 특별한 경우로 초기 자음이없는 양식을 추가 한 다음 입력이 목록에 있는지 확인합니다.
추가 골프 가능성 :
- base64 또는 base255 인코딩 작성
- 숫자를 작게하려면 열과 행을 재정렬하십시오.
Python 유용한 스크립트 및 테스트 케이스 생성기 : 온라인으로 사용해보십시오!
nar? : P