背景
北半球的夏天已经过去了,我们很多人想念阳光,海滩,海浪……这一挑战的目的是通过使他们联想起大海来振作起来。
挑战
这是大海:
** ** ** ** **
**** **** **** **** ****
***** ***** ***** ***** *****
** ** ** ** ** ** ** ** ** **
** ** ** ** ** ** ** ** ** **
** ****** ****** ****** ****** ****
海洋是这种波形的5倍:
**
****
*****
** **
** **
* *****
请注意,该模式的长度为16个字符,而海洋是此模式的5倍= 80个字符。
您可以使用以下命令行将其打印到终端中:
perl -e 'print " ** \n **** \n ***** \n ** ** \n ** ** \n* *****\n"'
或者这个:
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"'
(第二个应该使您更容易获得确切的模式)
您的任务是在终端中显示大海,并使波浪看起来像向右移动:它需要以每100ms 1个字符的速度向右移动(=每秒钟10次)。在第80列之后,不应再打印任何字符,但是随着最右边的波形消失,左侧将出现一个新的波形。
这是输出示例:
时间= 0.0秒
** ** ** ** **
**** **** **** **** ****
***** ***** ***** ***** *****
** ** ** ** ** ** ** ** ** **
** ** ** ** ** ** ** ** ** **
** ****** ****** ****** ****** ****
时间= 0.1秒
** ** ** ** **
**** **** **** **** ****
***** ***** ***** ***** *****
** ** ** ** ** ** ** ** ** **
** ** ** ** ** ** ** ** ** **
*** ****** ****** ****** ****** ***
时间= 0.2秒
* ** ** ** ** *
**** **** **** **** ****
***** ***** ***** ***** *****
** ** ** ** ** ** ** ** ** **
** ** ** ** ** ** ** ** ** **
**** ****** ****** ****** ****** **
时间= 0.3秒
** ** ** ** **
**** **** **** **** ****
***** ***** ***** ***** *****
** ** ** ** ** ** ** ** ** **
** ** ** ** ** ** ** ** ** **
***** ****** ****** ****** ****** *
时间= 0.4s
** ** ** ** **
* **** **** **** **** ***
***** ***** ***** ***** *****
** ** ** ** ** ** ** ** ** **
** ** ** ** ** ** ** ** ** **
****** ****** ****** ****** ******
当然,每个输出都应替换先前的输出。
您可以将此代码运行到unix终端中,以查看其在动画中的外观:
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}'
(请注意,这段代码并不是很好用:我只是将它压缩得足够紧凑,以方便在终端中运行。)
获奖标准
这是codegolf,因此以字节为单位的最短代码获胜。