ASCII 아트를 떨어지는 눈에서 시작되는 애니메이션 눈 장면으로 변환하는 가장 짧은 프로그램을 작성하십시오 ( 골프되지 않은 JavaScript 예제는 2011-12-19에 마지막으로 업데이트 됨).
입력 사양 : 프로그램은 공백, 별표 및 줄 바꿈을 임의로 조합하여 사용해야합니다. 입력은 최대 23 행과 80 문자를 포함합니다. 빈 줄은 없지만 줄은 공백만으로 구성 될 수 있습니다. 단일 후행 줄 바꿈이 포함되며 무시해야합니다.
출력 : 사용자가 프로그램을 수동으로 종료 할 때까지 운영 체제의 텍스트 콘솔 또는 터미널 에뮬레이터에 대한 ASCII 문자 (공백, 별표) 및 제어 코드 (캐리지 리턴, 줄 바꿈, ANSI 이스케이프 코드 등)를 출력합니다. 운영 체제에서 해당 설정을 허용하는 경우 터미널 창이 80x24 자라고 가정 할 수 있습니다.
규칙 :
- 애니메이션은 부드럽고 빠릅니다 (15fps 선호).
- 눈의 밀도는 5 %에서 15 % 사이 여야합니다.
- 초당 하나 이상의 눈 화면이 스크롤 될 수 있습니다. 즉, 1 초에 24 줄을 초과하여 새로운 눈을 추가 할 수 있습니다.
- 눈이 화면 상단으로 들어갈 때 눈에 뚜렷한 패턴이 표시되어서는 안됩니다. 무작위로 보여야합니다.
- 프로그램은 시작될 때 가능한 빨리 화면의 모든 행을 눈으로 채워야합니다. 화면의 개별 행을 처음 채우는 것이 시청자에게 분명하지 않아야합니다.
- 입력 ASCII 아트의 왼쪽 아래 모서리는 화면의 왼쪽 아래 모서리에 있어야합니다 (자세한 설명은 그림 1).
- ASCII 아트 내부 또는 아래 영역에 별표가 영구적으로 채워져 있으면 안됩니다. 그러나 별표는이 영역을 스크롤 할 수 있지만 반드시 그럴 필요는 없습니다.
- 입력에 표시된 것을 제외하고 화면 하단이나 기존 눈 위에 눈이 쌓이지 않아야합니다.
- 공백을 반대 순서로 채우면 크리스마스 트리 애니메이션이 원래 코드의 출력과 매우 다르게 보이기 때문에 아래쪽 공백은 위쪽 공백보다 먼저 채워야합니다. (2011-12-20에 추가됨)
즐거운 휴일 보내세요!
그림 1 : 80x24 화면의 레이블이있는 영역
---------------------------New snow added on this line--------------------------
|
|
----------------------------------------------------------+ |
**** | |
Snow MUST fall Snow MAY fall ----------------> **** | |
through this through these **** **** | Snow MUST fall |
area. areas of a **** **** | through this |
completed \---------> **** ****| area. |
ASCII art scene. \ *** **** ****| |
area \ \ ******* **** ****| |
\ \ ******** *** ***| (ALL CAPS terms |
(located in \ \--> ********* *** | have standard |
lower left \ ******* ****** MAY | RFC 2119 |
corner of \ ************* ** fall | meanings.) |
screen) \ *********** here | |
*** +---> **** *** | |
*** | **************** *** | |
| Snow MUST fall *** | **************** *** | |
| through this *** +---> *** | |
| area. *** | **************** *** | |
--+---------------------+*** +---> ***+----+------------------+--
| Snow MUST NOT |****************************| Snow MUST NOT |
V accumulate here. |****************************| accumulate here. V
입력 예
코드 골프 배너
****** ******* ******** ******** ****** ******* ** ********
** ** ** ** ** ** ** ** ** ** ** ** **
** ** ** ** ** ** ** ** ** ** **
** ** ** ** ** ****** ** **** ** ** ** ******
** ** ** ** ** ** ** ** ** ** ** **
** ** ** ** ** ** ** ** ** ** ** ** **
****** ******* ******** ******** ****** ******* ******** **
스택 오버플로 로고
****
****
**** ****
**** ****
**** ****
*** **** ****
******* **** ****
******** *** ***
********* ***
******* ******
************* **
***********
*** **** ***
*** **************** ***
*** **************** ***
*** ***
*** **************** ***
*** ***
****************************
****************************
크리스마스 트리
*
*** *
* ***** ***
*** ******* * *****
***** ********* *** *
* *********** *****
* ************* *******
* *** *************** * *
*** ***** ***************** ***
***** ******* ******************* *****
******* * ********************* *******
********* * *********
* *