No Such Blog or Diary

«Prev || 1 | 2 | 3 |...| 1241 | 1242 | 1243 |...| 1267 | 1268 | 1269 || Next»

続・冪のソート

ということで,横でゲームをしつつ冪を下位桁からの辞書順にソートするプログラムを組んでみた.冪をソートするときにはその桁数が大きすぎてメモリに載らないことが問題になる.そこで,基本的にメモリの節約をメインに考えて作成した.節約のための重要点は,冪をソートするといってもその全ての桁が必要ではなく,基本的には下位の桁の一部しか必要でないこと.そして,冪の下位桁は上位桁を計算しなくても正確に求められ,再計算も簡単であること.これらに基づき,最初は下位の一部を計算しておき,ソートのときに区別が付かなければより上位の桁まで再計算するようにした.

実際に計算してみると,2の冪の場合には冪が20000000になっても下位16桁だけでソートが完了.思いのほか下位桁がバラバラのようである.このときのメモリ使用量は 1G強.時間は... 分単位.それなりに動くプログラムが出来上がって満足.単位は去年とってしまったけど課題を提出しても良いかなぁ?

冪のソート

講義(単位取得済み)の課題で適当な基数の冪を下の桁からの辞書順でソートするプログラムを作れというものが出た.ついでに,階乗も同様にソートせよとの指示も出ている.

とりあえず,階乗を下の桁からソートするのは単純なのでプログラムする気力なし.やり方は以下のとおり.階乗の場合は 5 の倍数が現れるごとに 0 が少なくとも一つ増えるので,再開桁から連続する 0 の数が等しい5個程度の組をソートしておけば,あとはその組を 0 の数の多い順に並べるだけである.よって,このソートは入力サイズを n とすると O(n) で終了する.ちなみに,5個程度の組をソートするのに必要な有効桁数は10桁もあれば足りるはずなので,

階乗を順に生成するのも n に関係ないオーダでできる.

ということで,ターゲットは冪のソートで,基数最下位桁が 0 でないものに.とりあえず案はできているのでコードを書きますか.

HDDデータ消去

借りていたノートPCの返却のため HDD の中身を適当に消去することにした.OSが起動しなくなって良いのなら楽なのだが,動作確認とか言ってOSを起動させるので消すに消せない.しょうがなく,手動でほとんどのソフトをアンインストールしてレジストリも掃除して... さらに空いたディスク領域に dd コマンドでランダム書き込み2回+ゼロ書き込み1回でデータ消去.とりあえずこんなんでいいかと.時間ないし.

涼しいなぁ

今日は雨のせいで非常に涼しい.涼しいと非常に寝やすい.寝やすいと非常に寝坊する... けど今日は間に合った.よし.

ま,風引かないように気をつけよう.

寝坊した...

最近,携帯を目覚まし時計代わりに使っているのだが,今日は電池が切れていた.そして,昨日は寝るのが遅かった.結果,一限を寝坊した.いやぁ,目覚ましがなるから二度寝しても良いだろうなんて考えたのが間違いだったのかも.

大掃除

カーテンの頭に埃が積もっていたので大掃除をした.カーテン全部洗濯+掃除機フル稼働で.あー疲れた.

«Prev || 1 | 2 | 3 |...| 1241 | 1242 | 1243 |...| 1267 | 1268 | 1269 || Next»
Search
Feeds

Page Top