class Math1 def initialize(m, n) @man = m @ichi = n end def calc(num) result = 1 4.times { |i| result = result * (num + i) } return result end def judge(num) result = self.calc(num) man = result.to_i / 10000 ichi = result.to_i % 10 if (man == @man && ichi == @ichi) ret = TRUE else ret = FALSE end end def test(n) n.times { |i| if (self.judge(i + 1)) return (i + 4) end } return -1 end end ret = Math1.new(9, 4).test(20) p ret if (ret > 0)
Hamamatsu.rb #54
作成日 | : | 2015/07/09 |
---|---|---|
最終更新日 | : | 2020/07/09 |
Hamamatsu.rb #54
作成日 | : | 2015/07/09 |
---|---|---|
最終更新日 | : | 2020/07/09 |
概要
- 日時
- 2015/07/08(水) 19:00 - 21:00
- 会場
やったこと
- 自己紹介
- CodeKataKata
- 小学生がひらめきで解く算数の問題を大人げなくコンピュータで解く!
- LT
- @jacoyutoriusさんによる Rebuild DB のLT
- rebuild.fmをスクレイピングするツールを作った
- KPT
CodeKataKata
算数オリンピックの問題らしいです。 時間内に全5問中3問までは解けました。
問題は以下のとおりです。
- 連続する4個の整数を掛け合わせると積が9□□□4になりました。(それぞれの□に入る数字はわかりません) この連続する4個の整数のうち、最大の数はいくつですか?
- 1段目は1×1個、2段目は2×2個のレンガを使い、200段のピラミッドを作るとき、 使われているレンガの数は全部で何個?
- 1×2×3×4×5×・・・ と順に1ずつ大きな整数をかけていきます。 この積について、次の問に答えなさい。
- 積を2で7回割った商が初めて整数になるのは、いくつまでかけたときですか。
- 積を6で14回割った商が初めて整数になるのは、いくつまでかけたときですか。
- 1,2,3,4 のいずれかの数字を使って4ケタの整数を作ります。 同じ数字を何度使ってもかまいません。次の問に答えなさい。
- 整数は全部で何個できますか。
- できたすべての整数の一の位の数の和を求めなさい。
- できたすべての整数の和を求めなさい。
- ある直方体の高さはたてより1cm長く、横より1cm短いです。 その体積は3□□□□□26c㎡です。(5個の□の数はわかりません) この直方体の高さは何cmですか。
1問目
ソース1. 1問目の回答
2問目
ソース2. 2問目の回答
class Math2 def initialize(num) @max = num end def calc result = 0 @max.times { |i| result = result + ((i + 1) * (i + 1)) } return result end end p Math2.new(200).calc
3問目
ソース3. 3問目の回答
class Math3 def initialize(m, n) @ans = m ** n end def fact(n) return 1 if (n == 0) n * fact(n - 1) end def calc i = 1 loop { result = self.fact(i) % @ans if (result == 0) return i end i = i + 1 } end end p Math3.new(2, 7).calc p Math3.new(6, 14).calc
KPT
感想
今回は、皆さんもくもくとコードを書いているように感じました。 算数ネタは頭の体操になります。
ソースコードをレビューするための簡単なコード共有ツールがあると良いのかなぁと思いました。 Railsで作れるのかなぁ?