平成の次の元号候補、4510万4656件の漏洩が確認された。
政府は「新元号、情報管理を徹底へ 漏洩なら差し替え」との方針を示しており、 早急な差し替え対応を行うと思われる。
2019-04-01 追記:
$ curl -s https://t.co/OCaFAriJIt | cat -n | grep 令和
— Ichinose Shogo (@shogo82148) 2019年4月1日
726041令和
無事漏洩してました!!!
追記ここまで
と、まあ、二番煎じなわけですが。
新元号は漏洩すると変更されるということなので常用漢字2文字の全組み合わせ約228万通りをすべて記載したテキストファイルを作成しました。漏洩させていきましょう。https://t.co/G06utDbgka pic.twitter.com/8UcPDqNdXo
— いんぐらむ (@kazuokiriyama) 2019年2月26日
ただ、このツイートのリプライのもあるとおり漏洩漏れがあるようですし、 新元号に使われる可能性のある漢字は常用漢字ではない可能性だってあると僕は考えいます。 だって、お国のやることですからね。下手したら改元に合わせて「常用漢字の見直しもやる」ということだって考えられます。
というわけで、僕は ShiftJIS, EUC-JP で表現可能な文字列まで範囲を広げることにしました。 Unicodeへの統一が進んでいるとはいえ、 ShiftJIS, ECU-JP で動いているレガシーなシステムもあるでしょうし、この範囲に収めるだろうなという予想です。
ShiftJISからUnicodeへの変換には規則性がないので、変換テーブルを使う必要があります。 Goのコードを漁った ら以下の変換表を参照していたので、これを利用しました。
非漢字も含まれているので、雑に漢字を絞ったあと、
curl https://encoding.spec.whatwg.org/index-jis0208.txt | grep CJK | cut -f3 | cut -d' ' -f1 | sort | uniq > kanji.txt
直積列挙スクリプトに突っ込めば出来上がり。
import sys
import itertools
a = [l.rstrip() for l in sys.stdin]
for l in itertools.product(a, a):
print(''.join(l))
python product.py < kanji.txt > product.txt
本当は全部Shell芸したかったけど、Pythonスクリプトに頼ってしまいました。 もっと強い芸人さん、よろしくおねがいします。
あと、途中で「候補の漢字が重複している」との報告を受けて調べたのですが、ShiftJIS->Unicodeの変換は一意に決まるけど、Unicode->ShiftJISは一意に決まらない、という闇があるようです。 もうUnicodeの闇でお腹いっぱいなので深くは調べていません。
最後に
念のため「どうせ公表後に新元号を追加したデーターを作っただけだろ!」と言われないよう、ハッシュ値を貼っておきます。
元号候補一覧 https://t.co/OCaFAriJIt SHA512: 245f3f616f3ee627ee2e2edd426663bba86fd2fbdb756505ff9d9f69fed7d6f16e2e711cf03cb1fb1b9efdcc261bf1b968de0756660cfa98cf1acbd43f89ae18
— Ichinose Shogo (@shogo82148) 2019年2月28日
元号候補一覧(gz圧縮) https://t.co/qlUkfZkwod SHA512: c3802935335371bf264114fe0c005220a2dcbf8ab1c8e925b9b8563171221b2598cb8a5fb8a9adc9d75646826140ee2998123de26d4fbcf5fa7ea17b39f8e76d
— Ichinose Shogo (@shogo82148) 2019年2月28日