{"id":27198,"student_id":10,"content":"// 可以修改預設密碼來測試\n// setPassword('password');\n\nvar chars = ' abcdefghijklmnopqrstuwvxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; //密碼可能的字元\nvar pops = []; //存放要猜的密碼\n\n\n// 初始化產生 20 組基因\nfor (var j=0; j\u003c20; j++) {\n var gens = '';\n for (var i = 0; i \u003c 13; i++) {\n var rand = Math.floor(Math.random()*63);\n gens += chars[rand];\n }\n pops.push(gens);\n}\n\n// 按下空白按鍵來破解金庫\non('keydown', 'space', nextGeneration);\n\nfunction nextGeneration () {\n // 學生遊戲試玩,開始實作時註解或移除\n // var s = prompt('請輸入 13 個由英文字母大小寫、數字、空白所組成的密碼');\n // var r = password(s);\n // alert(`你輸入的密碼中只有 ${r} 個字是正確的!`);\n \n var arr = [];\n for (var i=0; i\u003c20; i++) {\n arr.push({\n score: password(pops[i]),\n gens: pops[i],\n })\n };\n \n arr.sort(function (a, b) {\n return b.score - a.score;\n });\n\n var parentA = arr[0].gens;\n var parentB = arr[1].gens;\n for (var i = 0; i \u003c 20; i++) {\n pops[i] = crossover(parentA, parentB);\n }\n}\n\n// 將兩組密碼進行組合\nfunction crossover (a, b) {\n var gens = '';\n for (var i = 0; i \u003c 13; i++) {\n // 有 1/10 的機率基因會變異\n if (Math.random() \u003c 0.1) {\n var rand = Math.floor(Math.random()*63);\n gens += chars[rand];\n } else {\n if (Math.random() \u003e 0.5) {\n gens += a[i];\n } else {\n gens += b[i];\n } \n }\n }\n return gens;\n}","created_at":"2018-04-27T10:54:24.110+08:00","updated_at":"2024-12-17T14:08:39.224+08:00","name":"遺傳演算法","language":"javascript","screenshot":{"url":"/uploads/project/screenshot/27198/cd07fea653676e8f9eb362678a99f68b.jpg"},"parent_id":26660,"plugin":"(function () {\n \n setBackdrop('hacker1.jpg', 0, 0, 640, 480);\n\n var logs = [];\n var key = '';\n var gameOver = false;\n\n function password (str) {\n\n var count = 0;\n for (var i = 0; i \u003c key.length; i++) {\n if (key[i] === str[i]) count++;\n }\n \n if (!gameOver) {\n logs.unshift([str, count]);\n }\n \n if (!gameOver \u0026\u0026 str.length == key.length \u0026\u0026 count === key.length) {\n gameOver = true;\n setBackdrop('hacker2.jpg', 0, 0, 640, 480);\n createSound('beep.wav');\n setTimeout(function () {\n setBackdrop('hacker3.jpg', 0, 0, 640, 480);\n createSound('unlock.wav');\n }, 1000);\n }\n \n return count;\n }\n \n function setPassword (str) {\n key = str;\n }\n \n forever(function(){\n for (var i=0; i\u003c14 \u0026\u0026 i\u003clogs.length; i++) {\n print(logs.length - i, 50, 35 + 20*i, '#aaa', 14);\n print(logs[i][1], 100, 35 + 20*i, logs[i] == key ? 'gold' : 'gold', 16);\n print(logs[i][0], 130, 35 + 20*i, logs[i] == key ? 'gold' : 'white', 16);\n }\n });\n \n window.password = password;\n window.setPassword = setPassword;\n\n})();\n\nsetPassword('I love Koding');\n","description":null,"note":null,"status":"public","like_student_ids":[],"is_featured":false,"views":485,"hashid":"yeysq8dg","is_content_changed":false,"review_status":"unsubmitted","submitted_at":null,"reviewed_at":null,"advise":null,"is_deleted":false}
[{"id":585429,"file_name":"hacker3.jpg","project_id":27198,"asset_id":70643,"created_at":"2018-06-09T13:48:06.128+08:00","updated_at":"2018-06-09T13:48:06.128+08:00"},{"id":585427,"file_name":"hacker2.jpg","project_id":27198,"asset_id":70641,"created_at":"2018-06-09T13:48:04.366+08:00","updated_at":"2018-06-09T14:02:58.233+08:00"},{"id":585428,"file_name":"hacker1.jpg","project_id":27198,"asset_id":70642,"created_at":"2018-06-09T13:48:04.368+08:00","updated_at":"2018-06-09T14:03:01.218+08:00"},{"id":2427697,"file_name":"unlock.wav","project_id":27198,"asset_id":205747,"created_at":"2020-04-15T14:39:56.260+08:00","updated_at":"2020-04-15T14:39:56.260+08:00"},{"id":2427698,"file_name":"beep.wav","project_id":27198,"asset_id":205748,"created_at":"2020-04-15T14:43:40.914+08:00","updated_at":"2020-04-15T14:43:40.914+08:00"}]
Orange Apple Learning Platform
My Projects
View Project Page
Export
Remix
Import
Delete
Download Android APP (APK)
Screenshot
繁中
简中
English
日本語
1:1:1
1:1
Full Width
Scan the QRCode below with your phone to install
Or you can
download APK
to this computer
Scan the QRCode below with your phone to install
Or you can
download APK
to this computer