Dado um conjunto de cadeias não vazio e uma lista de cadeias, descubra quantas vezes o conjunto ocorre na lista, ou seja, quantas vezes você pode criar o conjunto com itens da lista. Cada elemento da lista pode ser usado apenas uma vez.
Dica: um conjunto é uma lista não ordenada de itens exclusivos.
Regras de entrada / saída padrão se aplicam.
Nenhuma biblioteca externa permitida. As bibliotecas padrão do compilador / intérprete estão bem. Este é o código de golfe, portanto, a solução mais curta conta.
Casos de teste:
["apple", "banana"], ["apple", "pear", "apple", "banana", "banana"] => 2
["apple", "banana"], ["apple", "pear", "apple", "banana", "apple"] => 1
["apple", "banana", "pear"], ["apple", "banana", "kiwi", "apple"] => 0
["coconut"], [] => 0
EDIT: removeu uma sentença informando que os parâmetros de entrada estão definidos no escopo local. Isso contradiz as regras de E / S padrão vinculadas acima.
code-golf
set-partitions
Hubert Grzeskowiak
fonte
fonte
Respostas:
Python, 30 bytes
Experimente online!
fonte
lambda
para aprint
eleva a contagem de bytes até 37 por causa dos doisinput()
s necessários.Gelatina , 4 bytes
Experimente online!
Quão?
fonte
Geléia ,
654 bytesExperimente online!
O primeiro argumento do programa é o conjunto e o segundo argumento é a lista.
Explicação
-1 byte graças a @ETHproductions
-1 byte novamente graças a @ETHproductions
fonte
⁹ċ$€Ṃ
Eu tenho um sentimento que pode ser feito mais curto usando o argumento direito implícito no lugar de⁹
...ċ@€Ṃ
funciona para salvar outro byte ... (o@
inverte os argumentos paraċ
)Ɱ
no lugar de@€
(com argumentos invertidos para o programa) economiza mais um byte: Experimente on-line!JavaScript (ES6), 56 bytes
Experimente online
fonte
n=>h=>Math.min(...n.map(c=>h.filter($=>$==c).length))
para 53 bytesJavaScript (ES6), 64 bytes
Assume ambos
s
el
são matrizes de objetos. Usa a igualdade estrita de JavaScript para comparações, portanto, por exemplo,[] === []
é falso.fonte
Haskell ,
3734 bytesObrigado a @Laikoni por remover três bytes.
Ligue com
(set::[a]) # (list::[a])
ondea
é derivado qualquer tipoEq
.fonte
length[y|y<-l,y==x]
você pode usarsum[1|y<-l,y==x]
.sum[1|y<-l,y==x,_<-y]
, que sai para dois bytes longo Eu definitivamente poderia estar faltando alguma coisa lá, emboraCJam , 11 bytes
Experimente online!
Explicação
fonte
Mathematica, 24 bytes
Função pura, tendo duas listas como argumentos na ordem sugerida e retornando um número inteiro não negativo.
Tally
conta quantas ocorrências de cada símbolo ocorrem na lista de entrada e#/.Rule@@@
converte cada elemento do conjunto de entradas no número correspondente de ocorrências.fonte
T-SQL, 62
59bytesA versão anterior não funcionava para conjuntos sem correspondências
Com s e l como tabelas e colunas com o mesmo nome da tabela
fonte
Rápido, 39 bytes
explicação:
s.map{}
passa por cada palavra em se produzirá uma série de contagensw in
nomeia a palavra mapeada para uso no próximo filtrol.filter{}
aplica um filtro à matriz l$0==w
é a condição de filtro que corresponde à palavra w.count
fornece o número de elementos de l que atenderam à condição.min()
retorna a contagem mais baixa no resultado mapeadofonte
APL (Dyalog) , 9 bytes
Experimente online!
⎕
obter entrada avaliada (lista de strings)⎕∘.≡
obter entrada avaliada (conjunto de cadeias não vazio) e criar tabela de equivalência+/
adicionar⌊/
mínimo emfonte
Perl 6 ,
3718 bytes37.
Tente
Expandido:
Consulte Conjuntos, malas e misturas para obter mais informações.
18
Tente
Explicação:
@^b.Bag
crie um saco a partir da{@^a}
chave de valores nesse saco (retorna uma lista de contagens) e.min
obtenha o valor mínimo da lista resultantefonte
Axioma, 42 bytes
código de teste e resultados
fonte
C ++,
203201 bytesObrigado ao @Quentin por salvar dois bytes!
Experimente online!
fonte
L.begin()
->begin(L)
salva um byte :)using T=std::vector<std::string>;
salva outro! Quem sabia que a sintaxe bonita e moderna também poderia ajudar no golfe.PHP, 74 bytes
Casos de teste
PHP, 108 bytes
Casos de teste
fonte
Pitão, 5 bytes
Leva a lista primeiro e o conjunto depois. Suíte de teste.
Explicação:
fonte
C #, 36 bytes
n
eh
arestring[]
e a saída é umint
.Experimente online!
Essa resposta é inspirada na lógica de @ovs e @Alberto Rivera. Obrigado!
fonte
Java, 135 bytes
Este é o meu primeiro desafio e resposta ao código de golfe, portanto, não tenho certeza sobre o formato. Precisa ser um programa de compilação completo? Preciso definir os parâmetros? Sugestões apreciadas.
EDIT : código agrupado em uma função. Obrigado @Steadybox
fonte
05AB1E , 7 bytes
Experimente online!
fonte
Java, 114 bytes
Tio em breve
Explicação
cria a variável local m.
mapeia o conjunto para um fluxo.
para cada elemento, se o número de ocorrências do elemento na lista for menor que m, m será definido para esse valor.
retorna m, que é o número de versões completas do conjunto
fonte
R 54 bytes
Explicação: criando uma tabela das contagens apenas dos valores na lista que também aparecem na sublist.
Transformei a variável em um fator para gerar zeros se um valor que aparece na sub-lista não aparecer na lista. Finalmente, tomo o mínimo das contagens.
fonte
R,
615744 bytesFunção anônima.Aparentemente, você não precisa definir uma função para esse desafio. Economizou 13 bytes graças à contagem.Explicação:
sum(l%in%x))
retorna o número de vezes que uma strings
é encontradal
.lapply(s,function(x))
aplica isso a cada sequências
separadamente e retorna uma lista de somas.min()
retorna o menor da lista.fonte
z=c();for(i in s)z[i]=sum(l%in%i);min(z)
min(sapply(s,function(x)sum(l%in%x)))
JavaScript (ES6), 59 bytes
Tente
fonte