Un giorno in spiaggia


14

Ispirato da questa sfida


Obbiettivo:

L'obiettivo è disegnare onde che si infrangono su una spiaggia.

Ingresso:

Ti verranno dati 3 numeri interi (in qualunque formato tu voglia) come input.
Il primo numero intero sarà la lunghezza del disegno Il secondo numero intero sarà l'indice del banco di sabbia, dove le onde iniziano a crestare (almeno 3 spazi dalla spiaggia)
Il terzo numero intero sarà la spaziatura tra le onde (almeno 3, può essere maggiore della lunghezza del disegno, nel qual caso si disegna solo un'onda)

Produzione:

L'output sarà una scatola di personaggi che mostra le onde che si infrangono sulla spiaggia. Il disegno dovrebbe terminare quando la prima ondata ha completato lo schianto sulla spiaggia.

Inizialmente, l'onda viene mostrata come swell ( _-_).
Quando l'onda passa il banco di sabbia, inizia a crest ( /c_).
Alla fine l'onda si schianta sulla spiaggia ( /c.=> _-_=> ___=> __.).

Esempi:

Ingresso: 14 4 6

Produzione:

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

Ingresso: 10, 2, 11

Produzione:

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

Ingresso: 6 0 3

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

Regole:

Si applicano scappatoie standard

Questo è quindi vince il codice più corto


2
·non è ASCII, che può escludere alcune lingue. Può essere sostituito da .?
Luis Mendo,

@LuisMendo La spiaggia dovrebbe essere il periodo ASCII. L'esempio dell'onda che si schianta sulla spiaggia è dovuto al fatto che il periodo è praticamente invisibile altrimenti.
fəˈnɛtɪk,

1
Il che mi porta alla domanda opposta: possiamo usare al ·posto del periodo ASCII? (In realtà è una vittoria piuttosto grande nel mio codice.)
Arnauld

Utilizzando uno o dovrebbe andare bene. L'idea è che l'output del codice appaia coerente con gli output di esempio.
fəˈnɛtɪk,

Risposte:


5

JavaScript (ES6), 250 243 byte

Questo codice presuppone la codepage n. 1252 e utilizza il ·carattere (0xB7). Accetta input come 3 parametri distinti (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)

Come funziona

Questo codice inizia con una stringa come -______··e applica espressioni regolari successive su ogni iterazione per animare le onde.

Ad esempio -__viene sostituito con _-_.

All'inizio sembrava un'idea ragionevole. Tuttavia, il fatto che la stringa possa iniziare con ac (come nel caso del terzo test) rende le cose significativamente più complicate.

Casi test


2

Lotto, 273 243 byte

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

Nota: spazio finale sulla riga 4. Se solo i due personaggi della spiaggia fossero diversi, potrei salvare 3 byte e battere JavaScript!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.