Étant donné un entier non négatif, imprimez un X
qui est si grand. X
est la sortie pour l'entrée 0
, et vous ajouterez des barres obliques égales à l'entrée dans chaque direction pour étendre les X
entrées plus grandes.
Cas de test
0
X
1
\ /
X
/ \
2
\ /
\ /
X
/ \
/ \
...
dix
\ /
\ /
\ /
\ /
\ /
\ /
\ /
\ /
\ /
\ /
X
/ \
/ \
/ \
/ \
/ \
/ \
/ \
/ \
/ \
/ \
Règles
Vous pouvez soit imprimer la sortie, soit renvoyer une chaîne ou une liste de chaînes à partir d'une fonction. Une nouvelle ligne de fin, ainsi que des espaces intérieurs supplémentaires qui n'affectent pas l'apparence, sont autorisés.
C'est le golf de code , donc la réponse la plus courte en octets gagne!
X
le milieu (une partie de la raison pour laquelle je l'ai ajouté) mais qui sait: DRéponses:
Canevas , 3 octets
Essayez-le ici!
la moitié de la taille de la réponse au fusain: D
la source
Fusain , 6 octets
Vos bêtises ne m'arrêtent pas;)
Essayez-le en ligne!
la source
JavaScript (ES6), 79 octets
Utilise une fonction récursive g qui parcourt une grille et construit le caractère de sortie par caractère.
Comment?
Les variables x et y itèrent de 2n à -1 , où n est l'entrée.
Pour chaque position (x, y) dans la grille, nous choisissons l'un de ces caractères:
/
\
X
en utilisant les tests suivants:
~x
: Faux si x == -1 : nous avons atteint la fin de la ligne.x-y
: Faux si x == y : nous sommes situés sur l'anti-diagonale.x+y-w
: Faux si x + y == w : nous sommes situés sur la diagonale.x-n
: Faux si x == n : parce que ce test n'est effectué que lorsque x == y , cela signifie que nous sommes situés au centre exact de la grille.et l'arbre de décision suivant:
Démo
Afficher l'extrait de code
la source
MATL , 16 octets
Essayez-le en ligne!
Considérez l'entrée
2
comme exemple. La pile est montrée ici à l'envers, c'est-à-dire que les éléments inférieurs sont les derniers poussés.la source
C,
108106 octetsEssayez-le en ligne!
(−2 golf grâce à MD XF)
Il imprime deux caractères (au début,
c = 47
qui est une barre oblique etc + 45
, qui est une barre oblique inverse, puis ils sont échangés) avec une largeur de champ dynamique.Les largeurs de champ commencent à
1
et2n
, et à chaque itération, la première largeur est incrémentée de 1 et la seconde est décrémentée de 2.Lorsque la deuxième largeur de champ devient 0, elle génère
'X'
une nouvelle ligne au lieu des caractères normaux et inverse la direction des incréments (i
). Une nouvelle ligne est imprimée séparément pour toutes les autres lignes (puts("")
).la source
a,b,i=1,c;g(n){for(b=2*n,c=47;a+=i;b?puts(""):(i=-i,c=92),b-=2*i)printf("%*c%*c",a,b?c+45*i:88,b,b?c:10);}
essayez-le en ligne!shortC , 111 octets
Sur la base de ma réponse C . Conversions:
R
->printf(
P
->putchar(
W
->while(
O
->for(
");}
Cela utilise également des codes ASCII pour
\
et/
.Essayez-le en ligne!
la source
Python 2 , 81 octets
Essayez-le en ligne!
la source
C,
168155150 octets-5 grâce à Computronium
Peut certainement être joué au golf; Je le fais. Essayez-le en ligne!
Non golfé:
la source
V , 21 octets
Essayez-le en ligne!
Hexdump:
Explication:
Essentiellement, nous avons Insérer un X, n fois étendre les barres obliques .
Mais ce n'est pas aussi simple que cela, car nous devons également ajouter les barres obliques la première fois. Si les barres obliques étaient déjà là, nous pourrions écrire étendre les barres obliques comme suit :
Ce qui nous ferait économiser 6 octets.
la source
C #,
157122120 octetsVersion non golfée:
la source
_=d=>new string(' ',d);
(notez que vous n'avez pas besoin des accoladesd
). Vous pouvez supprimer les accolades autour de la boucle for. Utilisez une chaîne textuelle avec pour ne pas avoir à échapper à toutes les barres obliques inverses. Si vous définissez,i=0
vous pouvez le faire++i<a+1
et le supprimeri++
.\n
un saut de ligne réel, même si je ne sais pas si vous pourrez ensuite supprimer les accolades autour de la boucle for, vous devrez essayer.++i<a+1
pour++i<=a
EDIT. Vous pouvez également enregistrer 4 octets supplémentaires en changeant leFunc
denew string(' ',d)
au"".PadLeft(d)
_
.Mathematica, 71 octets
(Partiellement inspiré par la solution de 104 octets de Jenny_mathy)
Renvoie une liste de chaînes.
Explication:
IdentityMatrix[2#+1]
crée une matrice de la bonne taille avec 1s le long de la diagonale et 0s ailleurs. Ensuite, nous le multiplions par"\\"
(une barre oblique inversée), ce qui en fait une matrice avec des barres obliques inverses le long de la diagonale et 0s ailleurs, car bien sûr, 1 fois la barre oblique inverse est la barre oblique inverse et 0 fois la barre oblique inverse est 0. Nous ajoutons ceci aux"/"
fois son inverse pour faire la forme en X. Nous avons presque terminé, sauf qu'il y a toujours des 0 partout, et le milieu l'est"\\" + "/"
. Nous corrigeons ces deux choses en remplaçant" "
par0
et"X"
poura_+_
, ce qui correspond à n'importe quelle somme de deux choses (comme_+_
devrait, sauf que Mathematica est trop intelligent pour son propre bien et l'interprète comme 2 fois_
). Enfin,""<>#&/@
transforme cela en une liste de chaînes.la source
Java (OpenJDK 8) , 135 octets
Expression lambda qui prend et entier et renvoie un tableau de chaînes
Essayez-le en ligne!
Non golfé:
la source
T-SQL, 201 octets
Formaté:
L'entrée se fait via la colonne a dans le tableau nommé t , selon nos directives .
la source
Rubis , 66 octets
Fonction récursive.
Essayez-le en ligne!
Explication
la source
Gelée ,
2417 octetsEssayez-le en ligne!
Comment ça marche
-6 octets grâce à @LeakyNun et -1 octet avec une amélioration supplémentaire
la source
Lot, 201 octets
Commence par construire la ligne supérieure, puis après avoir imprimé chaque ligne, déplace l'
\
espace de droite et l'/
espace de gauche une fois, en s'assurant qu'ils forment unX
au milieu.la source
PHP , 115 octets
Essayez-le en ligne!
la source
Rétine , 74 octets
Essayez-le en ligne! Explication:
Placez le
X
.En commençant par le
X
, en remontant, placez une\
diagonale à gauche à chaque fois. Placez également/
deux espaces de plus après la/
dernière fois.En commençant par le
X
, en descendant, placez une/
diagonale à gauche à chaque fois. Placez également\
deux espaces de plus après la/
dernière fois.Le nombre d'espaces entre les deux diagonales doit être impair, donc le dernier espace sur chaque ligne (sauf la
X
ligne d' origine ) est supprimé.la source
Mathematica, 131 octets
Mathematica, 104 octets
voici une autre approche utilisant Grid
la source
APL (Dyalog) , 25 octets
Requiert
⎕IO←0
ce qui est par défaut sur de nombreux systèmes.Essayez-le en ligne!
' \/'[
…]
Indexez la chaîne avec⎕
obtenir une entrée2×
multiplier par deux1+
ajoute un⍳
que de nombreux entiers∘.=⍨
table d'égalité (ie matrice d'identité; diagonale NW-SE)(
…)
Appliquer la fonction tacite suivante sur ce⊢
l'argument+
plus2×
Deux fois⌽
l'argument en miroir horizontal (ie diagonale NE-SW)la source
Bash , 138 octets
Essayez-le en ligne!
Vraiment long, bash chauffe '\ et /'
Moins golfé
la source
Python 2 ,
9584 octets-10 octets grâce à @FelipeNardiBatista
Essayez-le en ligne!
la source
05AB1E , 21 octets
Essayez-le en ligne!
la source
Perl 5, 110 + 1 = 111 octets
Utilise le
-n
drapeau.la source
QBIC , 90 octets
Comment fonctionne cette monstruosité, est laissé comme un exercice pour le lecteur ...
Exemple de sortie:
la source
Visual Basic.Net ,
454450 octetsJe ne sais pas si faire un func pour
writeline
sauvera quelques octets grâce à Stephen S pour pointer vers laas ...
suppression également changéinteger
enobject
dernière édition changé la première en arrièrela source
as Types
, car si vous l'avezOption Strict Off
, VB.NET agit comme un langage vaguement tapé.function
s ! =for loops
Merci pour le golfOption Strict
désactivé par défaut? C'est au moins dans Visual Studio05AB1E , 22 octets
Essayez-le en ligne!
Explication
Solution alternative de 22 octets
la source
Pyke, 14 octets
Essayez-le ici!
la source
tcl, 134
démo
Situé
n
sur la première ligne.Peut-être que je peux jouer au golf plus en utilisant une approche récursive
la source
R ,
7572 octetsInspiré par cette réponse , génère une matrice implicite et l'écrit sur stdout; lit la taille depuis stdin. Il doit construire une matrice de caractères d'espace et utilise
sep=''
b / c sinon il a des problèmes d'espacement.Essayez-le en ligne!
la source