Sahilde bir gün


14

Bu meydan okumadan ilham alındı


Hedef:

Amaç bir kumsala çarpan dalgalar çizmektir.

Giriş:

Size giriş olarak 3 tamsayı (istediğiniz formatta) verilecektir.
İlk tamsayı çizimin uzunluğu olacaktır. İkinci tamsayı, dalgaların tepeye başladığı kum plajının endeksi olacaktır (kumsaldan en az 3 boşluk)
Üçüncü tamsayı, dalgalar arasındaki boşluk olacaktır (en az 3, çizim uzunluğundan daha büyük olması, bu durumda yalnızca bir dalga çizmeniz gerekir)

Çıktı:

Çıktı, sahile çarpan dalgaları gösteren bir karakter kutusu olacaktır. İlk dalga plaja çarpmayı bitirdiğinde çizim sona ermelidir.

İlk başta, dalga bir şişme ( _-_) olarak gösterilir .
Dalga kum çubuğunu geçerken, tepeye başlar ( /c_).
Son olarak, dalga plaja çarpar ( /c.=> _-_=> ___=> __.).

Örnekler:

Giriş: 14 4 6

Çıktı:

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

Giriş: 10, 2, 11

Çıktı:

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

Giriş: 6 0 3

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

Kurallar:

Standart Loopholes uygulanır

Bu bu yüzden en kısa kod kazanır


2
·, bazı dilleri hariç tutabilecek ASCII değildir. İle değiştirilebilir .mi?
Luis Mendo

@LuisMendo Plajın ASCII dönemi olması gerekiyordu. Plaja çarpan dalga örneği, dönemin pratik olarak görünmez olmasından kaynaklanmaktadır.
fəˈnɛtɪk

1
Bu beni ters soruya yönlendiriyor: ·ASCII dönemi yerine kullanabilir miyiz ? (Aslında benim
kodumda

İkisinden birini kullanmak iyi olmalı. Buradaki fikir, kod çıktısının örnek çıktılarla tutarlı görünmesidir.
fəˈnɛtɪk

Yanıtlar:


5

JavaScript (ES6), 250 243 bayt

Bu kod, kod sayfası # 1252 varsayıyor ve ·(0xB7) karakterini kullanıyor . Girdiyi 3 ayrı parametre olarak alır (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)

Nasıl çalışır

Bu kod -______··, dalgaları canlandırmak için her yinelemede ardışık düzenli ifadeler gibi bir dizeyle başlar ve bunları uygular.

Örneğin -__, ile değiştirilir _-_.

İlk başta, makul bir fikir gibi görünüyordu. Bununla birlikte, dizenin bir c(3. test durumunda olduğu gibi) ile başlayabilmesi , işleri önemli ölçüde daha karmaşık hale getirir.

Test senaryoları


2

Toplu, 273243 bayt

@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%

Not: 4. satırda sondaki boşluk. Sadece iki plaj karakteri farklı olsaydı, 3 bayt kaydedebilir ve aslında JavaScript'i yenebilirdim!

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.