マクロツイーター

はてダから移行した記事の表示が崩れてますが、そのうちに直せればいいのに(えっ)

TeX ならどう書く? Offline

(真っ当な道を踏み外しているという意味で)

今年の LL イベントである「LL Decade」で、プログラミング課題の出題があったようだ。

ところが信じられないことに、ネットで調べた限りでは、TeX で解いた人が誰一人として見当たらない。何てこった!?(待て、「TeX は LL でない」と言ったのは誰なんだ?)

聞くところによると、世間では TeX 言語は何やら恐ろしいものという印象が存在するようである。そこで、外観をほんの少し工夫してあまり TeX っぽく見えないようなプログラムを書いてみた。これなら安心だね!!

[decllnoc.sty]
^^7b^^5cca^^74c^^6fde58^^3d7^^20^^5cca::74c::6fde38::3d11::5c::6ce::4::5cd::25c
::5c::67def::5c::6ce::4::5ce::5ce::6c::73e::5c::6ee::77c::6f::5::6e::4::5c::26a
::5c::6ee::77c::6f::5::6e::4::5c::26c::5c::6ee::7::72ead::5c::26b::5cd::5c::26f
::7b::5c::6ce::4::5cf::7d::5cd::5c::26e::231::7b::5cdef::5cc::7b::231::7d::25a9
::7d::5cd::5cdec::2::79::0::74::231::7b::5cb::67::2::6f::5::70::25::10:11decade
::5c::6f::70e::6e::69::6e::5c::26b::3d::231::5c::72e::6ca::8::5c::26ba::5c::26c
0::5c::26a0::5c::78def::5c::26ef::7b::7d::5c::26da::7d::5cd::5c::26da::7b::25:6
::5c::72ead::5c::26b::20::4::6f::5c::3c::5c::69fe::6ff::5c::26b::5c::26e::25::4
::5c::26db::5ce::6c::73e::5c::26fa::5c::6d::5::6c::4::69::0::6c::9::5c::26a0004
::5cad::76a::6ece::5c::26a::5ca::5cad::76a::6ece::5c::26c1::20::25::d0cac:d0cac
::5c::69f::6e::5::6d::5c::26c::3d4::5c::78def::5c::26ef::7b::5c::26ef::25::2012
::5cc::68a::2::5c::4::68e::5c::26a::5c::3::70ace::7d::5c::26c::3d0::5c::26a::3d
0::20::5cf::69::5c::26e::5c::26da::5cf::69::5cc::7d::5cd::5c::26db::7b::25:::08
::5cc::6c::6f::73e::69::6e::5c::26b::5ce::67::2::6f::5::70::5c::26ef::7d::25:04
::5cd::5c::26ba::7b::5c::26c00::5ce::6ed::6c::69::6eec::68a::2::2d001::5c::26bb
::7d::5cd::5c::26bb::7b::5cca::74c::6fde::5c::26c012::5cad::76a::6ece::5c::26c1
::5c::69f::6e::5::6d::5c::26c::3c0128::5c::26e::5c::26bb::5ce::6c::73e::5c::26e
::5c::72e::6ca::8::5cf::69::5cc::7d::5cd::5c::26fa::7b::7b::25:0:0:0:0:0:1:ffff
::5c::67::6c::6fba::6c::5cc::68a::72def::5ca003::20::5ce::8::70a::6edaf::74e::2
::5c::26fb::5c::3c::20c::7d::7d::7b::5c::6ccc::6fde63::3d58::25::0:0:0:0:1:ffff
::5c::6c::6f::77e::72ca::73e::7b::5cd::5c::26fb::231::20::232c::7b::5c::69f::78
::5f::232::5f::5c::26ff6::5c::26cc::3f0::231c::5c::26ff6::5c::26cc::2d0::23::25
1c::5c::26ff4::5c::26cd::2e1::231c::5c::26ff8::5c::26ce::3f2::231c::5cf::69::25
::7d::7d::7d::5cd::5c::26ff::231::232::233::234::235c::7b::5c::26c::231::20::25
::5cdef::5ced::7b::2a::233::7d::5cdef::5caa::23::231::233::7b::232::23::23::256
1c::5c::26ac::7d::5c::26fc::235::233::2a::233::5ce::5c::69f1::5cf::25:386::face
::5c::67::6c::6fba::6c::5cc::68a::72def::5ca::234::20::5cf::69::7d::5cd::25::2:
::5c::26fc::7b::5c::69f::6e::5::6d::5c::26c::3d0::5c::26e::5c::26fd::25:6::face
::5ce::6c::73e::5cad::76a::6ece::5c::26c::2d1::5c::26e::5caa::5cf::69::5cc::255
::7d::5cd::5c::26fd::231::5ce::7b::5cdef::5cb::7b::231::7d::5c::69f::8::5cb::25
::5ced::5ce::6c::73e::5c::26f0::5cf::69::7d::5cd::5c::26ac::7b::5c::69f::8::25b
1::5cf::5c::26e::5c::26fc::5ce::6c::73e::5c::26e::5c::26ad::5cf::69::5cc::25::a
::7d::5cd::5c::26ad::231::5ce::7b::7d::5cd::5c::26cd::7b::5c::26ca::5c::26d::25
256ab::5c::26d::7d::5cd::5c::26ce::7b::5c::26ca::5c::26dd72012a::22b::25252:294
::5c::26d::7d::5cd::5c::26cc::7b::5c::26ca7777a::22b::5c::26ec::7d::5cd::25:753
::5c::26ca::231::232a::233b::7b::5c::26f0::5c::6ce::4::5cdd::231::5cdef::25:618
::5cbd::7b::232::7d::5cdef::5cbe::7b::233::7d::7d::5cd::5c::26d::231::7b::25::f
::5c::69f::8::2310::5c::26f1::5c::26e::5cdd::5ce::6c::73e::5c::69f::8::231c::25
::5c::26e::5c::72e::6ca::8::5ce::6c::73e::5c::26e::7b::5c::26ed::231::7d::25::0
::5cf::69::5cf::69::5cc::7d::5cd::5c::26dd::231c::7b::5c::69f::8::24::231::2560
::24::5ce::6c::73e::5c::26f0::5cf::69::7d::5cd::5c::26ed::231c::7b::25::9801da2
::5c::26ea::231fffffb::231c::7d::5cd::5c::26ec::231c::7b::5c::26ea::23145f6::25
7b::231c::7d::5cd::5c::26ea::231::232::233::234::235::236b::7b::5c::26f0::25::7
::5c::69f::8::235f::5c::26e::5c::26aa::5ce::6c::73e::5c::26e::5c::26eb::5cf::69
::5cc::7d::5cd::5c::26eb::231c::7b::7d::5cd::5c::26aa::231c::7b::257::8::::8:::
::5caf::74e::72a::3::73::69::67::6e::6de::6e::4::5c::26ab::25::decade:8::::8:::
::5c::5::70::70e::72ca::73e::7b::5c::26a::5cbe0::231::24::7d::7d::25::8bcc:8bcc
::5cd::5c::26ab::231::24::7b::5c::69f::8::5f::231::5f::5c::69f::6e::5::6d::25ac
::5c::26a::3c::5cbd::5c::26f1::5cf::69::5cf::69::7d::7d^^25:::31:58:36:5e:44:33

これは LaTeX のパッケージになっていて、これを \usepackage で読み込むと次の命令が提供される。((plain TeX でも \input decllnoc.sty で読み込んで使える。))

  • \decrypt{<ファイル名>}
    テキストファイルに記された暗号文を解読して、結果を出力(組版)する。*1

例えば、次のような入力ファイル(例題の暗号文)があったとする。

[test.txt]
192.168.0.23
00:00:01:22:23:34
FF:DD:BB:AA:CC:EE
2001:db8:bd05:1d2:288a:1fc0:1:10ee
123.45.67.89
12:34:56:78:9a:bc
1A-2B:2E-09:12:22
300.100.200.10
10.232.33.44
90-12-03-92-00-01
01234:22:4444:34:5555:5:f
0.100.32.10
100.200.100.200
10:20:30:01:02:03
11-22-33-44-55-66
9f34:234:1:123:45:6:FFFF:FFF

この時、次の文書は解読した文字列を記したものになる。

[test-decllnoc.tex]
\documentclass{article}
\pagestyle{empty}
\usepackage{decllnoc}
\begin{document}
\decrypt{test.txt}
\end{document}

*1:結果の符号値の文字をそのまま出力するので、ASCII として読めるフォントが指定されている必要がある。