【Python】新元号を漏えいさせるスクリプトを組んだ

Python
スポンサーリンク
スポンサーリンク

経緯

こんなツイートを見つけました。

なるほどー

じゃあ漏えいさせるスクリプトを組むかー

 

スクリプト作成

というわけで早速スクリプトを作っていきましょう。

使用言語は最近勉強しているPython。

というか、Pythonの勉強のためにこのネタを拾いました。

 

準備

このサイトから常用漢字のリストを拾ってきます。

そして、それを以下のようなcsvファイルに整形します。

整形するのはExcelで・・・

え、そこもスクリプト内でやれよって?何も言い返せんわ

$cat joyo.csv

亜,ア
哀,アイ、あわ-れ、あわ-れむ
挨,アイ
愛,アイ
曖,アイ
悪,アク、オ、わる-い
握,アク、にぎ-る
圧,アツ
扱,あつか-う
宛,あ-てる
・・・

 

実際に書いてみる

# coding:utf-8

import csv

# 常用漢字のcsvファイルを引数にする
joyofile = sys.argv[1]

# listfileを2次元配列に挿入
# joyolist[n][n]で中の値を取得可能
with open(joyofile) as fp: joyolist = list(csv.reader(fp))

# 繰り返し制御用の変数
i = 0
j = 0

# 2重ネストの繰り返し
while i < len(joyolist):
  j = 0
  while j < len(joyolist):
    # ここで出力
    print(joyolist[i][0]+joyolist[j][0])
    j += 1
  i += 1

というわけで2次元配列+whileを2重ネストして完成。

これが一番簡単だと思います。

Pythonはforの扱い方が他の言語とちょっと違うっぽいのでwhileを使いました。

forはやっぱり

for (int i = 0; i++; i < num){}

って感じで書かせてほしいです。

 

出力結果

$ python gengo.py joyo.csv

亜亜
亜哀
亜挨
亜愛
亜曖
亜悪
亜握
亜圧
亜扱
亜宛
亜嵐
亜安
亜案
亜暗
亜以
亜衣
亜位
亜囲
亜医
亜依
...

 

問題

完成!

と言いたいところですが、問題が山積みです。

 

・頭の読みが「T」「S」「H」の音で始まるものを除く

大正、昭和、平成の読みとかぶってしまうと、アルファベット1文字で表現するとかぶってしまいます。

ので、これらの読み方で始まるものは除かないといけないのでは?

 

・俗語を除く

例えば、「殺」とか「淫」とかいう文字は俗用されるため元号には不適切と考えられています。

ただ、俗語って何かしら定義されているわけでもないし、リストなんかないから難しいかも・・・

 

・今まで登場した元号を除く

「平成」とか「大正」とかは今までに使われたことがあるため、もう一度使われることはありません。

ので、これも除かないといけませんね。

 

これらは気が向いたらチャレンジしようと思います。

 

あとがき

というわけで一発ネタでした。

プログラミングの練習の題材としてはかなり優秀な問題かもしれませんね。

教員の方は授業等で使ってみてはいかがでしょうか。

 

追記(4/1)

新年号「令和」が発表されましたね。

もちろんこのスクリプトにて予想できておりましたよ!!

(略)
令論
令和
令話
(略)

まあ、だから何なんだって話ですけど・・・

 

入門者のPython プログラムを作りながら基本を学ぶ (ブルーバックス) [ 立山 秀利 ]
created by Rinker

 

 

コメント

タイトルとURLをコピーしました