Skip to content

Commit

Permalink
fix conflicts in merge
Browse files Browse the repository at this point in the history
  • Loading branch information
jpsilvashy committed Mar 30, 2012
2 parents fcf6557 + 98c75a8 commit 4b6c011
Show file tree
Hide file tree
Showing 4 changed files with 131 additions and 11 deletions.
2 changes: 2 additions & 0 deletions ruby/lib/array.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
class Array
end
28 changes: 18 additions & 10 deletions ruby/problem_001.rb
Original file line number Diff line number Diff line change
@@ -1,21 +1,29 @@
#! /usr/bin/env ruby

# http://projecteuler.net/problem=1
# http://projecteuler.net/problem=9

# If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23.
# Find the sum of all the multiples of 3 or 5 below 1000.
# A Pythagorean triplet is a set of three natural numbers, a b c, for which,

# a^2 + b^2 = c^2

# For example, 3^2 + 4^2 = 9 + 16 = 25 = 5^2.

# There exists exactly one Pythagorean triplet for which a + b + c = 1000.
# Find the product abc.

require "benchmark"

time = Benchmark.measure do
x = 0
i = 0
while i < 1000
if (i % 3 == 0) || (i % 5 == 0)
x += i

(1..1000).each do |a|
(1..1000).each do |b|
c = Math.sqrt(a**2 + b**2)
if (a + b + c == 1000) && (a < b)
puts (a * b * c).to_i
end
end
i += 1
end

end

puts time
puts time
18 changes: 17 additions & 1 deletion ruby/problem_010.rb
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,24 @@
require "benchmark"
require_relative "lib/integer"

def array_of_primes_for(val)
sieve = []
for i in 2 .. val
sieve[i] = i
end
for i in 2 .. Math.sqrt(val)
next unless sieve[i]
(i*i).step(val, i) do |j|
sieve[j] = nil
end
end
sieve.compact
end

time = Benchmark.measure do
2_000.sieve
primes = array_of_primes_for(2_000_000)
sum_of_primes = primes.inject {|sum, n| sum + n }
puts sum_of_primes
end

puts time
94 changes: 94 additions & 0 deletions ruby/problem_011.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
#! /usr/bin/env ruby

# In the 20x20 grid below, four numbers along a diagonal line have been marked in red.

# 8 2 22 97 38 15 0 40 0 75 4 5 7 78 52 12 50 77 91 8
# 49 49 99 40 17 81 18 57 60 87 17 40 98 43 69 48 4 56 62 0
# 81 49 31 73 55 79 14 29 93 71 40 67 53 88 30 3 49 13 36 65
# 52 70 95 23 4 60 11 42 69 24 68 56 1 32 56 71 37 2 36 91
# 22 31 16 71 51 67 63 89 41 92 36 54 22 40 40 28 66 33 13 80
# 24 47 32 60 99 3 45 2 44 75 33 53 78 36 84 20 35 17 12 50
# 32 98 81 28 64 23 67 10 26 38 40 67 59 54 70 66 18 38 64 70
# 67 26 20 68 2 62 12 20 95 63 94 39 63 8 40 91 66 49 94 21
# 24 55 58 5 66 73 99 26 97 17 78 78 96 83 14 88 34 89 63 72
# 21 36 23 9 75 0 76 44 20 45 35 14 0 61 33 97 34 31 33 95
# 78 17 53 28 22 75 31 67 15 94 3 80 4 62 16 14 9 53 56 92
# 16 39 5 42 96 35 31 47 55 58 88 24 0 17 54 24 36 29 85 57
# 86 56 0 48 35 71 89 7 5 44 44 37 44 60 21 58 51 54 17 58
# 19 80 81 68 5 94 47 69 28 73 92 13 86 52 17 77 4 89 55 40
# 4 52 8 83 97 35 99 16 7 97 57 32 16 26 26 79 33 27 98 66
# 88 36 68 87 57 62 20 72 3 46 33 67 46 55 12 32 63 93 53 69
# 4 42 16 73 38 25 39 11 24 94 72 18 8 46 29 32 40 62 76 36
# 20 69 36 41 72 30 23 88 34 62 99 69 82 67 59 85 74 4 36 16
# 20 73 35 29 78 31 90 1 74 31 49 71 48 86 81 16 23 57 5 54
# 1 70 54 71 83 51 54 69 16 92 33 48 61 43 52 1 89 19 67 48

