この記事はKobe University Advent Calendar 2016の17日目に書かれたものです.
Baudot Code
皆さんはOccultic;Nine-オカルティック・ナイン-を見ておられるでしょうか. 私的には今期アニメの中で響けユーフォニアム2期と同じくらいおもしろいと思っています.
さて,5話でBaudot Code(ボーコード)というものが出てきます.
今回は特にネタが思いつかなかったのでこれを実装します.
概要
Baudot Codeとは,5ビットの01で1つの文字を表す文字コードのようなものを指します.
アルファベット(LTRS)と数字・記号(FIGS)はそれぞれLTRS
やFIGS
を表すコードを送ることで切り替えます.
例えば '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]: 'るろろるるろるろるろるるるろろるるるろろるるるろろるるるろろるるるろろるろろるる'
にゃーん
— る (@yue_roo) 2016年12月16日
言い訳等
最初は最近復帰していたRedStoneというネトゲのチャット記録をしたかったんです.
が,Windows10かノートンか何が悪いのやら,RedStone自体が開始1分くらいで落ちるようになってしまい,萎えたんですよね.
修論がんばりたいデス.
卒業したい
— る (@yue_roo) 2016年12月15日