2010-01-01から1年間の記事一覧

2人でババ抜きをしてディール直後にカードが手元に残らない確率

ムスメと2人でババ抜きをしていて、あまりにもディール直後でいきなりババだけ残して終了となることが多いことに気づいた。使っていたのはJ、Q、K、Aの4種のカードとババ1枚と少なめだけど、それにしてももう少し奇数枚で割れても良さそうに思えた。で、以下…

Project Euler 23

Project Euler 23。何となくCでやってみたけど、やっぱりRubyのような抽象度の高い言語に比べると面倒だ。 #include <stdio.h> #include <stdlib.h> #define NUM 10000 #define LIMIT 28123 int isabundant(int n) { int sum = 0, ptr = 0; for (int i = 1; i <= n / 2; i++) { </stdlib.h></stdio.h>…

Project Euler 19

Project Euler 19。月初めのツイタチが日曜日の月は、20世紀中にいくつあるか。こんな課題をRubyでやるのに意味があるのかって話もあるけど、ライブラリの使い方を地道に試すのも言語習得の大事なステップ? こういうの、使ってないとすぐに忘れる。 require…

Project Euler 24

Project Euler 24は組み合わせの問題。Rubyを使うとワンライナーになって、反則といえるほどトリビアルになってしまう。 (0..9).to_a.permutation.to_a[1_000_000 - 1].join

Project Euler 44

Project Euler 44はpentagonal numbersの問題。思い切り力技、かつ抽象度が高い感じ。コードは短く、ほぼ問題文をそのまま書いただけと分かりやすいけど、とにかく遅い。7、8分かかってやっと答えが出た。直感的に最初に出てくるペアが最小だと思って、実際…

Project Euler 22

Project Euler 22はアルファベットの名前を足し算するような問題。mapとかinjectとか、実は読みづらいんじゃないかという気がしつつ。 while line = gets names = line.chomp.split(/,/).map{|name| name.gsub(/\"/,'')} end total = 0 def c2v(c) c.ord - "…

Project Euler 21

思い出したようにProject EulerのProblem 21。aとb、2つの数があるとき、これらの約数の合計が等しく、a!=bであるとき、aとbの組み合わせをamicable numbers(友愛数)と呼ぶ。10000以下のamicable numbersの合計を求めよ。例えば220と284はamicable numbers。…

Canvasでアニメ

JavaScript+Canvasを使って簡単なアニメーションをやってみた。ぜひとも作ってみたいアニメーションがあるのだけど、どうもまだ第1段階という感じ。 <html> <head> <title>canvas sample</title> <script type="application/javascript"> function draw() { var canvas = document.getElementById("basic"); if (canvas.getCon</head></html>…

JavaScriptというより

『初めてのJavaScript』(シェリー・パワーズ著)を読み終わった。Amazonのレビューでは毀誉褒貶あるみたいだけど、ふつうにいい本だと思った。JavaScriptって言語仕様がうんたらというよりも、DOMやBOM、イベント処理の流れと関数の渡し方、ブラウザの互換性…

JavaScriptを少しやってみたいかも

Google Apps Scriptが面白いことに気づいた。ちょこちょこっと書けばすぐに動く。スプレッドシートを標準入出力的に使ってウェブから何かを持ってきたり、セルを何かで埋めたりといったことが簡単にできる。ある意味では素のJavaScriptよりも簡単。サーバサ…

竹内関数をRubyとGaucheで

Lispは遅くて実用にならないと揶揄されるで、それに論駁するために竹内郁雄先生が2時間ほどで考えだしたという「たらい回し関数」を、手元で実行してみた。計算量はtarai(2n,n,0)の場合にO(n^n)ということらしい。これだけ短いコードで、これほどの計算量の…

Rubyの絵文字対応

今日Rubyが絵文字エンコーディングに対応したというので、Asakusa.rbな場でやってみた。Snow LeopardというかMacPortsでは、最新パッチ取込済みの開発版が落ちてくると限らないので、svnかgithub.com/ruby/rubyあたりが吉の模様。githubはsvnから7時間おきに…

Railsはじめてみる

何となくRuby on Railsを始めてみることにした。オライリーから出た「Head First Rails」という本を読んだら、この本がカタパルト的役割を果たしてくれた気がする。Railsって、すごく面倒なものだという印象を持っていたけど、構造自体はMVCのお手本だし、DR…

迷路の最短経路

ここにある迷路の最短経路を調べる問題をやってみた。これはまた要するに動的計画法でいいんでしょ、とハンマーの使い方を覚えたもんだからすべてが釘に見える感じで、同じ方法論でやってみようとしてみたり。ダイクストラ法がうんたらという話も聞こえてき…

動的計画法がかすかに分かった

オイラー・プロジェクトの18問目、67問目。ピラミッド状に並んだ数字を上から下までたどるとき、足した結果が最大になる経路を見つけろというもの。単純に上から大きい方を選びつつ降りていくだけでは正解は得られない。かといって、可能な経路をすべて調べ…

プロジェクト・オイラー15問目

プロジェクト・オイラーの15問目。以下の2x2のグリッドを左上から右下になぞるとき、6つのルートがある。20x20のグリッドではルートは何通りか。最初にRubyで書いてみた。確認のために経路を配列に残しつつ。 WIDTH, HEIGHT = 2,2 $count = 0 def step_forwa…

Termtter用丸付きアルファベットプラグイン

MacBook Proを買って、MacPortsにハマり中。MacPortsは、あれもこれもすんなり動くものだと思ったら結構大変。Emacsのインストールでコケるとか、GIMPパッケージには数種類あって日本語の扱いが怪しいとか、そういうレベルだとは想像だにできんかった。Macな…