Un tableau irrégulier est un tableau où chaque élément est un tableau d'un nombre inconnu d'entiers positifs.
Par exemple, les tableaux suivants sont des tableaux irréguliers:
[[1,2,3],[4],[9,10]] Shape: 3,1,2
[[1],[2],[3]] Shape: 1,1,1
[[1,2,3,4,5,6,8]] Shape: 7
Les tableaux suivants ne sont pas irréguliers:
[1] Each element will be an array
[] The array will contain at least 1 element
[[1,2,3],[]] Each subarray will contain at least 1 integer
Vous devez entrer un tableau ragged et renvoyer un tableau ragged avec les entiers mélangés
- Le tableau de sortie doit avoir la même forme que le tableau d'entrée. Nous définissons la forme du tableau comme la longueur de chaque sous-tableau.
- Chaque entier doit avoir une chance également probable d'apparaître dans chaque emplacement possible.
- Vous pouvez supposer que l'aléatoire intégré de votre langue est aléatoire.
Par exemple, si je transmettais:, [[4],[1,2,3],[4]]
alors ce [[1],[4,4,2],[3]]
serait une sortie valide, mais [[4,1,3],[3],[4]]
ou [[4],[4],[1,2,3]]
non.
code-golf
array-manipulation
random
Nathan Merrill
la source
la source
Réponses:
Jelly, 3 octets dans la page de codes de Jelly
Explication:
Parce que le programme est incomplet (
ṁ
n'a pas un deuxième argument indiqué), la valeur par défaut est d'utiliser l'entrée du programme; ainsiṁ
, la sortie a le même modèle de sous-liste que l'entrée.Essayez-le en ligne!
la source
F
et leṁ
travail de plusieurs couches d'aplatissement, pas seulement un.)ṁ
peut être n'importe quoi, pas seulement une liste plate. Par exemple: tio.run/nexus/jelly#@/9wZ@P///@jow11FIxidRSijXUUTEC0qY6CWWzs…PowerShell v2 +, 86 octets
Fonctionne via la manipulation de chaînes. L'entrée est transmise sous la forme d'une chaîne représentant le tableau, dans le format qui convient à votre langue. ;-)
-split
s sortir l'entrée sur des non-chiffres,sort
s les basée sur lerandom
bloc de script (qui attribuera un poids aléatoire différent pour chaque entrée au tri), stocke cela dans$a
. Nous entrons ensuite àsplit
nouveau, cette fois sur des chiffres, et pour chaque sortie, la valeur actuelle (généralement des crochets et des virgules) est concaténée en chaîne avec le nombre correspondant de$a
. Ces informations sont-join
regroupées dans une chaîne et la sortie est implicite.Exemples
la source
Python 2 , 89 octets
Essayez-le en ligne!
la source
shuffle(r=sum(x,[]))
?JavaScript (ES6),
7875 octetsC'est la première fois que je me souviens avoir utilisé
.splice()
dans un défi de code-golf ...Vous pouvez jouer au golf sur deux octets en mélangeant au préalable le tableau:
Cependant, cela semble mettre le dernier entier en premier la majorité du temps, donc je vais supposer que les entiers ne sont pas uniformément distribués.
la source
sort
ne fonctionne pas correctement lorsque la clé de comparaison est incohérente. Même si l'aléatoire de la langue est aléatoire, son tri fonctionnera mal dans cette situation, et c'est ce qui crée le biais que vous voyez. En tant que tel, je pense que la deuxième solution est incorrecte.Rubis, 47 octets
la source
Brachylog , 17 octets
Essayez-le en ligne!
Explication
Nous créons essentiellement une liste de sous-listes avec des éléments variables qui a la même "forme" que l'entrée, puis déclarons que si nous concaténons tout dans une seule liste, cela doit entraîner un mélange de la concaténation de l'entrée en une seule liste .
la source
Perl, 37 octets
36 octets de code +
-p
indicateur.Pour l'exécuter:
Explications:
la source
05AB1E , 17 octets
Essayez-le en ligne!
J'attends la solution 05AB1E ou 2sable utilisant un peu d'aplatissement / moulage intégré que je ne connais pas encore :).
la source
APL, 35 octets
Je bat à peine Perl, il doit y avoir quelque chose qui me manque.
Par exemple:
Explication:
⍳¨⍴¨⍵
: Pour chaque sous-tableau, obtenez une liste des indices{⍵+⊃⌽⍺}\
: En commençant par le premier sous-tableau, ajoutez la dernière valeur du tableau à chaque valeur du tableau suivant.⊃¨
: récupérez les premiers éléments des tableaux, qui sont les points de départ(⍳⍴Z←∊⍵)∊
: stocker le tableau aplati dansZ
. Générez un bit-vecteur où ceux marquent les endroits où les sous-tableaux doivent commencer.?⍨⍴Z
: générer une permutation aléatoire deZ
.Z[
...]
: permuterZ
.⊂⍨
: Divise la permutation en sous-tableaux en fonction du vecteur binaire.la source
A⊣(∊A)←(∊A)[?⍨≢∊A←⎕]
Pyth, 15 octets
Un programme qui prend l'entrée d'une liste et imprime le résultat.
Suite de tests
Comment ça marche
la source
PHP , 105 octets
réduit à 105 octets grâce à
user59178
.Réponse originale:
PHP , 132 octets
la source
$m=array_merge(...$i=$_GET[i]);
est de 25 octets plus court que$i=$_GET['i'];$m=call_user_func_array('array_merge',$i);
et fait la même chose. De plus, vous pouvez supprimer l'{}
afterforeach
pour enregistrer 2 octets supplémentaires.Frapper,
63, 58 octetsMODIFICATIONS:
Remarque:
Bash ne prend pas vraiment en charge les tableaux multidimensionnels (ils ne peuvent être simulés que dans une certaine mesure), donc à la place, ce programme acceptera une représentation textuelle "sérialisée" d'un tableau robuste, comme décrit dans la description de la tâche, par exemple:,
[[1,2,3],[4],[9,10]]
et fournira une sortie dans le même format.Golfé
Tester
Un bon bonus est que vous pouvez lui fournir des tableaux robustes d'une profondeur arbitraire:
et il fonctionnera toujours correctement.
Essayez-le en ligne!
la source
Octave, 60 octets
la source
MATLAB , 84 octets
la source
Java, 368 octets
la méthode
static int[][] f( int[][] r ){...}
résout le défi. décidé de rouler ma propre interface fonctionnelle pour éviter une importation et ajouter une méthode par défaut pour une facilité d'utilisationla source
Mathematica, 67 octets
Explication: Cela mélange la liste des positions de tous les entiers dans le tableau 2D irrégulier.
Union@@
est l'abréviation deFlatten@
Remarque: des crochets ondulés
{}
sont utilisés à la place des crochets[]
.la source