Hylangで蟻本

Hylangで蟻本をやる

蟻本って何?

 プロコンの勉強本としてお馴染みのプログラミングコンテストチャレンジブック(通称:蟻本)

プログラミングコンテストチャレンジブック [第2版] ?問題解決のアルゴリズム活用力とコーディングテクニックを鍛える?

プログラミングコンテストチャレンジブック [第2版] ?問題解決のアルゴリズム活用力とコーディングテクニックを鍛える?

概要

 蟻本自体はC++で書いてあるので、C++のソースをHylangに移植する。

進捗&作業期間

 完了
 本を買ってから5〜6年ぐらい、Hylangで実装を初めてから足掛け3年ぐらい

Github

ここ : GitHub - dis-kaichi/programming-contest-challengebook

感想

 クッソ疲れた(訴訟)。以下は愚痴
 この本についてだが、基本的にソースが載っているのでソレを打ち込めば動くのだが、入力を一部変換して実装してあったりするところが有り、単純に打ち込めば終わりというわけでも無かった。グラフとか最後の方とかで、前の方のページで実装済みを前提でコードが書いてあったり、本に載っていない短縮記法(for文とか)がいきなり出てきたりしたことがあったので、そこら辺はちゃんとリンクとか注意書きとか書いて欲しかった。
 物量がかなりあるので、頭から全部実装するとかは余りオススメしない。(時間のかかりぐあいが半端ない)何が書いてあるのか抑えておいて、後から必要に応じて実装してみるのがいいと思う。勉強にはなるので、時間があるときにちょこちょこやる感じがいいかな?

 今回、C++からHylangの移植を行ったが、言語間の仕様の差を埋めるのが結構大変だった。
 特にHylangの仕様が固まっていないので、2〜3年の間に書き方がガラリと変わった事が大きかった気がする。昔は引数の展開(*list, **dict)みたいなやつが書けなかったので、applyを使って無理やり書いてたし、letが途中削除になったので、修正したり(今は復活)、defが削除になったので、setvに書きなおしたり、強制敵にreturnができなかったり(今はできる)などなど。

 この本に手を出した経緯については、プロコンに興味があったので、本を買ってC++で勉強したのが、5〜6年前。それで途中で飽きて放置、完全に積読本となっていたのを掘り出したのが3年ぐらい前、その時ちょうどPython上で動くLispの方言(Hylang)を見つけたばっかりだったので、勉強がてら実装してみようと始めたのが苦行の始まり。完了するのに3年も掛かった上、今年のGWはコレで潰れた(憤怒)。当時はLispの書き方もよくわからんかったのが、今ではかなり書けるように…(Hylang限定)。大分成長したなぁ。
 取り敢えず、githubのアドレスは晒しておくので、Hylangを勉強していて、蟻本にも興味がある人の一助になればいいなぁと思う。(そんな奴いるのか?)

 以上、終わり