Skip to content

Instantly share code, notes, and snippets.

@takehiko
Created February 14, 2017 15:18
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save takehiko/fb0a6ed1cc93f7125be73ac0c509b99f to your computer and use it in GitHub Desktop.
Save takehiko/fb0a6ed1cc93f7125be73ac0c509b99f to your computer and use it in GitHub Desktop.
A Kanji Checker
#!/usr/bin/env ruby
# kanji_checker2017.rb by takehikom
class KanjiChecker
def initialize
@allocation_new = [nil]
@allocation_old = [nil]
@kanji2grade_new = {}
@kanji2grade_old = {}
label = nil
grade = 0
ary = hash = nil
DATA.each_line do |line|
next if /^\#/ =~ line
next if /^$/ =~ line
if /^([NO])(\d)/ =~ line
label, grade = $1, $2.to_i
if label == "N"
ary = @allocation_new
hash = @kanji2grade_new
ary[grade] = ""
elsif label == "O"
ary = @allocation_old
hash = @kanji2grade_old
ary[grade] = ""
end
next
end
s = line.strip
ary[grade] += s
s.each_char do |c|
hash[c] = grade
end
end
if $DEBUG
puts "@allocation_new:"
puts @allocation_new.inspect
puts "@allocation_old:"
puts @allocation_old.inspect
puts "@kanji2grade_new:"
puts @kanji2grade_new.inspect
puts "@kanji2grade_old:"
puts @kanji2grade_old.inspect
exit
end
end
attr_reader :allocation_new, :allocation_old
attr_reader :kanji2grade_new, :kanji2grade_old
def print_change_kanji
print_change_kanji1
print_change_kanji2
end
def print_change_kanji1
c_all = (@allocation_new.join + @allocation_old.join).split(//).uniq
c_all.each do |c|
if @kanji2grade_new[c] != @kanji2grade_old[c]
find(c)
puts
end
end
end
def print_change_kanji2
h = {}
c_all = (@allocation_new.join + @allocation_old.join).split(//).uniq
c_all.each do |c|
if @kanji2grade_new[c] != @kanji2grade_old[c]
key = [@kanji2grade_new[c] || "*", @kanji2grade_old[c] || "*"].join(":")
if h.key?(key)
h[key] << c
else
h[key] = [c]
end
end
end
h.keys.sort.each do |key|
g_new, g_old = key.split(/:/)
if g_old == "*"
s = "新#{g_new}年 :"
elsif g_new == "*"
s = "旧#{g_new}年 :"
else
s = "#{g_old}年→#{g_new}年:"
end
puts "#{s}#{h[key].join(' ')} (#{h[key].length}字)"
end
end
def find(c)
if @kanji2grade_new.key?(c)
puts "「#{c}」は、新学習指導要領では#{str_grade(@kanji2grade_new[c])}に配当されています。"
end
if @kanji2grade_old.key?(c)
puts "「#{c}」は現行学習指導要領では#{str_grade(@kanji2grade_old[c])}に配当されています。"
end
end
def str_grade(g)
@@kansuji ||= "〇一二三四五六".split(//)
"第#{@@kansuji[g]}学年"
end
end
if __FILE__ == $0
if ARGV.empty?
KanjiChecker.new.print_change_kanji
exit
end
k = KanjiChecker.new
ARGV.join.each_char do |c|
k.find(c)
end
end
__END__
# https://www.kyobun.co.jp/wp-content/uploads/2017/02/c33e44592b6634beaefde66e279aa70a.pdf#page=42
N1
一右雨円王音下火花貝学気九休玉金空月犬見五口校左三山子四糸字
耳七車手十出女小上森人水正生青夕石赤千川先早草足村大男竹中虫
町天田土二日入年白八百文木本名目立力林六
O1
一右雨円王音下火花貝学気九休玉金空月犬見五口校左三山子四糸字
耳七車手十出女小上森人水正生青夕石赤千川先早草足村大男竹中虫
町天田土二日入年白八百文木本名目立力林六
N2
引羽雲園遠何科夏家歌画回会海絵外角楽活間丸岩顔汽記帰弓牛魚京
強教近兄形計元言原戸古午後語工公広交光考行高黄合谷国黒今才細
作算止市矢姉思紙寺自時室社弱首秋週春書少場色食心新親図数西声
星晴切雪船線前組走多太体台地池知茶昼長鳥朝直通弟店点電刀冬当
東答頭同道読内南肉馬売買麦半番父風分聞米歩母方北毎妹万明鳴毛
門夜野友用曜来里理話
O2
引羽雲園遠何科夏家歌画回会海絵外角楽活間丸岩顔汽記帰弓牛魚京
強教近兄形計元言原戸古午後語工公広交光考行高黄合谷国黒今才細
作算止市矢姉思紙寺自時室社弱首秋週春書少場色食心新親図数西声
星晴切雪船線前組走多太体台地池知茶昼長鳥朝直通弟店点電刀冬当
東答頭同道読内南肉馬売買麦半番父風分聞米歩母方北毎妹万明鳴毛
門夜野友用曜来里理話
N3
悪安暗医委意育員院飲運泳駅央横屋温化荷界開階寒感漢館岸起期客
究急級宮球去橋業曲局銀区苦具君係軽血決研県庫湖向幸港号根祭皿
仕死使始指歯詩次事持式実写者主守取酒受州拾終習集住重宿所暑助
昭消商章勝乗植申身神真深進世整昔全相送想息速族他打対待代第題
炭短談着注柱丁帳調追定庭笛鉄転都度投豆島湯登等動童農波配倍箱
畑発反坂板皮悲美鼻筆氷表秒病品負部服福物平返勉放味命面問役薬
由油有遊予羊洋葉陽様落流旅両緑礼列練路和
O3
悪安暗医委意育員院飲運泳駅央横屋温化荷界開階寒感漢館岸起期客
究急級宮球去橋業曲局銀区苦具君係軽血決研県庫湖向幸港号根祭皿
仕死使始指歯詩次事持式実写者主守取酒受州拾終習集住重宿所暑助
昭消商章勝乗植申身神真深進世整昔全相送想息速族他打対待代第題
炭短談着注柱丁帳調追定庭笛鉄転都度投豆島湯登等動童農波配倍箱
畑発反坂板皮悲美鼻筆氷表秒病品負部服福物平返勉放味命面問役薬
由油有遊予羊洋葉陽様落流旅両緑礼列練路和
N4
愛案以衣位茨印英栄媛塩岡億加果貨課芽賀改械害街各覚潟完官管関
観願岐希季旗器機議求泣給挙漁共協鏡競極熊訓軍郡群径景芸欠結建
健験固功好香候康佐差菜最埼材崎昨札刷察参産散残氏司試児治滋辞
鹿失借種周祝順初松笑唱焼照城縄臣信井成省清静席積折節説浅戦選
然争倉巣束側続卒孫帯隊達単置仲沖兆低底的典伝徒努灯働特徳栃奈
梨熱念敗梅博阪飯飛必票標不夫付府阜富副兵別辺変便包法望牧末満
未民無約勇要養浴利陸良料量輪類令冷例連老労録
O4
愛案以衣位囲胃印英栄塩億加果貨課芽改械害街各覚完官管関観願希
季紀喜旗器機議求泣救給挙漁共協鏡競極訓軍郡径型景芸欠結建健験
固功好候航康告差菜最材昨札刷殺察参産散残士氏史司試児治辞失借
種周祝順初松笑唱焼象照賞臣信成省清静席積折節説浅戦選然争倉巣
束側続卒孫帯隊達単置仲貯兆腸低底停的典伝徒努灯堂働特得毒熱念
敗梅博飯飛費必票標不夫付府副粉兵別辺変便包法望牧末満未脈民無
約勇要養浴利陸良料量輪類令冷例歴連老労録
N5
圧囲移因永営衛易益液演応往桜可仮価河過快解格確額刊幹慣眼紀基
寄規喜技義逆久旧救居許境均禁句型経潔件険検限現減故個護効厚耕
航鉱構興講告混査再災妻採際在財罪殺雑酸賛士支史志枝師資飼示似
識質舎謝授修述術準序招証象賞条状常情織職制性政勢精製税責績接
設絶祖素総造像増則測属率損貸態団断築貯張停提程適統堂銅導得毒
独任燃能破犯判版比肥非費備評貧布婦武復複仏粉編弁保墓報豊防貿
暴脈務夢迷綿輸余容略留領歴
O5
圧移因永営衛易益液演応往桜恩可仮価河過賀快解格確額刊幹慣眼基
寄規技義逆久旧居許境均禁句群経潔件券険検限現減故個護効厚耕鉱
構興講混査再災妻採際在財罪雑酸賛支志枝師資飼示似識質舎謝授修
述術準序招承証条状常情織職制性政勢精製税責績接設舌絶銭祖素総
造像増則測属率損退貸態団断築張提程適敵統銅導徳独任燃能破犯判
版比肥非備俵評貧布婦富武復複仏編弁保墓報豊防貿暴務夢迷綿輸余
預容略留領
N6
胃異遺域宇映延沿恩我灰拡革閣割株干巻看簡危机揮貴疑吸供胸郷勤
筋系敬警劇激穴券絹権憲源厳己呼誤后孝皇紅降鋼刻穀骨困砂座済裁
策冊蚕至私姿視詞誌磁射捨尺若樹収宗就衆従縦縮熟純処署諸除承将
傷障蒸針仁垂推寸盛聖誠舌宣専泉洗染銭善奏窓創装層操蔵臓存尊退
宅担探誕段暖値宙忠著庁頂腸潮賃痛敵展討党糖届難乳認納脳派拝背
肺俳班晩否批秘俵腹奮並陛閉片補暮宝訪亡忘棒枚幕密盟模訳郵優預
幼欲翌乱卵覧裏律臨朗論
O6
異遺域宇映延沿我灰拡革閣割株干巻看簡危机揮貴疑吸供胸郷勤筋系
敬警劇激穴絹権憲源厳己呼誤后孝皇紅降鋼刻穀骨困砂座済裁策冊蚕
至私姿視詞誌磁射捨尺若樹収宗就衆従縦縮熟純処署諸除将傷障城蒸
針仁垂推寸盛聖誠宣専泉洗染善奏窓創装層操蔵臓存尊宅担探誕段暖
値宙忠著庁頂潮賃痛展討党糖届難乳認納脳派拝背肺俳班晩否批秘腹
奮並陛閉片補暮宝訪亡忘棒枚幕密盟模訳郵優幼欲翌乱卵覧裏律臨朗
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment