2010-04-01から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。…