[問題] 手機螢幕鎖

看板puzzle作者 (Hysterisis)時間12年前 (2011/08/18 15:32), 編輯推噓8(8012)
留言20則, 7人參與, 最新討論串1/1
◎ ◎ ◎ ◎ ◎ ◎ ◎ ◎ ◎ 我的moto手機有種圖形螢幕鎖,它的設計是使用者劃過螢幕連接起九宮格中的若干點 作為密碼。 >> 例如 ◎→◎→◎ ◎→◎ ◎ ↓ ↓ ◎ ◎ ◎ 或 ◎ ◎→◎ ↖↓ ↓↖ ↓ ◎ ◎ ◎ ◎ ◎←◎ 都是有效的密碼 它還允許A-B(還有B-C)這樣的連線 ◎ ◎ B ┌----┘ A ◎ ◎ ◎ C ◎ 然而如下圖,a到c中間一定要經過b不能跳過 a ◎ ◎ ◎ b ◎ ◎ ◎ c 請問至少包含四個點的密碼有幾種?1.旋/翻轉視為不同 2.旋/翻轉視為相同 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.164.9.243

08/18 15:45, , 1F
Android @.@
08/18 15:45, 1F

08/18 16:14, , 2F
所以所有Android手機都有囉
08/18 16:14, 2F

08/18 18:53, , 3F
如果經過的點不同 但是產生的圖形相同 算同or不同?
08/18 18:53, 3F

08/18 19:10, , 4F
從密碼的角度來看,當然不同
08/18 19:10, 4F

08/18 23:52, , 5F
所以不能重複經過同一點對不對?
08/18 23:52, 5F

08/19 05:49, , 6F
樓上問得好!我都沒有想到...
08/19 05:49, 6F

08/19 11:07, , 7F
我不會算,但我想聽結果~有人算出來了嗎
08/19 11:07, 7F

08/19 18:09, , 8F
能重覆的話就算不完啦...
08/19 18:09, 8F

08/19 20:44, , 9F
不能經過同一點 可以在點以外的地方交叉 只能在點轉彎
08/19 20:44, 9F

08/19 21:08, , 10F
轉到數學板廣招英雄試試看XD
08/19 21:08, 10F
jurian0101:轉錄至看板 Math 08/19 21:09

08/20 12:15, , 11F
話說你在 Math 版給出的 182944 好像不太對...
08/20 12:15, 11F

08/20 12:16, , 12F
我的程式跑出來是至少四點的共 139880 種
08/20 12:16, 12F

08/20 12:16, , 13F
而不管點數全部算進去的話是 140249 種
08/20 12:16, 13F

08/20 15:58, , 14F
我自勘就發現有錯了
08/20 15:58, 14F

08/21 02:01, , 15F
140250,140249,140240,140184,139880,138480,133152,
08/21 02:01, 15F

08/21 02:01, , 16F
117120,81792,32256
08/21 02:01, 16F

08/22 03:10, , 17F
Mathmatica驗證出來了,兩位答案140249 (不限點數)和
08/22 03:10, 17F

08/22 03:12, , 18F
139880(限4~9點) 正確!! ...起碼和四色定理一樣正確XD
08/22 03:12, 18F

08/22 04:55, , 19F
樓上介意讓我看程式碼多短嗎xD 我對簡潔的程式很有興趣xD
08/22 04:55, 19F
1 2 3  4 5 6 7 8 9 話說Math板有人提醒,我才發現Android的正版螢幕鎖允許2-5-8-6---4這樣的連結 不想改了直接無視。搞操煩啦!! 這裡就當作禁止出現 13/17/19/31/37/39/71/73/79/91/93/97/46/64/82/28 這16個 "規則"好了 LPH66和Favonia一定同意 :D - - - Mathematica: 以下為Input set = Permutations[{"1", "2", "3", "4", "5", "6", "7", "8", "9"}, {4, 9}]; (*生出排列*) stringset = Array[StringJoin[set[[#]]] &, Length[set]]; (*更改一下形式*) S[x_, y_] := StringMatchQ[x, y]; (*只是嫌函數太長的代換*) rule = Not[#] & /@ (S[#, ___ ~~ "13" ~~ ___] || S[#, ___ ~~ "17" ~~ ___] || S[#, ___ ~~ "19" ~~ ___] || S[#, ___ ~~ "31" ~~ ___] || S[#, ___ ~~ "37" ~~ ___] || S[#, ___ ~~ "39" ~~ ___] || S[#, ___ ~~ "71" ~~ ___] || S[#, ___ ~~ "73" ~~ ___] || S[#, ___ ~~ "79" ~~ ___] || S[#, ___ ~~ "91" ~~ ___] || S[#, ___ ~~ "93" ~~ ___] || S[#, ___ ~~ "97" ~~ ___] || S[#, ___ ~~ "28" ~~ ___] || S[#, ___ ~~ "82" ~~ ___] || S[#, ___ ~~ "46" ~~ ___] || S[#, ___ ~~ "64" ~~ ___] & /@ stringset); (*將16個規則map到stringset,再取Not*) Length[Pick[stringset, rule]] (*Pick根據rule把stringset裡所有「不犯規」的組合挑出來,以利萬一要揪錯所用, 輸出挑出來集合的大小*) ※ 編輯: jurian0101 來自: 218.164.5.102 (08/22 19:07)

08/22 23:26, , 20F
了解,謝謝提供!
08/22 23:26, 20F
文章代碼(AID): #1EJC0a1a (puzzle)