Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env node
- function getDigitFromRight(numberString, indexFromRight) {
- if (indexFromRight < 0) {
- throw new Error('you should not be here')
- }
- if (indexFromRight >= numberString.length) {
- return 0
- }
- return parseInt(numberString[numberString.length - 1 - indexFromRight])
- }
- // test('getDigitFromRight', () => {
- // expect(getDigitFromRight('649', 0)).toBe(9)
- // expect(getDigitFromRight('649', 1)).toBe(4)
- // expect(getDigitFromRight('649', 2)).toBe(6)
- // })
- // test('return 0 when out of range', () => {
- // expect(getDigitFromRight('649', 3)).toBe(0)
- // })
- function add(a = '' /*string*/, b = '' /*string*/) {
- let longNumberString = a
- let shortNumberString = b
- if (b.length > a.length) {
- longNumberString = b
- shortNumberString = a
- }
- let carry = 0
- let answer = ''
- for (let index = 0; index < longNumberString.length; index++) {
- const upDigit = getDigitFromRight(longNumberString, index)
- const downDigit = getDigitFromRight(shortNumberString, index)
- const digitSum = upDigit + downDigit + carry
- answer = (digitSum % 10).toString() + answer
- carry = Math.floor(digitSum / 10)
- }
- if (carry !== 0) {
- answer = carry.toString() + answer
- }
- return answer
- }
- // test('add', () => {
- // expect(add('0', '0')).toBe('0')
- // expect(add('0', '2')).toBe('2')
- // expect(add('1', '2')).toBe('3')
- // expect(add('10', '2')).toBe('12')
- // expect(add('10', '200')).toBe('210')
- // expect(add('96', '4')).toBe('100')
- // expect(add('960700081327001', '43520069100001')).toBe('1004220150427002')
- // })
- // test('add big int', () => {
- // expect(add('9007199254740991', '9007199254740991')).toBe('18014398509481982')
- // expect(add('9007199254740991', '9007199')).toBe('9007199263748190')
- // expect(add('9007199254740991', '90071992547409919007199254740991')).toBe('90071992547409928014398509481982')
- // })
- const args = process.argv.slice(2)
- console.log(add(args[0], args[1]))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement