====== 青蛙換邊遊戲 ====== ===== 規則 ===== - 兩邊有相同數量的青蛙 - 青蛙只能往前跳, 不能退後 - 青蛙能跳到前方空格或跳躍另一隻青蛙到另一隻青蛙前的空格 * 看不懂可以直接玩一下網路上的遊戲 * [[http://media.ebaumsworld.com/2006/07/frogleap.swf|{{:start:math:snap467.png?200|}}]] ===== 問題 ===== * 當青蛙變成 80 隻時, 那總共需要跳幾步才可以完成換邊? * 當青蛙變成 91 隻時, 那總共需要跳幾步才可以完成換邊? ===== 解答 ===== * 解這題的策略就是直接由 1 隻青蛙玩到 6 隻, 再來從其中找出規則.. * 以下是玩過後的筆記 {{:start:math:imag1473.jpg?800|}} ==== 簡單整理結論 ==== * 青蛙數奇數和偶數的規則不太相同 * 第一步驟往下與最後步驟往上, 會有鏡射排列對應的結果, Exp. 0:111-000 => 15:000-111 , 1:11-1000 => 14:0001-11 * 青蛙數偶數時, 正中間步驟與其他步驟都無鏡射排列對應關係, 但本身數列前後會有鏡射狀況, Exp. 1010-0101 * 所以觀測結果分成青蛙數奇數一組,偶數另一組. ^ 青蛙數 ^ 需要步驟數 ^ ^ 1 | 3 | ^ 2 | 8 | ^ 3 | 15 | ^ 4 | 24 | ^ 5 | 35 | ^ 6 | 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 * 當不分奇數偶數組直接觀察, 發現差異數有規則性 --- //[[tryweb@ichiayi.com|蔡宗融]] 2012-11-27 01:02// ^ 青蛙數 ^ 需要步驟數 ^ 差異數 ^ ^ 1 | 3 | - | ^ 2 | 8 | 5 | ^ 3 | 15 | 7 | ^ 4 | 24 | 9 | ^ 5 | 35 | 11 | ^ 6 | 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