開発環境
- macOS Mojave - Apple (OS)
- Emacs (Text Editor)
- Windows 10 Pro (OS)
- Visual Studio Code (Text Editor)
- Python 3.7 (プログラミング言語)
中学数学からはじめる暗号入門 ~現代の暗号はどのようにして作られたのか~ (知りたい!サイエンス 141) (関根 章道(著)、技術評論社))の前編(暗号の歴史あれこれ)、第3章(上杉謙信、誰思う - 字変四八の奥義と日本版字変四八の奥義)の暗号を作って解いてみよう(43ページ、Part 5(字変四八の奥義))の解答を求めてみる。
コード
Python 3
#!/usr/bin/env python3
import pprint
rows = {o: i for i, o in enumerate('一二三四五六七')}
cols = {o: i for i, o in enumerate('壱弐参肆伍陸漆')}
table = []
row = []
is_first_row = True
for i, c in enumerate('あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほ'
'まみむめもやゆよらりるれろわをん"⚪ '):
if i % 7 == 0 and not is_first_row:
table.append(row)
row = [c]
else:
is_first_row = False
row.append(c)
table.append(row)
pprint.pprint(table)
encoded = '二伍二漆七伍七肆二陸一参'
for i, o in enumerate(encoded):
if i % 2 == 0:
print(table[rows[o]][cols[encoded[i + 1]]], end='')
print()
入出力結果(Bash、cmd.exe(コマンドプロンプト)、Terminal、Jupyter(IPython))
$ ./sample2.py [['あ', 'い', 'う', 'え', 'お', 'か', 'き'], ['く', 'け', 'こ', 'さ', 'し', 'す', 'せ'], ['そ', 'た', 'ち', 'つ', 'て', 'と', 'な'], ['に', 'ぬ', 'ね', 'の', 'は', 'ひ', 'ふ'], ['へ', 'ほ', 'ま', 'み', 'む', 'め', 'も'], ['や', 'ゆ', 'よ', 'ら', 'り', 'る', 'れ'], ['ろ', 'わ', 'を', 'ん', '"', '⚪', '\u3000']] しせ"んすう $
ということで、元の単語は自然数。
0 コメント:
コメントを投稿