豊満な脳みそ←わがままブレーン

ただただ、暗号文をつくりたいがため・・・・・・ 専用の復号プログラムとパスナンバーが9つあれば読めるブログ。さもなければ、ある程度正確に暗号化の仕組みを理解したうえで、総当たり(brute attack)で最大約6,631,300,125,000,000通りの試行が解読に必要です。

100本ノックの第49問目はこんな風にやれば良い。

 

用意するもの:

1. 文中の係り受け関係を表す句の位置 (int) のペア[有向グラフ]の集合 (要は順序対の集合--リストにしておこう)

2. (文中の) 句の位置 (int) と句の表層形 (str) をペアにした要素の集合 (同上) ← ここは辞書型でもいいし、他と比べたらなくてもいい。

3. (文中の) 名詞句の位置 (int) を網羅したリスト

4. 3の各数字 (int) を2つ組にした要素のリスト (このリストの長さは、nC2 = n × (n - 1) / 2  (ただし、nは3のリストの長さ) にならなければならない)

 

これらを用意したら、設問の要求に応えるだけの材料がひとまず揃ったことになるので、その先は設問が指定している仕様に合わせて文字列を作るだけ。なので、ちょっと体力を使えば良いからもう簡単。

 

ということでこんな感じ。きっともっといい仕組みで答えられるだろうけど、ひとまず一直線に考えた結果だ。(まだきっとどこかに瑕疵がある。)

 

f:id:DWJEqxs2G0:20170913182519p:plain

 

 

以下が実行例。

 

f:id:DWJEqxs2G0:20170913182854p:plain

まともな結果を出さないcabochaの出力は省いてあるので、問題文で言っている「8文目」が5文目に現れることになる。

 

別の実行例。

 

 

 

f:id:DWJEqxs2G0:20170913183020p:plain

さらに別の実行例。

f:id:DWJEqxs2G0:20170913183048p:plain