introduction
C'est 2600 avant JC et les gens construisent des pyramides maintenant. Ils ont déjà fait la base de la pyramide mais ne savent pas comment continuer. Alors, ils t'ont appelé pour de l'aide.
Les règles de fabrication d'une pyramide sont assez simples. Pour le calque au-dessus du calque précédent, il vous suffit de suivre ce guide manuel étape par étape:
Coupez les bords du calque précédent.
Au-dessus du
/
personnage, il doit y avoir un\
personnage et vice versa. Cela s'applique à tous les caractères à l' exception des bords.Le caractère le plus à gauche est toujours un
/
et le caractère le plus à droite est toujours\
.
Prenons un exemple de base pour une pyramide:
//\/\/\\
Nous coupons les bords, laissant:
/\/\/\
Nous changeons les barres obliques avec des barres obliques inverses et vice versa:
\/\/\/
Le caractère le plus à gauche est toujours un /
et le caractère le plus à droite est toujours un \
, nous changeons donc cela:
//\/\\
Nous plaçons cette couche sur la couche précédente:
//\/\\
//\/\/\\
Nous continuons jusqu'à ce que le sommet soit atteint (ce qui ressemble /\
). Donc, finalement, nous obtenons:
/\
//\\
//\/\\
//\/\/\\
C'est ce dont vous avez besoin pour sortir.
La tâche
Étant donné la base d'une pyramide (d'une longueur supérieure à 3), sortez la pyramide complète. Vous pouvez sans risque supposer que le caractère le plus à gauche est /
et le caractère le plus à droite est a \
. Vous pouvez également supposer que la longueur de la base est toujours égale . L'utilisation d' espaces de fin est autorisée. L'utilisation d' espaces de tête est également autorisée, tant que la pyramide reste en place. L'utilisation de 1 arrière et 1 grands sauts de ligne est autorisée.
Cas de test
Input: /\\\
Output:
/\
/\\\
Input: //\\///\/\
Output:
/\
/\\\
/\///\
///\\\/\
//\\///\/\
Input: /////////////\
Output:
/\
/\\\
/////\
/\\\\\\\
/////////\
/\\\\\\\\\\\
/////////////\
C'est du code-golf , donc la soumission avec le moins d'octets gagne!
Réponses:
Gelée ,
28 26 2524 octets-4 octets grâce à Dennis
Recette:
(servir avec de la limonade, ces pyramides font pour les travailleurs assoiffés)
Cuisinez votre propre pyramide slash sur TryItOnline , ou essayez tous les dégustateurs suggérés par l' OP
la source
Rétine ,
59565452 octetsEssayez-le en ligne!
Exemple de sortie
la source
Pyth -
2726 octetsRéduit de l'opération donnée dans l'OP jusqu'à ce qu'il se répète, ce qui est le cas pour la ligne vierge.
Suite de tests .
la source
Python 2, 78 octets
Une fonction récursive qui génère une chaîne. Chaque couche de la pyramide est ajoutée à l'appel récursif avec la couche au-dessus. Le préfixe
p
, qui commence comme un caractère de nouvelle ligne gagne un espace de plus pour faire le triangle. Le calque suivant est produit en échangeant des barres obliques, en coupant les deux premier et dernier symboles et en le plaçant dans une barre oblique gauche et droite.Python 3 peut enregistrer un octet en faisant
*99
danstranslate
, comme l'exigence de longueur 256 a été supprimée.la source
Haskell,
98949085 octetsExemple d'utilisation (remarque: dans les barres obliques inversées Haskell, les chaînes littérales doivent être échappées
\\
):Approche récurrente simple:
#
fait le travail en cartographiants
, ce qui inverse le/
et\
, sur les éléments internes. Le paramètre supplémentairet
garde une trace du niveau d'indentation et est développé par un espace sur chaque appel récursif.Remarque: le deuxième appel récursif de
#
(->l#""
) saute directement au cas de base et n'est qu'un court moyen d'ajouterl
,\
et une nouvelle ligne, c'est-à-dire qu'elle remplace++l++"\\\n"
.Modifier: @xnor a enregistré 5 octets. Merci!
la source
l++"\\\n"
ressemblel#""
.s
est[c|x<-s,c<-"ab",c/=x]
.++"\\\n"
, mais j'ai raté celle-ci. Merci!Python 3,
108 104 101 94 91 8988 octets-7 octets grâce à xnor (me faisant savoir que nous n'avons pas besoin d'imprimer!)
-3 octets grâce à xnor (prise de déclaration en dehors de la déclaration de fonction [d'oh])
-1 octet grâce à Dennis (remplacer
f,b='/\\'
parb,f='\/'
)Testez-le sur ideone . Remarque: entrée ajustée pour la double barre oblique inverse (même les chaînes brutes ne fonctionneront pas si elles se terminent par un nombre impair de barres obliques inverses).
la source
f,b='/\\'
dehors de la fonction.JavaScript (ES6),
9186 octetsLa sortie comprend un caractère de nouvelle ligne de tête.
la source
Ruby, 80 octets
Non golfé
Voir sur ideone: http://ideone.com/HN0l0Y
la source
f
dans le corpsLot, 137 octets
Idéalement, mon utilisation de
%~2
et%1
signifie que j'évite d'avoir à dépenser des octetssetlocal
. Explication: Étant donné que Batch n'effectuera pas de remplacements sur la chaîne vide, nous devons configurer le calque suivant avec les «mauvais» bords, qui seront ensuite corrigés dans le cadre des remplacements de chaînes.la source
BASH (sed + sort)
7166 octetsl'entrée vient de stdin.
Exemple:
Explication:
-n
- supprimer l'impression automatique:l
- ettl
ramener au début si cette ligne était autre chose que/\
p
- imprimer cette ligney|\\/|1\\|;y|1|/|
- remplacer\
par1
,/
avec\
, puis1
avec/
th;:h
- tester et sauter au même endroit, de sorte que seule la substitution suivante soit testée plus tards|\\.(.*)./| /\1\\|
- remplacer les deux côtés coupés de chaque côté par{space}/
et\
sort
-space
vient avant/
, cela met donc tout dans le bon ordrela source
05AB1E,
423836 octetsEssayez-le en ligne!
Explication:
(Merci à Emigna de l' avoir signalé
DD -> Ð
etDR -> Â
).la source
Dg;GDðK¦¦¨¨„/\‡'\«R'/«ðN׫R}r»
enregistre 7 octets.Go,
300276 octetsVersion longue:
la source
import(."regexp";."os")
enregistre 2 octetsPerl,
5352 octetsComprend +1 pour
-p
Exécuter avec l'entrée sur STDIN, par exemple
pyramid.pl
:la source
05AB1E , 31 octets
Explication
Essayez-le en ligne
la source
> <> ,
186179175171 octetsoooh mec c'est certainement ma plus grande réponse> <> pour le moment.
Il y a probablement encore du golf à faire (la zone inférieure est assez inutile)
Essayez-le en ligne
la source
Powershell, 142 octets
la source
C #, 250 octets
Peut certainement être joué plus loin mais mon cerveau est mort alors j'ai décidé de le laisser tel quel pour le moment.
la source