{
const binaryAdd = (num1: string, num2: string): string => {
let p1: number = num1.length - 1
let p2: number = num2.length - 1
const result: string[] = []
let extra: number = 0
const saveResult = (sum: number) => {
sum += extra
if (sum > 1) {
result.unshift(`${sum % 2}`)
extra = 1
} else {
result.unshift(`${sum}`)
extra = 0
}
}
while (p1 >= 0 && p2 >= 0) {
saveResult(Number(num1[p1--]) + Number(num2[p2--]))
}
while (p1 >= 0) saveResult(Number(num1[p1--]))
while (p2 >= 0) saveResult(Number(num2[p2--]))
extra === 1 && result.unshift('1')
return result.join('')
}
console.log(binaryAdd('0', '1'))
console.log(binaryAdd('1', '1'))
console.log(binaryAdd('1010', '111'))
}