Une journée à la plage

14

Inspiré par ce défi


Objectif:

L'objectif est de dessiner des vagues qui s'écrasent sur une plage.

Contribution:

Vous recevrez 3 entiers (dans le format de votre choix) en entrée.
Le premier entier sera la longueur du dessin Le deuxième entier sera l'index du banc de sable, où les vagues commencent à crête (au moins 3 espaces de la plage)
Le troisième entier sera l'espacement entre les vagues (au moins 3, peut être supérieure à la longueur du dessin, auquel cas vous ne dessinez qu'une seule vague)

Production:

La sortie sera une boîte de caractères qui montre les vagues qui s'écrasent sur la plage. Le dessin devrait se terminer lorsque la première vague a fini de s'écraser sur la plage.

Au début, l'onde est représentée par une houle ( _-_).
Lorsque la vague passe le banc de sable, elle commence à crêter ( /c_).
Enfin, la vague s'écrase sur la plage ( /c.=> _-_=> ___=> __.).

Exemples:

Entrée: 14 4 6

Production:

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

Entrée: 10, 2, 11

Production:

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

Entrée: 6 0 3

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

Règles:

Les échappatoires standard s'appliquent

C'est le donc le code le plus court gagne

fəˈnɛtɪk
la source
2
·n'est pas ASCII, ce qui peut exclure certaines langues. Peut-il être remplacé par .?
Luis Mendo
@LuisMendo La plage est censée être la période ASCII. L'exemple des vagues qui s'écrasent sur la plage est dû au fait que la période est pratiquement invisible sinon.
fəˈnɛtɪk
1
Ce qui m'amène à la question opposée: pouvons-nous utiliser à la ·place de la période ASCII? (C'est en fait une victoire assez importante dans mon code.)
Arnauld
Utiliser soit ou devrait être bien. L'idée est que la sortie de code semble cohérente avec les sorties d'exemple.
fəˈnɛtɪk

Réponses:

5

JavaScript (ES6), 250 243 octets

Ce code suppose la page de codes # 1252 et utilise le ·caractère (0xB7). Prend l'entrée comme 3 paramètres distincts (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)

Comment ça fonctionne

Ce code commence par une chaîne telle que -______··et applique des expressions régulières successives à chaque itération pour animer les vagues.

Par exemple, -__est remplacé par _-_.

Au début, cela ressemblait à une idée raisonnable. Cependant, le fait que la chaîne puisse commencer par un c(comme dans le troisième cas de test) complique considérablement les choses.

Cas de test

Arnauld
la source
2

Lot, 273 243 octets

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

Remarque: l'espace de fin sur la ligne 4. Si seulement les deux caractères de plage étaient différents, je pourrais économiser 3 octets et battre réellement JavaScript!

Neil
la source