2008-11-29 算数にチャレンジの問題を解いてみた
■[Ruby]算数にチャレンジの問題を解いてみた

高校から続けている、算数にチャレンジ!!の第624回問題を解いてみた。
本当は、算数の知識で解答するべきなんだけれど数字にがれなのでRubyでやってみた。
解答になるので、まだ解いていない方はお気をつけてください。
問題は
1〜512の数の書かれたカードが1枚ずつ、左から小さい順に、「1,2,3,4,・・・,511,512」と並んでいます。いま、次のような作業を行うことにします。
ア. 前から奇数番目のカードをすべて取り除く
イ. 前から偶数番目のカードをすべて取り除く
まず、この作業を、ア→イ→ア→イ→・・・の順に、カードが残り1枚になるまで繰り返して行うことにします。
このとき、最後に残るカードに書かれた数字を答えてください。
def run(nums, flag = true) return nums[0] if nums.length == 1 nums.reject!{|i| (nums.index(i)%2).zero? == flag} run(nums, !flag) end result = run((1..512).to_a) puts result
で、342。
こんな感じでいかがでしょうか?
出題曜日を忘れてて、昨日解答して191位ですね。
意外と解答している人いたのですね
解答をして、さっきTwitterのログとか読んでたら解答している人がいた。
しかも、同じ大学の気配。
ということで、リンク張ってみる。
算数にチャレンジ! - はこべにっき@bkc - bkcグループ
算数にチャレンジ!! 第624回問題 をRubyで解く - y_tsuda’s blog - s21g
僕の解答は、y_tsudaさんと同じ感じですが、y_tsudaさんの解答の方が綺麗ですね。
再帰なんか使わなくても、reject!で破壊的に消し去ってるんだからwhileでいいよな・・・。
何やってんだ俺・・・。
こちらはJavaでやった例
RubyとかPerlとかゆるふわで困る - UDONCHAN
という事で、やってみました。
リンク元
- 13 http://search.yahoo.co.jp/search?p=?????潟?????+API&ei=UTF-8&fr=moz2&rls=org.mozilla:ja-JP:official
- 5 http://d.hatena.ne.jp/isano/20081128/1227854974
- 4 http://ezsch.ezweb.ne.jp/search/?sr=0101&query=あにま
- 3 http://bkc.g.hatena.ne.jp/hakobe932/
- 3 http://www.google.co.jp/search?hl=ja&safe=off&client=firefox-a&rls=com.ubuntu:ja:unofficial&hs=SV0&q=MP4Box+ubuntu&btnG=検索&lr=
- 2 http://b.hatena.ne.jp/entry/http://blog.s21g.com/articles/1087
- 2 http://d.hatena.ne.jp/keyword/リンク
- 2 http://d.hatena.ne.jp/keyworddiarymobile/Ruby
- 2 http://reader.livedoor.com/reader/
- 2 http://twitter.com/con_mame

そうだったんですか。
申し訳ないです。。。