院卒新人サラリーマンのメモ代わり

備忘としてのメモを記載

プログラム脳を鍛える数学パズル

数学パズルはここまで

プログラマ脳を鍛える数学パズル シンプルで高速なコードが書けるようになる70問作者: 増井敏克出版社/メーカー: 翔泳社発売日: 2015/10/14メディア: 単行本(ソフトカバー)この商品を含むブログ (11件) を見るこの本は解説が少ない。 だから実践力をつけた…

数学パズルQ23

def blackjack(coin, limit) return 0 if coin == 0 return 1 if limit == 0 blackjack(coin + 1, limit - 1) + blackjack(coin - 1, limit - 1) end puts blackjack(10, 24) 途中面倒そうな問題は飛ばした。

数学パズルQ17

@boy, @girl = "B", "G" NN = 30 # seq 座っている人のリスト # 再帰は帰納法と深さ優先がある、これは深さ優先! def add(seq) return 1 if seq.size == NN isLastBoy = seq[-1] == @boy isLastBoy ? add(seq + @boy) + add(seq + @girl) : add(seq + @boy)…

数学パズルQ16

def check(max) cnt = 0 (1..max).each do |sideLen| next if sideLen % 4 != 0 square = { side: sideLen / 4, area: sideLen / 4 * sideLen / 4, } rects = [] (1..square[:side] - 1).each do |vert| rects.push({ vert: vert, hori: sideLen / 2 - vert,…

数学パズルQ9

解説が雑すぎてよくわからん。 とりあえず、格子状の最短経路問題について def shortGrid1(row, col) ary = Array.new(row + 1).map { Array.new(col + 1, 0) } ary[0][0] = 1 (0..row).each do |r| (0..col).each do |c| if (r -1 >= 0) ary[r][c] += ary[r…

数学パズルQ8

def move(num, hist = [], cur_pos = [0, 0]) hist = [*hist, cur_pos] return 0 if hist.count > num + 1 return 1 if hist.count == num + 1 around = [[0, 1], [0, -1], [1, 0], [-1, 0]] around.reduce(0) do |acc, ar| next_pos = [cur_pos[0] + ar[0],…

数学パズルQ6

def colats(num, accNum = 3 * num + 1) return 1 if accNum == num return 0 if accNum == 1 accNum = accNum.even? ? accNum / 2 : 3 * accNum + 1 colats(num, accNum) end puts [*1..10000].select { |el| el.even? }.map { |el| colats(el) }.sum この…

数学パズル Q5

# 入力:数値 # 出力:組み合わせの数 def ryogae(tar) cnt = 0 (0..15).each do |zyu| (0..15).each do |gozyu| (0..15).each do |hyaku| (0..15).each do |gohyaku| next if zyu + gozyu + hyaku + gohyaku > 15 val = 10 * zyu + 50 * gozyu + 100 * hyak…

プログラミング力をつける

もっとプログラマ脳を鍛える数学パズル アルゴリズムが脳にしみ込む70問作者: 増井敏克出版社/メーカー: 翔泳社発売日: 2018/02/19メディア: 単行本(ソフトカバー)この商品を含むブログ (4件) を見るプログラミング力をつけるためにやってみる。 いきなり…