จงเขียนโปรแกรมที่สั้นที่สุดที่จะทำให้ชิ้นส่วนของศิลปะ ASCII ใด ๆ ลงในฉากหิมะเคลื่อนไหวที่จะเริ่มขึ้นในรูปแบบจากหิมะตก ( ตัวอย่างที่ไม่แข็งแรงเล่นกอล์ฟ JavaScriptปรับปรุงล่าสุด 2011/12/19)
ข้อมูลจำเพาะของการป้อนข้อมูล : โปรแกรมของคุณจะต้องยอมรับช่องว่าง, เครื่องหมายดอกจันและการขึ้นบรรทัดใหม่โดยพลการ อินพุตจะมีได้สูงสุด 23 บรรทัดและ 80 อักขระต่อบรรทัด จะไม่มีบรรทัดว่างเปล่า แต่บรรทัดอาจประกอบด้วยช่องว่างเท่านั้น ขึ้นบรรทัดใหม่ที่ต่อท้ายเดียวจะรวมอยู่และจะต้องละเว้น
เอาต์พุต : อักขระ ASCII เอาต์พุต (ช่องว่าง, เครื่องหมายดอกจัน) และรหัสควบคุม (carriage return, linefeeds, รหัสหลบหลีก ANSI ฯลฯ ) สำหรับคอนโซลข้อความของระบบปฏิบัติการหรือเทอร์มินัลอีมูเลเตอร์จนกว่าผู้ใช้จะยกเลิกโปรแกรมด้วยตนเอง คุณอาจถือว่าหน้าต่างเทอร์มินัลคือ 80x24 ตัวอักษรหากระบบปฏิบัติการของคุณอนุญาตการตั้งค่านั้น
กฎ :
- ภาพเคลื่อนไหวจะต้องราบรื่นและรวดเร็ว (ต้องการ 15 fps)
- ความหนาแน่นของหิมะจะต้องอยู่ระหว่าง 5% ถึง 15%
- ไม่สามารถเลื่อนหิมะได้มากกว่าหนึ่งหน้าจอต่อวินาที (นั่นหมายความว่าจะไม่มีการเพิ่มหิมะใหม่เกิน 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
ตัวอย่างอินพุต
รหัสแบนเนอร์กอล์ฟ
****** ******* ******** ******** ****** ******* ** ********
** ** ** ** ** ** ** ** ** ** ** ** **
** ** ** ** ** ** ** ** ** ** **
** ** ** ** ** ****** ** **** ** ** ** ******
** ** ** ** ** ** ** ** ** ** ** **
** ** ** ** ** ** ** ** ** ** ** ** **
****** ******* ******** ******** ****** ******* ******** **
โลโก้สแต็คล้น
****
****
**** ****
**** ****
**** ****
*** **** ****
******* **** ****
******** *** ***
********* ***
******* ******
************* **
***********
*** **** ***
*** **************** ***
*** **************** ***
*** ***
*** **************** ***
*** ***
****************************
****************************
ต้นคริสต์มาส
*
*** *
* ***** ***
*** ******* * *****
***** ********* *** *
* *********** *****
* ************* *******
* *** *************** * *
*** ***** ***************** ***
***** ******* ******************* *****
******* * ********************* *******
********* * *********
* *