読者です 読者をやめる 読者になる 読者になる

exits

勉強記録

オカるティック・ナイン

Python 技術 anime AdventCalendar

この記事はKobe University Advent Calendar 2016の17日目に書かれたものです.

Baudot Code

皆さんはOccultic;Nine-オカルティック・ナイン-を見ておられるでしょうか. 私的には今期アニメの中で響けユーフォニアム2期と同じくらいおもしろいと思っています.

さて,5話でBaudot Code(ボーコード)というものが出てきます.

今回は特にネタが思いつかなかったのでこれを実装します.

概要

Baudot Codeとは,5ビットの01で1つの文字を表す文字コードのようなものを指します.
アルファベット(LTRS)と数字・記号(FIGS)はそれぞれLTRSFIGSを表すコードを送ることで切り替えます.
例えば 'rr44rr?b' は '01010 01010 11011 01010 01010 11111 01010 01010 11011 11001 11111 11001' になります.(LTRSとFIGSを強調しています)

FIGSは規格が複数あるようですが,ITA2にのみ対応しました.

実装

bc-list.txtはWikipediaのBaudot Codeの記事の文字コード割当表をコピったものに,以下の処理をしたものです.

  • 2進の空白をなくして引っ付ける

  • 10進,16進を消す

  • 適当に(改行)などを消す

  • 無駄なスペースをなくす

やっつけなので全く例外を気にしてません.

使ってみる

In [1]: from BaudotCodec import BaudotCodec

In [2]: bc = BaudotCodec()

In [3]: bc.encode('sintyoku-dodesuka')
Out[3]: '00101001100110010000101011100001111001111101100011111110100111000010010000100101001110111100011'

In [4]: bc.decode('00101001100110010000101011100001111001111101100011111110100100011111000000101001000010010100111')
Out[4]: 'SINTYOKU-DAMEDESU'

まぁこれがやりたかっただけなんですよね.

In [6]: bc.encode('Nyaaaaan', bits='るろ')
Out[6]: 'るろろるるろるろるろるるるろろるるるろろるるるろろるるるろろるるるろろるろろるる'

言い訳等

最初は最近復帰していたRedStoneというネトゲのチャット記録をしたかったんです.
が,Windows10かノートンか何が悪いのやら,RedStone自体が開始1分くらいで落ちるようになってしまい,萎えたんですよね.

修論がんばりたいデス.

f:id:yue82:20161216201438p:plain