안녕하세요. 스포카 코드 난독화 컨테스트 2016에 참여해 주셔서 감사합니다. 스포카 코드 난독화 컨테스트 2016은 스포카에서 PyCon APAC 2016를 위해 준비한 코딩 이벤트입니다.
계산기 프로그램을 작성하세요. 프로그램은 아래의 조건들을 만족하여야 합니다.
- 프로그램 파일 명은
calc.py
로 설정합니다. - 커맨드 라인의 인자를 통해 입력을 전달하고 계산 결과가 출력되어야 합니다.
- 사칙연산이 지원되어야 합니다.
- 연산자 우선순위는 일반적인 사칙연산의 규칙을 따릅니다. 곱셈과 나눗셈이 우선으로 평가되어야 하며, 같은 우선 순위 내의 연산은 순서대로 평가되어야 합니다.
- 괄호로 연산의 우선순위를 지정할 수 있어야 합니다.
- 소수점 연산이 지원되어야 합니다. 나눗셈 결과가 떨어지지 않는 경우에는 결과가 실수로 출력되어야 합니다.
- 소수점 아래가 있는 경우에는 최소 3자리 이상 출력되어야 합니다.
- 잘못된 식이 입력되면 0이 아닌 값이 반환값으로 설정되고 프로그램이 종료되어야 합니다. 에러 메시지를 출력하는 것은 자유입니다.
$ python calc.py "1+1"
2
$ python calc.py "10 - 2 * 4"
2
$ python calc.py "10 / 3"
3.3333333333333335
$ python calc.py "-4 - 3"
-7
$ python calc.py "(10 + 42 / 6) * 3"
51
$ python calc.py "+1.5 * 3"
4.5
$ python calc.py "answer to the ultimate question of life, the universe, and everything"
$ echo $?
42
- 해당 문제의 코드를 최대한 독창적인 방법으로 작성해 주세요. 코드가 해석하기 어려운 형태여도 좋습니다.
- 문제 자체는 제출을 위한 최소 조건이며, 얼마나 독창적인 방법으로 코드를 작성했는가가 주된 평가 기준입니다.
- 파이썬 언어에 대한 이해도 또한 주요 평가 기준입니다.
- 따라서 채점은 전적으로 평가자의 주관적인 판단에 근거합니다. 자세한 평가 기준은 수상작 발표 때 공개하도록 하겠습니다.
- 난독화의 실제 사례가 궁금하다면 Python으로 작성된 Hello world 프로그램을 참고해 주세요. 꼭 이 코드와 똑같은 형태가 되어야 할 필요는 없습니다.
- 이 GitHub 저장소를 fork하여 코드를 작성해 주세요. 그리고 pull request로 코드를 제출해 주시면 됩니다.
- Pull request를 올리면 자동으로 기본적인 동작을 테스트합니다. 테스트를 통과하지 못한 코드는 제출하실 수 없습니다.
- Pull request에 달린 리액션 수 또한 평가에 반영됩니다.
- 코드는 파이썬 3.5 이상에서 동작해야 합니다.
- 외부 모듈을 사용하지 마세요. 표준 라이브러리만 사용해서 작성되어야 합니다.
- 제출 기한은 8월 15일 오후 5시까지입니다.
대상 수상자에게는 아이패드 미니 2가 증정됩니다. 이외 다양한 부문에서 수상작이 선정될 예정이며, 모든 수상자에게는 소정의 상품을 드립니다.
행사 참여는 누구나 가능하지만 수상자는 PyCon APAC 2016 참가자로 제한합니다.
수상작 목록은 2016년 8월 31일 스포카 기술 블로그에서 공개됩니다.