在海滩上度过的一天


14

受此挑战启发


目标:

目的是绘制撞击到海滩上的海浪。

输入:

您将获得3个整数(任意格式)作为输入。
第一个整数将是图形的长度,第二个整数将是沙洲的索引,波浪开始波峰(距海滩至少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,可能会排除某些语言。可以替换为.吗?
路易斯·门多

@LuisMendo海滩应该是ASCII期间。浪涌入海滩的例子是由于该时期实际上是不可见的。
fəˈnɛtɪk

1
这就引出了相反的问题:我们可以使用·而不是ASCII句号吗?(这实际上是我的代码中的一个很大的胜利。)
Arnauld

使用或应该很好。想法是代码输出看起来与示例输出一致。
fəˈnɛtɪk

Answers:


5

JavaScript(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)

怎么运行的

此代码以字符串开头,例如 -______··并在每次迭代中应用连续的正则表达式以使wave动画化。

例如-__被替换为_-_

起初,这看起来像是一个合理的想法。但是,字符串可以以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!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.