日々精進

新しく学んだことを書き留めていきます

2010-12-01から1ヶ月間の記事一覧

プログラミングコンテストチャレンジブック演習「迷路の最短路」

IT

今回のお題はこちら。 ゴール地点の最短経路の長さのみ答えればいいんですが、デバッグのために探索済みの範囲の最短経路も表示するようにしてます。 今回は多次元配列の初期化方法を↓のブログで新しく学びました。 http://d.hatena.ne.jp/octech/20051014 …

プログラミングコンテストチャレンジブック演習「lake counting」

IT

今回のお題はこちら 今回はまった点は以下。 ・Rubyでは、改行を挟んで文を続けたい場合は「\」を改行前に打つ 普段C#とか書いてたら忘れますな。。 $lake = [ ["W", ".", ".", ".", ".", ".", ".", ".", ".", "W", "W", "."] \ ,[".", "W", "W", "W", ".", …

プログラミングコンテストチャレンジブック演習「部分和問題」

IT

今回のお題はこちら $ary = [1, 2, 4, 7] #input K = 15 #input def dfs(i, sum) return sum == K if i == $ary.length return true if dfs(i + 1, sum) return true if dfs(i + 1, sum + $ary[i]) return false end if dfs(0, 0) puts "YES" else puts "NO"…

プログラミングコンテストチャレンジブック演習「くじ引き」2

IT

前回の答えのbinarySearchを再帰呼び出しを使って書き直してみました。 でもあまりすっきりしない。むう。 このお題を解いている時に知ったんですが、RubyのArrayに標準で付いている検索メソッド(Index)は線形探索で実装されているらしいです。 http://d.h…

プログラミングコンテストチャレンジブック演習「くじ引き」

IT

今回のお題はこちら $kuji = [1, 2, 3, 4, 10, 30, 2] N = $kuji.length - 1 m = 100 def GetAllKcKdConbination() kujiSubset = Array.new for i in 0..N for j in i..N kujiSubset.push($kuji[i] + $kuji[j]) end end return kujiSubset.sort end def bina…

プログラミングコンテストチャレンジブック演習「ants」

IT

今回のお題はこちら。 これは蟻がぶつかったときにお互い影響なくすり抜けたと見なしても問題ないことに気付けるかどうかがポイントですね。俺はわかりませんでした。。 L = 10 #input $ants = [2, 6, 7] #input $minTime = 2147483647 $maxTime = 0 $ants.e…

プログラミングコンテストチャレンジブック演習「三角形」2

IT

三角形を作れるかどうかは3辺のうち小さい2辺の合計が大きい1辺より大きいことを確認するだけでいいなということに気付いたので 前回のコードを以下のように書き直しました。 めっちゃシンプルになった!こういうときすごく嬉しいですね。 lengths = [10, 2,…

プログラミングコンテストチャレンジブック演習「三角形」

IT

ご無沙汰しています。 久々に勉強の成果など書き連ねていこうと思います。 まずはプログラミングコンテストチャレンジブックの演習をこなしていきます。 言語はRubyを使用します。 今回のお題はこちら lengths = [10, 2, 3, 4, 5] #input lengths.sort!{|a, …