差異處

這裏顯示兩個版本的差異處。

連向這個比對檢視

兩邊的前次修訂版 前次修改
下次修改
前次修改
start:math:20121124 [2018/05/20 15:04] – 網址更改為 https Jonathan Tsaistart:math:20121124 [2021/03/05 23:35] (目前版本) jonathan
行 1: 行 1:
 +====== 青蛙換邊遊戲 ======
 +===== 規則 =====
 +  - 兩邊有相同數量的青蛙
 +  - 青蛙只能往前跳, 不能退後
 +  - 青蛙能跳到前方空格或跳躍另一隻青蛙到另一隻青蛙前的空格
 +  * 看不懂可以直接玩一下網路上的遊戲 
 +    * [[http://media.ebaumsworld.com/2006/07/frogleap.swf|{{:start:math:snap467.png?200|}}]]
 +
 +===== 問題 =====
 +  * 當青蛙變成 80 隻時, 那總共需要跳幾步才可以完成換邊?
 +  * 當青蛙變成 91 隻時, 那總共需要跳幾步才可以完成換邊?
 +
 +
 +===== 解答 =====
 +  * 解這題的策略就是直接由 1 隻青蛙玩到 6 隻, 再來從其中找出規則..
 +  * 以下是玩過後的筆記 {{:start:math:imag1473.jpg?800|}}
 +==== 簡單整理結論 ====
 +  * <del>青蛙數奇數和偶數的規則不太相同</del>
 +  * 第一步驟往下與最後步驟往上, 會有鏡射排列對應的結果, Exp. 0:111-000 => 15:000-111 , 1:11-1000 => 14:0001-11
 +  * 青蛙數偶數時, 正中間步驟與其他步驟都無鏡射排列對應關係, 但本身數列前後會有鏡射狀況, Exp. 1010-0101
 +  * <del>所以觀測結果分成青蛙數奇數一組,偶數另一組.</del>
 +
 +^  青蛙數  ^  需要步驟數  ^
 +^          3   |
 +^          8   |
 +^         15   |
 +^         24   |
 +^         35   |
 +^         48   |
 +
 +==== 發現與推論 ====
 +  * 在偶數組發現可以 2 * **4** => 8 , 4 * **6** => 24 , 6 * **8** => 48 所以推論 
 +    * 8 * 10 => 80
 +    * 10 * 12 => 120
 +  * 在奇數組兒子發現可以 (1+1)*(1+1)-1 => 3 , (3+1)*(3+1)-1 => 15 , (5+1)*(5+1)-1 => 35 所以推論 
 +    * (7+1)*(7+1)-1 => 63 
 +    * (9+1)*(9+1)-1 => 99
 +  * 當不分奇數偶數組直接觀察, 發現差異數有規則性  --- //[[[email protected]|蔡宗融]] 2012-11-27 01:02//
 +
 +^  青蛙數  ^  需要步驟數  ^  差異數  ^
 +^          3      |
 +^          8      |
 +^         15      |
 +^         24      |
 +^         35    11  |
 +^         48    13  |
 +
 +  * 在睡到一半突然發現這差異數竟然就是和正方形數有關..{{:start:math:imag1477.jpg?600|}}
 +  * 所以之前推論的奇數 (n+1)*(n+1)-1 與偶數 n*n(+2) 其實是可以透過正方形數來解釋為何長得這樣子的原因, 而且兩個推論公式都可直接使用, 並不需區分出奇數與偶數.
 +
 +==== 給程式的原則 ====
 +  * 因為有一些看法和兒子不同, 需要增加一些青蛙數來確認推論結果是否正確, 但手工紀錄以及多增加一隻青蛙就多很多步驟, 非常花時間, 所以就考慮先歸納出人工的走法, 這樣就可以用來寫個程式幫忙走{{:start:math:imag1474.jpg?550|}}{{:start:math:imag1475.jpg?250|}} 
 +  * 所歸納給程式的原則如下:
 +    * Steps Rule :
 +      * n 奇數 : Steps = (n+1)*(n+1)-1
 +      * n 偶數 : Steps = n*(n+2)
 +    * Move Rule :
 +      - 出現 10- => -01
 +      - 出現 -10 => 01-
 +      - 出現 1-0 時, m:-的位置 if(m<=n+1) then => -10 else => 10-
 +    * Stop Rule :
 +      * n 奇數 : 出現與上一個排列是 Mirror 就結束(pop stack 的 mirror 步驟)
 +      * n 偶數 : 出現兩邊對稱 Exp. 1010-0101
 +==== 產生的程式碼 ====
 +  * https://svn.ichiayi.com/opensvn/opentrysoft/math/math02.pl
 +
 +==== 產生的結果 ====
 +{{tabinclude>start/math/20121124/4, start/math/20121124/5, start/math/20121124/8, start/math/20121124/9, start/math/20121124/10, start/math/20121124/11, start/math/20121124/12}} 
 +
 +===== 結論 =====
 +  * 確定一開始的發現與推論是正確的, 所以需要的步驟數可以有兩種公式表示出來:
 +    * Steps = (n+1)*(n+1)-1 
 +    * Steps = n*(n+2)
 +  * 當青蛙變成 80 隻時, 那總共需要跳幾步才可以完成換邊?
 +    * 答案是 (80+1)*(80+1)-1=81*81-1=6560
 +    * 答案是 80*(80+2)=80*82=6560
 +  * 當青蛙變成 91 隻時, 那總共需要跳幾步才可以完成換邊?
 +    * 答案是 (91+1)*(91+1)-1=92*92-1=8463
 +    * 答案是 91*(91+2)=91*93=8463