アカウント名:
パスワード:
大人なので目的達成の為には手段を選ばない。四角数はともかく五角数を25段目まで力ずくで計算するのは出来るかもしれないが、与えられたおはじきの数からそれを三角数として段数を求めるのが難しかった。
図形的に考えて、ある段数の三角数を2倍すれば同じ段数の四角数より少しだけ大きな数になるのを利用して平方根を取ることにした。三角数および五角数は再帰関数とした(横着して引数は1以上の場合だけ)。以下CommonLisp
(defun triangle (x) (cond ((= x 1) 3) (t (+ (triangle (- x 1))
なるほど.ワシは,最後は適当に20から計算しました(要するにループさせた).
問題からは三角形作って何個か余る気がしましたが,ちょうどになるならもっと違う解き方したかもな(見苦しいいいわけ)
関数inv-triangleの最後の-1の導出が分からない...もう少し書くと,2倍して平方根取るのは説明されているからわかる.2倍すると多すぎるから減らしているのは想像できる.でも,減らすのが1でいいのを確定できるのかが分からない...
ごりごり計算すると,m段に必要な5角形と4角形のそれぞれの個数の差をdとすると,構成できる3角形の段数は,\sqrt{2d + \frac{1}{4}} - \frac{3}{2}となる.このあたりまで計算すると,最後-1なのはわかるんだが,それを直観的(?)にやっているのは,すごいな,と.
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
ソースを見ろ -- ある4桁UID
力ずく (スコア:1)
大人なので目的達成の為には手段を選ばない。
四角数はともかく五角数を25段目まで力ずくで計算するのは出来るかもしれないが、与えられたおはじきの数からそれを三角数として段数を求めるのが難しかった。
図形的に考えて、ある段数の三角数を2倍すれば同じ段数の四角数より少しだけ大きな数になるのを利用して平方根を取ることにした。
三角数および五角数は再帰関数とした(横着して引数は1以上の場合だけ)。
以下CommonLisp
Re: (スコア:1)
なるほど.
ワシは,最後は適当に20から計算しました(要するにループさせた).
問題からは三角形作って何個か余る気がしましたが,ちょうどになるならもっと違う解き方したかもな(見苦しいいいわけ)
Re:力ずく (スコア:1)
関数inv-triangleの最後の-1の導出が分からない...
もう少し書くと,2倍して平方根取るのは説明されているからわかる.2倍すると多すぎるから減らしているのは想像できる.でも,減らすのが1でいいのを確定できるのかが分からない...
ごりごり計算すると,m段に必要な5角形と4角形のそれぞれの個数の差をdとすると,構成できる3角形の段数は,
\sqrt{2d + \frac{1}{4}} - \frac{3}{2}
となる.
このあたりまで計算すると,最後-1なのはわかるんだが,それを直観的(?)にやっているのは,すごいな,と.