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


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


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!

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.