วันที่ชายหาด


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 ซึ่งอาจยกเว้นบางภาษา มันสามารถถูกแทนที่ด้วย.?
Luis Mendo

@LuisMendo ชายหาดควรจะเป็นช่วงเวลา ASCII ตัวอย่างของคลื่นกระแทกลงชายหาดเนื่องจากช่วงเวลาที่มองไม่เห็นในทางปฏิบัติ
fəˈnɛtɪk

1
สิ่งใดทำให้ฉันมีคำถามตรงข้าม: เราสามารถใช้·แทนช่วงเวลา ASCII ได้หรือไม่ (อันที่จริงมันเป็นชัยชนะที่ค่อนข้างใหญ่ในรหัสของฉัน)
Arnauld

ใช้อย่างใดอย่างหนึ่งหรือควรจะดี แนวคิดคือโค้ดเอาต์พุตปรากฏสอดคล้องกับเอาต์พุตตัวอย่าง
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 หากมีเพียงอักขระชายหาดสองตัวที่แตกต่างกันฉันสามารถบันทึก 3 ไบต์และเอาชนะ JavaScript ได้จริง!

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.