배경
여름은 북반구에서 끝나고 우리 중 많은 사람들이 태양, 해변, 바다의 파도를 그리워합니다 ...이 도전은 바다를 상기 시켜서 그들을 격려하는 것을 목표로합니다.
도전
바다는 다음과 같습니다.
** ** ** ** **
**** **** **** **** ****
***** ***** ***** ***** *****
** ** ** ** ** ** ** ** ** **
** ** ** ** ** ** ** ** ** **
** ****** ****** ****** ****** ****
바다는이 파도 패턴의 5 배로 구성됩니다.
**
****
*****
** **
** **
* *****
패턴의 길이는 16 자이고 바다의 길이는이 패턴의 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.4 초
** ** ** ** **
* **** **** **** **** ***
***** ***** ***** ***** *****
** ** ** ** ** ** ** ** ** **
** ** ** ** ** ** ** ** ** **
****** ****** ****** ****** ******
물론 각 출력은 이전 출력을 대체해야합니다.
이 코드를 유닉스 터미널에서 실행하여 애니메이션과 어떻게 보이는지 확인할 수 있습니다.
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이므로 바이트 단위로 가장 짧은 코드가 승리합니다.