Dans un monde multidimensionnel steam-punk, notre patron souhaite apposer des étiquettes d'index imprimées sur chaque tiroir du classeur multidimensionnel de notre conglomérat.
Le patron veut composer la totalité de la feuille d'étiquettes sous une forme unique, en utilisant une police achetée uniquement à cette fin, nous devons donc commander les tris (pièces de symboles métalliques). Étant donné que les tris sont très chers, notre commande doit être pour le nombre exact de chaque chiffre-symbole.
Pour un ensemble donné (par tous les moyens) de longueurs de dimensions ≥ 0, renvoyez (par tous les moyens) notre commande, qui est le tableau de fréquence des chiffres requis pour composer toutes les coordonnées cartésiennes. Il doit être organisé par ordre d'apparition du clavier (c.-à-d. 0 après 9) et peut ne pas inclure d'ordres de 0 sortes, donc si aucune sorte ne doit être ordonnée du tout (car une dimension a une longueur de 0); n'imprime rien.
- Bonus de -3 tri si votre code peut gérer (c'est-à-dire ne rien imprimer) 0 dimensions aussi.
- Les caractères finaux de nouvelle ligne sont acceptables.
- L'interdiction des échappatoires standard s'applique.
- Comme mentionné, les sortes sont chères, c'est donc du codecolf .
Une bonne âme peut modifier ce défi pour inclure une notation automatisée, alors incluez un en-tête comme:# LanguageName, 123 sorts
Cas de test
Étant donné 11
, imprimez:
1 4
2 1
3 1
4 1
5 1
6 1
7 1
8 1
9 1
0 1
parce que les étiquettes sont nécessaires 1
, 2
, 3
, 4
, 5
, 6
, 7
, 8
, 9
, 10
et 11
.
Étant donné 2 3
, imprimez:
1 5
2 5
3 2
parce que les étiquettes sont nécessaires 1 1
, 1 2
, 1 3
, 2 1
, 2 2
et 2 3
.
Étant donné 2 0
, imprimez une ligne vide:
ou rien.
Étant donné 1 2 3
, imprimez:
1 11
2 5
3 2
parce que les étiquettes sont nécessaires 1 1 1
, 1 1 2
, 1 1 3
, 1 2 1
, 1 2 2
et1 2 3
Étant donné 5 5 5 5
, imprimez:
1 500
2 500
3 500
4 500
5 500
Et non, je ne vais pas lister les 625 étiquettes.
Réponses:
Dyalog APL,
107Le code est long de 10 octets et donne droit au bonus.
Merci à user46915 pour 3 octets!
Notez que
⎕
(entrée) ne fonctionne pas sur TryAPL; vous pouvez essayer le formulaire de fonction ici .Je ne comprends pas complètement l'
⌸
opérateur, mais{⍺}⌸
répertorie les valeurs uniques prises et{⍵}⌸
répertorie leur place dans l'argument.Cela a le bon ordre car c'est l'ordre dans lequel les chiffres apparaissent dans le tableau multidimensionnel d'étiquettes.
la source
⌸
opérateur clé.,∘≢⌸
sans aucun produit extérieur avec unique et tel?! Dyalog est vraiment génial. Est également,∘≢⌸
plus court que{⍺,≢⍵}⌸
.Mathematica, 48 octets - 3 = 45
la source
Mathematica,
11185 octetsLa plupart du travail ici est effectué par
DigitCount
.la source
Grid[Thread@{Range@10~Mod~10,DigitCount@Tuples@Range@#~Total~2}~DeleteCases~{_,0}]&
R, 110 octets
Enregistré 4 grâce à Alex A. (merci!)
la source
x
qu'une seule fois, vous devriez donc pouvoir remplacer la seule occurrence dex
parscan()
. Aussi pourquoi attribuerz
?x
. J'ai affecté la sortie deMap
à unez
variable, sinonMap
j'imprimerais sa sortie sur stdout. Une meilleure pratique serait d'envelopper l'Map
intérieur,invisible()
mais c'est beaucoup de personnages ...Rubis, 92 octets
Prend les longueurs comme arguments de ligne de commande:
la source
CJam, 31 octets
Essayez-le en ligne
Le code fait 34 octets et prend 3 octets de bonus pour travailler avec une liste d'entrée vide. L'entrée est une liste au format CJam, par exemple:
Explication:
la source
Pyth, 15 octets
la source
Haskell, 125 octets
la source