해변에서 하루


14

이 도전에서 영감을 얻은


골:

목표는 해변에 부서지는 파도를 그리는 것입니다.

입력:

입력으로 3 개의 정수 (원하는 형식)가 제공됩니다.
첫 번째 정수는 그림의 길이가됩니다. 두 번째 정수는 모래톱의 인덱스가되며, 여기서 파도는 볏이 시작됩니다 (해변에서 3 칸 이상)
. 세 번째 정수는 파도 사이의 간격이됩니다. 그림의 길이보다 길어야합니다.이 경우 한 개의 파도 만 그립니다.

산출:

출력은 해변으로 부서지는 파도를 보여주는 문자 상자가됩니다. 첫 번째 파도가 해변으로 추락하면 그림이 끝납니다.

처음에는 파도가 팽창 ( _-_) 으로 표시됩니다 .
파도가 모래톱을 지나갈 때 파문이 시작됩니다 ( /c_).
마지막으로 파도가 해변에 충돌합니다 ( /c.=> _-_=> ___=>__. ).

예 :

입력 : 14 4 6

산출:

-___________..  
_-__________..  
__-_________..  
___-________..  
___/c_______..  
____/c______..  
-____/c_____..  
_-____/c____..  
__-____/c___..  
___-____/c__..  
___/c____/c_..  
____/c____/c..  
-____/c____-_.  
_-____/c_____.  
__-____/c___..

입력 : 10, 2, 11

산출:

-_______..
_-______..
_/c_____..
__/c____..
___/c___..
____/c__..
_____/c_..
______/c..
_______-_.
_________.
________.. 

입력 : 6 0 3

c___..
/c__..
_/c_..
c_/c..
/c_-_.
_/c__.
c_/c..

규칙 :

표준 허점 적용

이것은 이므로 가장 짧은 코드가 승리합니다.


2
·ASCII가 아니므로 일부 언어를 제외 할 수 있습니다. 대체 할 수 있습니까 .?
Luis Mendo

@LuisMendo 해변은 ASCII 시대입니다. 파도가 해변에 충돌하는 예는 실제로는 보이지 않는 기간 때문입니다.
fəˈnɛtɪk

1
·ASCII 질문 대신 사용할 수 있습니까? (실제로 내 코드에서 다소 큰 승리입니다.)
Arnauld

또는 중 하나를 사용하는 것이 좋습니다. 아이디어는 코드 출력이 예제 출력과 일치하는 것으로 보입니다.
fəˈnɛtɪk

답변:


5

자바 스크립트 (ES6), (250) 243 바이트

이 코드는 코드 페이지 # 1252를 가정하고 ·문자 (0xB7)를 사용하고 있습니다. 입력을 3 개의 고유 한 매개 변수로 취합니다 (a,b,c).

(a,b,c,R=n=>'_'.repeat(n-2),s=(x=b?'-':'c')+R(a-1)+'··')=>(g=j=>s+`
`+((F=`__·$,_-_·,/c··,-__,^${C=R(b>2?b:2)}__-,/c_,^c_,^_${S=R(c)},_··,___·,_-_·,_-_,${C}/c_,_/c,/c,${x+S}`.split`,`).map((r,i)=>s=i&8?s:s.replace(RegExp(r,'g'),F[i+8])),j--?g(j):''))(a)

작동 원리

이 코드는 다음과 같은 문자열로 시작하고 -______··각 반복에 연속적인 정규 표현식을 적용하여 파도를 애니메이션합니다.

예를 들어 -__로 대체됩니다 _-_.

처음에는 합리적인 생각처럼 보였다. 그러나 문자열이 c(3 테스트 사례에서와 같이) 시작될 수 있다는 사실 은 일을 훨씬 더 복잡하게 만듭니다.

테스트 사례


2

배치, 273243 바이트

@echo off
set f=for /l %%i in (0,1,%1)do call
set s=set b=
%s%.. 
%f% %s%_%%b%%
%f%:c %%i %2 %3
exit/b
:c
set/aw=%1%%%3
if %w%==0 %s%__-%b:~3%
if %w%==%2 %s%%b:_-=/c%
%s%_%b:~0,-4%%b:~-3%
%s%%b:__. =_.. %
%s%%b:/.=-_%
echo %b:~3%

참고 : 4 행의 후행 공백 두 개의 해변 문자 만 다른 경우 3 바이트를 절약하고 실제로 JavaScript를 이길 수 있습니다!

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.