Skip to content

Instantly share code, notes, and snippets.

@engelsdamien
Last active June 11, 2019 21:34
Show Gist options
  • Save engelsdamien/e04b8228e24ecb54461319ac6d43dc1e to your computer and use it in GitHub Desktop.
Save engelsdamien/e04b8228e24ecb54461319ac6d43dc1e to your computer and use it in GitHub Desktop.
const programs = [
[
"20",
"CLEAR 21",
"OR 10 11",
"CLEAR 27",
"CLEAR 24",
"AND 21 25",
"OR 8 4",
"SET 11",
"SET 18",
"CLEAR 5",
"AND 16 25",
"AND 17 28",
"OR 7 27",
"OR 8 12",
"OR 7 27",
"CLEAR 29",
"OR 16 14",
"AND 2 28",
"SET 1",
"CLEAR 18",
"OR 5 7"
],
[
"39",
"CLEAR 8",
"SET 29",
"AND 24 11",
"AND 18 28",
"SET 26",
"OR 18 19",
"SET 11",
"CLEAR 30",
"OR 25 17",
"SET 19",
"AND 4 1",
"AND 23 12",
"SET 21",
"SET 17",
"AND 14 8",
"AND 15 8",
"SET 2",
"OR 13 14",
"OR 25 13",
"OR 15 17",
"OR 9 2",
"CLEAR 21",
"CLEAR 25",
"OR 18 3",
"OR 2 31",
"OR 16 17",
"CLEAR 1",
"AND 22 16",
"CLEAR 1",
"OR 8 0",
"OR 23 1",
"SET 18",
"AND 24 7",
"AND 16 16",
"SET 20",
"AND 23 18",
"AND 29 9",
"CLEAR 2",
"CLEAR 8"
],
[
"46",
"CLEAR 13",
"CLEAR 1",
"SET 16",
"OR 28 28",
"OR 8 11",
"CLEAR 27",
"OR 29 11",
"CLEAR 29",
"AND 4 11",
"CLEAR 12",
"AND 1 2",
"CLEAR 5",
"SET 29",
"AND 13 24",
"OR 11 20",
"AND 25 16",
"CLEAR 23",
"AND 12 11",
"SET 9",
"OR 12 30",
"SET 10",
"AND 7 25",
"SET 30",
"OR 14 0",
"CLEAR 18",
"AND 24 10",
"SET 22",
"CLEAR 12",
"AND 31 21",
"OR 8 5",
"OR 10 18",
"OR 4 14",
"SET 26",
"SET 4",
"SET 19",
"SET 9",
"OR 16 28",
"OR 0 8",
"OR 4 5",
"CLEAR 3",
"SET 26",
"SET 20",
"OR 6 5",
"OR 17 28",
"AND 23 10",
"SET 12"
],
[
"31",
"OR 2 2",
"SET 20",
"SET 28",
"AND 26 12",
"AND 9 12",
"CLEAR 31",
"AND 26 11",
"SET 20",
"OR 27 16",
"OR 26 30",
"OR 3 27",
"SET 4",
"SET 30",
"CLEAR 1",
"OR 30 19",
"SET 9",
"AND 15 0",
"AND 10 3",
"SET 24",
"AND 7 21",
"OR 16 16",
"OR 31 18",
"OR 19 18",
"OR 7 28",
"OR 23 19",
"SET 27",
"SET 7",
"CLEAR 5",
"OR 10 2",
"SET 23",
"OR 2 28"
],
[
"96",
"AND 0 17",
"CLEAR 25",
"SET 30",
"AND 30 22",
"OR 23 10",
"SET 13",
"CLEAR 15",
"SET 17",
"CLEAR 3",
"AND 21 31",
"AND 4 27",
"OR 18 7",
"SET 18",
"SET 1",
"AND 31 5",
"OR 30 29",
"AND 21 10",
"CLEAR 28",
"CLEAR 12",
"AND 31 2",
"CLEAR 1",
"CLEAR 25",
"OR 0 27",
"AND 15 21",
"AND 9 21",
"OR 21 27",
"CLEAR 14",
"AND 11 5",
"AND 11 27",
"CLEAR 10",
"CLEAR 16",
"OR 5 14",
"SET 2",
"AND 21 5",
"AND 9 19",
"SET 5",
"OR 18 26",
"OR 2 23",
"CLEAR 1",
"OR 21 8",
"CLEAR 18",
"AND 23 20",
"OR 9 1",
"OR 4 2",
"AND 28 18",
"CLEAR 14",
"CLEAR 17",
"CLEAR 24",
"CLEAR 23",
"AND 27 21",
"SET 24",
"OR 10 15",
"OR 20 25",
"SET 28",
"AND 11 20",
"CLEAR 14",
"AND 22 12",
"CLEAR 1",
"CLEAR 26",
"SET 10",
"OR 18 3",
"CLEAR 24",
"OR 20 26",
"OR 25 25",
"OR 28 30",
"AND 9 1",
"AND 7 30",
"CLEAR 11",
"SET 27",
"SET 24",
"AND 27 19",
"OR 21 4",
"CLEAR 5",
"SET 20",
"OR 24 9",
"SET 3",
"CLEAR 20",
"OR 8 4",
"AND 5 28",
"OR 0 20",
"CLEAR 13",
"OR 6 26",
"CLEAR 14",
"AND 2 9",
"OR 2 29",
"CLEAR 3",
"CLEAR 9",
"OR 13 23",
"OR 14 4",
"OR 8 27",
"AND 16 3",
"AND 20 28",
"OR 29 23",
"OR 0 23",
"CLEAR 3",
"CLEAR 17"
],
[
"12",
"OR 23 28",
"AND 11 26",
"AND 11 24",
"OR 6 2",
"OR 7 26",
"OR 3 3",
"AND 25 10",
"OR 27 22",
"OR 11 5",
"AND 30 3",
"CLEAR 25",
"OR 16 24"
],
[
"30",
"OR 9 8",
"AND 18 16",
"CLEAR 21",
"OR 20 31",
"CLEAR 26",
"SET 6",
"CLEAR 5",
"OR 21 19",
"OR 19 18",
"OR 15 26",
"AND 0 4",
"SET 29",
"AND 20 8",
"CLEAR 2",
"AND 11 20",
"AND 10 22",
"OR 5 9",
"OR 19 22",
"SET 27",
"CLEAR 28",
"SET 11",
"SET 17",
"SET 26",
"SET 9",
"CLEAR 25",
"CLEAR 16",
"OR 10 23",
"OR 15 2",
"SET 9",
"OR 29 0"
],
[
"39",
"OR 10 27",
"SET 7",
"CLEAR 21",
"SET 12",
"SET 26",
"AND 5 23",
"CLEAR 17",
"AND 4 7",
"CLEAR 21",
"OR 29 16",
"AND 15 15",
"AND 24 4",
"AND 4 4",
"SET 12",
"OR 7 14",
"CLEAR 23",
"SET 4",
"OR 19 13",
"SET 12",
"AND 7 11",
"AND 15 7",
"OR 9 4",
"OR 15 17",
"CLEAR 18",
"AND 26 18",
"OR 9 25",
"SET 9",
"CLEAR 8",
"CLEAR 11",
"SET 14",
"SET 31",
"SET 25",
"SET 19",
"AND 24 23",
"OR 2 25",
"CLEAR 23",
"SET 4",
"OR 15 31",
"AND 19 17"
],
[
"70",
"OR 25 20",
"AND 21 9",
"SET 12",
"SET 6",
"SET 18",
"AND 14 12",
"CLEAR 5",
"AND 13 14",
"OR 0 0",
"SET 11",
"OR 5 23",
"SET 10",
"OR 30 7",
"AND 12 1",
"CLEAR 22",
"OR 3 27",
"OR 28 5",
"AND 24 15",
"CLEAR 21",
"AND 16 2",
"AND 14 0",
"SET 2",
"SET 24",
"SET 11",
"CLEAR 7",
"OR 14 3",
"OR 7 15",
"AND 8 31",
"SET 1",
"AND 19 29",
"OR 21 21",
"OR 7 27",
"OR 10 16",
"AND 0 23",
"SET 27",
"CLEAR 2",
"AND 18 17",
"SET 29",
"SET 7",
"SET 2",
"SET 10",
"AND 5 5",
"SET 0",
"AND 23 8",
"OR 7 11",
"CLEAR 7",
"SET 0",
"AND 9 23",
"AND 25 7",
"AND 17 29",
"AND 29 19",
"CLEAR 11",
"SET 1",
"AND 22 31",
"AND 29 3",
"SET 5",
"CLEAR 22",
"AND 25 20",
"OR 26 26",
"SET 28",
"SET 0",
"CLEAR 22",
"CLEAR 10",
"SET 2",
"AND 0 15",
"AND 31 8",
"SET 30",
"CLEAR 1",
"OR 6 0",
"AND 14 23"
],
[
"8",
"SET 23",
"AND 4 26",
"AND 19 0",
"AND 8 16",
"CLEAR 22",
"SET 10",
"OR 28 9",
"SET 28"
]
];
const results = [
"??0?0??0??0??0??????1?????????1?",
"?01??10???01111110??1?10?????00?",
"?11?01??01?110?1??01?11???010?0?",
"?1?11??11??1??????????1?1?01?10?",
"???1?0010010?00001000101??010?0?",
"??????0?????????????????????????",
"??10110???????10????1?1??1???0??",
"1????0100?0?000?11?10?10???1?1??",
"?1?11?01?00?????????00??011??10?",
"???1????10???????????1??????????"
];
let line = 0;
function readline() {
return programs[progIdx][line++];
}
function writeline(s) {
line = 0;
const result = results[progIdx];
if (result == s) {
console.log("All good");
} else {
console.error("Error:");
console.log(` Expected: ${result}`);
console.log(` Actual: ${s}`);
}
}
for (progIdx = 0; progIdx < programs.length; progIdx++) {
// Actual code below this line
for((a=readline)(c=Array(32).fill(2));l=a();c[e]={S:3,A:c[e]&c[g],O:c[e]|c[g]}[d]|0)[[d],e,g]=l.split` `
writeline(c.reduce((p,f)=>'0.?1'[f]+p,''))
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment