Défi:
Prenez une liste, L contenant des entiers positifs en entrée:
3 5 2 1 6
et créer une matrice où la nième colonne contient le vecteur 1: L (n) , où les lignes plus courtes sont remplies de zéros.
Cas de test:
3 5 2 1 6
-----------------
1 1 1 1 1
2 2 2 0 2
3 3 0 0 3
0 4 0 0 4
0 5 0 0 5
0 0 0 0 6
1
-
1
1 2 3 4 3 2 1
-------------------------
1 1 1 1 1 1 1
0 2 2 2 2 2 0
0 0 3 3 3 0 0
0 0 0 4 0 0 0
Règles:
- Formats d'entrée et de sortie en option
- La liste des listes est un format de sortie acceptable
- La matrice doit être aussi petite que possible (vous ne pouvez pas la remplir avec plus de zéros que nécessaire)
- Le code le plus court dans chaque langue gagne
- Les explications sont fortement encouragées
Réponses:
R ,
4038 octetsEssayez-le en ligne!
Explication:
outer
applique son troisième argument (la fonction) à toutes les combinaisons d'éléments de ses deux premiers arguments, générant une matrice deTRUE
etFALSE
où chaque colonne aTRUE
où1:max(l)
est inférieur ou égal à l'élément correspondant del
, par exemple oùl=c(3,5,2,1,6)
:Supposons alors que la matrice résultante est
A
, puisA*m
->A[i,j]=A[i,j]*i
qui contraintTRUE
à 1 etFALSE
à 0, produisant le résultat souhaité.la source
function(l)
parl=scan();
print
afin de perdre ces octets.source(...,echo=TRUE)
et la lecture de stdin en tant que programme complet, si vous avez une suggestion alternative, pesez certainement là-dedans, mais pour autant que je sache, c'est le plus proche que nous avons à un consensus R sur les programmes complets et il est pour le moment.MATL , 8 octets
Essayez-le en ligne!
Explication
la source
Python 3 , 54 octets
Essayez-le en ligne!
la source
Mathematica, 20 octets
Contient U + F3C7 (
Transpose
fonction intégrée de Mathematica )Essayez-le sur Wolfram Sandbox
Usage
Explication
la source
Octave , 26 octets
Fonction anonyme qui entre un vecteur ligne et sort une matrice.
Essayez-le en ligne!
Explication
Tenez compte des commentaires
x = [3 5 2 1 6]
. Il s'agit d'un vecteur ligne de taille 1 × 5.1:max(x)
donne le vecteur ligne[1 2 3 4 5 6]
, qui est affecté à la variabley
.La transposition de celui-ci, c'est-à-dire le vecteur colonne
[1; 2; 3; 4; 5; 6]
, est<=
comparée (élément par élément avec diffusion) à l'entrée[3 5 2 1 6]
. Le résultat est la matrice 6 × 5Enfin, la multiplication (par élément avec diffusion) par le vecteur colonne
[1; 2; 3; 4; 5; 6]
, obtenu tel quey
transposé, donne le résultat souhaité:la source
05AB1E , 4 octets
Essayez-le en ligne! ou en tant que suite de tests bien formatée
la source
Husk , 4 octets
Renvoie une liste de listes
Essayez-le en ligne!
Explication
la source
Pyth , 6 octets
Essayez-le ici! ou Vérifiez tous les cas de test (avec une jolie impression)!
Explication
Une version de transposition non intégrée serait :
Cela fonctionne comme suit:
la source
Gelée , 3 octets
Essayez-le en ligne!
Explication
la source
En fait , 17 octets
Essayez-le en ligne!
Explication:
la source
Pyke , 3 octets
Cela utilise la nouvelle fonctionnalité de Pyke, les encodages hexadécimaux ... La meilleure partie est que nous lions Jelly! Octets bruts:
Essayez-le ici!
L'équivalent ASCII-Pyke serait de 4 octets :
Comment?
Voici une jolie version imprimée avec ASCII, et voici une avec des encodages hexadécimaux.
la source
Perl 6 , 39 octets
Essayez-le
Étendu:
Notez que se
zip
termine une fois que la liste d'entrée la plus courte est épuisée.la source
C # , 136 octets
Les données
Int32[]
i
Un tableau d'entiersInt32[,]
Un tableau bidimentionnel.Golfé
Non golfé
Non lisible non lisible
Code complet
Communiqués
136 bytes
- Solution initiale.Remarques
la source
C (gcc) , 142 octets
Essayez-le en ligne!
la source
Java 10, 115 octets
Explication:
Essayez-le en ligne.
la source
Perl 5 , 62 + 1 (
-a
) = 63 octetsEssayez-le en ligne!
la source
Proton , 38 octets
Essayez-le en ligne!
la source
Ajouter ++ , 37 octets
Essayez-le en ligne!
la source
JavaScript (Node.js) , 55 octets
Essayez-le en ligne!
JavaScript (Node.js) , 63 octets
Essayez-le en ligne!
la source