Zorluk Açıklaması
Terminalde yağmur simülasyonu göstermelisin.
Aşağıda verilen örnekte rastgele 100 yağmur damlası eklemek (dilinizin sunduğu varsayılan rastgele işlevi kullanın) koordinatlar, 0,2 saniye bekleyin ve sonra verilen süre sona erene kadar tekrar çizin. Yağmur damlasını temsil etmek için herhangi bir karakter kullanılabilir.
Parametreler
- Birkaç saniye içinde yeniden çizme arasında bekleyin.
- Yağmurun görünür olacağı süre. Bu sadece yineleme sayısını gösteren bir tamsayıdır. [Yani, yağmurun görünür olacağı net süre, bekleme süresi ile çarpılan bu tamsayıdır]
- Yağmur sona erdiğinde görüntülenecek mesaj. (Bu ortalanmalı)
- Ekranda gösterilecek yağmur damlası sayısı.
kurallar
- Bir yağmur damlasını temsil etmek için tek bir bayt kullanılmalı ve herhangi bir şey olabilir, kediler ve köpekler bile.
- Terminal boyutuna duyarlı olması gerekmez, bu da çeşitli terminal boyutları için hatayı işlemenize gerek olmadığı anlamına gelir. Terminal genişliğini ve yüksekliğini kendiniz belirleyebilirsiniz.
- Standart golf kuralları geçerlidir.
Kod örneği ve çıktı
Bu, ncurses kullanarak python 2.7 ile yazılmış ungolfed sürümüdür.
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()
Çıktı -