ONLY DO WHAT ONLY YOU CAN DO

こけたら立ちなはれ 立ったら歩きなはれ

Project Euler

F# で Project Euler Problem 15

> ([21..40] |> List.reduce(*)) / ([1..20] |> List.reduce(*)) - ;; val it : int = 0 > ([21I..40I] |> List.reduce(*)) / ([1I..20I] |> List.reduce(*)) - ;; val it : System.Numerics.BigInteger = 137846528820I

Project Euler Problem 15

格子経路2×2 のマス目の左上からスタートした場合, 引き返しなしで右下にいくルートは 6 つある.では, 20×20 のマス目ではいくつのルートがあるか.http://odz.sakura.ne.jp/projecteuler/index.php?cmd=read&page=Problem%2015Lattice pathsStarting in the …

F# で Project Euler Problem 14

今回は、Scala 版とは違って、辞書にコラッツ数列そのものを格納するのではなく、 次の数だけ格納してみる。 > let rec collatz_list(n:int64): List<int64> = - if (n = 1L) then [1L] - elif (n % 2L = 0L) then n::collatz_list(n / 2L) - else n::collatz_list(</int64>…

Scala で Project Euler Problem 14

まづは、コラッツ数列がどんなものか見てみる scala> def collatz_list(n: Long): List[Long] = { | if (n == 1) List(1L) | else if (n % 2 == 0) n::collatz_list(n / 2) | else n::collatz_list(3 * n + 1) | } collatz_list: (n: Long)List[Long] scala>…

Project Euler Problem 14

最長のコラッツ数列正の整数に以下の式で繰り返し生成する数列を定義する.n → n/2 (n が偶数) n → 3n + 1 (n が奇数)13からはじめるとこの数列は以下のようになる.13 → 40 → 20 → 10 → 5 → 16 → 8 → 4 → 2 → 1 13から1まで10個の項になる. この数列はどのよ…

F# で Project Euler Problem 13

Scala でのロジックをそのまま移植 > let str = " - 37107287533902102798797998220837590246510135740250 - 46376937677490009712648124896970078050417018260538 - 74324986199524741059474233309513058123726617309629 - 9194221336357416157252243056330…

Scala で Project Euler Problem 13

文字列を数値の List に 格納 scala> var str = """ | 37107287533902102798797998220837590246510135740250 | 46376937677490009712648124896970078050417018260538 | 74324986199524741059474233309513058123726617309629 | 91942213363574161572522430563…

Project Euler Problem 13

大数の和以下の50桁の数字100個の和の上位10桁を求めよ.37107287533902102798797998220837590246510135740250 46376937677490009712648124896970078050417018260538 74324986199524741059474233309513058123726617309629 9194221336357416157252243056330181…

F# で Project Euler Problem 12

Scala でのロジックをそのまま移植 > let rec get_prime_factor_list(n:int64, factor:int64) = - if n < factor * factor then [n] - elif n % factor = 0L then factor::get_prime_factor_list(n / factor, factor ) - else get_prime_factor_list(n , fac…

Project Euler Problem 12

高度整除三角数三角数の数列は自然数の和で表わされ, 7番目の三角数は 1 + 2 + 3 + 4 + 5 + 6 + 7 = 28 である. 三角数の最初の10項は: 1, 3, 6, 10, 15, 21, 28, 36, 45, 55, ... となる.最初の7項について, その約数を列挙すると, 以下のとおり. 1: 1 3: 1…

Scala で Project Euler Problem 12

28の約数を列挙してみる scala> var factor_list:List[Int] = List(1, 28) factor_list: List[Int] = List(1, 28) scala> for (i <- 2 to 28 / 2) { | if (28 % i == 0) { | factor_list = i::factor_list | println(i) | } | } 2 4 7 14 scala> factor_list…

Project Euler Problem 12

高度整除三角数三角数の数列は自然数の和で表わされ, 7番目の三角数は 1 + 2 + 3 + 4 + 5 + 6 + 7 = 28 である. 三角数の最初の10項は: 1, 3, 6, 10, 15, 21, 28, 36, 45, 55, ... となる.最初の7項について, その約数を列挙すると, 以下のとおり. 1: 1 3: 1…

F# で Project Euler Problem 11

まづ、格子状の文字列を List に 格納する > let str = " - 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 40 67 53 88 30 03 49 13 36 65…

Scala で Project Euler Problem 11

まづ、格子状の文字列を List に 格納する scala> var str = """ | 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 40 67 53 88 30 03 49 1…

Project Euler Problem 11

上の の格子のうち, 対角線に沿って4つの数字が赤くマークされている. 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 40 67 53 88 30 03 49 13…

F# で Project Euler Problem 10

> prime_sum;; val it : int = 5 > let mutable prime_sum = 2 + 3;; val mutable prime_sum : int = 5 > let mutable num = 5;; val mutable num : int = 5 > let mutable fPrime = true;; val mutable fPrime : bool = true > let mutable fWhile = true;;…

Scala で Project Euler Problem 10

Problem 7 を 流用 scala> var prime_list = List(3) prime_list: List[Int] = List(3) scala> var num = 5 num: Int = 5 scala> scala> while (num < 2000000) { | var num_sqrt = Math.sqrt(num) | var fPrime = true | scala.util.control.Breaks.breakab…

Project Euler Problem 10

10以下の素数の和は である. 200万以下の全ての素数の和を求めよ.http://odz.sakura.ne.jp/projecteuler/index.php?cmd=read&page=Problem%2010The sum of the primes below 10 is . Find the sum of all the primes below two million.http://projecteuler.…

F# で Project Euler Problem 9

> [1..9] - ;; val it : int list = [1; 2; 3; 4; 5; 6; 7; 8; 9] > [1..9] - |> List.map(fun i -> [i..9]) - ;; val it : int list list = [[1; 2; 3; 4; 5; 6; 7; 8; 9]; [2; 3; 4; 5; 6; 7; 8; 9]; [3; 4; 5; 6; 7; 8; 9]; [4; 5; 6; 7; 8; 9]; [5; 6; 7…

Scala で Project Euler Problem 9

scala> (1 to 9) res0: scala.collection.immutable.Range.Inclusive = Range(1, 2, 3, 4, 5, 6, 7, 8, 9) scala> (1 to 9). | map(a => (a + 1 to 10)) res1: scala.collection.immutable.IndexedSeq[scala.collection.immutable.Range.Inclusive] = Vector…

Project Euler Problem 9

ピタゴラス数(ピタゴラスの定理を満たす自然数)とは で以下の式を満たす数の組である. 例えば, である. となるピタゴラスの三つ組が一つだけ存在する. これらの積を計算しなさい.http://odz.sakura.ne.jp/projecteuler/index.php?cmd=read&page=Problem%209A…

F# で Project Euler Problem 8

まず、複数行文字列 > " - 12345 - 67890 - " - ;; val it : string = " 12345 67890 " > let str = " - 12345 - 67890 - ";; val str : string = " 12345 67890 "改行を取り除く > str.Replace("\n", "") - ;; val it : string = "1234567890"文字列の中の…

Scala で Project Euler Problem 8

まづ、複数行文字列 scala> var str = """1234567890 | 1234567890 | 1234567890""" str: java.lang.String = 1234567890 1234567890 12345678901文字ずつ、取り出す scala> str.foreach { c => | print(c.toChar) | } 1234567890 1234567890 1234567890 sc…

Project Euler Problem 8

以下の1000桁の数字から5つの連続する数字を取り出してその積を計算する. そのような積の中で最大のものの値はいくらか.73167176531330624919225119674426574742355349194934 96983520312774506326239578318016984801869478851843 8586156078911294949545950…

F# で Project Euler Problem 7

素数を小さい方から6つ並べると 2, 3, 5, 7, 11, 13 であり, 6番目の素数は 13 である. 10 001 番目の素数を求めよ. http://odz.sakura.ne.jp/projecteuler/index.php?cmd=read&page=Problem%207By listing the first six prime numbers: 2, 3, 5, 7, 11, an…

Scala で Project Euler Problem 7

素数を小さい方から6つ並べると 2, 3, 5, 7, 11, 13 であり, 6番目の素数は 13 である. 10 001 番目の素数を求めよ. http://odz.sakura.ne.jp/projecteuler/index.php?cmd=read&page=Problem%207By listing the first six prime numbers: 2, 3, 5, 7, 11, an…

Scala で Project Euler Problem 6

最初の10個の自然数について, その二乗の和は, 12 + 22 + ... + 102 = 385 最初の10個の自然数について, その和の二乗は, (1 + 2 + ... + 10)2 = 3025 これらの数の差は 3025 - 385 = 2640 となる. 同様にして, 最初の100個の自然数について二乗の和と和の二…

F# で Project Euler Problem 6

最初の10個の自然数について, その二乗の和は, 12 + 22 + ... + 102 = 385 最初の10個の自然数について, その和の二乗は, (1 + 2 + ... + 10)2 = 3025 これらの数の差は 3025 - 385 = 2640 となる. 同様にして, 最初の100個の自然数について二乗の和と和の二…

F# で Project Euler Problem 5

2520 は 1 から 10 の数字の全ての整数で割り切れる数字であり, そのような数字の中では最小の値である. では, 1 から 20 までの整数全てで割り切れる数字の中で最小の正の数はいくらになるか. http://odz.sakura.ne.jp/projecteuler/index.php?cmd=read&pag…

Scala で Project Euler Problem 5

2520 は 1 から 10 の数字の全ての整数で割り切れる数字であり, そのような数字の中では最小の値である. では, 1 から 20 までの整数全てで割り切れる数字の中で最小の正の数はいくらになるか. http://odz.sakura.ne.jp/projecteuler/index.php?cmd=read&pag…