https://brunch.co.kr/@sunghokimnxag/5
재미로 풀어본 면접문제. 하지만 면접문제로 좋은 문제인지는 모르겠다.
var assert = require('assert')
/**
* 1,2,3,4,5,6,[7],6,5,4,3,2,1,[0],1,2,[3]
* n번째 숫자가 7의 배수이거나 7이란 숫자를 포함할 시에 방향을 바꾼다.
* for loop 또는 array를 쓰지 말 것.
* assignment 를 쓰지 말 것. 즉, 변수 할당을 하지 말 것.
* String을 쓰지 말것.
*
*/
function pingpong(max, index, value, add) {
function direction(add) {
if (index % 7 === 0 || /7/.test(index)) {
return add * -1
} else {
return add
}
}
if (index === max) {
return value
} else {
return pingpong(
max,
index ? index + 1 : 1,
value !== undefined ? value + direction(add ? add : 1) : 1,
direction(add ? add : 1)
)
}
}
describe('pingpong', () => {
it('8번째 숫자는 6', () => {
assert.equal(pingpong(8), 6)
})
})