Cette question se répand comme un virus dans mon bureau. Il existe une grande variété d'approches:
Imprimer ce qui suit:
1
121
12321
1234321
123454321
12345654321
1234567654321
123456787654321
12345678987654321
123456787654321
1234567654321
12345654321
123454321
1234321
12321
121
1
Les réponses sont marquées en caractères avec moins de caractères étant meilleurs.
code-golf
ascii-art
kolmogorov-complexity
Eric Wilson
la source
la source
Réponses:
J,
29 26 24 23 2221 caractèresMerci à FUZxxl pour le
"+
truc (je ne pense pas l'avoir déjà utiliséeu"v
auparavant, hé).Explication
la source
"0]
, écrivez"+
.,.0(<#":)"+9-+/~|i:8
⍪↑{(0<⍵)/⍕⍵}¨9-∘.+⍨|9-⍳17
APL (
3331)Si des espaces séparant les nombres sont autorisés (comme dans l'entrée Mathematica), vous pouvez le réduire à
2826:Explication:
⍳9
: une liste des nombres 1 à 91↓⎕D
:⎕D
est la chaîne '0123456789',1↓
supprime le premier élément⍴∘(1↓⎕D)¨⍳9
: pour chaque élément N de⍳9
, prenons les N premiers éléments de1↓⎕D
. Cela donne une liste: ["1", "12", "123", ... "123456789"] sous forme de chaînes⌽¨
: inverser chaque élément de cette liste. ["1", "21", "321" ...](Programme court :)
⍳¨⍳9
: la liste de 1 à N, pour N [1..9]. Cela donne une liste [[1], [1,2], [1,2,3] ... [1,2,3,4,5,6,7,8,9]] sous forme de nombres.⌽∘⍕∘
: l'inverse de la représentation sous forme de chaîne de chacune de ces listes. ["1", "2 1" ...]A←⌽↑
: crée une matrice à partir de la liste de listes, en ajoutant des espaces à droite, puis en inversant le sens. Cela donne le quadrant supérieur du diamant. Il est stocké dans A.A←A,0 1↑⌽A
: A, avec l'inverse de A moins sa première colonne attachée à droite. Cela donne la moitié supérieure du rectangle. Ceci est ensuite stocké dans A à nouveau.A⍪1↓⊖A
:⊖A
est un miroir vertical (donnant la moitié inférieure),1↓
supprime la rangée supérieure de la moitié inférieure etA⍪
correspond à la moitié supérieure1↓⊖A
.la source
Clojure,
191179 octets-12 octets en changeant l'extérieur
doseq
en aloop
, ce qui m'a permis de me débarrasser deatom
(yay).Un double "pour-boucle". La boucle externe (
loop
) parcourt chaque ligne, tandis que la boucle interne (doseq
) parcourt chaque numéro de la ligne, qui se trouve dans la plage(concat (range 1 n) (range n 0 -1))
, oùn
est le nombre le plus élevé de la ligne.En raison d'un bug dans la logique de ma première tentative (insertion accidentelle des espaces de préfixe entre chaque numéro), j'ai réussi à obtenir ceci:
Même pas correct en ignorant le bogue évident, mais ça avait l'air cool.
la source
Mathematica
83 49 43 5451Avec 3 octets sauvés grâce à Kelly Lowder.
Une analyse
La partie principale du code
Sum[DiamondMatrix[k, 17], {k, 0, 8}]
, peut être vérifiée sur WolframAlpha .Ce qui suit montre la logique sous-jacente de l’approche, à une plus petite échelle.
la source
f = Table[# - Abs@k, {k, -8, 8}] &; f[f[9]] /. n_ /; n < 1 -> "" // Grid
Table[9 - ManhattanDistance[{9, 10}, {j, k}], {j, 18}, {k, 18}] /. n_ /; n < 1 -> "" // Grid
Grid@#@#@9&[Table[#-Abs@k,{k,-8,8}]&]/.n_/;n<1->""
50 caractères.ArrayPlot[Sum[k~DiamondMatrix~17, {k, 0, 8}], AspectRatio -> 2]
Python 2,
72696761Pas intelligent:
la source
s=`0x2bdc546291f4b1`
'L'
.C, 79 caractères
la source
Python 2,
6059Abuse des backticks et repunits.
la source
in
mot-clé peut être supprimé, comme vous l'avez fait avec leprint
clavier.L
dans les sept lignes du milieu.GolfScript,
333130 caractèresUne autre solution GolfScript
Merci à PeterTaylor pour un autre personnage.
Les versions de Previos:
( courir en ligne )
la source
17,{8-abs." "*10@-,1>.-1%1>n}%
Mathematica
5550454138la source
Javascript, 114
Ma première entrée sur Codegolf!
Si cela peut être raccourci davantage, veuillez commenter :)
la source
PHP,
9290 caractèresCalcule et affiche la distance de Manhattan entre la position et le centre. Imprime un espace s'il est inférieur à 1.
Un utilisateur anonyme a suggéré l'amélioration suivante (84 caractères):
la source
<?
sautés par méta . En outre, vous semblez avoir des problèmes d’encodage dans le second code.<?
n'inclus pas dans le décompte. J'ai également apporté d'autres améliorations.Fusain (non-concurrent), 13 octets
Pas de compétition parce que la langue est (beaucoup) plus récente que la question.
Essayez-le en ligne!
Comment?
Dessine neuf diamants concentriques successivement plus petits, successivement plus petits:
la source
Common Lisp, 113 caractères
J'ai d'abord remarqué que les éléments du diamant pouvaient être exprimés comme suit:
etc.
x
calcule récursivement la base (1, 11, 111, etc.), qui est au carré, puis imprimée au centre deformat
. Pour que les nombres montent au plus haut terme et redescendent, j’avais l’habitude(- 8 (abs (- n 8)))
d’éviter une deuxième boucle.la source
JavaScript, 81
la source
PowerShell (2 options):
928445 octetsExplication:
1..8+9..1
ou1..9+8..1
génère un tableau d’entiers allant de 1 à 9 puis descendant à 1.|%{
...}
dirige le tableau d'entiers dans uneForEach-Object
boucle via l'alias intégré%
.' '*(9-$_)+
soustrait le nombre entier actuel de 9, puis crée une chaîne de ce nombre d'espaces au début de la sortie pour cette ligne.[int64]($x='1'*$_)*$x
définit$x
comme une chaîne de1
s tant que le nombre entier actuel est grand. Ensuite, il est converti en int64 (requis pour générer correctement la sortie 111111111 2 sans utiliser la notation E) et au carré.la source
long
int64
1..8+9..1|%{' '*(9-$_)+ +($x='1'*$_+'L')*$x}
Vim,
623938 frappesMerci à @DJMcMayhem pour avoir économisé une tonne d'octets!
Ma première réponse Vim, tellement excitante!
J'ai essayé d'écrire les nombres via un enregistrement, mais c'est beaucoup plus long
Essayez-le en ligne!
Explication:
MODIFIER:
J'ai utilisé
H
au lieu degg
et enregistré 1 octetla source
ma
et changer`ai<space>
enI<space>
.APL (Dyalog Classic) ,
2019 octetsEssayez-le en ligne!
⎕d
sont les chiffres'0123456789'
1↓
déposer le premier ('0'
),⍨\
swap catenate scan, c’est-à-dire les préfixes inversés'1' '21' '321' ... '987654321'
↑
mélanger dans une matrice garnie d'espaces:⌽
inverser la matrice horizontalement(
...)⍣2
faites ceci deux fois:⍉⊢⍪1↓⊖
la transposition (⍉
) de la matrice elle-même (⊢
) concaténée verticalement (⍪
) avec la matrice inversée verticalement (⊖
) sans sa première ligne (1↓
)la source
R, 71 caractères
Pour les records:
la source
message(rep(" ",9-i),s[c(1:i,i:1-1)])
for(i in s<-c(1:9,8:1))...
pour enregistrer un octetk (
6450 caractères)Ancienne méthode:
la source
(1+!9)#'"1"
est,\9#"1"
CJam,
3127 octetsCJam est beaucoup plus récent que ce défi, donc cette réponse ne peut pas être acceptée. C'était un petit défi du samedi soir, cependant. ;)
Testez-le ici.
L'idée est de former le quadrant supérieur gauche en premier. Voici comment cela fonctionne:
Commencez par former la chaîne
" 123456789"
en utilisant8S*9,:)+
. Cette chaîne est composée de 17 caractères. Maintenant, nous répétons la chaîne 9 fois, puis nous la coupons en sous-chaînes de longueur 9 avec9/
. La non-concordance entre 9 et 17 décale tous les deux rangées un caractère à gauche. En imprimant chaque sous-chaîne sur sa propre ligne, on obtient:Donc, si nous supprimons simplement une ligne sur deux (ce qui fonctionne bien en faisant
2%
), nous obtenons le quadrant souhaité:Enfin, nous reflétons cela deux fois, en transposant la grille entre les deux pour garantir que les deux opérations de mise en miroir suivent des axes différents. Le reflet lui-même est juste
Enfin, nous rejoignons toutes les lignes avec des nouvelles lignes, avec
N*
.la source
GolfScript, 36 caractères
En supposant qu'il s'agisse d'un défi code-golf , voici une solution de base de GolfScript:
la source
Ruby, 76 caractères
Les améliorations sont les bienvenues. :)
la source
f=->x{[*1..x]+[*1...x].reverse};puts f[9].map{|i|(f[i]*'').center 17}
[*-8..8].map{|i|puts' '*i.abs+"#{eval [?1*(9-i.abs)]*2*?*}"}
Befunge-93 , 155 caractères
Essayez-le en ligne!
Cela pourrait certainement être plus joué au golf, mais c’est mon premier programme Funge et ma tête me fait déjà mal. Eu beaucoup de plaisir, cependant
la source
JavaScript, 170 octets
Mon premier code golf :)
Golfé
Ungolfed
la source
Perl
5654 caractèresAjout de 1 caractère pour le
-p
commutateur.Utilise les repunits au carré pour générer la séquence.
la source
Perl, 43 + 1
ajouter +1 pour
-E
lequel est requis poursay
say$"x(9-$_).(1x$_)**2for 1..9,reverse 1..8
edit: raccourci un peu
la source
Python, 65 ans
la source
I=int;
votre code et de remplacer toutes les instances ultérieures deint
parI
int
utilisation, et 3 fois, de sorte qu'il enregistre 6 caractères pour un coût de 6 caractères.Groovy
7775ancienne version:
la source
each
parany
pour enregistrer deux caractères.Scala - 86 caractères
la source
Javascript, 137
Avec récursion:
Première fois sur CG :)
Ou 118
Si je peux trouver une implémentation JS qui s’exécute
111111111**2
avec une plus grande précision.(Ici: 12345678987654320).
la source