ruby

Project Euler Problem 21

問題 Let d(n) be defined as the sum of proper divisors of n (numbers less than n which divide evenly into n). If d(a) = b and d(b) = a, where a ≠ b, then a and b are an amicable pair and each of a and b are called amicable numbers. For exa…

Project Euler Problem 20

問題 n! means n × (n − 1) × ... × 3 × 2 × 1 Find the sum of the digits in the number 100! ソース class Integer def fact return 1 if self.zero? self * (self - 1).fact end end puts 100.fact.to_s.scan(/./).map{|x| x.to_i}.inject(:+) 解答 648 …

Project Euler Problem 19

問題 You are given the following information, but you may prefer to do some research for yourself. * 1 Jan 1900 was a Monday. * Thirty days has September, April, June and November. All the rest have thirty-one, Saving February alone, Which…

Project Euler Problem 67

問題 By starting at the top of the triangle below and moving to adjacent numbers on the row below, the maximum total from top to bottom is 23. [3] [7]5 2[4]6 8 5[9]3 That is, 3 + 7 + 4 + 9 = 23. Find the maximum total from top to bottom in…

Project Euler Problem 18

問題 By starting at the top of the triangle below and moving to adjacent numbers on the row below, the maximum total from top to bottom is 23. [3] [7]5 2[4]6 8 5[9]3 That is, 3 + 7 + 4 + 9 = 23. Find the maximum total from top to bottom of…

Project Euler Problem 17

問題 If the numbers 1 to 5 are written out in words: one, two, three, four, five, then there are 3 + 3 + 5 + 4 + 4 = 19 letters used in total. If all the numbers from 1 to 1000 (one thousand) inclusive were written out in words, how many l…

Project Euler Problem 25

問題 The Fibonacci sequence is defined by the recurrence relation: F_(n) = F_(n−1) + F_(n−2), where F_(1) = 1 and F_(2) = 1. Hence the first 12 terms will be: F_(1) = 1 F_(2) = 1 F_(3) = 2 F_(4) = 3 F_(5) = 5 F_(6) = 8 F_(7) = 13 F_(8) = 2…

Project Euler Problem 24

問題 A permutation is an ordered arrangement of objects. For example, 3124 is one possible permutation of the digits 1, 2, 3 and 4. If all of the permutations are listed numerically or alphabetically, we call it lexicographic order. The le…

Project Eulerで使った階乗/約数/過剰数/不足数/完全数/友愛数(親和数)のまとめ

Project Eulerで使ったメソッドをまとめてみました 特にProject Eulerやっている人には便利だと思うのでぜひ使ってみてください。 (コレを使ったらほとんど答えになるので、自分で正解出した後でこんなやり方もあるんだ程度で。。←ツッコミどころ満載です)…

Project Euler Problem 23

問題 A perfect number is a number for which the sum of its proper divisors is exactly equal to the number. For example, the sum of the proper divisors of 28 would be 1 + 2 + 4 + 7 + 14 = 28, which means that 28 is a perfect number. A numbe…

Project Euler Problem 14

問題 The following iterative sequence is defined for the set of positive integers: n → n/2 (n is even) n → 3n + 1 (n is odd) Using the rule above and starting with 13, we generate the following sequence: 13 → 40 → 20 → 10 → 5 → 16 → 8 → 4 …

Project Euler Problem 13

問題 Work out the first ten digits of the sum of the following one-hundred 50-digit numbers. 37107287533902102798797998220837590246510135740250 46376937677490009712648124896970078050417018260538 ・ ・ (略) ・ ・ 5350353422647252425087405…

Project Euler Problem 12

問題 The sequence of triangle numbers is generated by adding the natural numbers. So the 7^(th) triangle number would be 1 + 2 + 3 + 4 + 5 + 6 + 7 = 28. The first ten terms would be: 1, 3, 6, 10, 15, 21, 28, 36, 45, 55, ... Let us list the…

Project Euler Problem 11