# The product of these numbers is 26 63 78 14 = 1788696.

# What is the greatest product of four adjacent numbers in any direction (up, down, left, right, or diagonally) in the 20x20 grid?

grid = [
[ 8, 2, 22, 97, 38, 15, 0, 40, 0, 75, 4, 5, 7, 78, 52, 12, 50, 77, 91, 8 ],
[ 49, 49, 99, 40, 17, 81, 18, 57, 60, 87, 17, 40, 98, 43, 69, 48, 4, 56, 62, 0 ],
[ 81, 49, 31, 73, 55, 79, 14, 29, 93, 71, 40, 67, 53, 88, 30, 3, 49, 13, 36, 65 ],
[ 52, 70, 95, 23, 4, 60, 11, 42, 69, 24, 68, 56, 1, 32, 56, 71, 37, 2, 36, 91 ],
[ 22, 31, 16, 71, 51, 67, 63, 89, 41, 92, 36, 54, 22, 40, 40, 28, 66, 33, 13, 80 ],
[ 24, 47, 32, 60, 99, 3, 45, 2, 44, 75, 33, 53, 78, 36, 84, 20, 35, 17, 12, 50 ],
[ 32, 98, 81, 28, 64, 23, 67, 10, 26, 38, 40, 67, 59, 54, 70, 66, 18, 38, 64, 70 ],
[ 67, 26, 20, 68, 2, 62, 12, 20, 95, 63, 94, 39, 63, 8, 40, 91, 66, 49, 94, 21 ],
[ 24, 55, 58, 5, 66, 73, 99, 26, 97, 17, 78, 78, 96, 83, 14, 88, 34, 89, 63, 72 ],
[ 21, 36, 23, 9, 75, 0, 76, 44, 20, 45, 35, 14, 0, 61, 33, 97, 34, 31, 33, 95 ],
[ 78, 17, 53, 28, 22, 75, 31, 67, 15, 94, 3, 80, 4, 62, 16, 14, 9, 53, 56, 92 ],
[ 16, 39, 5, 42, 96, 35, 31, 47, 55, 58, 88, 24, 0, 17, 54, 24, 36, 29, 85, 57 ],
[ 86, 56, 0, 48, 35, 71, 89, 7, 5, 44, 44, 37, 44, 60, 21, 58, 51, 54, 17, 58 ],
[ 19, 80, 81, 68, 5, 94, 47, 69, 28, 73, 92, 13, 86, 52, 17, 77, 4, 89, 55, 40 ],
[ 4, 52, 8, 83, 97, 35, 99, 16, 7, 97, 57, 32, 16, 26, 26, 79, 33, 27, 98, 66 ],
[ 88, 36, 68, 87, 57, 62, 20, 72, 3, 46, 33, 67, 46, 55, 12, 32, 63, 93, 53, 69 ],
[ 4, 42, 16, 73, 38, 25, 39, 11, 24, 94, 72, 18, 8, 46, 29, 32, 40, 62, 76, 36 ],
[ 20, 69, 36, 41, 72, 30, 23, 88, 34, 62, 99, 69, 82, 67, 59, 85, 74, 4, 36, 16 ],
[ 20, 73, 35, 29, 78, 31, 90, 1, 74, 31, 49, 71, 48, 86, 81, 16, 23, 57, 5, 54 ],
[ 1, 70, 54, 71, 83, 51, 54, 69, 16, 92, 33, 48, 61, 43, 52, 1, 89, 19, 67, 48 ]
]

def sum_for_array(array)
array.inject {|sum, n| sum + n }
end

def left_to_right_diagonals(grid)
diagonals = []

17.times do |hp|
17.times do |vp|
array = (0..3).collect { |i| grid[i + vp][i + hp] }
diagonals << array
end
end

diagonals
end

def right_to_left_diagonals(grid)
diagonals = []

17.times do |hp|
17.times do |vp|
array = (0..3).collect { |i| grid[i + vp][i + hp] }
diagonals << array
end
end

diagonals
end


array = (0..3).collect { |i| grid[i + 4][i] }

# (0..3).collect { |i| grid[i][i] }








0 comments on commit 4b6c011

Please sign in to comment.