Derpcode/implementation.js
Jump to navigation
Jump to search
An implementation of Derpcode written in node js by User:Conor O'Brien. Make sure you npm install readwrite before running.
Implementation
const rw = require("readwrite");
const derp = (herp, input) => {
herp = herp.replace(/(\s|^)herp a-derp\.(?=\s|$)/g, "$1!").split(/\s/);
let tape = [0, 0, 0, 0, 0, 0, 0, 0];
let ptr = 0;
let effs = new Map([
["herp", () => tape[ptr] = +!(tape[ptr])],
["derp", () => (ptr++, typeof tape[ptr + 7] === "undefined" && tape.push(0))],
["a-derp", () => ptr--]
]);
let stdout = () => rw.log(String.fromCharCode(parseInt(tape.slice(ptr, ptr + 8).join(""), 2)));
let stdin = () => tape.splice(
ptr,
8,
...([...("00000000" +
input.shift()
.charCodeAt()
.toString(2)
).slice(-8)]).map(Number)
);
for(let c of herp){
if(c === ".") stdout();
let r = c;
let i;
if(/^[.?]/.test(c)){
r = c.slice(1);
i = c[0];
} else if(/[.?]$/.test(c)){
r = c.slice(0, -1);
i = c.slice(-1);
}
if(!effs.has(r)) continue;
effs.get(r)();
if(i === ".") stdout();
}
}
let file = process.argv[2];
let input = process.argv.slice(3).join(" ");
derp(
rw.read(file),
[...input]
);
Running
node Derpcode.js <filename> <input>