ビーチでの一日


14

この挑戦に触発された


ゴール:

目標は、ビーチに打ち寄せる波を描くことです。

入力:

入力として3つの整数(任意の形式)が与えられます。
最初の整数は図面の長さ、2番目の整数は砂州のインデックスで、波が波紋を開始します(ビーチから少なくとも3スペース)
3番目の整数は波の間隔(少なくとも3、描画の長さよりも長くしてください。この場合、1つの波だけを描画します)

出力:

出力は、ビーチに打ち寄せる波を示す文字のボックスになります。最初の波が浜辺への衝突を完了したら、図面は終了するはずです。

最初は、波はうねりとして表示され_-_ます()。
波が砂州を通過すると、波が始まります(/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ピリオドの代わりに使用できますか?(実際、私のコードではかなり大きな勝利です。)
アーナルド

どちらかを使用しても問題ありません。アイデアは、コード出力が出力例と一致しているように見えるということです。
fəˈnɛtɪk

回答:


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)

使い方

このコードはなどの文字列で始まり、-______··各反復で連続する正規表現を適用して波をアニメーション化します。

たとえば、-__に置き換えられます_-_

最初は、合理的なアイデアのように見えました。ただし、文字列がc(3番目のテストケースのように)で始まる可能性があるという事実により、事態はさらに複雑になります。

テストケース


2

バッチ、273 243バイト

@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行目の末尾のスペース。2つのビーチキャラクターのみが異なる場合、3バイトを節約して実際にJavaScriptを打ち負かすことができます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.