« 「魍魎の匣」 | トップページ | 立春だぁー »

とある数列のリハビリプログラミング

 きむらさんとこのとある数列を求める関数の話をみて、リハビリにとはじめてみたら腕に覚えなしを自覚しただけだったりはした。

 はじめはまず素直に平方数を除くというチェックをしつつカウントしていって求めるという方式で。ただ、これだとあまりにベタなのでもう少し考えようと思った。

 ということである程度実際に出力させてみて、どのような法則性を持つ数列なのかを考えてみることにした。で、最終的にもう少しシンプルな感じのものができたのだけれど、解答を見たら数式として算出していて「あー、そういう方向か」と。それはなかなかたどりつけない。

 それはそうと、最後のほうでふたつの紹介されている数式で食い違いがあるのだけれどと書かれていて、Ruby で確認したところでは確かにそのとおり。しかも、まるっきりうまく機能していないみたい。ただ、例示されている数式はそこで使っている isqrt という関数を利用してのことなので(平方根を整数にして返すらしい)その挙動いかんで結果が異なるのかもしれないので、なんともいえないなというのは同感。

 とはいえ、そうなると非常に言語設計に依存する解というのは、いまひとつよろしくないのかなと思ったりは。はじめのほうは間違いなく動作するので。

 などとちょっとリハビリになったかしらと思っている節分。豆まきもしなくなって幾年。豆食べることもなくなって幾年。

# Gist に置いてみた。

 [ 平方数を除く 2,3,5,6,7,8,10... という数列で、指定番目の数を返す関数 ]

 はじめに考えたのが fig2 でその後考えたのが fig3 。fig4 と fig5 は解答にあった数式ふたつのもの。fig5 のほうは少なくとも Ruby でこれを実行すると正しい答えにならない。

|

« 「魍魎の匣」 | トップページ | 立春だぁー »

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック


この記事へのトラックバック一覧です: とある数列のリハビリプログラミング:

« 「魍魎の匣」 | トップページ | 立春だぁー »