2008-11-28
算数にチャレンジ!!第624回問題
なんか極々狭い範囲で流行っていたので勢いで挑戦
問題を引用しておく
第624回問題(11月20日〜 11月26日) 1〜512の数の書かれたカードが1枚ずつ、左から小さい順に、「1,2,3,4,・・・,511,512」と並んでいます。いま、次のような作業を行うことにします。 ア. 前から奇数番目のカードをすべて取り除く イ. 前から偶数番目のカードをすべて取り除く まず、この作業を、ア→イ→ア→イ→・・・の順に、カードが残り1枚になるまで繰り返して行うことにします。 このとき、最後に残るカードに書かれた数字を答えてください。
Rubyのことが色々わからんかったからid:hakobe932に教えてもらったりしながらやってみた
とりあえずこんな感じ
def remove(nums, i) while i < nums.size nums[i] = nil i += 2 end nums.compact! return nums end def last_one(nums) i = 0 while nums.size > 1 nums = remove(nums, i%2) i += 1 end return nums end nums = (1..512).to_a nums = last_one(nums) p nums
こういうちょっとしたプログラムでも,作ってみると色々わかって面白いね〜
センスは徐々につけていこう
追記
Rubyわからんって言ってたら,y_tsudaが教えてくれるということで,
華麗なプログラムを書いてコメントまでつけてくれました
算数にチャレンジ!! 第624回問題 をRubyで解く - y_tsuda’s blog - s21g
わかりやすい!
既存のクラスを拡張してたり,reject!メソッドを使っているところがクールですね
わざわざやってくれて感謝!
こうしてみると,いかに自分のコードがRubyっぽくないかがわかるなぁ…
Rubyらしい書き方も徐々に覚えていきたいところ
追記2
他にも2人がコードを公開してました
算数にチャレンジ! - はこべにっき@bkc - bkcグループ
とりあえずRubyらしさをもっと身につけたいなー
追記3
Javaはこんな感じに
トラックバック - http://d.hatena.ne.jp/isano/20081128/1227854974
リンク元
- 43 http://blog.s21g.com/articles/1087
- 26 http://bkc.g.hatena.ne.jp/hakobe932/20081128/1227893110
- 18 http://ezsch.ezweb.ne.jp/search/ezGoogleMain.php?query=算数問題&start-index=4&adpage=3&mode=02
- 14 http://ezsch.ezweb.ne.jp/search/?sr=0101&query=算数にチャレンジ
- 12 http://search.yahoo.co.jp/search?p=算数にチャレンジ&search_x=1&tid=top_ga1_sa&ei=UTF-8&aq=0&oq=算数に&qrw=0&pstart=1&fr=top_ga1_sa&b=21
- 9 http://d.hatena.ne.jp/UDONCHAN/
- 8 http://bkc.g.hatena.ne.jp/hakobe932/
- 6 http://reader.livedoor.com/reader/
- 5 http://a.hatena.ne.jp/ytetsuwo/
- 3 http://d.hatena.ne.jp/UDONCHAN/20081130/1228045400


