Skip to content

Commit

Permalink
Solution looks weird but works.
Browse files Browse the repository at this point in the history
  • Loading branch information
PG-Momik committed Oct 13, 2024
1 parent e1538f3 commit b8375dc
Showing 1 changed file with 56 additions and 0 deletions.
56 changes: 56 additions & 0 deletions _012_addBinary.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
/**
* @param {string} a
* @param {string} b
* @return {string}
*/
var addBinary = function(a, b) {
let aa = a;
let bb = b;
aLength = a.length;
bLength = b.length;
let pads = aLength - bLength;

if(aLength > bLength){
const pad = aLength - bLength;

for(let i = 0; i<pad; i++){
bb = "0"+bb;
}
}else if(bLength > aLength){
const pad = bLength - aLength;

for(let i = 0; i<pad; i++){
aa = "0"+aa;
}
}

aLength = aa.length;
let output = "";
let carry = 0;

for(let i = aLength -1 ; i>=0; i--){
let [newCarry, remainder] = mapper(aa[i], bb[i], carry);
carry = newCarry;
output = `${remainder}${output}`
}

if (carry == 1) {
output = `${carry}${output}`;
}

return output;
};

function mapper(a,b,c){
const key = `${a}${b}${c}`;
switch (key) {
case '000': return [0, 0];
case '001': return [0, 1];
case '010': return [0, 1];
case '011': return [1, 0];
case '100': return [0, 1];
case '101': return [1, 0];
case '110': return [1, 0];
case '111': return [1, 1];
}
}

0 comments on commit b8375dc

Please sign in to comment.