cocolog:89185782
組み合わせと順列の数え上げのアルゴリズムの Python のソースを Perl に書き換えた。効率的なアルゴリズムが日本語での紹介がググってもなかったので、一応、ブログ記事にしておいた。 (JRF 7924)
JRF 2018年4月11日 (水)
記事は↓。
《組み合わせと順列の数え上げのアルゴリズム》
http://jrf.cocolog-nifty.com/software/2018/04/post.html
JRF2018/4/110634
ELDE (参: [cocolog:89156596]) を更新しようとしていて、組み合わせの数え上げが必要となった(と思う)ため、調べた。CPAN に C を使った高速なモジュールはあるのだが、インストールが必要なことを嫌ったのと、これぐらいなら Perl でも十分高速なものが書けるだろうという思いから、アルゴリズムをググったのだった。
JRF2018/4/117560
意外に記事がなく、海外にやっと満足のいく記事を見つけた。でも、それは Python でソースが書かれていたので、それを Perl に書き直したというのが経緯。
JRF2018/4/117082
「書き直すだけ」と言ったが、それでも元はイテレータを使った実装なので、少し違いがあり、なかなかバグが取れずに苦しんだりした。特に順列は理屈が私自身理解できておらず、ソースの書き換えでどこが間違っているかだけに集中して、なんとか乗り切った。一方の組み合わせのほうも、理解に順ってプログラミングしたが、なかなか答えが合わず、こちらもちゃんと動くまで、しばらくかかった。
JRF2018/4/118045
私が書いた「苦労」については大したことなくその部分については、パブリックドメインでいいのだが、元の Python のソースをどう考えるか…。アイデアだけなら著作権がないはずなので、Perl に書き換えた時点でフリーだろうとは思うのだが…。翻訳に近いから微妙な面もありそうだが、数式や証明に近いし、元のサイトが Stack Overflow なので、大丈夫だろうと思いたい。
JRF2018/4/113554
トラックバック
他サイトなどからこの記事に自薦された関連記事(トラックバック)の一覧です。
ELDE (Exhaustive Lock Dependency Emulator) において、「実実行」のみを数え上げる「修正」バージョンを作った。そして、それを「失敗作」だった「虚実行」を許すバージョンと突き合わせ、結果が正しいことを確かめた。怪我の功名。... 続きを読む
受信: 2018-06-29 14:35:47 (JST)
typo 「効率的なアルゴリズムが」→「効率的なアルゴリズムの」。
JRF2018/4/117871