-
-
Save simeg/3ca937de3add4e4e787023c8a83f3b20 to your computer and use it in GitHub Desktop.
Naive 2048 Solver
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var a = (keyCode)=>{ | |
var keyEvent = document.createEvent("Events"); | |
keyEvent.initEvent("keydown", true, true); | |
keyEvent.keyCode = keyCode; | |
keyEvent.which = keyCode; | |
document.body.dispatchEvent(keyEvent); | |
} | |
const LEFT = 37; | |
const UP = 38; | |
const RIGHT = 39; | |
const DOWN = 40; | |
var b = () => Array.prototype.reduce.bind(document.querySelector(".tile-container").childNodes)((acc,item)=>acc+item.className); | |
var hash = null; | |
var c = 0; | |
var f = function() { | |
var tmphash = b(); | |
a(DOWN); | |
a(LEFT); | |
a(DOWN); | |
if (tmphash == hash) { | |
if (c == 1) { | |
a(RIGHT); | |
a(LEFT); | |
c = 0; | |
} else { | |
c++; | |
} | |
} | |
hash = tmphash; | |
setTimeout(f,100); | |
} | |
f(); | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var a = (keyCode)=>{ | |
var keyEvent = document.createEvent("Events"); | |
keyEvent.initEvent("keydown", true, true); | |
keyEvent.keyCode = keyCode; | |
keyEvent.which = keyCode; | |
document.body.dispatchEvent(keyEvent); | |
} | |
const LEFT = 37; | |
const UP = 38; | |
const RIGHT = 39; | |
const DOWN = 40; | |
const RESTART = 82; | |
var b = () => Array.prototype.reduce.bind(document.querySelector(".tile-container").childNodes)((acc,item)=>acc+item.className); | |
var g = () => Array.prototype.map.bind(document.querySelector(".tile-container").childNodes)((item)=> | |
Array.prototype.filter.bind(item)((classstring)=>/./.test.bind(new RegExp("tile-[0-9]+", 'g'))(classstring)[0].split('-')[1] | |
).split('-')[1]); | |
document.querySelector(".tile-container").childNodes[0].className.split(" ").filter( | |
(class) => { | |
return RegExp.prototype.test.bind(new RegExp(class)); | |
} | |
) | |
var hash = null; | |
var c = true; | |
var counter = 0; | |
var failedcounter = 0; | |
var d = true; | |
var f = function() { | |
var tmphash = b(); | |
if(c){ | |
a(DOWN); | |
a(DOWN); | |
} else { | |
a(LEFT); | |
} | |
if (tmphash == hash) { | |
c = !c; | |
counter = 0; | |
failedcounter += 1; | |
} else { | |
failedcounter = 0; | |
} | |
hash = tmphash; | |
counter += 1; | |
if(counter>15&&counter%5==0){ | |
console.log((c?"DOWN":"LEFT")+" "+counter); | |
} | |
if (failedcounter > 3) { | |
a(RIGHT); | |
a(LEFT); | |
} | |
if (failedcounter > 4) { | |
a(UP); | |
a(DOWN); | |
} | |
if (failedcounter > 30){ | |
a(RESTART); | |
console.log() | |
} | |
if (d) { | |
setTimeout(f,50); | |
} | |
} | |
f(); | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var a = (keyCode)=>{ | |
var keyEvent = document.createEvent("Events"); | |
keyEvent.initEvent("keydown", true, true); | |
keyEvent.keyCode = keyCode; | |
keyEvent.which = keyCode; | |
document.body.dispatchEvent(keyEvent); | |
} | |
const LEFT = 37; | |
const UP = 38; | |
const RIGHT = 39; | |
const DOWN = 40; | |
const RESTART = 82; | |
var b = () => Array.prototype.reduce.bind(document.querySelector(".tile-container").childNodes)((acc,item)=>acc+item.className); | |
var hash = null; | |
var c = true; | |
var counter = 0; | |
var failedcounter = 0; | |
var d = true; | |
var logs = []; | |
var f = function() { | |
var tmphash = b(); | |
if(c){ | |
a(DOWN); | |
a(DOWN); | |
} else { | |
a(LEFT); | |
} | |
if (tmphash == hash) { | |
c = !c; | |
counter = 0; | |
failedcounter += 1; | |
} else { | |
failedcounter = 0; | |
} | |
hash = tmphash; | |
counter += 1; | |
if(counter>15&&counter%5==0){ | |
} | |
if (failedcounter > 3) { | |
a(RIGHT); | |
a(LEFT); | |
} | |
if (failedcounter > 4) { | |
a(UP); | |
a(DOWN); | |
} | |
if (failedcounter > 30){ | |
a(RESTART); | |
logs.push(tmphash); | |
if(tmphash.indexOf("2048")>=0){ | |
d = false; | |
} | |
} | |
if (d) { | |
setTimeout(f,50); | |
} | |
} | |
f(); | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var a = (keyCode)=>{ | |
var keyEvent = document.createEvent("Events"); | |
keyEvent.initEvent("keydown", true, true); | |
keyEvent.keyCode = keyCode; | |
keyEvent.which = keyCode; | |
document.body.dispatchEvent(keyEvent); | |
} | |
const LEFT = 37; | |
const UP = 38; | |
const RIGHT = 39; | |
const DOWN = 40; | |
const RESTART = 82; | |
var matrix = ()=>{let matrix=[[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]];Array.prototype.map.bind(document.querySelector(".tile-container").childNodes)((item)=>/tile tile-([0-9]+) tile-position-([0-9]+)-([0-9]+)/.exec(item.className).slice(1)).forEach(each=>matrix[parseInt(each[1])-1][parseInt(each[2])-1] = Math.log2(each[0]).toString(13));return matrix;}; | |
var b = () => Array.prototype.reduce.bind(matrix())((acc,item)=>acc.concat(item),[]).join(''); | |
var hash = null; | |
var counter = 0; | |
var failedcounter = 0; | |
var f = function() { | |
var tmphash = b(); | |
if (tmphash === hash) { | |
failedcounter += 1; | |
} else { | |
failedcounter = 0; | |
} | |
hash = tmphash; | |
counter += 1; | |
if (Math.random() < 0.1) { | |
a(RIGHT); | |
a(DOWN); | |
setTimeout(f,0); | |
return; | |
} | |
if (Math.random() > 0.7) { | |
a(LEFT); | |
} | |
if (failedcounter > 0) { | |
a(DOWN); | |
} | |
if (failedcounter > 10) { | |
a(LEFT); | |
} | |
if (failedcounter > 20) { | |
a(RIGHT); | |
a(LEFT); | |
} | |
if (failedcounter > 30) { | |
a(UP); | |
a(DOWN); | |
} | |
if (failedcounter > 70){ | |
const score = parseInt(document.querySelector('.score-container').innerText.split('+')[0]); | |
console.log(tmphash.split('0').length); | |
if(tmphash.indexOf('2048') < 0 && score > 0 && tmphash.split('0').length < 3){ | |
a(RESTART); | |
setTimeout(f,200); | |
} else { debugger; } | |
return; | |
} | |
setTimeout(f,10); | |
} | |
f(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment