Arka fon
Kuzey Yarımküre'de yaz sona ermiştir ve çoğumuz güneşi, plajları, okyanus dalgalarını özlüyoruz ... Bu zorluk, onları denizleri hatırlatarak neşelendirmeyi hedefliyor.
Meydan okuma
İşte deniz:
** ** ** ** **
**** **** **** **** ****
***** ***** ***** ***** *****
** ** ** ** ** ** ** ** ** **
** ** ** ** ** ** ** ** ** **
** ****** ****** ****** ****** ****
Deniz bu dalga düzeninin 5 katıdır:
**
****
*****
** **
** **
* *****
Desenin 16 karakter uzunluğunda olduğunu ve denizin 5 kez denizde olduğunu unutmayın; bu desen = 80 karakter uzunluğundadır.
Bu komut satırını kullanarak bir terminale yazdırabilirsiniz:
perl -e 'print " ** \n **** \n ***** \n ** ** \n ** ** \n* *****\n"'
Ya da bu :
perl -e 'print " "x12, "*"x2, " "x2, "\n", " "x8, "*"x4, " "x4, "\n", " "x5, "*"x5, " "x6, "\n", " "x3, "*"x2, " "x3, "*"x2, " "x6, "\n", " "x1, "*"x2, " "x6, "*"x2, " "x5, "\n", "*"x1, " "x10, "*"x5, "\n"'
(İkincisi, tam deseni elde etmenizi kolaylaştırması gerekir)
Senin görevin denizi bir terminalde görüntülemek ve dalgalar sağa doğru hareket ediyor gibi görünmesini sağlamak: her 100ms'de (= saniyede 10 kez) 1 karakter hızında sağa kayması gerekiyor. 80. sütundan sonra hiçbir karakter yazdırılmamalı, ancak en sağdaki dalga kaybolduğunda, solda yeni bir tane görünür.
İşte bir çıktı örneği:
süre = 0.0 sn
** ** ** ** **
**** **** **** **** ****
***** ***** ***** ***** *****
** ** ** ** ** ** ** ** ** **
** ** ** ** ** ** ** ** ** **
** ****** ****** ****** ****** ****
zaman = 0.1 sn
** ** ** ** **
**** **** **** **** ****
***** ***** ***** ***** *****
** ** ** ** ** ** ** ** ** **
** ** ** ** ** ** ** ** ** **
*** ****** ****** ****** ****** ***
süre = 0.2 sn
* ** ** ** ** *
**** **** **** **** ****
***** ***** ***** ***** *****
** ** ** ** ** ** ** ** ** **
** ** ** ** ** ** ** ** ** **
**** ****** ****** ****** ****** **
zaman = 0.3 sn
** ** ** ** **
**** **** **** **** ****
***** ***** ***** ***** *****
** ** ** ** ** ** ** ** ** **
** ** ** ** ** ** ** ** ** **
***** ****** ****** ****** ****** *
süre = 0.4 s
** ** ** ** **
* **** **** **** **** ***
***** ***** ***** ***** *****
** ** ** ** ** ** ** ** ** **
** ** ** ** ** ** ** ** ** **
****** ****** ****** ****** ******
Tabii ki, her çıktı öncekinin yerine geçmelidir.
Animasyonda nasıl görünmesi gerektiğini görmek için bu kodu bir unix terminalinde çalıştırabilirsiniz:
perl -M5.010 -MTime::HiRes=sleep -E '@arr=([($")x12,($n="*")x2,($")x3],[($")x8,($n)x4,($")x4],[($")x5,($n)x5,($")x6],[($")x3,($n)x2,($")x3,($n)x2,($")x6],[($")x1,($n)x2,($")x6,($n)x2,($")x5],[($n)x1,($")x10,($n)x5]);while(++$j){for$i(0..5){for$k(0..15) {$out[$i][16*$_+$k]=$arr[$i][($k-$j)%16]for 0..4}}say"\e[H",$/,join$/,map{join"",@$_}@out;sleep 0.1}'
(Bu kodun çok iyi golf olmadığını unutmayın: Ben sadece bir terminalde çalışmaya uygun olacak kadar kompakt yaptım.)
Kazanma kriteri
Bu codegolf, bayt kazanma sayısındaki en kısa kod.