चुनौती का वर्णन
आपको टर्मिनल में बारिश का अनुकरण दिखाना होगा।
नीचे दिए गए उदाहरण में यादृच्छिक पर 100 रेनड्रॉप्स जोड़ने (डिफ़ॉल्ट यादृच्छिक फ़ंक्शन का उपयोग करें जो आपकी भाषा प्रदान करती है) समन्वय करती है, 0.2 सेकंड तक प्रतीक्षा करती है और फिर दिए गए समय समाप्त होने तक फिर से रीड्राविंग करती है। किसी भी चरित्र का उपयोग वर्षा की बूंद के प्रतिनिधित्व के लिए किया जा सकता है।
पैरामीटर
- सेकेंडों में पुनर्वितरण के बीच समय की प्रतीक्षा करें।
- समय जिसके लिए बारिश दिखाई देगी। यह पुनरावृत्तियों की संख्या का प्रतिनिधित्व करने वाला एक पूर्णांक है। [तो, शुद्ध समय जिसके लिए बारिश दिखाई देगी, यह पूर्णांक प्रतीक्षा समय से गुणा है]
- वर्षा समाप्त होने पर प्रदर्शित होने वाला संदेश। (यह केंद्रित किया जाना है)
- स्क्रीन पर प्रदर्शित होने वाली वर्षाबूंदों की संख्या।
नियम
- एक एकल बाइट का उपयोग बारिश की बूंद का प्रतिनिधित्व करने के लिए किया जाना चाहिए, और यह कुछ भी हो सकता है, यहां तक कि बिल्लियों और कुत्ते भी।
- यह टर्मिनल आकार के लिए उत्तरदायी नहीं है जिसका अर्थ है कि आपको विभिन्न टर्मिनल आकारों के लिए बग को संभालना नहीं है। आप अपने दम पर टर्मिनल की चौड़ाई और ऊंचाई निर्दिष्ट कर सकते हैं।
- गोल्फिंग के मानक नियम लागू होते हैं।
कोड नमूना और आउटपुट
यह एक ungolfed संस्करण है जो अजगर 2.7 में ncurses का उपयोग करके लिखा गया है।
import curses
import random
import time
myscreen = curses.initscr()
curses.curs_set(0) # no cursor please
HEIGHT, WIDTH = myscreen.getmaxyx()
RAIN = '/' # this is what my rain drop looks like
TIME = 10
def make_it_rain(window, tot_time, msg, wait_time, num_drops):
"""
window :: curses window
time :: Total time for which it rains
msg :: Message displayed when it stops raining
wait_time :: Time between redrawing scene
num_drops :: Number of rain drops in the scene
"""
for _ in range(tot_time):
for i in range(num_drops):
x,y=random.randint(1, HEIGHT-2),random.randint(1,WIDTH-2)
window.addstr(x,y,RAIN)
window.refresh()
time.sleep(wait_time)
window.erase()
window.refresh()
window.addstr(HEIGHT/2, int(WIDTH/2.7), msg)
if __name__ == '__main__':
make_it_rain(myscreen, TIME, 'IT HAS STOPPED RAINING!', 0.2, 100)
myscreen.getch()
curses.endwin()
आउटपुट -