Skip to content

Instantly share code, notes, and snippets.

@LuviKunG
Created January 5, 2023 23:25
Show Gist options
  • Save LuviKunG/676606c2f1f24deaa8b2049aed31b171 to your computer and use it in GitHub Desktop.
Save LuviKunG/676606c2f1f24deaa8b2049aed31b171 to your computer and use it in GitHub Desktop.
My experiment of working on logic gates in Javascript.
var xor = (...args) => {
let x = [];
for (let i = 0; i < args.length; i++) {
let y = [];
for (let j = 0; j < args.length; j++)
y.push(i == j ? args[j] : !args[j]);
x.push(and(...y));
}
let w = and(...args);
return or(...x, w);
}
var and = (...args) => {
for (let i = 0; i < args.length; i++)
if (!args[i]) return false;
return true;
}
var or = (...args) => {
for (let i = 0; i < args.length; i++)
if (args[i]) return true;
return false;
}
// Testing
console.log(xor(false, false, false)); // false
console.log(xor(false, false, true)); // true
console.log(xor(false, true, false)); // true
console.log(xor(false, true, true)); // false
console.log(xor(true, false, false)); // true
console.log(xor(true, false, true)); // false
console.log(xor(true, true, false)); // false
console.log(xor(true, true, true)); // true
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment