算額あれこれ

算額問題をコンピュータで解きます

2019-09-01から1ヶ月間の記事一覧

消費増税ーーなんで,理性的な判断ができないか?

今回の消費増税にあたって,駆け込み購入が目立たないという報道が多数あったが,ここ数日,それを煽るような報道が多く見られるようになった。 たとえば,リクルートスーツ。定価 2万5千円 を駆け込み購入するとか。 従来の消費税なら税率 8% で,税込み 2…

多倍長精度による円周率 π の計算

「多倍長精度による計算」に,R による円周率 π の計算プログラムが掲載されている。R でも gmp パッケージを使えば多倍長精度による計算はできるので,このプログラムを書き換えればよい。 このプログラムは円周率を10の羃乗倍した固定小数点数として計算す…

長精度整数演算

Sum of three cubes for 42 finally solved -- using real life planetary computer 3 つの整数の 3 乗和が 42 になる解が見つかったとのこと。 なんで,42 なのかは興味がないので説明しない。 かなり大きな整数なので,R の普通の変数型 numeric(double) …

マシュマロを食べることができるだろうか?

本日(2019/09/08) の日本テレビ,世界の果てまで行ってQ で,100m の高さから 10 個くらいのマシュマロを一度に投げて,下で待ち受ける8人ほどが口に入れることができるだろうかという実験をやっていた。結果は失敗だったけど,どんな条件だと成功する確率が…

Python って奴は,なんて自由な奴なんだ!

プログラミングの初歩の段階で,「1 以上,10 以下の場合は 'OK',そうでない場合は 'NO' を書くプログラムを作りなさい」などというのがあり,初心者の中には, if (1 < x < 10) print('OK') などと書きたくなる人がいる。大抵の言語はこれはだめで, if (1 …

ビットカウント(ビットが 1 である個数)

「ビットカウントする高速アルゴリズムをPythonで実装しながら詳しく解説してみる」というのを見つけた。 Python の整数は 64 ビット整数,R は 32 ビット整数であることを考慮し,以下のように翻訳した。 bitcount = function(n) { # nの立っているビット数…

utils:::combn の代替関数 next.combn

utils:::combn は組み合わせを配列で返すが,場合によっては一つずつ返してくれる方がうれしいこともある。 そこで,以下に示す next.combn を書いてみた。 next_combn = function(n, r, a) { t = r while (t >= 1 && a[t] == n - r + t) { t = t - 1 } if (…

e1071:::permutations の代替関数 next.permutation

e1071 ライブラリには permutations 関数がある。 permutations は処理が速いが,配列で返すために大きなメモリーを消費する。 時間はかかってもよいので,メモリー消費のない関数が必要なこともある。そのようなときのために以下の関数を書いた。 next.perm…