Étant donné un tableau de nombres avec length >=3
etlength % 3 == 0
[1, 2, 3, 4, ...]
Vous le diviserez en sous-tableaux de longueur 3
[[1, 2, 3], [4, 5, ...], [...
Et retourner un tableau avec
- [0] => Le nombre de cas dans le sous-tableau où tous les nombres sont égaux
- [1] => Dans le cas où tous les nombres dans le sous-tableau ne sont pas égaux, le nombre de cas dans le sous-tableau où seulement 2 nombres sont égaux
Exemples et cas de test:
- Entrée:
[2, 4, 2, 5, 5, 5, 4, 2, 1, 3, 3, 1]
sortie[1, 2]
Ceci est dû au fait
[[2, 4, 2], [5, 5, 5], [4, 2, 1], [3, 3, 1]]
^ ^ ^ ^ ^ ^ ^
equal all equal equal
donc 2 equal
et 1all equal
[3,5,6,5,5,7,6,6,8,7,7,7,3,4,2,4,4,3] => [1, 3]
[3,3,3,4,4,4,5,5,5,6,6,6,5,4,3] => [4, 0]
[3,4,5,6,7,8,9,8,7,6,5,4,3,2,1] => [0, 0]
C'est le code-golf , donc la réponse la plus courte en octets gagne.
PD: Toutes mes excuses pour mon anglais.
code-golf
array-manipulation
Luis felipe De jesus Munoz
la source
la source
Réponses:
Octave ,
605250 octetsEssayez-le en ligne!
8 octets enregistrés grâce à Luis!
Explication:
Remodèle l'entrée en une matrice de 3 lignes et la quantité appropriée de colonnes. Il trie ensuite chacune des colonnes et calcule la différence entre les éléments sur différentes lignes. Cela donne une matrice à deux lignes, où les nombres identiques auront un zéro et les nombres différents auront un nombre positif. Ceci est nié, de sorte que tous les éléments égaux le soient
1
et tous les éléments inégaux le soient0
. Nous résumons ensuite chacune de ces colonnes, nous donnant l' une des trois alternatives:0 = All elements are unequal
,1 = Two elements are equal
et2 = All elements are equal
. Nous vérifions ensuite leur nombre>1
et leur nombre exact==1
.la source
JavaScript (ES6), 70 octets
Essayez-le en ligne!
Comment?
Nous extrayons récursivement chaque triplet [a, b, c] du tableau d'entrée et mettons à jour deux compteurs t ( triplet ) et p (paire), en utilisant la formule suivante:
Il y a 5 cas possibles qui sont détaillés ci-dessous, de «tous égaux» à «tous distincts».
la source
[0]
et[1]
index "Remarque: renvoie un tableau à 3 éléments avec[0]
et[1]
renvoyant les valeurs appropriées, et[2]
renvoyant une valeur fictive (le nombre de 3 listes sans aucun élément en commun). Ceci est totalement valide selon les règles actuelles. " codegolf.stackexchange.com/a/166082/31257 62 octetsa=>a.map(_=>++r[--new Set(a.slice(i,i+=3)).size],r=[i=0,i])&&r
Pyth,
13141211 octetsEssayez-le ici
Explication
la source
05AB1E , 10 octets
Essayez-le en ligne!
Explication
la source
oK ,
1716 octetsEssayez-le en ligne!
Pour k , la version 17 octets est:
+/(1 2=#=:)'0N 3#
.la source
0N 3
->0N3
(grâce à une bizarrerie d'analyse en oK)R , 70 octets
Essayez-le en ligne!
Versions précédentes :
R , 82 octets
Essayez-le en ligne!
R , 93 octets
Essayez-le en ligne!
la source
a=!1:2
est un peu plus court.seq(0,a=v)
au lieu de0:(length(v)-1)
;) Malheureusement, je ne connais pas l'octave donc je ne peux pas lire cette réponse facilement ...apply
ingunique
mais il échoue pour le troisième cas de test. Votreby
approche est plus sûreJava (JDK 10) , 116 octets
Essayez-le en ligne!
Remarque: renvoie un tableau à 3 éléments avec
[0]
et[1]
renvoyant les valeurs appropriées, et[2]
renvoyant une valeur fictive (le nombre de 3 listes sans aucun élément en commun). Ceci est totalement valable selon les règles actuelles.la source
PowerShell , 106 octets
Essayez-le en ligne!
Exactement ce qu'il dit sur l'étain. Boucles sur entrée
$a
. Chaque itération, décolle$x,$y,$z
comme les trois éléments suivants. Les testsif
sont tous égaux et si oui, incrémente$i
.Else
, incrémente$j
si au moins une paire est égale. Une fois la boucle terminée, sortez$i
et$j
sous forme d'entiers.Donc ... beaucoup ... de dollars ...
la source
Retina 0.8.2 , 68 octets
Essayez-le en ligne! Le lien inclut des cas de test avec en-tête pour convertir au format souhaité d'une valeur par ligne. Explication:
Collectez trois valeurs sur chaque ligne avec des séparateurs et dupliquez la première à la fin.
Comptez le nombre de paires de doublons.
Comptez le nombre de
3
s et1
s.la source
Gelée ,
98 octets-1 merci à Dennis (utilisez un nouvel alias pour
L€
,Ẉ
)Essayez-le en ligne!
la source
Stax , 8 octets
Exécuter et déboguer
la source
Lisp commun, 113 octets
Essayez-le en ligne!
Utilisé le fait qu'en Common Lisp
(= x y z)
donne vrai si tous les trois éléments sont égaux, et(/= x y z)
donne vrai si aucune paire de nombres n'est égale.la source
Japt,
1413 octetsEssayez-le
Explication
la source
Python 2 ,
777265 octetsEssayez-le en ligne!
7 octets enregistrés via une astuce astucieuse de xnor
la source
zip(*[iter(a)]*3)
.Rétine , 23 octets
Essayez-le en ligne!
Explication
Divisez l'entrée à chaque 3e espace à partir du 2e (basé sur 0), c'est-à-dire divisez l'entrée en groupes de trois.
Sur chaque ligne (
%
), comptez le nombre (C
) deq
valeurs uniques ( ) (\S+
).Comptez le nombre de
1
s et imprimez-les avec un retour à la ligne (\
), mais faites-le dans un dry-run (*
) afin de ne pas perdre le résultat précédent.Comptez le nombre de
2
s (et imprimez-les automatiquement).la source
J ,
1615 octets-1 octet grâce à Cole!
Essayez-le en ligne!
À peu près la même approche que la majorité des solutions.
Explication:
la source
#@~.
->#@=
Japt ,
2419 octetsEssayez-le en ligne!
la source
Stax , 14 octets
Exécuter et déboguer
la source
[3,5,6,5,5,7,6,6,8,7,7,7,3,4,2,4,4,3]
sorties à la[2,3]
place[1,3]
[3,3,3,4,4,4,5,5,5,6,6,6,5,4,3]
sorties à la[1,0]
place[4,0]
[3,4,5,6,7,8,9,8,7,6,5,4,3,2,1]
sorties à la[5,0]
place[0,0]
[1,1,1]
. Si vous utilisez à la2(
place de1T
celui-ci, le trim / pad sera toujours exactement à la taille 2.Haskell , 90 octets
Essayez-le en ligne!
Ça a l'air un peu maladroit ...
la source
Wolfram Language (Mathematica) , 49 octets
Enregistré deux octets grâce à Martin Ender.
Essayez-le en ligne!
la source
Élixir , 92 octets
D'abord, coupe la liste en taille 3
chunk(a,3)
Deuxièmement, il convertit trouve la longueur de chaque élément, uniqified;
map chunk(a,3),&(length uniq&1)
.Enfin, il renvoie un tableau composé du nombre de fois où la liste résultante est égale à un
count(c,&(&1==1))
et du nombre de fois où la liste résultante est égale à deux.count(c,&(&1==2))
.Essayez-le en ligne!
la source
Prolog (SWI) , 80 octets
Essayez-le en ligne!
la source
Tcl , 111 octets
Essayez-le en ligne!
Tcl , 112 octets
Essayez-le en ligne!
Tcl , 114 octets
Essayez-le en ligne!
la source
Rubis , 59 octets
Essayez-le en ligne!
la source
Tcl , 98 octets
Essayez-le en ligne!
en utilisant l'
-unique
option delsort
commande. J'ai nommé1
et2
mes variables pour plus de commodité, difficile il semble assez inhabituel de coderset 1 0
:)la source
C # (Visual C # Interactive Compiler) , 108 octets
Essayez-le en ligne!
Moins golfé ...
la source