Post History
#6: Post edited
Add two negabinary integers [FINALIZED]
## About Negabinary Negabinary means base negative two (-2). That is, the $n$th place value is determined by $(-2)^n$. Negabinary numbers can be evaluated just like any other base system. For example, we can parse the numbers 101, 110, and 1010 as follows: | -8 | 4 | -2 | 1 | value | |:--:|:-:|:--:|:-:|:-----:| | | 1 | 0 | 1 | 5 | | | 1 | 1 | 0 | 2 | | 1 | 0 | 1 | 0 | -10 | ## Challenge Given two negabinary integers, output [the sum of them in negabinary](https://en.wikipedia.org/wiki/Negative_base#Arithmetic_operations). You may take inputs in any format that makes sense. However, the output of the function/program must be in the same format as the input The following ungolfed example takes in two 0-indexed arrays, with the nth entry being the nth place of each number. ```javascript function addNegabinary(first, second) { let carry = 0; let result = []; let place = 0; while(place < first.length || place < second.length || carry) { let num = (first[place] || 0) + (second[place] || 0) + carry; let bit; switch (num) { case -1: bit = 1; carry = 1; break; case 0: bit = 0; carry = 0; break; case 1: bit = 1; carry = 0; break; case 2: bit = 0; carry = -1; break; case 3: bit = 1; carry = -1; break; } result.push(bit); place++; } return result; } ``` [Try it online!](https://tio.run/##fVPLboMwELzzFXsEhUR2e6vbX@gPIB8cYwKtYyLbNIqafHvqRwCnpUEIrWdnZ1fr4YN9McN1d7Br1dfiem0GxW3XK2B1/S52bNsppk9502ljSzCC96ou4DsD90hhgTOtT/AGiEyQFmaQ1mEVJdmEHiTjYiYe206KPIKvEOQ3UqidbeF8hhGP/ZJEaDf2H6XVsHfCccYqlFLPRQWsII8Sv@GgQ@5Utp2dAXPsLG8hd9JpN/9wZgSs8YsvcG0xmXbgwq0W7JP85aORjkiysn/pS@oP6E8L6usH0zwvyC/wL1MUr3RzGEybu8pi5oS9rlYRiAVa2EGrWw3JLld3AcaCFcYa74qsqjAtoUKUlmOMkxiVgN0bEX9ICNMxcNBEux3SL3iej9IEDgmaeWc2vYbcTwV9E6dLjR3c5Mb1CTfqbO9oqDGD6YLxH/07ke5X0kuxkf3uPl/eVAq/uB8 "JavaScript (Node.js) – Try It Online") ## Some test cases ``` 1 + 0 = 1 1 + 1 = 110 // 1 + 1 = 2 1 + 110 = 111 // 1 + 2 = 3 10 + 1 = 11 // -2 + 1 = -1 10 + 1011 = 110101 // -2 + -9 = -11 1010101 + 1110100 = 110011001 ```
#4: Post edited
- ## Challenge
Given two negabinary integers (base -2), output [the sum of them in negabinary](https://en.wikipedia.org/wiki/Negative_base#Arithmetic_operations).- You may take inputs in any format that makes sense. However, the output of the function/program must be in the same format as the input
- The following ungolfed example takes in two 0-indexed arrays, with the nth entry being the nth place of each number.
- ```javascript
- function addNegabinary(first, second) {
- let carry = 0;
- let result = [];
- let place = 0;
- while(place < first.length || place < second.length || carry) {
- let num = (first[place] || 0) + (second[place] || 0) + carry;
- let bit;
- switch (num) {
- case -1: bit = 1; carry = 1; break;
- case 0: bit = 0; carry = 0; break;
- case 1: bit = 1; carry = 0; break;
- case 2: bit = 0; carry = -1; break;
- case 3: bit = 1; carry = -1; break;
- }
- result.push(bit);
- place++;
- }
- return result;
- }
- ```
- [Try it online!](https://tio.run/##fVPLboMwELzzFXsEhUR2e6vbX@gPIB8cYwKtYyLbNIqafHvqRwCnpUEIrWdnZ1fr4YN9McN1d7Br1dfiem0GxW3XK2B1/S52bNsppk9502ljSzCC96ou4DsD90hhgTOtT/AGiEyQFmaQ1mEVJdmEHiTjYiYe206KPIKvEOQ3UqidbeF8hhGP/ZJEaDf2H6XVsHfCccYqlFLPRQWsII8Sv@GgQ@5Utp2dAXPsLG8hd9JpN/9wZgSs8YsvcG0xmXbgwq0W7JP85aORjkiysn/pS@oP6E8L6usH0zwvyC/wL1MUr3RzGEybu8pi5oS9rlYRiAVa2EGrWw3JLld3AcaCFcYa74qsqjAtoUKUlmOMkxiVgN0bEX9ICNMxcNBEux3SL3iej9IEDgmaeWc2vYbcTwV9E6dLjR3c5Mb1CTfqbO9oqDGD6YLxH/07ke5X0kuxkf3uPl/eVAq/uB8 "JavaScript (Node.js) – Try It Online")
- ## Some test cases
- ```
- 1 + 0 = 1
- 1 + 1 = 110 // 1 + 1 = 2
- 1 + 110 = 111 // 1 + 2 = 3
- 10 + 1 = 11 // -2 + 1 = -1
- 10 + 1011 = 110101 // -2 + -9 = -11
- 1010101 + 1110100 = 110011001
- ```
- ## About Negabinary
- Negabinary means base negative two (-2). That is, the $n$th place value is determined by $(-2)^n$.
- Negabinary numbers can be evaluated just like any other base system. For example, we can parse the numbers 101, 110, and 1010 as follows:
- | -8 | 4 | -2 | 1 | value |
- |:--:|:-:|:--:|:-:|:-----:|
- | | 1 | 0 | 1 | 5 |
- | | 1 | 1 | 0 | 2 |
- | 1 | 0 | 1 | 0 | -10 |
- ## Challenge
- Given two negabinary integers, output [the sum of them in negabinary](https://en.wikipedia.org/wiki/Negative_base#Arithmetic_operations).
- You may take inputs in any format that makes sense. However, the output of the function/program must be in the same format as the input
- The following ungolfed example takes in two 0-indexed arrays, with the nth entry being the nth place of each number.
- ```javascript
- function addNegabinary(first, second) {
- let carry = 0;
- let result = [];
- let place = 0;
- while(place < first.length || place < second.length || carry) {
- let num = (first[place] || 0) + (second[place] || 0) + carry;
- let bit;
- switch (num) {
- case -1: bit = 1; carry = 1; break;
- case 0: bit = 0; carry = 0; break;
- case 1: bit = 1; carry = 0; break;
- case 2: bit = 0; carry = -1; break;
- case 3: bit = 1; carry = -1; break;
- }
- result.push(bit);
- place++;
- }
- return result;
- }
- ```
- [Try it online!](https://tio.run/##fVPLboMwELzzFXsEhUR2e6vbX@gPIB8cYwKtYyLbNIqafHvqRwCnpUEIrWdnZ1fr4YN9McN1d7Br1dfiem0GxW3XK2B1/S52bNsppk9502ljSzCC96ou4DsD90hhgTOtT/AGiEyQFmaQ1mEVJdmEHiTjYiYe206KPIKvEOQ3UqidbeF8hhGP/ZJEaDf2H6XVsHfCccYqlFLPRQWsII8Sv@GgQ@5Utp2dAXPsLG8hd9JpN/9wZgSs8YsvcG0xmXbgwq0W7JP85aORjkiysn/pS@oP6E8L6usH0zwvyC/wL1MUr3RzGEybu8pi5oS9rlYRiAVa2EGrWw3JLld3AcaCFcYa74qsqjAtoUKUlmOMkxiVgN0bEX9ICNMxcNBEux3SL3iej9IEDgmaeWc2vYbcTwV9E6dLjR3c5Mb1CTfqbO9oqDGD6YLxH/07ke5X0kuxkf3uPl/eVAq/uB8 "JavaScript (Node.js) – Try It Online")
- ## Some test cases
- ```
- 1 + 0 = 1
- 1 + 1 = 110 // 1 + 1 = 2
- 1 + 110 = 111 // 1 + 2 = 3
- 10 + 1 = 11 // -2 + 1 = -1
- 10 + 1011 = 110101 // -2 + -9 = -11
- 1010101 + 1110100 = 110011001
- ```
#3: Post edited
- ## Challenge
- Given two negabinary integers (base -2), output [the sum of them in negabinary](https://en.wikipedia.org/wiki/Negative_base#Arithmetic_operations).
- You may take inputs in any format that makes sense. However, the output of the function/program must be in the same format as the input
- The following ungolfed example takes in two 0-indexed arrays, with the nth entry being the nth place of each number.
- ```javascript
- function addNegabinary(first, second) {
- let carry = 0;
- let result = [];
- let place = 0;
- while(place < first.length || place < second.length || carry) {
- let num = (first[place] || 0) + (second[place] || 0) + carry;
- let bit;
- switch (num) {
- case -1: bit = 1; carry = 1; break;
- case 0: bit = 0; carry = 0; break;
- case 1: bit = 1; carry = 0; break;
- case 2: bit = 0; carry = -1; break;
- case 3: bit = 1; carry = -1; break;
- }
- result.push(bit);
- place++;
- }
- return result;
- }
}- ```
- [Try it online!](https://tio.run/##fVPLboMwELzzFXsEhUR2e6vbX@gPIB8cYwKtYyLbNIqafHvqRwCnpUEIrWdnZ1fr4YN9McN1d7Br1dfiem0GxW3XK2B1/S52bNsppk9502ljSzCC96ou4DsD90hhgTOtT/AGiEyQFmaQ1mEVJdmEHiTjYiYe206KPIKvEOQ3UqidbeF8hhGP/ZJEaDf2H6XVsHfCccYqlFLPRQWsII8Sv@GgQ@5Utp2dAXPsLG8hd9JpN/9wZgSs8YsvcG0xmXbgwq0W7JP85aORjkiysn/pS@oP6E8L6usH0zwvyC/wL1MUr3RzGEybu8pi5oS9rlYRiAVa2EGrWw3JLld3AcaCFcYa74qsqjAtoUKUlmOMkxiVgN0bEX9ICNMxcNBEux3SL3iej9IEDgmaeWc2vYbcTwV9E6dLjR3c5Mb1CTfqbO9oqDGD6YLxH/07ke5X0kuxkf3uPl/eVAq/uB8 "JavaScript (Node.js) – Try It Online")
- ## Some test cases
- ```
- 1 + 0 = 1
- 1 + 1 = 110 // 1 + 1 = 2
- 1 + 110 = 111 // 1 + 2 = 3
- 10 + 1 = 11 // -2 + 1 = -1
- 10 + 1011 = 110101 // -2 + -9 = -11
- 1010101 + 1110100 = 110011001
- ```
- ## Challenge
- Given two negabinary integers (base -2), output [the sum of them in negabinary](https://en.wikipedia.org/wiki/Negative_base#Arithmetic_operations).
- You may take inputs in any format that makes sense. However, the output of the function/program must be in the same format as the input
- The following ungolfed example takes in two 0-indexed arrays, with the nth entry being the nth place of each number.
- ```javascript
- function addNegabinary(first, second) {
- let carry = 0;
- let result = [];
- let place = 0;
- while(place < first.length || place < second.length || carry) {
- let num = (first[place] || 0) + (second[place] || 0) + carry;
- let bit;
- switch (num) {
- case -1: bit = 1; carry = 1; break;
- case 0: bit = 0; carry = 0; break;
- case 1: bit = 1; carry = 0; break;
- case 2: bit = 0; carry = -1; break;
- case 3: bit = 1; carry = -1; break;
- }
- result.push(bit);
- place++;
- }
- return result;
- }
- ```
- [Try it online!](https://tio.run/##fVPLboMwELzzFXsEhUR2e6vbX@gPIB8cYwKtYyLbNIqafHvqRwCnpUEIrWdnZ1fr4YN9McN1d7Br1dfiem0GxW3XK2B1/S52bNsppk9502ljSzCC96ou4DsD90hhgTOtT/AGiEyQFmaQ1mEVJdmEHiTjYiYe206KPIKvEOQ3UqidbeF8hhGP/ZJEaDf2H6XVsHfCccYqlFLPRQWsII8Sv@GgQ@5Utp2dAXPsLG8hd9JpN/9wZgSs8YsvcG0xmXbgwq0W7JP85aORjkiysn/pS@oP6E8L6usH0zwvyC/wL1MUr3RzGEybu8pi5oS9rlYRiAVa2EGrWw3JLld3AcaCFcYa74qsqjAtoUKUlmOMkxiVgN0bEX9ICNMxcNBEux3SL3iej9IEDgmaeWc2vYbcTwV9E6dLjR3c5Mb1CTfqbO9oqDGD6YLxH/07ke5X0kuxkf3uPl/eVAq/uB8 "JavaScript (Node.js) – Try It Online")
- ## Some test cases
- ```
- 1 + 0 = 1
- 1 + 1 = 110 // 1 + 1 = 2
- 1 + 110 = 111 // 1 + 2 = 3
- 10 + 1 = 11 // -2 + 1 = -1
- 10 + 1011 = 110101 // -2 + -9 = -11
- 1010101 + 1110100 = 110011001
- ```
#2: Post edited
- ## Challenge
- Given two negabinary integers (base -2), output [the sum of them in negabinary](https://en.wikipedia.org/wiki/Negative_base#Arithmetic_operations).
You may take inputs in any format that makes sense.- The following ungolfed example takes in two 0-indexed arrays, with the nth entry being the nth place of each number.
- ```javascript
- function addNegabinary(first, second) {
- let carry = 0;
- let result = [];
- let place = 0;
- while(place < first.length || place < second.length || carry) {
- let num = (first[place] || 0) + (second[place] || 0) + carry;
- let bit;
- switch (num) {
- case -1: bit = 1; carry = 1; break;
- case 0: bit = 0; carry = 0; break;
- case 1: bit = 1; carry = 0; break;
- case 2: bit = 0; carry = -1; break;
- case 3: bit = 1; carry = -1; break;
- }
- result.push(bit);
- place++;
- }
- return result;
- }
- }
- ```
- [Try it online!](https://tio.run/##fVPLboMwELzzFXsEhUR2e6vbX@gPIB8cYwKtYyLbNIqafHvqRwCnpUEIrWdnZ1fr4YN9McN1d7Br1dfiem0GxW3XK2B1/S52bNsppk9502ljSzCC96ou4DsD90hhgTOtT/AGiEyQFmaQ1mEVJdmEHiTjYiYe206KPIKvEOQ3UqidbeF8hhGP/ZJEaDf2H6XVsHfCccYqlFLPRQWsII8Sv@GgQ@5Utp2dAXPsLG8hd9JpN/9wZgSs8YsvcG0xmXbgwq0W7JP85aORjkiysn/pS@oP6E8L6usH0zwvyC/wL1MUr3RzGEybu8pi5oS9rlYRiAVa2EGrWw3JLld3AcaCFcYa74qsqjAtoUKUlmOMkxiVgN0bEX9ICNMxcNBEux3SL3iej9IEDgmaeWc2vYbcTwV9E6dLjR3c5Mb1CTfqbO9oqDGD6YLxH/07ke5X0kuxkf3uPl/eVAq/uB8 "JavaScript (Node.js) – Try It Online")
- ## Some test cases
- ```
- 1 + 0 = 1
- 1 + 1 = 110 // 1 + 1 = 2
- 1 + 110 = 111 // 1 + 2 = 3
- 10 + 1 = 11 // -2 + 1 = -1
- 10 + 1011 = 110101 // -2 + -9 = -11
- 1010101 + 1110100 = 110011001
- ```
- ## Challenge
- Given two negabinary integers (base -2), output [the sum of them in negabinary](https://en.wikipedia.org/wiki/Negative_base#Arithmetic_operations).
- You may take inputs in any format that makes sense. However, the output of the function/program must be in the same format as the input
- The following ungolfed example takes in two 0-indexed arrays, with the nth entry being the nth place of each number.
- ```javascript
- function addNegabinary(first, second) {
- let carry = 0;
- let result = [];
- let place = 0;
- while(place < first.length || place < second.length || carry) {
- let num = (first[place] || 0) + (second[place] || 0) + carry;
- let bit;
- switch (num) {
- case -1: bit = 1; carry = 1; break;
- case 0: bit = 0; carry = 0; break;
- case 1: bit = 1; carry = 0; break;
- case 2: bit = 0; carry = -1; break;
- case 3: bit = 1; carry = -1; break;
- }
- result.push(bit);
- place++;
- }
- return result;
- }
- }
- ```
- [Try it online!](https://tio.run/##fVPLboMwELzzFXsEhUR2e6vbX@gPIB8cYwKtYyLbNIqafHvqRwCnpUEIrWdnZ1fr4YN9McN1d7Br1dfiem0GxW3XK2B1/S52bNsppk9502ljSzCC96ou4DsD90hhgTOtT/AGiEyQFmaQ1mEVJdmEHiTjYiYe206KPIKvEOQ3UqidbeF8hhGP/ZJEaDf2H6XVsHfCccYqlFLPRQWsII8Sv@GgQ@5Utp2dAXPsLG8hd9JpN/9wZgSs8YsvcG0xmXbgwq0W7JP85aORjkiysn/pS@oP6E8L6usH0zwvyC/wL1MUr3RzGEybu8pi5oS9rlYRiAVa2EGrWw3JLld3AcaCFcYa74qsqjAtoUKUlmOMkxiVgN0bEX9ICNMxcNBEux3SL3iej9IEDgmaeWc2vYbcTwV9E6dLjR3c5Mb1CTfqbO9oqDGD6YLxH/07ke5X0kuxkf3uPl/eVAq/uB8 "JavaScript (Node.js) – Try It Online")
- ## Some test cases
- ```
- 1 + 0 = 1
- 1 + 1 = 110 // 1 + 1 = 2
- 1 + 110 = 111 // 1 + 2 = 3
- 10 + 1 = 11 // -2 + 1 = -1
- 10 + 1011 = 110101 // -2 + -9 = -11
- 1010101 + 1110100 = 110011001
- ```
#1: Initial revision
Add two negabinary integers
## Challenge Given two negabinary integers (base -2), output [the sum of them in negabinary](https://en.wikipedia.org/wiki/Negative_base#Arithmetic_operations). You may take inputs in any format that makes sense. The following ungolfed example takes in two 0-indexed arrays, with the nth entry being the nth place of each number. ```javascript function addNegabinary(first, second) { let carry = 0; let result = []; let place = 0; while(place < first.length || place < second.length || carry) { let num = (first[place] || 0) + (second[place] || 0) + carry; let bit; switch (num) { case -1: bit = 1; carry = 1; break; case 0: bit = 0; carry = 0; break; case 1: bit = 1; carry = 0; break; case 2: bit = 0; carry = -1; break; case 3: bit = 1; carry = -1; break; } result.push(bit); place++; } return result; } } ``` [Try it online!](https://tio.run/##fVPLboMwELzzFXsEhUR2e6vbX@gPIB8cYwKtYyLbNIqafHvqRwCnpUEIrWdnZ1fr4YN9McN1d7Br1dfiem0GxW3XK2B1/S52bNsppk9502ljSzCC96ou4DsD90hhgTOtT/AGiEyQFmaQ1mEVJdmEHiTjYiYe206KPIKvEOQ3UqidbeF8hhGP/ZJEaDf2H6XVsHfCccYqlFLPRQWsII8Sv@GgQ@5Utp2dAXPsLG8hd9JpN/9wZgSs8YsvcG0xmXbgwq0W7JP85aORjkiysn/pS@oP6E8L6usH0zwvyC/wL1MUr3RzGEybu8pi5oS9rlYRiAVa2EGrWw3JLld3AcaCFcYa74qsqjAtoUKUlmOMkxiVgN0bEX9ICNMxcNBEux3SL3iej9IEDgmaeWc2vYbcTwV9E6dLjR3c5Mb1CTfqbO9oqDGD6YLxH/07ke5X0kuxkf3uPl/eVAq/uB8 "JavaScript (Node.js) – Try It Online") ## Some test cases ``` 1 + 0 = 1 1 + 1 = 110 // 1 + 1 = 2 1 + 110 = 111 // 1 + 2 = 3 10 + 1 = 11 // -2 + 1 = -1 10 + 1011 = 110101 // -2 + -9 = -11 1010101 + 1110100 = 110011001 ```