Created
December 24, 2011 22:05
-
-
Save Ajnasz/1518443 to your computer and use it in GitHub Desktop.
Hackthissite Programming missions Analyze the picture and find the ascii code
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 morse = (function () { | |
var charCodes = { | |
a: ".-", | |
b: "-...", | |
c: "-.-.", | |
d: "-..", | |
e: ".", | |
f: "..-.", | |
g: "--.", | |
h: "....", | |
i: "..", | |
j: ".---", | |
k: "-.-", | |
l: ".-..", | |
m: "--", | |
n: "-.", | |
o: "---", | |
p: ".--.", | |
q: "--.-", | |
r: ".-.", | |
s: "...", | |
t: "-", | |
u: "..-", | |
v: "...-", | |
w: ".--", | |
x: "-..-", | |
y: "-.--", | |
z: "--..", | |
1: ".----", | |
2: "..---", | |
3: "...--", | |
4: "....-", | |
5: ".....", | |
6: "-....", | |
7: "--...", | |
8: "---..", | |
9: "----.", | |
0: "-----" | |
}, | |
morseCodes = {}; | |
Object.keys(charCodes).forEach(function (key) { | |
morseCodes[charCodes[key]] = key; | |
}); | |
return { | |
toMorse: function (str) { | |
var output = ''; | |
for (var i = 0, sl = str.length; i < sl; i++) { | |
if (charCodes[str[i]]) { | |
output += charCodes[str[i]]; | |
} else { | |
output += ' '; | |
} | |
} | |
return output; | |
}, | |
toStr: function (morse) { | |
var output = []; | |
var morseArr = morse.split(' '); | |
console.log(morseArr) | |
for (var i = 0, sl = morseArr.length; i < sl; i++) { | |
console.log(morseCodes[morseArr[i]]) | |
output.push(morseCodes[morseArr[i]]); | |
} | |
return output.join(''); | |
} | |
} | |
}()); | |
var canvas = document.createElement('canvas'); | |
document.body.appendChild(canvas); | |
var ctx = canvas.getContext('2d'); | |
var img = document.querySelector('html body div table.siteheader tbody tr td table tbody tr td.sitebuffer table tbody tr td img'); | |
var w = img.width, h = img.height; | |
ctx.drawImage(img, 0, 0, w, h); | |
/* | |
var myData = ctx.createImageData(1, 1); | |
myData.data[0] = 255; | |
myData.data[0 + 1] = 255; | |
myData.data[0 + 2] = 255; | |
myData.data[0 + 3] = 255; | |
ctx.putImageData(myData, w - 1, h - 1); | |
ctx.putImageData(myData, w, h); | |
ctx.putImageData(myData, w - 1, h); | |
ctx.putImageData(myData, w, h - 1); | |
*/ | |
var data = ctx.getImageData(0, 0, w, h); | |
var dd = data.data; | |
var coords = {}; | |
var chars = ''; | |
var lastchar = 0; | |
for (var x = 0, dw = data.height; x < dw; x += 1) { | |
for (var y = 0; y < data.width; y++) { | |
if (dd[((x*(data.width*4)) + (y*4)) + 2]) { | |
if (!coords[x]) { | |
coords[x] = {}; | |
} | |
var char = x * 100 + y; | |
chars += String.fromCharCode(char - lastchar); | |
lastchar = char; | |
/* | |
coords[x][y] = { | |
red: dd[((x*(data.width*4)) + (y*4)) + 0], | |
green: dd[((x*(data.width*4)) + (y*4)) + 1], | |
blue: dd[((x*(data.width*4)) + (y*4)) + 2] | |
} | |
*/ | |
} | |
} | |
} | |
document.querySelector('html body div table.siteheader tbody tr td table tbody tr td.sitebuffer table tbody tr td form input').value = morse.toStr(chars.trim()); | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment