Você será dado duas matrizes / Listas / vetores de inteiros não negativos A e B . Sua tarefa é a saída o mais alto número inteiro N que aparece em ambos A e B , e também é único em ambos A e B .
Você pode assumir que existe pelo menos um desses números.
Qualquer método / formato razoável de entrada e saída é permitido.
Essas brechas são proibidas.
Isso é código-golfe , então o código mais curto em toda linguagem de programação vence!
Casos de teste:
A, B -> Saída [6], [1, 6] -> 6 [1, 2, 3, 4], [4, 5, 6, 7] -> 4 [0, 73, 38, 29], [38, 29, 73, 0] -> 73 [1, 3, 4, 6, 6, 9], [8, 7, 6, 3, 4, 3] -> 4 [2, 2, 2, 6, 3, 5, 8, 2], [8, 7, 5, 8] -> 5 [12, 19, 18, 289, 19, 17], [12, 19, 18, 17, 17, 289] -> 289 [17, 29, 39, 29, 29, 39, 18], [19, 19, 18, 20, 17, 18] -> 17 [17, 29, 39, 29, 29, 39, 18, 18], [19, 19, 18, 20, 17, 18] -> 17
fonte
[email protected]/d
) e tendo entrada como uma lista de duas listas.Python 3 ,
615654 bytesEconomizou 7 bytes graças a @ Mr.Xcoder , @ pizzapants184 e @ovs
Experimente online!
fonte
05AB1E ,
98 bytes-1 byte graças a Erik the Outgolfer
Experimente online!
fonte
Casca , 7 bytes
Aceita entrada como uma lista de duas listas, também funciona para qualquer número de listas (retornando o número mais alto que ocorre exatamente uma vez em cada uma, se possível). Experimente online!
Explicação
Esta é a primeira resposta da Husk para (ab) usar a nova função "máximo por"
►
.fonte
Bash + coreutils, 60 bytes
Experimente Online
Bash, 89 bytes
TIO
fonte
sort -rn
comsed q
no final em vez detail -1
barbear 1 byte. Grande achado comgrep -wf
btw. 1Gelatina , 11 bytes
Experimente online!
fonte
`
!J, 23 bytes
(-.-.@~:#])
remove de uma lista quaisquer elementos repetidos&
faça isso com os dois argumentos([-.-.)
Queremos que A cruze B. Esta é a frase equivalente: "A menos (A menos B)">./
Pegue o máximoExperimente online!
fonte
e.~#]
. Golfe esta tem provado ser difícil ... Eu tentei usar/.
tecla sem sucesso (((1=#)/.~#~.)
para a primeira parte que é de 2 bytes mais por minha conta)PowerShell , 94 bytes
Experimente online!
Recebe entrada
$a
e$b
como matrizes. Constrói afilter
quegroup
é o conjunto de elementos da matriz de entrada e extrai apenas aqueles com um númerocount
-eq
para1
(ou seja, apenas aqueles que são únicos na matriz de entrada).A próxima linha então constrói o algoritmo. Primeiro nós
sort
$a
, depois retiramos aqueles que são-in
os itens únicos de$b
. Esses são então eles mesmos únicos, o maior[-1]
é escolhido e nós aceitamos o.Name
mesmo. Isso é deixado no pipeline e a produção está implícita.fonte
Javascript (ES6),
102867571 bytesObrigado @justinMariner por ir de 102 para 86
Obrigado @tsh por ter passado de 86 para 75
Obrigado @Arnauld por ir de 75 a 71
Experimente online!
fonte
e
apareça apenas uma vez ema
eb
.lastIndexOf
assim, isso é muito inteligente. Você pode obter isso em 86 bytes: Experimente online! . Confira as dicas de JS para mais.(g=x=>x.filter(y=>y==e).length==1)
é mais curto.Haskell ,
5753 bytesExperimente online!
UPD: Obrigado @Laikoni
fonte
f
como operador de infixo e escrever em[1|...]==[1]
vez desum[1|...]==1
salvar alguns bytes.!
comand
economiza mais dois bytes: Experimente online!Wolfram Language (Mathematica) , 40 bytes
Experimente online!
Como funciona
Tally@#
fornece uma lista dos elementos únicos da primeira entrada, juntamente com suas contagens: por exemplo,Tally[{2,2,2,6,3,5,8,2}]
rendimentos{{2,4},{6,1},{3,1},{5,1},{8,1}}
.Tally@#2
faz o mesmo para a segunda lista e⋂
encontra pares presentes em ambos. Em seguida, selecionamos (comCases
) pares que terminam em1
, obtendo o primeiro elemento de cada resultado, o que nos dá uma lista de todos os gêmeos únicos. Finalmente,Max
retorna o maior gêmeo único.fonte
Röda , 48 bytes
Experimente online!
Inspirado na resposta jq de jq170727 .
Explicação:
fonte
F # (.NET Core) ,
117115114111108 bytes115114 bytesOutra solução com
countBy
esse tempo:Experimente online!
117111 bytesExperimente online!
100% F #! Qualquer ajuda é bem vinda!
6 bytes ganhos graças à notação de prefixo!
108 bytes
@
é a função concat! Obrigado @ Ayb4btu por este algoritmo.Experimente online!
fonte
C # (.NET Core) ,
8584 bytesExperimente online!
Solução ingênua com LINQ (
using System;using System.Linq;
+ 31chars para 116 bytes com cabeçalho)84! Eu esqueci de currying!
fonte
Pip ,
1716 bytesEssa é uma função que recebe duas listas como argumentos. Experimente online!
Explicação
fonte
APL (Dyalog) , 18 caracteres = 23 bytes *
Um corpo completo do programa. Solicita a lista de listas do STDIN. Funciona com qualquer número de listas. Saídas para STDOUT.
Experimente online!
⎕
prompt para entrada avaliada do STDIN{
...}⌸¨
Para cada lista, chame a seguinte função para cada elemento exclusivo dessa lista, usando o elemento exclusivo como argumento à esquerda (⍺
) e a lista de índices de sua ocorrência como argumento à direita (⍵
):≢⍵
a contagem de índices (ou seja, o número de ocorrências)1=
igual a 1⍺⍴⍨
use isso para remodelar o elemento específico (por exemplo, fornece lista vazia se não for exclusivo)Agora, temos duas listas de elementos exclusivos para cada lista de entrada (embora cada elemento seja uma lista e existam listas vazias como resíduo dos elementos não exclusivos).
∩/
interseção (redução)∊
ϵ nlist (achatar)⌈/
max (redução)* no clássico, contando
⌸
como⎕U2338
.fonte
MATL , 13 bytes
Experimente online! Ou Verifique todos os casos de teste .
Explicação
fonte
PHP, 98 bytes
Forneça matrizes como parâmetros GET
a
eb
.fonte
Java 8, 133 bytes
Explicação:
Experimente aqui.
fonte
R , 73 bytes
Experimente online!
Computações se
A
cruzamB
, então o máximo da diferença entre isso e os elementos duplicados deA
eB
.fonte
JavaScript ES5,
122121114 bytesSou novo aqui, então não sei se consigo remover a definição da função e apenas colocar seu conteúdo (o que me salvaria 17 bytes)
Aqui está o exemplo de trabalho:
122121114122 a 121 bytes: agrupando a inicialização em um para
121 a 114 bytes:
b
deve ser uma sequênciafonte
b
e salvarb=''+b,
?f=(a,b)=>{for(b=''+b,i=a.sort().length;--i+1;)if(a[i]!=a[i+1]&&a[i]!=a[i-1]&&!(b.split(a[i]).length-2))return a[i]}
.SQLite , 118 bytes
Experimente online!
Primeira vez no SQL, qualquer ajuda é bem-vinda!
fonte
Jq 1.5 , 76 bytes
Expandido
Experimente online!
Aqui está outra solução que tem o mesmo comprimento:
Expandido
Experimente online!
fonte
APL, 47 bytes
Declara uma função anônima que aceita dois vetores, elimina elementos duplicados e localiza o maior elemento na interseção dos resultados.
A←⍺
eB←⍵
armazene os argumentos passados para a função emA
eB
.a=b
retorna um vetor com 1 em cada índice no quala
é igual ab
. Sea
for um escalar (ou seja, quantidade única e não um vetor), ele retornará um vetor com 1 onde quer que o elementob
estejaa
e 0 quando não estiver. Por exemplo:{+/⍵=A}
: função anônima aninhada; encontre as ocorrências do argumento em vetorA
e some-as, ou seja, encontre o número de ocorrências do argumento emA
1={+/⍵=A}¨A
: aplique a função anônima aninhada a cada elemento em A e encontre os que são iguais a 1, ou seja, elementos únicos((1={+/⍵=A}¨A)/A←⍺)
: tendo encontrado a localização dos elementos exclusivos, selecione apenas esses elementos no vetor original (/
seleciona entre os elementos de argumento certos cujas localizações correspondem a 1 no argumento esquerdo)R←((1={+/⍵=A}¨A)/A←⍺)∩(1={+/⍵=B}¨B)/B←⍵
: repita o processo para o segundo argumento; agora que temos apenas os elementos únicos, encontre a interseção, ou seja, elementos comuns e armazene-a em vetorR
R[⍒R]
: acessar os elementos deR
em ordem decrescente1↑R[⍒R]
: pegue o primeiro elemento deR
quando ele é classificado em ordem decrescenteCaso de teste:
fonte
J , 30 bytes
Como funciona:
Começo com o teste, onde as duas listas se sobrepõem
=/
(insere o teste de igualdade entre todos os membros das listas:Mais de um 1 na mesma coluna significa que o número não é exclusivo para o argumento esquerdo (6 neste caso); na linha - para o argumento correto (3)
Em seguida, resuma todas as linhas e colunas para descobrir onde estão as duplicatas:
Encontro o produto cartesiano das listas acima e defino os membros com mais de 1 a 0.
Mascarei a matriz de igualdade c com m para encontrar os elementos únicos comuns às duas listas e multiplico o argumento esquerdo por isso.
Depois, aplico a lista e encontro o elemento max:
Experimente online!
fonte
C # (.NET Core) ,
66 + 31 = 9765 + 31 = 96 bytesExperimente online!
+31 bytes para
using System;using System.Linq;
Eu me inspirei na resposta de @ aloisdg. No entanto, em vez de procurar valores exclusivos nas duas matrizes, inverti a ordem das operações para que ela
intersect
seja a primeira e depois localizei o valor máximo dos itens que ocorrem duas vezes quando as matrizes são concatenadas e estão interceptadas. Eu posso usar<3
comoCount
será pelo menos 2 para qualquer valor, como será nas duas matrizes.Agradecimentos
-1 byte, graças a @aloisdg e sua sugestão de usar
Func
curry.fonte
Oitava ,
5756 bytesFunção anônima que recebe como entrada uma matriz de células de duas matrizes numéricas.
Experimente online!
Explicação
Para cada (
cellfun(@(x)...)
) das duas matrizes de entrada, isso cria uma matriz de comparações de igualdade entre pares entre suas entradas (x.'==x
); mantém (x(...)
) apenas as entradas para as quais a soma da coluna é1
(sum(...)==1
); e empacota o resultado em uma célula ({...}
). A interseção (intersect
) dos dois resultados ({:}
) é calculada e o máximo (max(...)
) é obtido.fonte
Wolfram Language (Mathematica) , 49 bytes
Experimente online!
fonte