Tâche:
Renvoie un tableau avec toutes les paires possibles entre les éléments d'un tableau.
Exemple
De a=["a", "b", "c", "d"];
retour b=[["a","b"],["a","c"],["a","d"],["b","c"],["b","d"],["c","d"]]
.
Les paires peuvent être dans n'importe quel ordre tant que toutes les combinaisons possibles sont incluses et sont évidemment ["b","d"]
les mêmes ["d","b"]
.
Contribution
Tableau d'éléments de chaîne uniques composés de caractères de la classe [a-z]
.
Production
Tableau 2D contenant toutes les paires possibles d'éléments du tableau d'entrée.
Cas de test
input=["a","b","c"];
//output=[["a","b"],["a","c"],["b","c"]]
input=["a","b","c","d","e"];
//output=[["a","b"],["a","c"],["a","d"],["a","e"],["b","c"],["b","d"],["b","e"],["c","d"],["c","e"],["d","e"]]
Remarque: je n'ai pas pu trouver de doublon pour ce défi. S'il y en a un, alerte-moi avec un commentaire pour laisser tomber la question.
code-golf
array-manipulation
combinatorics
alexandros84
la source
la source
["c","b","a"]
revenir?Réponses:
Gelée , 2 octets
Essayez-le en ligne!
la source
ÇK€Y
dans le pied de page.Haskell , 29 octets
Essayez-le en ligne! Exemple d'utilisation:
f ["a","b","c"]
rendements[("a","b"),("a","c"),("b","c")]
.Avec l'indicateur,
-XTupleSections
cela peut être raccourci à 27 octets, mais l'indicateur devrait être compté:Essayez-le en ligne!
la source
f l=l
.Mathematica, 14 octets
contribution
la source
Haskell, 25 octets
Essayez-le en ligne!
Outer (
x
) et inner (y
) parcourent la liste d'entrée et ne conservent la paire(x,y)
que six < y
.la source
05AB1E , 3 octets
Code:
Utilise l' encodage 05AB1E . Essayez-le en ligne!
Explication:
la source
vim,
5048Prend entrée dans le formulaire
et sorties comme
Explication
Tout d'abord,
AX<esc>
ajoute unX
à l'entrée afin de gérer une entrée à 2 longueurs, ce qui est nécessaire pour des raisons qui deviendront claires sous peu.Vient ensuite la première macro récursive, du formulaire
qq...@qq@q
. (Enregistrez la macroq
, réexécutez-la à la fin, terminez l'enregistrement, puis exécutez-la une fois.) Dans le corps de la macro,Yp
duplique la ligne en cours,l
sort de la macro si la ligne contient maintenant un caractère etX
supprime le premier caractère de la ligne. Cela a pour résultat final de produireIgnorant le
X
s pour l'instant, tout ce que nous avons à faire est de nous transformerabcdX
, par exemple, enab / ac / ad / aX
. Ceci est réalisé avec la deuxième macro récursive,qr...@rq
.Dans cette macro, nous dupliquons d'abord la ligne (
Yp
), puis supprimons tout sauf les deux premiers caractères en déplaçant les deux vers la droite (ll
) et en les supprimant à la fin de la ligne (D
). Puisque le curseur est maintenant sur le deuxième caractère de la ligne,kx
supprimera le deuxième caractère de la ligne précédente, qui se trouve être celui qui vient d'être apparié avec le premier caractère de la ligne. Ce processus est ensuite répété en recommençant depuis le début de la ligne (h
) autant de fois que nécessaire en raison de la nature récursive de la macro.Il suffit maintenant d'exécuter la macro sur chaque ligne, ce qui peut être réalisé avec
:g/./norm@r
(je ne sais pas pourquoi cela se comporte différemment:%norm@r
, mais il suffit de dire que cette dernière ne fonctionne pas comme prévu.) Les lignes avecX
sont supprimées avec:g/X/d
, et les lignes vides à l'extrémité gauche à la suite de la construction de lar
macro sont nettoyées avecdG
.la source
Octave, 23 octets
Essayez-le en ligne!
la source
Python 3 , 44 octets
Essayez-le en ligne!
Prend l'entrée comme paramètres de fonction individuels.
la source
Brachylog , 5 octets
Essayez-le en ligne!
Comment ça fonctionne
la source
R , 18 octets
lit la liste depuis stdin, retourne une matrice où les colonnes sont des paires.
Essayez-le en ligne!
la source
Python, 53 octets
2 octets enregistrés grâce à @CalculatorFeline
Essayez-le en ligne!
la source
a[i+1:]
peut êtrea[:i]
Octave ,
4948 octetsFonction anonyme qui évite la fonction intégrée (
nchoosek
).Essayez-le en ligne!
Explication
x+j*x'
utilise la radiodiffusion pour construire une matrice de nombres complexes où les parties réelles et imaginaires sont toutes des paires de points de code de l'entréex
.y=triu(...,1)
conserve la partie triangulaire supérieure à l'exclusion de la diagonale, ce qui rend le reste des éléments nul. Le résultat est affecté à la variabley
.y=(...)(~~y)
conserve les éléments non nuls sous la forme d'un vecteur de colonne, qui est affecté à la variabley
.imag(...)
etreal(...)
extraire les parties réelles et imaginaires.[... ... '']
reconvertit en char pour construire la sortie.la source
Pari / GP , 34 octets
Essayez-le en ligne!
la source
Python ≥ 2,7, 55 octets
repl.it!
la source
Perl 6 , 17 octets
Ouf, c'est un long nom de méthode.
la source
Scala, 17 octets
la source
Pyth ,
74 octets-3 octets grâce à Leaky Nun !
Essayez-le en ligne!
la source
.cQ2
?.C
qu'en parcourant la liste. Belle prise!Rubis ,
38 3424 octetsMerci Seims pour l'idée d'avoir économisé 10 octets.
Essayez-le en ligne!
la source
->x{x.combination(2).to_a}
enregistre quelques octets :)JavaScript ES6, 52 octets
S'il y en avait un
flatMap
qui économiserait beaucoup d'octets.la source
a=>[for(x of[...a])for(y of(a.shift(),a))[x,y]]
.[x,y]
la fin, c'est le bit facile, c'est juste un tableau littéral.Python , 55 octets
Essayez-le en ligne!
Plus long que les autres réponses Python, mais il utilise une technique différente, donc je pense que cela vaut la peine d'être publié.
la source
Japt , 2 octets
Testez-le (
-Q
indicateur à des fins de visualisation uniquement)la source
Python, 64 octets
la source
Octave, 38 octets
Une autre réponse pour éviter le
nchoosek
intégré.Essayez-le en ligne!
la source
Clojure, 42 octets
Renvoie un ensemble d'ensembles :)
la source
Python, 74 octets
la source
Javascript (ES 5), de 108 à 78 octets
Je poste ma réponse aujourd'hui mais je promets évidemment de ne pas accepter ma propre réponse:
la source
a
, vous devez le définir, mais vous pouvez faire une fonction dex
.for(i=n+1;i<(x.length);i++)
pourfor(i=n;++i<x.length;)
. De même, vous pouvez passern<(x.length-1);n++
àn++<x.length-1
J , 17 octets
Essayez-le en ligne!
Explication
la source