From 0eddd3eafc1ad68b3b55f0565c10b7b92b104d51 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8C=AB=E7=8C=AB?= Date: Fri, 7 Jul 2023 07:05:45 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20order=20of=20`=E5=87=B5`=20and=20`?= =?UTF-8?q?=F0=A0=83=8A`?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Cargo.lock | 2 +- Cargo.toml | 2 +- README.md | 9 +- my_ids.txt | 7 +- src/ids/pn.rs | 30 +- src/roots.rs | 897 +++++++++++++++++++------------------------------- 6 files changed, 370 insertions(+), 577 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index da481cf..9dea3d2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,4 +4,4 @@ version = 3 [[package]] name = "libre-flypy" -version = "1.0.0" +version = "1.2.0" diff --git a/Cargo.toml b/Cargo.toml index ce9039f..2c6da06 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "libre-flypy" authors = ["OverflowCat"] -version = "1.0.0" +version = "1.2.0" edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html diff --git a/README.md b/README.md index c9d6471..dfa7afd 100644 --- a/README.md +++ b/README.md @@ -2,14 +2,13 @@ 自由小鹤是一个自由的小鹤音形码表实现,旨在通过代码基于开源的数据上生成一套小鹤音形码表,并补全 Unicode 中存在但小鹤音形未编码的汉字。 -注意,本项目目前处于早期开发阶段,不保证生成的码表的正确性。 -目前表内形码的正确性为 **7884 / 8106 (97.26%)** 字,全码的正确性为 **7872 / 8106 (97.11%)** 字,输出共计 **52721** 个编码。 +目前表内形码的正确性为 **7900 / 8106 (97.46%)** 字,全码的正确性为 **7888 / 8106 (97.31%)** 字,输出共计 **52721** 个编码。 目前表内全码错误或缺失的字: ``` -厂匕几九刁力又于才寸大丈与万口山巾及亡尸卫女飞丰井夫丐木五不车巨屯戈中内水见午牛手毛壬升长凶月氏丹方火斗丑书玉未末世本戊平东北业目且甲申电由史央皿凹生矢失乍丘乎甩印乐册永民弗出发母耳吏西夹夷尧曲朱廷乔臼舟兆争亥充米农声严求甫更束两来肖串我身龟免弃武丧画事雨妻齿果制垂秉所夜单肃承陋函柬面骨幽钙卸养逆乘旅兼继曹雀兜象毫涵寇惠翘凿鼎鹉毁颖毅赢疆乜廿卅尹夬爿毋耒曳凼聿艮丞卣沔臾亟眄禺鸩釜蚩堇菡啬啮颍彀嗯嵊滏榖臧廛畿縠墼羲豳篾卬𠙶毌㧑尨伭卺叚郪隺烝崡庳婳堾堼棤黹颋䐃𬭚漦酂彟 +匕几九力又于才寸大丈与万口巾及尸卫女丰井夫无丐木五不尤车巨屯中内水见午牛手毛壬升长月氏丹方火斗丑书玉未末世本戊平东北业目且甲申电由史央皿凹生矢失乍丘乎甩印乐册永民弗出发母耳吏西夹夷曲朱廷乔臼舟兆争亥充米农严求甫更束两尬来肖串我身龟免弃武丧事妻果制垂秉所夜单肃承陋函柬面骨幽钙卸养逆乘旅兼继曹雀兜象毫断寇惠鼎鹉尴毁颖毅疆乜廿卅夬爿毋耒尥曳聿艮丞卣沔臾亟眄禺鸩釜蚩堇啬颍彀嗯嵊滏榖臧廛畿縠墼羲豳篾卬𠙶毌㧑尪伭卺叚郪隺烝庳堾堼棤黹颋䐃𬭚漦酂彟 ``` ## 使用 @@ -36,7 +35,9 @@ ## 贡献 -欢迎提交 PR。如果想修复错误的形码,最好的方式是在 [my_ids.txt](./my_ids.txt) 中添加符合笔顺和拆字方式的表意文字描述序列。 +本项目虽然力求与官方码表保持一致,但不保证生成的码表的完全正确。 + +不过,欢迎提交 PR 以增添新字或修正错码。如果想修复错误的形码,最好的方式是在 [my_ids.txt](./my_ids.txt) 中添加符合笔顺和拆字方式的表意文字描述序列。 ## 协议 diff --git a/my_ids.txt b/my_ids.txt index d5502ae..22d5713 100644 --- a/my_ids.txt +++ b/my_ids.txt @@ -3,7 +3,6 @@ ⺆ ⺆ ⺕ ⺕ 〇 〇 -コ コ ヨ ヨ ㇀ ㇀ ㇁ ㇁ @@ -28,6 +27,9 @@ 其 其 甚 ⿱其㇄ 具 ⿱且八 +コ ⿱𠃍一 +厂 ⿻一丿 +亡 ⿱亠㇄(H,J) ⿱亠乚(sg);⿱亠𠃊(.,V);⿱亠𠄌(.t,st) 𫩏 ⿱⿰丨𠃍⿱丨一 凸 ⿻⿰丨㇎⿱⿰一丨一(seq) 七 ⿻一乚 @@ -35,6 +37,7 @@ 人 ⿰丿乀 入 ⿰丿乀 𬼀 ⿱丶丿 +𭠍 ⿻⿱一丿㇂ 己 ⿳𠃍一乚 已 ⿳𠃍一乚 巳 ⿳𠃍一乚 @@ -89,6 +92,7 @@ 嬴 ⿱吂⿲月女凡 蠃 ⿱吂⿲月虫凡 羸 ⿱吂⿲月羊凡 +赢 ⿱吂⿲月贝凡 隺 ⿻⿰丶乛隹(.) 穴 ⿱宀八(.,T,J,K) ⿱宀儿(j.w,jsg,jsw) 省 ⿱少目(.,H) @@ -106,3 +110,4 @@ 齑 ⿱文⿲丿韭丨 戢 ⿱口⿻戈⿻⿲丨⿱一一丨一//口戈丨丨 𦰩 ⿱艹⿻口⿻⿻二丿乀 +尹 ⿻⿻⿱𠃍一一丿 diff --git a/src/ids/pn.rs b/src/ids/pn.rs index 8e5d369..17f4240 100644 --- a/src/ids/pn.rs +++ b/src/ids/pn.rs @@ -103,12 +103,16 @@ impl From<&str> for Tree { let mut stack = Vec::with_capacity(3); for c in s.chars().rev() { if let Ok(idc) = Idc::try_from(c) { - // if idc == Idc::SurroundFromBelow { - // println!("<< {}: {:?} >>", s, idc); - // } - let children = (0..idc.get_children_count()) + let mut children: Vec<_> = (0..idc.get_children_count()) .map(|_| stack.pop().expect("Not enough children.")) .collect(); + if idc == Idc::SurroundFromBelow { + if let Tree::Leaf { value } = children[0] { + if ['凵', '𠃊'].contains(&value) { + children.swap(0, 1); + } + } + } let node = Tree::Node { idc, children, @@ -155,15 +159,15 @@ impl Tree { Tree::Node { idc: _, children, .. } => { - let mut child = &children[0]; - match child { - Tree::Leaf { value, .. } => { - if ['凵', '𠃊'].contains(value) { - child = &children[1]; - } - } - _ => {} - } + let child = &children[0]; + // match child { + // Tree::Leaf { value, .. } => { + // if ['𠃊'].contains(value) { + // child = &children[1]; + // } + // } + // _ => {} + // } child.get_first_leaf() } Tree::Leaf { value } => *value, diff --git a/src/roots.rs b/src/roots.rs index a3e9f11..0fc57ae 100644 --- a/src/roots.rs +++ b/src/roots.rs @@ -1,728 +1,511 @@ use std::collections::HashMap; pub fn generate() -> (HashMap, HashMap) { - let first = HashMap::from([ - ('凹', 'a'), + let common = [ ('一', 'a'), - ('𰀁', 'a'), - ('𠀎', 'a'), - ('𫠠', 'a'), - ('𢦑', 'a'), - ('彧', 'a'), - ('𰀉', 'a'), - ('镸', 'a'), - ('惠', 'a'), - ('朿', 'a'), + ('㇀', 'a'), ('鱼', 'a'), + ('丙', 'b'), ('八', 'b'), - ('百', 'b'), - ('匕', 'b'), - ('𠤎', 'b'), - ('疒', 'b'), - ('巴', 'b'), + ('不', 'b'), + ('必', 'b'), ('白', 'b'), - ('宀', 'b'), - ('穴', 'b'), ('冖', 'b'), - ('丷', 'b'), ('半', 'b'), - ('必', 'b'), - ('丙', 'b'), - ('勹', 'b'), - ('不', 'b'), + ('巴', 'b'), + ('百', 'b'), + ('匕', 'b'), + ('𠤎', 'b'), ('艹', 'c'), - ('册', 'c'), ('才', 'c'), - ('歹', 'd'), - ('丁', 'd'), - ('丹', 'd'), + ('册', 'c'), ('东', 'd'), - ('脊', 'd'), + ('丁', 'd'), ('丶', 'd'), - ('冫', 'd'), - ('氵', 'd'), - ('⺈', 'd'), + ('氐', 'd'), + ('丹', 'd'), ('刀', 'd'), - ('㡀', 'd'), ('大', 'd'), - ('氐', 'd'), - ('山', 'e'), - ('而', 'e'), - ('兆', 'e'), + ('冫', 'd'), + ('歹', 'd'), ('耳', 'e'), - ('卩', 'e'), - ('𠁳', 'e'), ('彐', 'e'), - ('ヨ', 'e'), - ('⺕', 'e'), ('儿', 'e'), ('二', 'e'), + ('ヨ', 'e'), + ('山', 'e'), + ('卩', 'e'), + ('而', 'e'), ('阝', 'e'), - ('龶', 'f'), - ('夫', 'f'), - ('𡗗', 'f'), - ('麦', 'f'), - // ('麥', 'f'), - // ('寿上', 'f'), + ('甫', 'f'), ('方', 'f'), ('弗', 'f'), - ('非', 'f'), - ('扌', 'f'), - ('甫', 'f'), ('缶', 'f'), ('丰', 'f'), - ('卅', 'f'), - ('艮', 'g'), - ('骨', 'g'), - ('干', 'g'), + ('夫', 'f'), + ('非', 'f'), + ('龶', 'f'), + ('果', 'g'), + ('更', 'g'), ('广', 'g'), - ('鬼', 'g'), - ('革', 'g'), - ('毌', 'g'), - ('戈', 'g'), - ('甘', 'g'), ('工', 'g'), - ('艮', 'g'), - ('更', 'g'), ('弓', 'g'), + ('干', 'g'), + ('鬼', 'g'), + ('革', 'g'), ('瓜', 'g'), - ('果', 'g'), - ('户', 'h'), - ('虍', 'h'), + ('艮', 'g'), + ('甘', 'g'), + ('骨', 'g'), + ('戈', 'g'), ('火', 'h'), - ('黑', 'h'), ('禾', 'h'), - ('叉', 'i'), - ('产', 'i'), + ('黑', 'h'), + ('户', 'h'), + ('川', 'i'), + ('车', 'i'), ('厂', 'i'), - ('串', 'i'), ('尺', 'i'), + ('叉', 'i'), ('出', 'i'), - ('虫', 'i'), - ('车', 'i'), - ('川', 'i'), ('臣', 'i'), + ('产', 'i'), ('成', 'i'), - ('彳', 'i'), - ('龹', 'j'), - ('甲', 'j'), - ('斤', 'j'), - ('九', 'j'), - ('臼', 'j'), - ('鼠', 'j'), - ('钅', 'j'), + ('串', 'i'), + ('虫', 'i'), ('金', 'j'), - ('己', 'j'), - ('久', 'j'), + ('夹', 'j'), ('几', 'j'), + ('臼', 'j'), + ('久', 'j'), + ('己', 'j'), + ('斤', 'j'), + ('甲', 'j'), + ('九', 'j'), ('巾', 'j'), - ('夹', 'j'), ('戋', 'j'), - ('口', 'k'), - ('冂', 'k'), - ('⺆', 'k'), - ('冃', 'k'), - ('盥', 'k'), ('开', 'k'), + ('口', 'k'), ('匚', 'k'), - ('囗', 'k'), + ('力', 'l'), + ('亅', 'l'), + ('耒', 'l'), ('立', 'l'), + ('里', 'l'), ('丽', 'l'), + ('龙', 'l'), ('来', 'l'), - ('卵', 'l'), ('丨', 'l'), - ('亅', 'l'), - ('⺊', 'l'), - ('北', 'l'), - ('里', 'l'), - ('龙', 'l'), - ('力', 'l'), - ('耂', 'l'), - ('耒', 'l'), + ('面', 'm'), ('木', 'm'), - ('马', 'm'), - ('馬', 'm'), - ('民', 'm'), + ('门', 'm'), ('毛', 'm'), ('米', 'm'), - ('面', 'm'), - ('门', 'm'), + ('馬', 'm'), + ('马', 'm'), + ('民', 'm'), ('内', 'n'), + ('乃', 'n'), ('女', 'n'), - ('鸟', 'n'), - ('廿', 'n'), ('牛', 'n'), - ('𠂒', 'n'), - ('⺧', 'n'), - ('乃', 'n'), - ('月', 'o'), + ('鸟', 'n'), ('⺝', 'o'), - ('日', 'o'), ('目', 'o'), - ('鼎', 'o'), - ('礻', 'p'), - ('丿', 'p'), - ('㇀', 'p'), + ('月', 'o'), + ('日', 'o'), ('㇁', 'p'), - ('𠂆', 'p'), - ('𫜵', 'p'), - ('𦥑', 'p'), - ('𦥔', 'p'), - ('𠂎', 'p'), - ('𠂊', 'p'), - ('卬', 'p'), - ('卑', 'p'), + ('丕', 'p'), + ('丿', 'p'), ('爿', 'p'), ('片', 'p'), - ('制', 'p'), - ('衤', 'p'), - ('示', 'p'), - ('丕', 'p'), - ('犭', 'q'), - ('丘', 'q'), - ('具', 'q'), - ('气', 'q'), - ('犬', 'q'), - ('求', 'q'), - ('其', 'q'), + ('千', 'q'), ('七', 'q'), + ('求', 'q'), ('且', 'q'), - ('千', 'q'), - ('入', 'r'), + ('气', 'q'), + ('丘', 'q'), + ('犬', 'q'), ('人', 'r'), - ('亻', 'r'), ('刃', 'r'), - ('壬', 'r'), + ('亻', 'r'), ('冉', 'r'), - ('罒', 's'), - ('丝', 's'), - ('肃', 's'), - ('厶', 's'), - ('纟', 's'), + ('壬', 'r'), ('巳', 's'), + ('丝', 's'), ('龴', 's'), - // ('予', 's'), - // ('矛', 's'), - ('天', 't'), - ('太', 't'), + ('厶', 's'), + ('肃', 's'), ('田', 't'), - ('土', 't'), ('屯', 't'), - ('身', 'u'), - ('水', 'u'), - ('氏', 'u'), + ('天', 't'), + ('土', 't'), + ('太', 't'), ('𠂇', 'u'), - ('上', 'u'), + ('十', 'u'), + ('世', 'u'), + ('水', 'u'), ('生', 'u'), ('尸', 'u'), - ('饣', 'u'), - ('束', 'u'), - ('龵', 'u'), ('石', 'u'), - ('矢', 'u'), - ('士', 'u'), - ('世', 'u'), + ('手', 'u'), + ('勺', 'u'), ('豕', 'u'), + ('士', 'u'), ('申', 'u'), - ('十', 'u'), - ('𢦏', 'u'), - ('尢', 'u'), + ('束', 'u'), + ('矢', 'u'), ('少', 'u'), - ('乍', 'v'), + ('氏', 'u'), + ('上', 'u'), + ('中', 'v'), + ('巜', 'v'), ('舟', 'v'), - ('止', 'v'), - ('齒', 'v'), - ('齿', 'v'), - ('叚', 'v'), - ('爪', 'v'), - ('⺮', 'v'), - ('𥫗', 'v'), + ('𠃊', 'v'), + ('朱', 'v'), + ('乙', 'v'), + ('乜', 'v'), ('巛', 'v'), - ('巜', 'v'), - ('𡿨', 'v'), - ('中', 'v'), - ('正', 'v'), - ('豸', 'v'), + ('乍', 'v'), + ('爪', 'v'), + ('㇂', 'v'), ('𠃋', 'v'), - ('𠄌', 'v'), - ('㇇', 'v'), - ('𠂈', 'v'), - ('乛', 'v'), - ('⺄', 'v'), + ('止', 'v'), + ('正', 'v'), ('𠃍', 'v'), + ('𡿨', 'v'), + ('乛', 'v'), ('𠃌', 'v'), - ('𠃊', 'v'), - ('𠄎', 'v'), - ('乙', 'v'), - ('ユ', 'v'), - ('彑', 'v'), - ('肀', 'v'), - ('乜', 'v'), - ('癶', 'v'), - ('𠃜', 'v'), - ('隶', 'v'), - ('朱', 'v'), - ('尹', 'v'), - ('戊', 'w'), - ('乌', 'w'), - ('勿', 'w'), - ('五', 'w'), + ('⺄', 'v'), ('韦', 'w'), - ('午', 'w'), - ('兀', 'w'), - ('夂', 'w'), - ('我', 'w'), - ('亠', 'w'), - ('亥', 'w'), ('未', 'w'), - ('亡', 'w'), ('王', 'w'), - ('𪡅', 'w'), - ('万', 'w'), + ('兀', 'w'), + ('亡', 'w'), + ('勿', 'w'), + ('乌', 'w'), + ('午', 'w'), + ('五', 'w'), ('文', 'w'), - ('臧', 'w'), - ('⺍', 'x'), - ('𭕄', 'x'), - ('⺌', 'x'), - ('𡭙', 'x'), - ('小', 'x'), - ('戌', 'x'), - ('西', 'x'), - ('覀', 'x'), - ('乡', 'x'), + ('万', 'w'), + ('戊', 'w'), + ('夂', 'w'), + ('我', 'w'), ('夕', 'x'), + ('西', 'x'), ('乂', 'x'), - ('𠂭', 'x'), - ('𠚍', 'x'), - ('下', 'x'), + ('小', 'x'), + ('心', 'x'), ('习', 'x'), - ('忄', 'x'), ('血', 'x'), - ('⺷', 'y'), - ('又', 'y'), - ('也', 'y'), - ('禺', 'y'), - ('牙', 'y'), - ('禹', 'y'), - ('酉', 'y'), - ('央', 'y'), + ('下', 'x'), + ('乡', 'x'), ('弋', 'y'), - ('畿', 'y'), - ('亚', 'y'), - ('讠', 'y'), - ('尹', 'y'), + ('由', 'y'), + ('永', 'y'), + ('酉', 'y'), ('幺', 'y'), + ('央', 'y'), + ('也', 'y'), + ('夭', 'y'), + ('又', 'y'), ('尢', 'y'), + ('禹', 'y'), ('于', 'y'), - ('夭', 'y'), - ('永', 'y'), - ('⺶', 'y'), + ('羊', 'y'), + ('牙', 'y'), + ('雨', 'y'), + ('亚', 'y'), ('与', 'y'), + ('尹', 'y'), ('业', 'y'), - ('羊', 'y'), + ('禺', 'y'), + ('⺷', 'y'), ('𦍌', 'y'), - ('雨', 'y'), - ('由', 'y'), - ('⻊', 'z'), ('𧾷', 'z'), - ('廴', 'z'), - ('辶', 'z'), + ('⻊', 'z'), ('子', 'z'), ('自', 'z'), - ]); - let last = HashMap::from([ - ('一', 'a'), + ('廴', 'z'), + ('辶', 'z'), + ]; + let only_in_firsts = [ + ('𢦑', 'a'), + ('凹', 'a'), + ('𠀎', 'a'), + ('彧', 'a'), + ('𰀉', 'a'), + ('𫠠', 'a'), + ('惠', 'a'), + ('𰀁', 'a'), + ('镸', 'a'), + ('朿', 'a'), + ('勹', 'b'), + ('穴', 'b'), + ('疒', 'b'), + ('丷', 'b'), + ('宀', 'b'), + ('⺈', 'd'), + ('㡀', 'd'), + ('脊', 'd'), + ('氵', 'd'), + ('𠁳', 'e'), + ('兆', 'e'), + ('⺕', 'e'), + ('麦', 'f'), + ('卅', 'f'), + ('扌', 'f'), + ('𡗗', 'f'), + ('毌', 'g'), + ('虍', 'h'), + ('彳', 'i'), + ('钅', 'j'), + ('鼠', 'j'), + ('龹', 'j'), + ('盥', 'k'), + ('冃', 'k'), + ('⺆', 'k'), + ('冂', 'k'), + ('囗', 'k'), + ('耂', 'l'), + ('卵', 'l'), + ('⺊', 'l'), + ('北', 'l'), + ('𠂒', 'n'), + ('廿', 'n'), + ('⺧', 'n'), + ('鼎', 'o'), + ('𠂆', 'p'), + ('𦥔', 'p'), + ('制', 'p'), + ('𫜵', 'p'), + ('卑', 'p'), + ('礻', 'p'), + ('衤', 'p'), + ('𠂊', 'p'), + ('示', 'p'), + ('卬', 'p'), + ('𦥑', 'p'), + ('𠂎', 'p'), + ('具', 'q'), + ('其', 'q'), + ('犭', 'q'), + ('入', 'r'), + ('罒', 's'), + ('纟', 's'), + ('𢦏', 'u'), + ('尢', 'u'), + ('龵', 'u'), + ('身', 'u'), + ('饣', 'u'), + ('𠄌', 'v'), + ('叚', 'v'), + ('肀', 'v'), + ('豸', 'v'), + ('齒', 'v'), + ('㇇', 'v'), + ('癶', 'v'), + ('𠄎', 'v'), + ('隶', 'v'), + ('𠂈', 'v'), + ('齿', 'v'), + ('ユ', 'v'), + ('𠃜', 'v'), + ('彑', 'v'), + ('𥫗', 'v'), + ('⺮', 'v'), + ('亥', 'w'), + ('臧', 'w'), + ('𪡅', 'w'), + ('亠', 'w'), + ('⺌', 'x'), + ('𭕄', 'x'), + ('覀', 'x'), + ('𡭙', 'x'), + ('⺍', 'x'), + ('𠂭', 'x'), + ('𠚍', 'x'), + ('忄', 'x'), + ('戌', 'x'), + ('⺶', 'y'), + ('讠', 'y'), + ('畿', 'y'), + ]; + let only_in_lasts = [ + ('亟', 'a'), ('堇', 'a'), ('豆', 'a'), - ('亟', 'a'), - ('鱼', 'a'), - ('不', 'b'), - ('丙', 'b'), - ('巴', 'b'), - ('卜', 'b'), - ('必', 'b'), - ('八', 'b'), ('其', 'b'), - ('半', 'b'), - ('本', 'b'), - ('冖', 'b'), + ('卜', 'b'), ('办', 'b'), + ('本', 'b'), ('卞', 'b'), - ('匕', 'b'), - ('𠤎', 'b'), - ('百', 'b'), - ('白', 'b'), ('寸', 'c'), - ('才', 'c'), - ('册', 'c'), - ('艹', 'c'), ('廾', 'c'), - ('大', 'd'), - ('歹', 'd'), - ('东', 'd'), - ('氐', 'd'), - ('丹', 'd'), - ('刀', 'd'), - ('丁', 'd'), - ('丶', 'd'), - ('冫', 'd'), - ('𡿨', 'd'), + ('电', 'd'), ('羲', 'd'), - ('刁', 'd'), - ('赤', 'd'), - ('禸', 'd'), + ('𡿨', 'd'), ('彧', 'd'), ('刂', 'd'), + ('赤', 'd'), ('兆', 'd'), - ('发', 'd'), - ('电', 'd'), - // ('亦', 'd'), - ('电', 'd'), + ('禸', 'd'), ('𡗞', 'd'), - ('阝', 'e'), - ('儿', 'e'), - ('山', 'e'), - ('二', 'e'), - ('卩', 'e'), - ('耳', 'e'), - ('而', 'e'), + ('发', 'd'), + ('刁', 'd'), ('见', 'e'), - ('彐', 'e'), - ('ヨ', 'e'), - ('缶', 'f'), - ('非', 'f'), - ('方', 'f'), - ('甫', 'f'), - ('龶', 'f'), - ('夫', 'f'), + ('蠃', 'f'), + ('赢', 'f'), ('乏', 'f'), ('凡', 'f'), ('嬴', 'f'), - ('蠃', 'f'), - ('赢', 'f'), - ('丰', 'f'), ('隺', 'f'), - ('弗', 'f'), - ('更', 'g'), - ('弓', 'g'), - ('骨', 'g'), - ('戈', 'g'), ('丐', 'g'), - ('瓜', 'g'), - ('革', 'g'), - ('干', 'g'), - ('果', 'g'), - ('鬼', 'g'), - ('工', 'g'), - ('甘', 'g'), - ('艮', 'g'), ('夬', 'g'), - ('广', 'g'), - ('乎', 'h'), - ('禾', 'h'), - ('火', 'h'), - ('户', 'h'), - ('灬', 'h'), ('爲', 'h'), + ('灬', 'h'), ('互', 'h'), - ('黑', 'h'), - ('虫', 'i'), - ('出', 'i'), - ('川', 'i'), - ('成', 'i'), - ('长', 'i'), - ('尺', 'i'), + ('乎', 'h'), + ('亍', 'i'), ('垂', 'i'), - ('串', 'i'), - ('产', 'i'), - ('叉', 'i'), + ('丑', 'i'), ('斥', 'i'), - ('车', 'i'), - ('亍', 'i'), - ('厂', 'i'), - ('臣', 'i'), ('臧', 'i'), - ('丑', 'i'), - ('臼', 'j'), - ('己', 'j'), - ('九', 'j'), - ('久', 'j'), - ('金', 'j'), - ('夹', 'j'), - ('几', 'j'), - ('及', 'j'), - ('戋', 'j'), + ('长', 'i'), + ('韭', 'j'), ('柬', 'j'), - ('井', 'j'), - ('甲', 'j'), - ('巾', 'j'), ('巨', 'j'), - ('斤', 'j'), + ('及', 'j'), ('击', 'j'), - ('韭', 'j'), - ('㠯', 'k'), - ('亏', 'k'), - ('匚', 'k'), + ('井', 'j'), ('コ', 'k'), ('凵', 'k'), ('凶', 'k'), - ('开', 'k'), - ('口', 'k'), + ('亏', 'k'), + ('㠯', 'k'), ('周', 'k'), - ('龙', 'l'), - ('予', 'l'), - ('立', 'l'), - ('丨', 'l'), - ('亅', 'l'), - ('芈', 'l'), - ('㐄', 'l'), - ('𰀁', 'l'), - ('𠬤', 'l'), - ('𬎾', 'l'), - ('丽', 'l'), - ('力', 'l'), - ('良', 'l'), - ('食', 'l'), ('两', 'l'), - ('来', 'l'), - ('丌', 'l'), - ('单', 'l'), + ('㐄', 'l'), + ('吏', 'l'), + ('食', 'l'), ('争', 'l'), - ('齑', 'l'), ('巿', 'l'), - ('吏', 'l'), - ('耒', 'l'), + ('予', 'l'), + ('单', 'l'), + ('𰀁', 'l'), ('乐', 'l'), - ('里', 'l'), - ('丏', 'm'), - ('木', 'm'), + ('丌', 'l'), + ('芈', 'l'), + ('齑', 'l'), + ('良', 'l'), + ('𠬤', 'l'), + ('𬎾', 'l'), ('朩', 'm'), - ('米', 'm'), - ('皿', 'm'), - ('门', 'm'), - ('民', 'm'), ('么', 'm'), - ('马', 'm'), - ('馬', 'm'), - ('面', 'm'), ('末', 'm'), - ('毛', 'm'), ('母', 'm'), - ('乃', 'n'), - ('女', 'n'), - ('农', 'n'), - ('𧰨', 'n'), - ('内', 'n'), - ('象', 'n'), - ('鸟', 'n'), - ('鳥', 'n'), - ('ㄟ', 'n'), + ('丏', 'm'), + ('皿', 'm'), + ('𠂢', 'n'), + ('兼', 'n'), ('乀', 'n'), - ('隶', 'n'), + ('鳥', 'n'), + ('菐', 'n'), ('乑', 'n'), + ('夜', 'n'), ('朿', 'n'), - ('兼', 'n'), - ('𧘇', 'n'), + ('𧰨', 'n'), ('𰀠', 'n'), - ('𠂢', 'n'), - ('菐', 'n'), - ('兼', 'n'), - ('夜', 'n'), - ('牛', 'n'), - ('目', 'o'), - ('日', 'o'), - ('曰', 'o'), - ('⺝', 'o'), + ('农', 'n'), + ('ㄟ', 'n'), + ('隶', 'n'), + ('象', 'n'), + ('𧘇', 'n'), ('⺼', 'o'), - ('月', 'o'), ('肖', 'o'), - ('丕', 'p'), - ('𬺻', 'p'), + ('曰', 'o'), ('平', 'p'), - ('爿', 'p'), - ('片', 'p'), - ('尹', 'p'), - ('丿', 'p'), - ('㇀', 'p'), - ('㇁', 'p'), + ('𬺻', 'p'), ('彡', 'p'), - ('七', 'q'), - ('犬', 'q'), - ('且', 'q'), + ('𠃜', 'p'), ('直', 'q'), - ('羌', 'q'), - ('曲', 'q'), ('乞', 'q'), - ('气', 'q'), - ('求', 'q'), - ('丘', 'q'), - ('千', 'q'), - ('冉', 'r'), - ('刃', 'r'), - ('亻', 'r'), - ('人', 'r'), - ('颎', 'r'), + ('曲', 'q'), + ('羌', 'q'), ('颍', 'r'), + ('颎', 'r'), ('𤴓', 'r'), ('龰', 'r'), ('疌', 'r'), - ('壬', 'r'), - ('肃', 's'), ('三', 's'), - ('丝', 's'), - ('巳', 's'), - ('厶', 's'), - ('龴', 's'), - ('屯', 't'), - ('田', 't'), - ('天', 't'), - ('太', 't'), - ('土', 't'), ('坐', 't'), - ('升', 'u'), - ('𠂇', 'u'), ('氺', 'u'), - ('水', 'u'), - ('手', 'u'), - ('生', 'u'), - ('豕', 'u'), - ('彖', 'u'), - ('辛', 'u'), - ('少', 'u'), - ('史', 'u'), - ('十', 'u'), - ('斗', 'u'), ('卑', 'u'), - ('士', 'u'), - ('失', 'u'), - ('𰦒', 'u'), - ('石', 'u'), - ('申', 'u'), - ('勺', 'u'), ('戍', 'u'), - ('束', 'u'), - ('尸', 'u'), - ('上', 'u'), + ('失', 'u'), + ('彖', 'u'), + ('斗', 'u'), ('术', 'u'), - ('氏', 'u'), - ('矢', 'u'), - ('世', 'u'), + ('史', 'u'), + ('𰦒', 'u'), + ('升', 'u'), + ('辛', 'u'), ('重', 'v'), - ('中', 'v'), - ('朱', 'v'), - ('舟', 'v'), - ('乍', 'v'), - ('之', 'v'), - ('爪', 'v'), ('匃', 'v'), - ('乛', 'v'), - ('旡', 'v'), - ('乙', 'v'), - ('𪜊', 'v'), - ('巛', 'v'), - ('巜', 'v'), - ('𡿨', 'v'), - ('甚', 'v'), + ('丈', 'v'), + ('尢', 'v'), + ('丐', 'v'), + ('专', 'v'), ('乚', 'v'), + ('甚', 'v'), + ('鼎', 'v'), + ('龟', 'v'), + ('戉', 'v'), ('㇉', 'v'), + ('免', 'v'), + ('州', 'v'), + ('𫶧', 'v'), ('㇍', 'v'), - ('⺄', 'v'), - ('𠃍', 'v'), - ('𠃊', 'v'), - ('〇', 'v'), - ('㇂', 'v'), - ('𠃋', 'v'), - ('乙', 'v'), + ('旡', 'v'), + ('主', 'v'), + ('鼠', 'v'), + ('𪜊', 'v'), ('㇄', 'v'), - ('𠃌', 'v'), - ('戉', 'v'), - ('鼎', 'v'), - ('尢', 'v'), - ('丐', 'v'), + ('〇', 'v'), ('丏', 'v'), - ('冘', 'v'), - ('免', 'v'), - ('𫶧', 'v'), - ('乜', 'v'), - ('龟', 'v'), + ('之', 'v'), ('㔾', 'v'), - ('鼠', 'v'), - ('专', 'v'), - ('州', 'v'), - ('主', 'v'), - ('丈', 'v'), - ('止', 'v'), - ('正', 'v'), - ('鼎', 'v'), - ('勿', 'w'), - ('毋', 'w'), - ('未', 'w'), - ('为', 'w'), - ('丸', 'w'), - ('韦', 'w'), - ('五', 'w'), + ('冘', 'v'), ('无', 'w'), - ('夂', 'w'), - ('王', 'w'), - ('文', 'w'), - ('午', 'w'), - ('亡', 'w'), - ('万', 'w'), - ('兀', 'w'), - ('我', 'w'), - ('乌', 'w'), - ('攵', 'w'), - ('戊', 'w'), + ('丸', 'w'), ('瓦', 'w'), - ('乂', 'x'), - ('心', 'x'), - ('西', 'x'), - ('血', 'x'), - ('习', 'x'), - ('⺗', 'x'), + ('为', 'w'), + ('攵', 'w'), + ('毋', 'w'), ('㣺', 'x'), - ('乡', 'x'), - ('小', 'x'), - ('下', 'x'), - ('夕', 'x'), - ('用', 'y'), - ('又', 'y'), - ('皮', 'y'), - ('反', 'y'), - ('义', 'y'), - // ('縠', 'y'), + ('⺗', 'x'), ('曳', 'y'), - ('于', 'y'), - ('与', 'y'), - ('禺', 'y'), - ('聿', 'y'), - ('由', 'y'), - ('亚', 'y'), - ('雨', 'y'), - ('尢', 'y'), - ('羊', 'y'), - ('禹', 'y'), - ('永', 'y'), - ('夷', 'y'), - ('央', 'y'), - ('夭', 'y'), - ('尹', 'y'), - ('幺', 'y'), - ('酉', 'y'), ('𧘇', 'y'), - ('玉', 'y'), - ('牙', 'y'), - ('也', 'y'), - ('丫', 'y'), ('严', 'y'), + ('丫', 'y'), ('臾', 'y'), - ('业', 'y'), - ('弋', 'y'), + ('夷', 'y'), + ('反', 'y'), ('尤', 'y'), - ('自', 'z'), - ('廴', 'z'), - ('子', 'z'), - ('辶', 'z'), - ]); - (first, last) + ('义', 'y'), + ('用', 'y'), + ('皮', 'y'), + ('玉', 'y'), + ('聿', 'y'), + ]; + let firsts = common + .iter() + .chain(only_in_firsts.iter()) + .map(|(a, b)| (*a, *b)) + .collect(); + let lasts = common + .iter() + .chain(only_in_lasts.iter()) + .map(|(a, b)| (*a, *b)) + .collect(); + (firsts, lasts) }