Project Euler
> ([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
格子経路2×2 のマス目の左上からスタートした場合, 引き返しなしで右下にいくルートは 6 つある.では, 20×20 のマス目ではいくつのルートがあるか.http://odz.sakura.ne.jp/projecteuler/index.php?cmd=read&page=Problem%2015Lattice pathsStarting in the …
今回は、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> 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>…
最長のコラッツ数列正の整数に以下の式で繰り返し生成する数列を定義する.n → n/2 (n が偶数) n → 3n + 1 (n が奇数)13からはじめるとこの数列は以下のようになる.13 → 40 → 20 → 10 → 5 → 16 → 8 → 4 → 2 → 1 13から1まで10個の項になる. この数列はどのよ…
Scala でのロジックをそのまま移植 > let str = " - 37107287533902102798797998220837590246510135740250 - 46376937677490009712648124896970078050417018260538 - 74324986199524741059474233309513058123726617309629 - 9194221336357416157252243056330…
文字列を数値の List に 格納 scala> var str = """ | 37107287533902102798797998220837590246510135740250 | 46376937677490009712648124896970078050417018260538 | 74324986199524741059474233309513058123726617309629 | 91942213363574161572522430563…
大数の和以下の50桁の数字100個の和の上位10桁を求めよ.37107287533902102798797998220837590246510135740250 46376937677490009712648124896970078050417018260538 74324986199524741059474233309513058123726617309629 9194221336357416157252243056330181…
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…
高度整除三角数三角数の数列は自然数の和で表わされ, 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…
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…
高度整除三角数三角数の数列は自然数の和で表わされ, 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…
まづ、格子状の文字列を 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…
まづ、格子状の文字列を 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…
上の の格子のうち, 対角線に沿って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…
> 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;;…
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…
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.…
> [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> (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…
ピタゴラス数(ピタゴラスの定理を満たす自然数)とは で以下の式を満たす数の組である. 例えば, である. となるピタゴラスの三つ組が一つだけ存在する. これらの積を計算しなさい.http://odz.sakura.ne.jp/projecteuler/index.php?cmd=read&page=Problem%209A…
まず、複数行文字列 > " - 12345 - 67890 - " - ;; val it : string = " 12345 67890 " > let str = " - 12345 - 67890 - ";; val str : string = " 12345 67890 "改行を取り除く > str.Replace("\n", "") - ;; val it : string = "1234567890"文字列の中の…
まづ、複数行文字列 scala> var str = """1234567890 | 1234567890 | 1234567890""" str: java.lang.String = 1234567890 1234567890 12345678901文字ずつ、取り出す scala> str.foreach { c => | print(c.toChar) | } 1234567890 1234567890 1234567890 sc…
以下の1000桁の数字から5つの連続する数字を取り出してその積を計算する. そのような積の中で最大のものの値はいくらか.73167176531330624919225119674426574742355349194934 96983520312774506326239578318016984801869478851843 8586156078911294949545950…
素数を小さい方から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…
素数を小さい方から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…
最初の10個の自然数について, その二乗の和は, 12 + 22 + ... + 102 = 385 最初の10個の自然数について, その和の二乗は, (1 + 2 + ... + 10)2 = 3025 これらの数の差は 3025 - 385 = 2640 となる. 同様にして, 最初の100個の自然数について二乗の和と和の二…
最初の10個の自然数について, その二乗の和は, 12 + 22 + ... + 102 = 385 最初の10個の自然数について, その和の二乗は, (1 + 2 + ... + 10)2 = 3025 これらの数の差は 3025 - 385 = 2640 となる. 同様にして, 最初の100個の自然数について二乗の和と和の二…
2520 は 1 から 10 の数字の全ての整数で割り切れる数字であり, そのような数字の中では最小の値である. では, 1 から 20 までの整数全てで割り切れる数字の中で最小の正の数はいくらになるか. http://odz.sakura.ne.jp/projecteuler/index.php?cmd=read&pag…
2520 は 1 から 10 の数字の全ての整数で割り切れる数字であり, そのような数字の中では最小の値である. では, 1 から 20 までの整数全てで割り切れる数字の中で最小の正の数はいくらになるか. http://odz.sakura.ne.jp/projecteuler/index.php?cmd=read&pag…