Ruby

昨日、息子にプログラミングを教えました

昨日、6才の息子に初めてプログラミングを教えました。内容はRubyで、別のファイルを読み込んで、何時間何分という時間の書かれたリストから全部の合計時間を計算するというものです。ソースはこんな感じ。 total_hour, total_minute = 0, 0 File.foreach("v…

Project Euler 59 - ブルートフォースでの暗号解読

Ruby で Project Eulerhttp://odz.sakura.ne.jp/projecteuler/index.php?Problem%2059 (訳者注: 文字コードの説明は適当です) 各文字はそれぞれ一意のコードに割り当てられている. よく使われる標準としてASCII (American Standard Code for Information Int…

Project Euler 58 - 反時計回りに並べた数字の対角線上の素数の割合

Ruby で Project Eulerhttp://odz.sakura.ne.jp/projecteuler/index.php?Problem%2058 1 から初めて, 以下のように反時計回りに数字を並べていくと, 辺の長さが 7 の渦巻きが形成される. 37 36 35 34 33 32 31 38 17 16 15 14 13 30 39 18 5 4 3 12 29 40 19…

Project Euler 57 - √2の連分数の最初の 1000 項のうち分子の桁数が分母の桁数を超える項の数は?

Ruby で Project Eulerhttp://odz.sakura.ne.jp/projecteuler/index.php?Problem%2057 2 の平方根は無限に続く連分数で表すことができる. √ 2 = 1 + 1/(2 + 1/(2 + 1/(2 + ... ))) = 1.414213...最初の 4 回の繰り返しを展開すると以下が得られる. 1 + 1/2 =…

Project Euler 56 - a, b b の桁の和の最大値

Ruby で Project Eulerhttp://odz.sakura.ne.jp/projecteuler/index.php?Problem%2056 Googol (10100)は非常に大きな数である: 1 の後に 0 が 100 個続く. 100100 は想像を絶する. 1 の後に 0 が 200 回続く. その大きさにも関わらず, 両者とも桁の和は 1 で…

Project Euler 55 - 10000未満のLychrel数の個数

Ruby で Project Eulerhttp://odz.sakura.ne.jp/projecteuler/index.php?Problem%2055 47とその反転を足し合わせると, 47 + 74 = 121となり, 回文数になる. 全ての数が素早く回文数になるわけではない. 349を考えよう, 349 + 943 = 1292, 1292 + 2921 = 4213…

Project Euler 54 - ポーカーの手役判定ルーチン

Ruby で Project Eulerhttp://odz.sakura.ne.jp/projecteuler/index.php?Problem%2054 カードゲームのポーカーでは, 手札は5枚のカードからなりランク付けされている. 役を低い方から高い方へ順に並べると以下である. 役無し: 一番値が大きいカード ワン・ペ…

Project Euler 53

Ruby で Project Eulerhttp://odz.sakura.ne.jp/projecteuler/index.php?Problem%2053 12345から3つ選ぶ選び方は10通りである. 123, 124, 125, 134, 135, 145, 234, 235, 245, 345.組み合わせでは, 以下の記法を用いてこのことを表す: 5C3 = 10. 一般に, r ≦…

Project Euler 52

Ruby で Project Eulerhttp://odz.sakura.ne.jp/projecteuler/index.php?Problem%2052 125874を2倍すると251748となる. これは元の数125874と同じ数を含む.2x, 3x, 4x, 5x, 6xがxと同じ数を含むような最小の正整数xを求めよ. 今回はそんなに難しくないような…

Project Euler 51

Ruby で Project Eulerhttp://odz.sakura.ne.jp/projecteuler/index.php?Problem%2051 *57の第1桁を置き換えることで, 157, 257, 457, 557, 757, 857という6つの素数が得られる.56**3の第3桁と第4桁を同じ数で置き換ることを考えよう. この5桁の数は7つの素…

Project Euler 50

Ruby で Project Eulerhttp://odz.sakura.ne.jp/projecteuler/index.php?Problem%2050 素数41は6つの連続する素数の和として表せる:41 = 2 + 3 + 5 + 7 + 11 + 13.100未満の素数を連続する素数の和で表したときにこれが最長になる.同様に, 連続する素数の和…

Project Euler 49

Ruby で Project Eulerhttp://odz.sakura.ne.jp/projecteuler/index.php?Problem%2049 項差3330の等差数列1487, 4817, 8147は次の2つの変わった性質を持つ。(i)3つの項はそれぞれ素数である。 (ii)各桁は他の項の置換で表される。 1, 2, 3桁の素数にはこのよ…

Project Euler 48

Ruby で Project Eulerhttp://odz.sakura.ne.jp/projecteuler/index.php?Problem%2048 次の式は、1 1 + 2 2 + 3 3 + ... + 10 10 = 10405071317 である。では、1 1 + 2 2 + 3 3 + ... + 1000 1000 の最後の10桁を求めよ。 大きな数の計算ですが、ruby では自…

Project Euler 47

Ruby で Project Eulerhttp://odz.sakura.ne.jp/projecteuler/index.php?Problem%2047 連続する2つの数がそれぞれ2つの異なる素因数を持つのは14 = 2 × 7 15 = 3 × 5 の場合である. 同様に連続する3つの数がそれぞれ3つの異なる素因数を持つのは644 = 22 × 7…

Project Euler 46

Ruby で Project Eulerhttp://odz.sakura.ne.jp/projecteuler/index.php?Problem%2046 Christian Goldbachは全ての奇合成数は平方数の2倍と素数の和で表せると予想した. 9 = 7 + 2×1 2 15 = 7 + 2×2 2 21 = 3 + 2×3 2 25 = 7 + 2×3 2 27 = 19 + 2×2 2 33 = 3…

Project Euler 45

Ruby で Project Eulerhttp://odz.sakura.ne.jp/projecteuler/index.php?Problem%2045 三角数, 五角数, 六角数は以下のように生成される. 三角数 T n = n(n+1)/2 1, 3, 6, 10, 15, ... 五角数 P n = n(3n-1)/2 1, 5, 12, 22, 35, ... 六角数 H n = n(2n-1) 1…

Project Euler 44

Ruby で Project Eulerhttp://odz.sakura.ne.jp/projecteuler/index.php?Problem%2044 五角数は P n = n ( 3 n - 1 ) / 2で生成される. 最初の10項は1, 5, 12, 22, 35, 51, 70, 92, 117, 145, ... である.P 4 + P 7 = 22 + 70 = 92 = P 8 である. しかし差 7…

Project Euler 43

Project Eulerhttp://odz.sakura.ne.jp/projecteuler/index.php?Problem%2043 数 1406357289 は 0 から 9 の Pandigital 数である (0 から 9 が 1 度ずつ現れるので). この数は部分語が面白い性質を持っている.d 1 を 1 桁目, d 2 を 2 桁目の数とし, 以下順…

Rubyのまつもとさんに会いましたの続き

Rubyのまつもとさんに会いました2/5にまた後で書こうと思いますと書いていたのにずっと書かずにいましたが、2月中には書かないと思ったので書いてみます。パブリックな場所での話ではないので、あまり書きすぎてもいけないような気もするのですが、印象に残…

Project Euler 42

Project Eulerhttp://odz.sakura.ne.jp/projecteuler/index.php?Problem%2042 三角数のn項は t n = で与えられる. 最初の 10 項は1, 3, 6, 10, 15, 21, 28, 36, 45, 55, ...である.単語中のアルファベットを数値に変換した後に和をとる. この和を「単語の値…

Project Euler 41

Project Eulerhttp://odz.sakura.ne.jp/projecteuler/index.php?Problem%2041 n 桁の数が Pandigital であるとは, 1 から n までの数を各桁に1つずつもつことである. 例えば 2143 は 4 桁の Pandigital 数であり, かつ素数である.n 桁の Pandigital な素数の…

Project Euler 40

Project Eulerhttp://odz.sakura.ne.jp/projecteuler/index.php?Problem%2040 正の整数を順に連結して得られる以下の10進の無理数を考える: 0.123456789101112131415161718192021...小数点第12位は1である.d n で小数点第 n 位の数を表す. d 1 × d 10 × d 10…

Project Euler 39

Project Eulerhttp://odz.sakura.ne.jp/projecteuler/index.php?Problem%2039 辺の長さが {a,b,c} と整数の 3 つ組である直角三角形を考え, その周囲の長さを p とする. p = 120 のときには 3 つの解が存在する: {20,48,52}, {24,45,51}, {30,40,50}p ピタゴ…

Project Euler 38

Project Eulerhttp://odz.sakura.ne.jp/projecteuler/index.php?Problem%2038 192 を 1, 2, 3 で掛けてみよう. 192 × 1 = 192 192 × 2 = 384 192 × 3 = 576積を連結することで 1 から 9 の Pandigital数 192384576 が得られる. 192384576 を 192 と(1,2,3) …

Project Euler 37

Project Eulerhttp://odz.sakura.ne.jp/projecteuler/index.php?Problem%2037 3797は面白い性質を持っている. まずそれ自身が素数であり, 左から右に桁を除いたときに全て素数になっている (3797, 797, 97, 7). 同様に右から左に桁を除いたときも全て素数で…

Project Euler 35

昨日は飲み会だったので更新できませんでした。Project Eulerhttp://odz.sakura.ne.jp/projecteuler/index.php?Problem%2035 197は巡回素数と呼ばれる. 桁を回転させたときに得られる数 197, 971, 719 が全て素数だからである.100未満には巡回素数が13個ある…

Project Euler 36

Project Eulerhttp://odz.sakura.ne.jp/projecteuler/index.php?Problem%2036 585 = 10010010012 (2進) は10進でも2進でも回文数である.100万未満で10進でも2進でも回文数になるような数の総和を求めよ.(注: 先頭に0を含めて回文にすることは許されない.) 先…

Project Euler 34

Project Eulerhttp://odz.sakura.ne.jp/projecteuler/index.php?Problem%2034 145は面白い数である. 1! + 4! + 5! = 1 + 24 + 120 = 145となる.各桁の数の階乗の和が自分自身と一致するような数の総和を求めよ.注: 1! = 1 と 2! = 2 は総和に含めてはならな…

Project Euler 33

Project Eulerhttp://odz.sakura.ne.jp/projecteuler/index.php?Problem%2033 49/98は面白い分数である. 「分子・分母の9をキャンセルしたので 49/98 = 4/8 が得られた」と経験を積んでいない数学者が誤って思い込んでしまうかもしれないからである.我々は 3…

Project Euler 32

Project Eulerhttp://odz.sakura.ne.jp/projecteuler/index.php?Problem%2032 7254は面白い性質を持っている. 39 × 186 = 7254と書け, 掛けられる数/掛ける数/積に1から9の数が1回ずつ出現する.掛けられる数/掛ける数/積に1から9の数が1回ずつ出現するような…