Created
July 31, 2015 17:04
-
-
Save ifnull/160017b578967a9eb814 to your computer and use it in GitHub Desktop.
Crack Master Combo Locks in 8 Tries - samy kamkar
This file contains hidden or 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
// l1 - 1st locking position | |
// l2 - 2nd locking position | |
// rl - resistant location | |
// x - the result of testing 3rd position | |
function combo(x) | |
{ | |
var second = []; | |
var third = []; | |
var l1 = parseInt($('input#l1').val()); | |
var l2 = parseInt($('input#l2').val()); | |
var first = (Math.ceil($('input#rl').val()) + 5) % 40; | |
$('input#d1').val(first); | |
var mod = first % 4; | |
for (var i = 0; i < 4; i++) | |
{ | |
if (((10 * i) + l1) % 4 == mod) | |
third.push((10 * i) + l1); | |
if (((10 * i) + l2) % 4 == mod) | |
third.push((10 * i) + l2); | |
} | |
$('a#t1').text(third[0]); | |
$('a#t2').text(third[1]); | |
$('input#d3').val(x ? third[x-1] : third.join(', ')); | |
for (var i = 0; i < 10; i++) | |
{ | |
var tmp = ((mod + 2) % 4) + (4 * i); | |
if (!x || ( (third[x-1]+2)%40 != tmp && (third[x-1]-2)%40 != tmp)) | |
second.push(tmp); | |
} | |
$('input#d2').val(second.join(', ')); | |
console.log(first); | |
console.log(second); | |
console.log(third); | |
} | |
This file contains hidden or 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
<!DOCTYPE html> | |
<html lang="en"> | |
<head> | |
<meta charset="utf-8"> | |
<meta http-equiv="X-UA-Compatible" content="IE=edge"> | |
<meta name="viewport" content="width=device-width, initial-scale=1"> | |
<meta name="robots" content="noindex, nofollow"> | |
<title>Crack Master Combo Locks in 8 Tries - samy kamkar</title> | |
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css"> | |
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap-theme.min.css"> | |
<!--[if lt IE 9]> | |
<script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script> | |
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> | |
<![endif]--> | |
</head> | |
<body role="document"> | |
<div class="container theme-showcase" role="main"> | |
<div class="row"> | |
<div class="" role="main"> | |
<form class="bs-example bs-example-form" data-example-id="simple-input-groups"> | |
<div class="input-group"> | |
<span class="input-group-addon" id="basic-addon1">First Locked Position </span> | |
<input autofocus id=l1 type="text" class="form-control" placeholder="whole # under 11" aria-describedby="basic-addon1"> | |
</div> | |
<div> </div> | |
<div class="input-group"> | |
<span class="input-group-addon" id="basic-addon2">Second Locked Position </span> | |
<input id=l2 type="text" class="form-control" placeholder="whole # under 11" aria-describedby="basic-addon1"> | |
</div> | |
<div> </div> | |
<div class="input-group"> | |
<span class="input-group-addon" id="basic-addon3">Resistant Location</span> | |
<input id=rl type="text" class="form-control" placeholder="whole or half # (eg 4 or 4.5)" aria-describedby="basic-addon1"> | |
</div> | |
<div> </div> | |
<div class="input-group"> | |
<a href="#" class="btn btn-primary" role="button" onclick="combo(); return false;">Find Combos</a> | |
</div> | |
<div> <br><br><b>Your Combination:</b><br> </div> | |
<div class="input-group"> | |
<span class="input-group-addon" id="basic-addon3">First Digit</span> | |
<input id=d1 type="text" class="form-control" disabled placeholder="" aria-describedby="basic-addon1"> | |
</div> | |
<div> </div> | |
<div class="input-group"> | |
<span class="input-group-addon" id="basic-addon3">Second Digit(s)</span> | |
<input id=d2 type="text" class="form-control" disabled placeholder="" aria-describedby="basic-addon1"> | |
</div> | |
<div> </div> | |
<div class="input-group"> | |
<span class="input-group-addon" id="basic-addon3">Third Digit</span> | |
<input id=d3 type="text" class="form-control" disabled placeholder="" aria-describedby="basic-addon1"> | |
</div> | |
<div> </div> | |
<div class="input-group"> | |
Third digit: | |
<a id=t1 href="#" class="btn btn-primary" role="button" onclick="combo(1); return false">?</a> or | |
<a id=t2 href="#" class="btn btn-primary" role="button" onclick="combo(2); return false">?</a> | |
</div> | |
</form> | |
</div> | |
</div> | |
</div> <!-- /container --> | |
<!-- Bootstrap core JavaScript | |
================================================== --> | |
<!-- Placed at the end of the document so the pages load faster --> | |
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script> | |
<script> | |
//for (var i = 0; i < 40; i++) | |
// $('table > tbody').append('<tr><td id=td1_'+i+'>'+i+'</td><td id=td2_'+i+'>'+i+'</td><td id=td3_'+i+'>'+i+'</td></tr>'); | |
function combo(x) | |
{ | |
var second = []; | |
var third = []; | |
var l1 = parseInt($('input#l1').val()); | |
var l2 = parseInt($('input#l2').val()); | |
var first = (Math.ceil($('input#rl').val()) + 5) % 40; | |
$('input#d1').val(first); | |
var mod = first % 4; | |
for (var i = 0; i < 4; i++) | |
{ | |
if (((10 * i) + l1) % 4 == mod) | |
third.push((10 * i) + l1); | |
if (((10 * i) + l2) % 4 == mod) | |
third.push((10 * i) + l2); | |
} | |
$('a#t1').text(third[0]); | |
$('a#t2').text(third[1]); | |
$('input#d3').val(x ? third[x-1] : third.join(', ')); | |
for (var i = 0; i < 10; i++) | |
{ | |
var tmp = ((mod + 2) % 4) + (4 * i); | |
if (!x || ( (third[x-1]+2)%40 != tmp && (third[x-1]-2)%40 != tmp)) | |
second.push(tmp); | |
} | |
$('input#d2').val(second.join(', ')); | |
console.log(first); | |
console.log(second); | |
console.log(third); | |
} | |
</script> | |
<!-- Latest compiled and minified JavaScript --> | |
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script> | |
</body> | |
</html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment