2008-03-25から1日間の記事一覧

20:30ごろ帰りました。

Project Euler Problem 7

class Integer def upto_inf n = self loop do yield(n) n += 1 end end end def prime?(primes, n) not primes.any? {|m| (n % m).zero? } end def f(index) i, primes = 1, [2] 3.upto_inf do |n| if prime?(primes, n) primes << n i += 1 return n if i …

Project Euler Problem 6

module Enumerable def sum inject(0) {|a, n| a + n } end end def f(enum) sum1 = enum.map {|n| n ** 2 }.sum sum2 = enum.sum ** 2 sum2 - sum1 end p f(1 .. 10) p f(1 .. 100)

Project Euler Problem 5

module Enumerable def product inject(1) {|a, n| a * n } end end def sieve(upper) table = Array.new(upper + 1, false) (2 .. upper).inject([]) do |primes, guess| unless table[guess] primes << guess (guess * 2).step(upper, guess) {|n| table[n…

Project Euler Problem 4

def comb(*enums, &block) comb2(enums, 0, [], &block) end def comb2(enums, index, params, &block) return block.call(*params) if index >= enums.size enums[index].each do |x| params << x comb2(enums, index + 1, params, &block) params.pop end …

Project Euler Problem 3

def sieve(upper) table = Array.new(upper + 1, false) (2 .. upper).inject([]) do |primes, guess| unless table[guess] primes << guess (guess * 2).step(upper, guess) {|n| table[n] = true } end primes end end def f(upper) sieve(Math.sqrt(upper…

Project Euler Problem 2

module Enumerable def sum inject(0) {|a, n| a + n } end end def fibs(upper) n1, n2, fibs = 0, 1, [] while n2 < upper n1, n2 = n2, n1 + n2 fibs << n2 end fibs end def f(upper) fibs(upper).select {|n| (n % 2).zero? }.sum end p f(4_000_000)

Project Euler Problem 1

module Enumerable def sum inject(0) {|a, n| a + n } end end def f(enum) enum.select {|n| (n % 3).zero? or (n % 5).zero? }.sum end p f(1 ... 10) p f(1 ... 1000)

Project Euler始めました

最近プログラム書いてないなぁ、これはいかんと思って始めてみました。ぼちぼちやってきます。 About - Project Euler Project Euler - PukiWiki