JSFiddle - React, Tailwind, and code Playground
by Brenton Strine
JavaScript
var file = "4E125F11718191A262728292A35363738393A434445464748494A5354";
var newFile = "";
var filePos = 0;
function run(){
var abort = false;
var searchStyle;
var haystack;
var haystackSize = 100;
var needleSize = 4;
var needle = file.substr(filePos, needleSize);
var needlePos = 0;
//console.log(needle);
var haystackPos = 0;
var match = false;
var compressed = "";
var count = 0;
var keepSearching = true;
while (!match && !abort
&& (count < 100000)
&& (haystackPos < 198300)
&& (needlePos.toString(16).length < needle.length)
//&& confirm()
) {
console.log(newFile);
haystack = pi.substr(haystackPos, haystackSize);
//console.log(haystackPos + ":"+ haystack);
var needleFound = false;
needleFound = search(haystack);
var searches = 0;
while(keepSearching && searches < 16){
searches++;
needleFound = search(deshuffle(searches));
if(needlePos.toString(16).length > needle.length) {
console.log("FAIL TOO LONG:" + needlePos.toString(16).length +"<"+needle);
abort = true;
}
}
needlePos = haystackPos + needleFound;
//console.log(haystackPos+ " [haystack | position-in-haystack] " + needleFound);
if(needleFound>0){
match = true;
//console.log("FOUND THE NEEDLE!");
}
haystackPos += haystackSize;
count++;
}
if(count > 100000){console.log("failed because: count exceeded");}
if(haystackPos > 10300){console.log("failed because: ran out of hay");}
if(needlePos.toString(16).length > needle.length){console.log("failed because: not compressing");}
console.log(needlePos.toString(16) + " (" + needlePos + ") => " + needle);
if(needleFound<0) {
console.log("FAIL....