問題 In the 20×20 grid below, four numbers along a diagonal line have been marked in red. 08 02 22 97 38 15 00 40 00 75 04 05 07 78 52 12 50 77 91 08 49 49 99 40 17 81 18 57 60 87 17 40 98 43 69 48 04 56 62 00 81 49 31 73 55 79 14 29 93 71…

Project Euler Problem 10

問題 The sum of the primes below 10 is 2 + 3 + 5 + 7 = 17. Find the sum of all the primes below two million. ソース max = 2000000 prime = Array.new(max, 1) prime[0] = 0 prime[1] = 0 i = 2 while i < Math.sqrt(max).to_i + 1 do (i + i).step(m…

Project Euler Problem 9

問題 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. …

Project Euler Problem 8

問題 Find the greatest product of five consecutive digits in the 1000-digit number. 73167176531330624919225119674426574742355349194934 96983520312774506326239578318016984801869478851843 85861560789112949495459501737958331952853208805511 12…

Project Euler Problem 7

問題 By listing the first six prime numbers: 2, 3, 5, 7, 11, and 13, we can see that the 6^th prime is 13. What is the tex:10001^st prime number? ソース n = 10001 max = 150000 prime = Array.new(max, 1) prime[0] = 0 prime[1] = 0 i = 2 count…

Project Euler Problem 16

問題 2^15 = 32768 and the sum of its digits is 3 + 2 + 7 + 6 + 8 = 26. What is the sum of the digits of the number 2^1000? ソース x = 1000 puts (2 ** x).to_s.scan(/./).map{|x| x.to_i}.inject(:+) 解答 1366 感想 コレはRubyとinjectのお陰!

Project Euler Problem 15

問題 Starting in the top left corner of a 2×2 grid, there are 6 routes (without backtracking) to the bottom right corner. How many routes are there through a 20×20 grid? ソース class Integer def fact return 1 if self.zero? self * (self - 1…

Project Euler Problem 5

問題 2520 is the smallest number that can be divided by each of the numbers from 1 to 10without any remainder. What is the smallest number that is evenly divisible by all of the numbers from 1 to 20? ソース 解答 require 'mathn' x = 20 prim…

Project Euler Problem 4

問題 A palindromic number reads the same both ways. The largest palindrome made from the product of two 2-digit numbers is 9009 = 91 × 99. Find the largest palindrome made from the product of two 3-digit numbers. ソース max = 0 999.downto(…

Project Euler Problem 6

問題 The sum of the squares of the first ten natural numbers is, 1^(2) + 2^(2) + ... + 10^(2) = 385 The square of the sum of the first ten natural numbers is, (1 + 2 + ... + 10)^(2) = 55^(2) = 3025 Hence the difference between the sum of t…

Project Euler Problem 3

問題 The prime factors of 13195 are 5, 7, 13 and 29. What is the largest prime factor of the number 600851475143 ? ソース require 'mathn' x = 600851475143 pv = x.prime_division p pv[pv.size - 1][0] 解答 6857 感想 ライブラリ使って余裕!

Project Euler Problem 2

問題 Each new term in the Fibonacci sequence is generated by adding the previous two terms. By starting with 1 and 2, the first 10 terms will be: 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ... Find the sum of all the even-valued terms in the seque…

Project Euler Problem 1

About - Project Eulerに参戦し始めた Rubyの勉強も兼ねてRubyで挑戦問題の和訳はこちらProject Euler - PukiWiki 問題 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 2…

Rubyで2^x以上で最小の素数

ちょと必要だったので、そのときのプログラムをメモ。 なぜ計算したかったのか? xが1〜32までの時の2^x以上で最小の素数が欲しかったんです ハッシュテーブルの大きさとかによく使うでしょ(そうそれ! ソース require 'mathn' (1..32).each{|x| puts lambd…

Rubyのyieldの使い方(my_eachを持つ簡易MyArrayクラスを作ってみた)

yieldでブロックパラメータを含むメソッド(?)を定義できることを知ったのでメモ。 #!/usr/local/ruby/bin/ruby class MyArray def initialize @array = [1, 2, 3, 4, 5, 6, 7] end def my_each @array.each{|a| yield a } end end a = MyArray.new a.my_e…