Ecrivez un programme ou une fonction qui dessine une chaîne de montagnes, où chaque plus grand sommet de montagne est "derrière" celui qui se trouve devant, et alterne le côté visible.
Ceci est une chaîne de montagnes de taille 1
/\
Ceci est une chaîne de montagnes de taille 2
/\
/\ \
Ceci est une chaîne de montagnes de taille 3
/\
/ /\
/ /\ \
Ceci est une chaîne de montagnes de taille 4
/\
/\ \
/ /\ \
/ /\ \ \
Ceci est une chaîne de montagnes de taille 5
/\
/ /\
/ /\ \
/ / /\ \
/ / /\ \ \
Etc.
Contribution
Un entier positif unique dans un format pratique , n > 0
.
Sortie
Une représentation ASCII-art de la chaîne de montagnes, en suivant les règles ci-dessus. Les nouvelles lignes et les autres espaces sont facultatifs, à condition que les pics s'alignent correctement.
Règles
- Un programme complet ou une fonction sont acceptables. Si une fonction est utilisée, vous pouvez renvoyer la sortie plutôt que de l’imprimer.
- Les échappatoires standard sont interdites.
- Il s’agit du code-golf, donc toutes les règles de golf habituelles s’appliquent et le code le plus court (en octets) gagne.
JavaScript (ES6), 75 octets
Le programme complet est actuellement légèrement plus court que la fonction récursive:
la source
Python 2, 67 octets
Imprime ligne par ligne, en accumulant la chaîne
s
en ajoutant alternativement une barre oblique à gauche ou à droite en fonction de la parité actuelle den
. Préfixes avec desn
espaces.Une autre façon de mettre à jour était la même longueur:
Une méthode récursive était plus longue (70 octets).
la source
Haskell, 77 octets
Usage:
Imprime ligne par ligne, en accumulant la chaîne s en ajoutant alternativement une barre oblique à gauche ou à droite en fonction de la parité actuelle de n. Préfixes avec n-1 espaces.
la source
Lot, 202 octets
Prend l'entrée en tant que paramètre de ligne de commande. Chute pour exécuter la dernière boucle.
la source
Ruby, 61 octets
Un port assez simple de la réponse JavaScript d' ETHproductions .
Voir sur repl.it: https://repl.it/EPU5/1
Ungolfed
la source
Haskell,
117 107 105 9790 octetsEssayez-le sur Ideone. Edit: 8 octets enregistrés avec une idée de Neil.
Version non-golfée:
Approche récursive. La forme de
n
est générée en ajoutant un espace devant chaque ligne de lan-1
forme et en prenant la dernière ligne den-1
et ajouter"/ "
avant sin
est impair ou" \"
après sin
est pair ... ou alors j'ai pensé avant de remarquer que cette dernière étape est inversée pour toutes les étapes récursives lorsque la finalen
est impaire. Par conséquent, un drapeaub
est passé qui alterne chaque appel récursif et détermine si la partie de montagne suivante est ajoutée à gauche ou à droite.la source
b
àodd n
chaque fois, pouvez - vous pas juste passer un drapeau au début et à retourner sur chaque appel récursif? Quelque chose commef n = unlines(p 0 n)
etlet m = p (1-b) (n-1)
.-b
est un autre caractère off.b
de jouer au golf plus loin, qui doit être0
ou1
.Java 7 130 octets
Ungolfed
la source
n%2
àn--%2
, et à la fois--n
àn
. EDIT: Et 1 plus en ajoutant,x=s+"\n"
et en modifiant à la foiss+"\n"
àx
. (Donc au total:String f(int n,String s){String l="",x=s+"\n";for(int i=1;i++<n;l+=" ");return n>1?n--%2<1?l+x+f(n,s+" \\"):l+x+f(n,"/ "+s):s;}
127 octets )C ++ 138 (fonction)
Une fonction :-
Programme complet: -
Remarque: la fonction
_getch()
peut avoir différents noms de prototype sur différents compilateurs.la source