Défi
Etant donné un nombre entier positif , répéter chacun de ses chiffres un nombre de fois correspondant à sa position dans . En d'autres termes, chaque chiffre doit être répété fois (pour chaque , indexé 1), créant ainsi le nouveau nombre:
Ensuite, notez-le horizontalement et verticalement et remplissez les blancs avec des copies du chiffre qui correspond à l'index supérieur entre l'index de colonne et l'index de ligne de l'espace vide. La sortie finale devrait ressembler à ceci:
Spécifications
Vous pouvez prendre comme un entier, une chaîne, une liste de chiffres ou une liste de caractères représentant les chiffres. La sortie peut être une chaîne séparée par des sauts de ligne, une liste de chaînes / entiers ou une liste de listes de caractères / chiffres, mais veuillez également inclure une version assez imprimée, si possible. Si la sortie est une chaîne séparée par des sauts de ligne, il est également possible de:
- avoir des espaces blancs de début / fin, tant que l'apparence visuelle de la sortie ne change pas
- séparez les colonnes en utilisant un nombre cohérent d'espaces ou les lignes avec un nombre cohérent (non nul) de sauts de ligne
Vous pouvez prendre des entrées et fournir des sorties par n'importe quelle méthode standard , tout en prenant note que ces failles sont interdites par défaut. Il s'agit de code-golf , essayez donc de terminer la tâche dans le moins d'octets possible dans votre langue de choix.
Cas de test
65:
655
555
555
---------------
203:
200333
000333
000333
333333
333333
333333
--------------
233:
233333
333333
333333
333333
333333
333333
---------------
5202:
5220002222
2220002222
2220002222
0000002222
0000002222
0000002222
2222222222
2222222222
2222222222
2222222222
---------------
12345:
122333444455555
222333444455555
222333444455555
333333444455555
333333444455555
333333444455555
444444444455555
444444444455555
444444444455555
444444444455555
555555555555555
555555555555555
555555555555555
555555555555555
555555555555555
Réponses:
JavaScript (ES7), 70 octets
Prend l'entrée sous forme de chaîne. Renvoie une chaîne avec un saut de ligne de fin.
Essayez-le en ligne!
Comment?
Méthode
Nous construisons la sortie caractère par caractère en parcourant une matrice carrée et en convertissant chaque cellule en un indiceix,y dans la chaîne d'entrée.
Coordonnées de l'index de chaîne
La limite supérieure de la zone de n t h chiffres (indexée sur 0) le long de chaque axe est donnée par A000096 :un nth
u0=0,u1=2,u2=5,u3=9,u4=14,u5=20,…
Etant donné un entier , nous pouvons trouver dans quelle zone n = ⌊ x ⌋ + 1 il est situé en résolvant:k n=⌊x⌋+1
Menant à:
n=⌊ √
Pour chaque cellule , nous définissons:(x,y)
Ces valeurs sont converties en indices i x , y dans la chaîne d'entrée en faisant:vx,y ix,y
Conditions d'arrêt
Nous savons que nous avons atteint:
la limite droite de la matrice lorsque le caractère en n'existe pas et que nous avons x > yjex , y x > y
la limite inférieure de la matrice lorsque le caractère n'existe pas et que nous avonsx ≤ y
la source
J ,
1615 octets-1 octet grâce à FrownyFrog!
Essayez-le en ligne!
Prend
N
comme une chaîne.Explication de la solution initiale:
Session de test avec entrée
203
:la source
)
, votre réponse APL est la même que celle qui aurait été la mienne.[:<:@
semble assez coûteux. Pourriez-vous plutôt ajouter quelque chose à la liste dans laquelle vous indexez pour tenir compte de l'indexation 1 (par exemple, ajouter un 0 pour déplacer chaque position nécessaire de l'élément 1 vers la droite)?{⍵[∘.⌈⍨(/⍨)⍳⍴⍵]}
?Haskell ,
605958 octetsEssayez-le en ligne!
Version sans point (68 octets)
Essayez-le en ligne!
la source
Python 2 , 71 octets
Essayez-le en ligne!
Génère d'abord la première ligne
r
, puis itèrer
pour imprimer chaque ligne.la source
R , 59 octets
Essayez-le en ligne!
la source
a
comme vecteur de caractères, ce qui vous permet de définirg=seq(a)
directement.Gelée , 7 octets
Essayez-le en ligne!
Sortie clarifiée.
la source
05AB1E ,
141110 octets1 octet enregistré grâce à Magic Octopus Urn / Adnan
Essayez-le en ligne!
Explication
la source
APL (Dyalog Classic) , 16 octets
Je sépare cette solution du message avec ma réponse J, comme suggéré par Jo King
Essayez-le en ligne!
la source
Python 2 , 74 octets
Essayez-le en ligne!
la source
Excel VBA, 95 octets
Une fonction de fenêtre immédiate VBE anonyme qui prend des entrées
[A1]
et des sorties vers la consoleNon golfé et commenté
la source
MATL ,
1512 octetsEssayez-le en ligne!
Je soupçonne que cela peut être raccourci, mais ce n'est pas si mal ...
la source
Ajouter ++ , 35 octets
Essayez-le en ligne!
Comment ça marche
Nous prenons la saisie comme une liste de chiffres, tout en nous empêchant de a) devoir transtyper en chiffres avec
BD
, et aussi d'avoir à enregistrer les chiffres, ce qui prendrait deux octets.Tout d'abord, nous générons une plage de [1 ... len (entrée)] avecn dans le périmètre n fois. Comme la vectorisation automatique n'existe pas dans Add ++, nous la compressons avec elle-même [ [ 1 , 1 ] , [ 2 , 2 ] . . . [ n , n ] ] . Nous appliquons ensuite le starmap , couplé à la répétition sur les paires:
bLR
, puis nous répétons chaque élémentdBcB]
, pour créer une liste de paires£X
avant de les concaténer en un tableau plat (¦Ω+
).Ensuite, nous dupliquer ce tableau et une table par un maximum,
d‽b>
. C'est-à-dire que chaque élément du tableau est apparié avec l'autre élément du deuxième tableau et la commande dyadique maximale est exécutée sur la paire. Pour un exemple d'entrée de [6 5] , cela crée le tableau [1 2 2 2 2 2 2 2 2] , qui est une version aplatie de la mosaïque, comme index pour le tableau. Malheureusement, Ajouter ++ utilise des tableaux 0 indexées, donc nous devons décrémenter chaque élément:1€Ω_
.Ensuite, nous indexons dans la liste d'entrée, en poussant à nouveau l'entrée (X , alors la taille de la pièce est
A
), qui économise à nouveau des octets en prenant l'entrée comme une liste. Indexez dans la liste avec€Ω:
avant de découper le tableau en morceaux de longueur appropriée. Si le nombre de chiffres dans l'entrée est indiqué parou laXt h nombre triangulaire . Nous générons cela en poussant la longueur de l'entrée, en calculant la plage de 1 à cette valeur, puis en prenant la somme avec n , mais les arguments sont actuellement dans le mauvais ordre, nous les échangeons donc
AbLR¦+
. Maintenant, la pile, pour une entrée de [6 5] , ressemble à [[6 5 5 5 5 5 5 5 5] 3] .T
coupe le tableau en morceaux de taille$
avant de couper et de revenir avecT
.la source
Fusain , 17 octets
Essayez-le en ligne! Explication:
Faites une boucle sur les indices des caractères dans l'ordre inverse.
Calculez la taille du carré.
Dessinez le carré en utilisant le caractère actuel.
la source
Toile , 12 octets
Essayez-le ici!
la source
Python 2 ,
7673 octets-3 octets grâce à Lynn .
Essayez-le en ligne!
la source
Fusain , 14 octets
Essayez-le en ligne!
Comment?
... cette méthode peut-elle être jouée au golf?
la source
×⊕κι
deux fois cependant.ι
etκ
changent à chaque itération de la boucle Each.Stax , 12 octets
Exécuter et déboguer
En utilisant cet algorithme .
Explication:
Stax ,
20191816 octetsExécuter et déboguer
Explication:
la source
Attaché , 34 octets
Essayez-le en ligne!
Explication
Fonctionne de manière similaire à la réponse J de Galen Ivanov .
la source
K (ngn / k) , 16 octets
Essayez-le en ligne!
la source
C (gcc) , 130 octets
Qui a besoin de maths fantaisistes quand on peut brutaliser?
Essayez-le en ligne!
la source
QBasic 1.1 , 127 octets
-4 grâce à DLosc .
Utilise une version modifiée de l'algorithme Python 2 de xnor .
L'entrée est une chaîne sans guillemets. La sortie est
\n
séparée sans espaces supplémentaires ni\n
s.la source
QBasic , 111 octets
Une fonction anonyme qui demande des entrées et des sorties à la console.
la source
Php 7.1 , 163 octets
Via CLI fournissant le numéro comme argument:
Pas si golfé:
Sortie:
Méthode:
Fondamentalement, créez des carrés de tableau multidimensionnels constitués du chiffre, puis superposez-les tous (array_replace_recursive).
(Oui, je sais que c'est d'une longueur embarrassante.)
la source
Ruby , 80 octets
Essayez-le en ligne!
Semblable à Ovs Answer
la source
Japt, 12 octets
Prend l'entrée sous forme de chaîne, génère un tableau de chaînes.
Essayez-le
Explication
la source
uBASIC , 120 octets
Une fonction anonyme qui prend les entrées foprm STDIN et les sorties vers STDOUT
Essayez-le en ligne!
la source
Visual Basic .NET (VBC) , 198 octets
Une
Sub
routine qui prend les entrées de STDIN et les sorties vers STDOUT.Impossible de faire fonctionner StrDup: /
Essayez-le en ligne!
la source
Lua,
149140 octetsFonction qui accepte une liste de chaînes de chiffres et imprime le résultat sur stdout. Ceci est ma première tentative de code golf (et le choix de la langue n'aide pas non plus), alors restez avec moi :)
Essayez-le en ligne!
Non golfé:
la source
Perl 5 +
-nalF -M5.010
, 67 octetsEssayez-le en ligne!
la source
Yabasic , 108 octets
Une fonction anonyme qui prend les entrées de STDIN et les sorties vers STDOUT
Essayez-le en ligne!
la source