Dada uma matriz de números com length >=3
elength % 3 == 0
[1, 2, 3, 4, ...]
Você o dividirá em sub-matrizes de comprimento 3
[[1, 2, 3], [4, 5, ...], [...
E retorne uma matriz com
- [0] => A quantidade de casos no sub-array em que todos os números são iguais
- [1] => No caso de todos os números na sub-matriz não serem iguais, a quantidade de casos na sub-matriz em que apenas 2 números são iguais
Exemplos e casos de teste:
- Entrada:
[2, 4, 2, 5, 5, 5, 4, 2, 1, 3, 3, 1]
saída[1, 2]
Isto é porque
[[2, 4, 2], [5, 5, 5], [4, 2, 1], [3, 3, 1]]
^ ^ ^ ^ ^ ^ ^
equal all equal equal
então 2 equal
e 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]
Isso é código-golfe , então a resposta mais curta em bytes vence.
PD: Desculpas pelo meu inglês.
code-golf
array-manipulation
Luis felipe De jesus Munoz
fonte
fonte
Respostas:
Oitava ,
605250 bytesExperimente online!
Economizou 8 bytes graças a Luis!
Explicação:
Remodela a entrada em uma matriz com 3 linhas e a quantidade apropriada de colunas. Em seguida, classifica cada uma das colunas e calcula a diferença entre os elementos em diferentes linhas. Isso fornece uma matriz com duas linhas, onde números idênticos terão zero e números diferentes terão um número positivo. Isso é negado, de modo que todos os elementos iguais são
1
e todos os desiguais0
. Em seguida, resumir cada uma dessas colunas, dando-nos uma das três alternativas:0 = All elements are unequal
,1 = Two elements are equal
e2 = All elements are equal
. Em seguida, verificamos quantas são>1
e quantas são exatamente==1
.fonte
JavaScript (ES6), 70 bytes
Experimente online!
Quão?
Extraímos recursivamente cada trigêmeo [a, b, c] da matriz de entrada e atualizamos dois contadores t (três do tipo) ep (par), usando a seguinte fórmula:
Existem 5 casos possíveis detalhados abaixo, de 'todos iguais' a 'todos distintos'.
fonte
[0]
e "Nota: retorna uma matriz de 3 elementos com e retornando os valores apropriados e retornando um valor simulado (o número de 3 listas sem nenhum elemento em comum). Isso é totalmente válido de acordo com as regras atuais ". codegolf.stackexchange.com/a/166082/31257 62 bytes[1]
[0]
[1]
[2]
a=>a.map(_=>++r[--new Set(a.slice(i,i+=3)).size],r=[i=0,i])&&r
Pitão,
13141211 bytesExperimente aqui
Explicação
fonte
05AB1E , 10 bytes
Experimente online!
Explicação
fonte
OK ,
1716 bytesExperimente online!
Para k , a versão 17 byte é:
+/(1 2=#=:)'0N 3#
.fonte
0N 3
->0N3
(graças a um oddity análise em OK)R , 70 bytes
Experimente online!
Versões prévias :
R , 82 bytes
Experimente online!
R , 93 bytes
Experimente online!
fonte
a=!1:2
é um pouco menor.seq(0,a=v)
, em vez de0:(length(v)-1)
;) Infelizmente eu não sei oitava então eu não posso ler essa resposta fácil ...apply
ing,unique
mas ele falhou no terceiro caso de teste. Suaby
abordagem é mais seguraJava (JDK 10) , 116 bytes
Experimente online!
Nota: retorna uma matriz de 3 elementos com
[0]
e[1]
retornando os valores apropriados e[2]
retornando um valor simulado (o número de 3 listas sem nenhum elemento em comum). Isso é totalmente válido de acordo com as regras atuais.fonte
PowerShell , 106 bytes
Experimente online!
Exatamente o que diz na lata. Loops sobre entrada
$a
. Cada iteração se destaca$x,$y,$z
como os próximos três elementos. Os testesif
são todos iguais e, em caso afirmativo, aumentam$i
.Else
incrementos$j
se pelo menos um par for igual. Quando o loop estiver completo, faça a saída$i
e$j
como números inteiros.Então ... muitos ... dólares ...
fonte
Retina 0.8.2 , 68 bytes
Experimente online! O link inclui casos de teste com cabeçalho para converter no formato desejado de um valor por linha. Explicação:
Colete três valores em cada linha com separadores e duplique o primeiro no final.
Conte o número de pares de duplicatas.
Contar o número de
3
s e1
s.fonte
Gelatina ,
98 bytes-1 graças a Dennis (use um novo apelido para
L€
,Ẉ
)Experimente online!
fonte
Stax , 8 bytes
Execute e depure
fonte
Lisp comum, 113 bytes
Experimente online!
Usou o fato de que, no Common Lisp,
(= x y z)
true se todos os três elementos forem iguais e(/= x y z)
true se nenhum par de números for igual.fonte
Japonês,
1413 bytesTente
Explicação
fonte
Python 2 ,
777265 bytesExperimente online!
7 bytes salvos através de um truque inteligente do xnor
fonte
zip(*[iter(a)]*3)
.Retina , 23 bytes
Experimente online!
Explicação
Divida a entrada em cada 3º espaço, começando no 2º (baseado em 0), ou seja, divida a entrada em grupos de três.
Em cada linha (
%
) conte o número (C
) deq
valores únicos ( ) (\S+
).Conte o número de se
1
imprima-os com um avanço de linha à direita (\
), mas faça-o em uma corrida a seco (*
) para não perder o resultado anterior.Conte o número de
2
s (e imprima-os automaticamente).fonte
J ,
1615 bytes-1 byte graças a cole!
Experimente online!
Praticamente a mesma abordagem que a maioria das soluções.
Explicação:
fonte
#@~.
->#@=
Japonês ,
2419 bytesExperimente online!
fonte
Stax , 14 bytes
Execute e depure
fonte
[3,5,6,5,5,7,6,6,8,7,7,7,3,4,2,4,4,3]
saídas em[2,3]
vez disso[1,3]
[3,3,3,4,4,4,5,5,5,6,6,6,5,4,3]
saídas em[1,0]
vez disso[4,0]
[3,4,5,6,7,8,9,8,7,6,5,4,3,2,1]
saídas em[5,0]
vez disso[0,0]
[1,1,1]
. Se você usar2(
, em vez de1T
ele sempre aparar / pad para exatamente o tamanho 2.Haskell , 90 bytes
Experimente online!
Parece um pouco estranho ...
fonte
Língua Wolfram (Mathematica) , 49 bytes
Economizou dois bytes graças a Martin Ender.
Experimente online!
fonte
Elixir , 92 bytes
Primeiro, divide a lista em tamanho 3
chunk(a,3)
Em segundo lugar, converte encontra o comprimento de cada elemento, não qualificado;
map chunk(a,3),&(length uniq&1)
.Finalmente, ele retorna uma matriz que consiste no número de vezes que a lista resultante é igual a uma
count(c,&(&1==1))
e o número de vezes que a lista resultante é igual a duascount(c,&(&1==2))
.Experimente online!
fonte
Prolog (SWI) , 80 bytes
Experimente online!
fonte
Tcl , 111 bytes
Experimente online!
Tcl , 112 bytes
Experimente online!
Tcl , 114 bytes
Experimente online!
fonte
Ruby , 59 bytes
Experimente online!
fonte
Tcl , 98 bytes
Experimente online!
usando a
-unique
opção delsort
comando. Eu nomeei1
e2
minhas variáveis por conveniência, por mais difícil que pareça incomum codificarset 1 0
:)fonte
C # (compilador interativo do Visual C #) , 108 bytes
Experimente online!
Menos golfe ...
fonte