Dado un conjunto de números con length >=3
ylength % 3 == 0
[1, 2, 3, 4, ...]
Lo dividirá en sub-matrices de longitud 3
[[1, 2, 3], [4, 5, ...], [...
Y devolver una matriz con
- [0] => La cantidad de casos en la submatriz donde todos los números son iguales
- [1] => En caso de que todos los números en la sub-matriz no sean iguales, la cantidad de casos en la sub-matriz donde solo 2 números son iguales
Ejemplo y casos de prueba:
- Entrada:
[2, 4, 2, 5, 5, 5, 4, 2, 1, 3, 3, 1]
salida[1, 2]
Esto es porque
[[2, 4, 2], [5, 5, 5], [4, 2, 1], [3, 3, 1]]
^ ^ ^ ^ ^ ^ ^
equal all equal equal
entonces 2 equal
y 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]
Esto es código de golf , por lo que gana la respuesta más corta en bytes.
PD: Disculpas por mi inglés.
code-golf
array-manipulation
Luis felipe De jesus Munoz
fuente
fuente
Respuestas:
Octava ,
605250 bytesPruébalo en línea!
¡Guardado 8 bytes gracias a Luis!
Explicación:
Cambia la forma de la entrada en una matriz con 3 filas y la cantidad adecuada de columnas. Luego clasifica cada una de las columnas y calcula la diferencia entre los elementos en diferentes filas. Esto proporciona una matriz con dos filas, donde números idénticos tendrán un cero y números diferentes tendrán un número positivo. Esto se niega, de modo que todos los elementos iguales son
1
, y todos desiguales son0
. A continuación, resumimos cada una de esas columnas, que nos da una de las tres alternativas:0 = All elements are unequal
,1 = Two elements are equal
y2 = All elements are equal
. Luego verificamos cuántos son>1
y cuántos son exactamente==1
.fuente
JavaScript (ES6), 70 bytes
Pruébalo en línea!
¿Cómo?
Extraemos recursivamente cada triplete [a, b, c] de la matriz de entrada y actualizamos dos contadores t (tres de un tipo) y p (par), utilizando la siguiente fórmula:
Hay 5 casos posibles que se detallan a continuación, desde 'todos iguales' hasta 'todos distintos'.
fuente
[0]
e[1]
índices "Nota: devuelve una matriz de 3 elementos con[0]
y[1]
devuelve los valores apropiados y[2]
devuelve un valor ficticio (el número de 3 listas sin ningún elemento en común). Esto es totalmente válido de acuerdo con las reglas actuales ". codegolf.stackexchange.com/a/166082/31257 62 bytesa=>a.map(_=>++r[--new Set(a.slice(i,i+=3)).size],r=[i=0,i])&&r
Pyth,
13141211 bytesPruébalo aquí
Explicación
fuente
05AB1E , 10 bytes
Pruébalo en línea!
Explicación
fuente
ok ,
1716 bytesPruébalo en línea!
Para k , la versión de 17 bytes es:
+/(1 2=#=:)'0N 3#
.fuente
0N 3
->0N3
(gracias a una rareza de análisis en OK)R , 70 bytes
Pruébalo en línea!
Versión anterior :
R , 82 bytes
Pruébalo en línea!
R , 93 bytes
Pruébalo en línea!
fuente
a=!1:2
es un poco más corto.seq(0,a=v)
en lugar de0:(length(v)-1)
;) Lamentablemente no sé octava así que no puedo leer esa respuesta fácil ...apply
ingunique
pero falla para el tercer caso de prueba. Suby
enfoque es más seguroJava (JDK 10) , 116 bytes
Pruébalo en línea!
Nota: devuelve una matriz de 3 elementos con
[0]
y[1]
devuelve los valores apropiados y[2]
devuelve un valor ficticio (el número de 3 listas sin ningún elemento en común). Esto es totalmente válido de acuerdo con las reglas actuales.fuente
PowerShell , 106 bytes
Pruébalo en línea!
Exactamente lo que dice en la lata. Recorre la entrada
$a
. Cada iteración, se despega$x,$y,$z
como los siguientes tres elementos. Las pruebasif
son todas iguales y, en caso afirmativo, incrementos$i
.Else
, se incrementa$j
si al menos un par es igual. Una vez que se completa el ciclo, la salida$i
y$j
como enteros.Entonces ... muchos ... dólares ...
fuente
Retina 0.8.2 , 68 bytes
Pruébalo en línea! El enlace incluye casos de prueba con encabezado para convertir al formato deseado de un valor por línea. Explicación:
Recolecte tres valores en cada línea con separadores y duplique el primero al final.
Cuenta el número de pares de duplicados.
Cuenta el número de
3
sy1
s.fuente
Jalea ,
98 bytes-1 gracias a Dennis (usa un nuevo alias para
L€
,Ẉ
)Pruébalo en línea!
fuente
Stax , 8 bytes
Ejecutar y depurarlo
fuente
Lisp común, 113 bytes
Pruébalo en línea!
Usó el hecho de que en Common Lisp
(= x y z)
da verdadero si los tres elementos son iguales, y(/= x y z)
da verdadero si ningún par de números es igual.fuente
Japt,
1413 bytesIntentalo
Explicación
fuente
Python 2 ,
777265 bytesPruébalo en línea!
7 bytes guardados a través de un ingenioso truco de xnor
fuente
zip(*[iter(a)]*3)
.Retina , 23 bytes
Pruébalo en línea!
Explicación
Divida la entrada en cada 3er espacio comenzando en el 2do (basado en 0), es decir, divida la entrada en grupos de tres.
En cada línea (
%
) cuente el número (C
) deq
valores únicos ( ) (\S+
).Cuente el número de
1
sy imprímalos con un salto de línea final (\
), pero hágalo en una ejecución en seco (*
) para que no perdamos el resultado anterior.Cuente el número de
2
s (e imprímalos automáticamente).fuente
J ,
1615 bytes-1 byte gracias a cole!
Pruébalo en línea!
Prácticamente el mismo enfoque que la mayoría de las soluciones.
Explicación:
fuente
#@~.
->#@=
Japt ,
2419 bytesPruébalo en línea!
fuente
Stax , 14 bytes
Ejecutar y depurarlo
fuente
[3,5,6,5,5,7,6,6,8,7,7,7,3,4,2,4,4,3]
salidas en su[2,3]
lugar[1,3]
[3,3,3,4,4,4,5,5,5,6,6,6,5,4,3]
salidas en su[1,0]
lugar[4,0]
[3,4,5,6,7,8,9,8,7,6,5,4,3,2,1]
salidas en su[5,0]
lugar[0,0]
[1,1,1]
. Si lo usa2(
en su lugar1T
, siempre recortará / rellenará exactamente al tamaño 2.Haskell , 90 bytes
Pruébalo en línea!
Parece un poco incómodo ...
fuente
Wolfram Language (Mathematica) , 49 bytes
Ahorró dos bytes gracias a Martin Ender.
Pruébalo en línea!
fuente
Elixir , 92 bytes
Primero, divide la lista en longitud de tamaño 3
chunk(a,3)
En segundo lugar, convierte encuentra la longitud de cada elemento, sin especificar;
map chunk(a,3),&(length uniq&1)
.Finalmente, devuelve una matriz que consta del número de veces que la lista resultante es igual a uno
count(c,&(&1==1))
y el número de veces que la lista resultante es igual a doscount(c,&(&1==2))
.Pruébalo en línea!
fuente
Prólogo (SWI) , 80 bytes
Pruébalo en línea!
fuente
Tcl , 111 bytes
Pruébalo en línea!
Tcl , 112 bytes
Pruébalo en línea!
Tcl , 114 bytes
Pruébalo en línea!
fuente
Ruby , 59 bytes
Pruébalo en línea!
fuente
Tcl , 98 bytes
Pruébalo en línea!
usando la
-unique
opción delsort
comando. Nombré1
y2
mis variables por conveniencia, difícil parece bastante inusual codificarset 1 0
:)fuente
C # (compilador interactivo de Visual C #) , 108 bytes
Pruébalo en línea!
Menos golf ...
fuente