Inspiré par la sortie boguée de la réponse Clojure de @Carcigenicate pour le défi Print this diamond .
Imprimer ce texte exact:
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1234567890
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
(Du milieu vers l'extérieur dans les deux sens, chaque chiffre est séparé par un espace de plus que la ligne précédente.)
Règles du challenge:
- Il n'y aura aucune entrée ( ou une entrée vide non utilisée ).
- Les espaces de fin sont facultatifs.
- Une nouvelle nouvelle ligne est facultative.
- Les espaces de début ou les nouvelles lignes ne sont pas autorisés.
- Renvoyer un tableau de chaînes n'est pas autorisé. Vous devriez soit sortir le texte, soit avoir une fonction qui renvoie une seule chaîne avec un résultat correct.
Règles générales:
- C'est du code-golf , donc la réponse la plus courte en octets est gagnante.
Ne laissez pas les langues de code-golf vous décourager de poster des réponses avec des langues autres que le code de golf. Essayez de trouver une réponse aussi courte que possible à n'importe quel langage de programmation. - Les règles standard s'appliquent à votre réponse, vous êtes donc autorisé à utiliser STDIN / STDOUT, fonctions / méthode avec les paramètres appropriés et des programmes complets de type de retour. Ton appel.
- Les failles par défaut sont interdites.
- Si possible, veuillez ajouter un lien avec un test pour votre code.
- Ajoutez également une explication si nécessaire.
code-golf
ascii-art
number
kolmogorov-complexity
Kevin Cruijssen
la source
la source
Réponses:
SOGL V0.12 , 12 octets
Essayez-le ici! Explication:
la source
Python 2 ,
59 57 5655 octetsEssayez-le en ligne!
Explication
i=8
- Attribue la valeur8
à une variable appeléei
.exec"..."*17
- Exécutez ce bloc de code (...
) 17 fois.print(...)
- Affiche le résultat.' '*abs(i)
- Créez une chaîne avec un espace répété plusieurs|i|
fois..join('1234567890')
- Entrelacez la chaîne créée ci-dessus avec1234567890
, de telle sorte que des|i|
espaces soient insérés entre les chiffres.i-=1
- Décrémentei
, et en l'exécutant 17 fois, il atteint-8
ce qui crée un motif répétitif à l'aide deabs()
.la source
exec
55 octets . Utilisez une approche similaire pour réduire Python 3 à 57 octets . Je n'ai pas vu de moyen évident de le raccourcir, en omettantexec
, mais j'ai pensé que je le mentionnerais comme une possibilité.Vim, 35 octets:
Explication:
la source
05AB1E ,
14 à13 octetsEssayez-le en ligne!
Explication
la source
s
... est-il logique de joindre une chaîne avec une liste ou une liste avec une chaîne? Je vais suggérer une amélioration à Adnan. Oh, et il y a.∊
pourû»
.8F9ÝÀNð×ý}».∊
J'ai fait fait un vaisseau spatial maw! Et j'étais tout excité de suggérer une édition de 12 octets.C64 ASM, 358 octets (102 octets compilés avec basicstub)
Ceci est le plus proche que je pourrais obtenir en raison de limitations évidentes:
(Pourrait probablement être optimisé un peu)
la source
TSQL,
220148 octetsAmélioration publiée par ZLK:
Sortie:
la source
DECLARE @ VARCHAR(MAX)=''SELECT TOP 17@+=REPLACE('1@2@3@4@5@6@7@8@9@0','@',SPACE(ABS(9-RANK()OVER(ORDER BY object_id))))+' 'FROM sys.objects PRINT @
sys.objects
parsysobjects
, et 1object_id` parid
j'ai cherché des tables plus courtes dans lesys
schéma, mais rien de plus court avait des colonnes aussi courtes quesysobjects
CAST
POWER(10)
VARCHAR
LOG10
etREPLICATE
:DECLARE @o VARCHAR(MAX)=''SELECT TOP 17 @o+=REPLACE('1@2@3@4@5@6@7@8@9@0','@',replicate(' ',LOG10(POWER(10,ABS(ROW_NUMBER()OVER(ORDER BY id)-9)+1)/10)))+' 'FROM sysobjects PRINT @o
@
pour supprimer 3 caractères.APL (Dyalog) , 22 octets
Essayez-le en ligne!
⎕D
D igits de zéro à neuf1⌽
tourner un pas à droite (met zéro à la fin)⊂
joindre (à traiter comme une unité)(
…)↑¨¨
Pour chacun de ces chiffres, prenez autant de caractères de chacune des lettres:⍳17
un à dix-sept¯9+
soustraire neuf|
trouver les valeurs absolues1+
ajoute un∊¨
enrôler (aplatir) chaque↑
changer une couche de profondeur en un niveau de rang (matrifier)la source
>:
.APL is not a golfing language
...↑⊃¨,/¨(1+|¯9+⍳17)↑¨¨⊂1⌽⎕D
...Haskell ,
5855 octetsEssayez-le en ligne!
Ceci est fondamentalement la solution de @nimi :)
la source
Java 11 (JDK) , 98 octets
Essayez-le en ligne!
String::repeat
.Réponse précédente ( Java (OpenJDK 8) ),
113112 octetsEssayez-le en ligne!
Des explications
Je construis essentiellement les
String
17 fois suivants (N
est une variable, pas une valeur réelle):Ce sont tous les chiffres attendus, joints par
%1$Ns
oùN
est le nombre d'espaces entre chaque chiffre.%1$Ns
signifie fondamentalement "prendre le premier argument et le patiner jusqu'à ce que sa longueur soit au moinsN
". En outre,%1$0s
n'est pas pris en charge, donc un cas particulier%1$s
est fait pour0
.Enfin, je formate cette chaîne en utilisant un seul argument
""
:, le formateur réutilise donc toujours la même chaîne vide en la complétant avec des espaces, le cas échéant.Enregistre
la source
()->
paro->
pour enregistrer un octet. :)o
unint
et l'utiliser dans votre boucle?for(o=-9;++o<9;)
Japt
-R
,1918161413 octetsTestez-le ou essayez-le en ligne
Explication
la source
9ÆAõ%A qXîÃw ê ·
JavaScript (ES2017),
83737268 octetsMerci Shaggy pour la sauvegarde de 10 octets. Merci Craig d' avoir sauvé 1 octet. Merci arcs pour la sauvegarde de 4 octets.
la source
Math.abs
. J'ai également fait laa
liste non codée en dur, mais c'est une préférence ...a=[...Array(10).keys()];for(i=-8;i<9;i++)console.log(a.join(' '.repeat(i<0?-i:i)))
[..."1234567890"].join("".padEnd(i<0?-i:i))
[...Array(10).keys]
aurait0
comme premier élément, pas le dernier.for(i=-8,s="";i<9;i++)s+=[..."1234567890"].join("".padEnd(i<0?-i:i))+`X`
où seX
trouve un saut de ligne réelBrachylog ,
302928 octetsEssayez-le en ligne!
Un octet enregistré grâce à Leaky Nun .
Explication
la source
Charbon de bois , 18 octets
Essayez-le en ligne! Le lien est vers la version verbeuse du code. Explication:
Remarque:
Cast(1)
prend le même nombre d’octets car"1"
il faudrait un séparateur avant":"
(ce qui fait que le déverbosifiant ne parvient pas à insérer).la source
R , 108 octets
Il suffit de coller et de réduire les chaînes.
Essayez-le en ligne!
Edit: merci à Challenger5 pour avoir signalé un problème. Fixé maintenant.
Edit 2: sauvegardé un octet grâce à Bouncyball.
la source
paste0
place d'paste
aussi ajouté un octet :(el
:el(strsplit("1234567890",""))
au lieu destrsplit("1234567890","")[[1]]
paste
déclarations en utilisant l'sep
argument decat
et en faisant un peu plus pour le faire passer à 70 octetsPython 3 ,
585754 octetsEssayez-le en ligne!
(merci à @flornquake pour les trois derniers octets; j'ai complètement oublié d'utiliser
sep
pour sauver vs.join
)la source
while i+9:print(*'1234567890',sep=' '*abs(i));i-=1
Pyth ,
14 à13 octets1 octet grâce à Mnemonic.
Essayez-le en ligne!
la source
Java 8,
235234206163 octetsMise à jour : -28 octets grâce à Leaky Nun!
Mise à jour 2 : -43 octets à nouveau grâce à Leaky Nun!
Ungolfed:
Essayez-le en ligne
EDIT: Le code précédemment était faux! Faites une erreur en jouant au code, cela devrait fonctionner comme prévu maintenant!
la source
public
jouer au golf suppriment le , et vous débarrassent de certains espaces inutiles. Et il y a encore quelques choses à améliorer, mais je suggère de lire les conseils et de voir où vous pouvez vous améliorer. Encore une fois, bienvenue et bon séjour! :)Coque , 21 octets
Ceci est un programme complet qui s’imprime sur STDOUT. Essayez-le en ligne! Il y a beaucoup d'espaces de fuite.
Explication
Il manque encore à Husk beaucoup de choses essentielles, comme une fonction de plage à deux arguments, de sorte que certaines parties de cette solution sont un peu hacky.
la source
ṁs`:0ḣ9
paruṁsḣ10
pour générer la chaîne "1234567890" par un octet en moins!T-SQL 145
152octetsMis à jour pour utiliser:
master..spt_values
générer des nombres (WHERE type = 'P'
ils sont toujours consécutifs à partir de 0)TOP 17
idée de @ ZLKRésultats:
(Merci @JanDrozen pour l'idée de remplacer)
la source
SELECT TOP 17REPLACE('1x2x3x4x5x6x7x8x9x0','x',SPACE(ABS(9-RANK()OVER(ORDER BY object_id))))FROM sys.objects
(en supposant que vous n’avez pas besoin d’imprimer).Clojure,
126 à99 octets-27 en corrigeant quelques bêtises. L'utilisation extérieure de
a
n'était pas nécessaire, j'ai donc pu m'en débarrassera
complètement et écrireapply str
une seule fois. Cela m'a également permis d'utiliser une macro de fonction pour la fonction principale, qui économisait quelques octets. J'ai également ajouté l'appel àMath/abs
au lieu de renvoyer un appeln-spaces
.Fondamentalement, un portage Clojure de l’idée Python de @ Mr.Xcoder. Rétrospectivement, j'aurais dû utiliser la méthode
abs
/range
pour le challenge diamant à l'origine, mais je n'aurais peut-être pas produit la sortie avec un bug!Assez simple. Joint la chaîne numérique avec un nombre d'espaces dépendant de la ligne en cours.
la source
Gelée , 15 octets
Essayez-le en ligne!
la source
Mathematica, 92 octets
Essayez-le en ligne
copier / coller du code avec ctrl-v,
appuyez sur Maj + Entrée pour exécuter
la source
C, 97 octets
Votre compilateur va probablement se plaindre beaucoup de ce code; le mien a jeté 7 avertissements de 4 types différents. Peut améliorer le code plus tard.
Essayez-le en ligne!
la source
C (gcc) , 76 octets
Essayez-le en ligne!
Il génère des espaces de fin, ce qui est supposé être OK.
Il imprime les nombres en utilisant des champs de longueur dynamique justifiés à gauche - c'est à cela que
%-*d
sert la chaîne de formatage .La boucle interne a une initialisation amusante (commence à 10; tout multiple de 10 conviendrait) pour "simplifier" sa condition de terminaison.
la source
Charbon de bois ,
21 20 1918 octetsEssayez-le en ligne!
Lien vers la version commentée . Fondamentalement, je crée la partie inférieure du dessin puis reflète le texte.
la source
E…⁹⪫E…·¹χI﹪κχ× ι‖B↑
(également pour 19 octets) mais l'interprète n'a pas l'air de l'apprécier (je ne vois pas ce qui ne va pas moi-même).Map
c’était un feu rouge, alors j’ai posté ma réponse de 18 octets.CJam , 21 octets
Essayez-le en ligne!
Explication
la source
9{S*A,(+\*}%_W%);\+N*
Lot, 163 octets
Remarque: la première ligne se termine par 9 espaces. Explication: Utilise la numérotation de ligne de création! La première boucle doit être exécutée 9 fois et supprimer un espace à chaque fois, tandis que la deuxième boucle doit être exécutée 8 fois et ajouter un espace à chaque fois. Le premier est obtenu en le lançant 7 fois et en échouant pour la 8ème fois, tandis que le dernier est obtenu en ajoutant deux espaces et en supprimant l'un d'entre eux.
la source
SOGL V0.12 , 14 octets
Essayez-le ici!
Explication:
la source
PHP , 69 octets
Essayez-le en ligne!
la source
PowerShell , 30 octets
Essayez-le en ligne!
Construit une plage de
8,7,6...2,1,0,1,2...8
puis boucle à travers chaque nombre. A l' intérieur de la boucle , nous construisons une gamme de1..9
concaténé avec0
puis-join
les chiffres dans la plage ainsi que le nombre approprié d'espaces. Chaque chaîne est laissée sur le pipeline et la sortie est implicite à la fin du programme.la source