IT일반2014. 11. 15. 06:21

우연찮게 김창준님의 블로그에서 재미있는 퀴즈를 하나 발견했다. 개발자를 뽑는 어떤 회사의 채용 퀴즈인데, 시효는 이미 지난 문제지만 나 자신이 이런 종류에 필이 꽂히는 타입이라서 자세히 들여다보게 되었다.

퀴즈의 내용은 숫자를 입력 받아서 그에 해당하는 문자를 출력하는 것이고, 규칙은 엑셀과 같은 스프레드시트처럼 1은 A로, 2는 B로 변환하며, 26인 Z 다음부터는 AA, AB, … 에 해당된다. 프로그래밍 언어에는 제약이 없다. 필요하면 라이브러리를 동원해도 된다고 퀴즈 공고문에는 기재되어 있었다.

원래의 포스트에는 J언어로 아예 역함수까지 알짜배기로 짠 소스를 구경할 수 있었지만, 트랙백을 통해 다른 언어들로 시도된 내용을 보니 자바스크립트에 익숙한 입장에서 기왕이면 처음 발견했던 역함수 포함 J언어 버전과 격을 맞출 수 있는 코드를 구현해 보고픈 도전의식에 불타올라 버렸다.

<script>
function i2AB(n){return --n==-1?"":i2AB(Math.floor(n/26))+String.fromCharCode(65+n%26)}
function AB2i(s,p){p=p||0;return s==""?eval(p):AB2i(s.substr(1), "("+p+")*26+"+(s.charCodeAt(0)-64))}
</script>
<input id="num" value="65535">
<input type="button" value="1 to A" onclick="var n=document.getElementById('num');n.value=i2AB(parseInt(n.value))">
<input type="button" value="A to 1" onclick="var n=document.getElementById('num');n.value=AB2i(n.value)">

진지하게 Pure JS로 역함수까지 구현했다. 테스트는 바로 여기에서...

포스팅을 완성하고 나서 혹시나 싶어서 해당 회사 홈페이지에 들어갔더니 새로운 퀴즈가 걸려있다. 그건 다음 기회에...

P.S. 현재까지 출제된 모든 퀴즈가 수록된 좌표를 드디어 찾았다.

P.S. 하지만, 대부분의 철지난 퀴즈들은 이미지파일 소실로 확인 불가... -_-;

Posted by nextream