Quantas palavras de duas letras você pode obter de aabcccddef

14

(aa seria um dos muitos, bb não)

Eu pensei que seria 10! / 8! Mas, aparentemente, estou fazendo algo errado. Alguém pode me ajudar porque estou perplexo.

Anthony
fonte
6
Obrigado por nos mostrar o que você tentou. Você poderia explicar por que pensou que seria 10! / 8! pois isso pode nos ajudar a corrigir qualquer mal-entendido conceitual que você tenha? Além disso, isso é uma pergunta de um curso ou livro? Nesse caso, adicione a [self-study]tag e leia seu wiki .
Silverfish
(Embora o autor desta pergunta não tenha adicionado originalmente a tag "auto-estudo", acho que essa pergunta se enquadra nas diretrizes de auto-estudo, por exemplo, eles tiveram o cuidado de nos mostrar o que tentaram e a própria pergunta parece clara A resposta de RoryT indica qual foi provavelmente a falha no pensamento por trás da resposta 10! / 8 !, mas é claro que seria bom se o pôster original pudesse confirmar isso.)
Silverfish
1
Alguns estão votando para fechar isso como "pouco claro". Não vejo o que não está claro aqui, e as respostas dadas indicam que a pergunta foi entendida e suficientemente clara.
Kjetil b halvorsen
2
Para criar palavras com 2 letras, por que 'c' aparece 3 vezes na lista de letras disponíveis?
3
@statman Eu também notei isso (veja os comentários abaixo), mas, em retrospecto, admiro a engenhosidade do questionador em incluí-lo. Embora não seja uma adição cruel, requer um momento extra.
Silverfish

Respostas:

22

Você tem 6 letras diferentes: a, b, c, d, e, f, das quais é possível gerar 6 x 5 = 30 palavras com duas letras diferentes. Além disso, você pode gerar as 3 palavras aa, cc, dd com a mesma letra duas vezes. Portanto, o número total de palavras é 30 + 3 = 33.

Zahava Kor
fonte
17

Uma alternativa ao método de Zahava: existem maneiras de emparelhar duas das letras af. No entanto, não existem 2 caracteres b, e ou f, portanto, "bb", "ee" e "ff" não são possíveis, tornando o número de palavras 36 - 3 =62=36. .36.-3=33

A maneira como você tentou abordar o problema parece ignorar o fato de que não há dez letras distintas. Se você tivesse 10 letras distintas, sua resposta estaria correta.

RoryT
fonte
4
(+1) De fato, o fato de haver dez letras é um arenque vermelho aqui, já que três eram "C"! Em termos de quantas palavras de duas letras podem ser feitas, não teria importância se o "C" aparecesse cinquenta vezes. Qualquer coisa com mais de duas aparências da mesma letra é redundante.
Silverfish
7

Se você não pode argumentar de uma maneira "inteligente", geralmente vale a pena tentar a força bruta. Imagine tentar escrever uma lista ordenada alfabeticamente de todas as palavras que você pode criar.

Quantos podem começar com "A"? Bem, "A" pode ser seguido por A, B, C, D, E ou F, então são seis maneiras.

Quantos podem começar com "B"? Isso pode ser seguido por A, C, D, E ou F, que são apenas cinco maneiras, já que não existe um segundo "B".

Quantos podem começar com "C"? Como "C" aparece três vezes na sua lista, ele pode ser seguido por si ou por qualquer uma das outras cinco letras, assim como em "A", existem seis maneiras. Observe que não temos maneiras "extras" apenas porque "C" aparece mais vezes que "A"; qualquer coisa além de uma segunda aparição é redundante.

Esperamos que agora esteja claro que cada letra que aparece apenas uma vez na sua lista pode aparecer no início de cinco palavras, e as letras que aparecem duas ou mais vezes podem aparecer no início de seis palavras. As letras que aparecem apenas uma vez são "B", "E" e "F", cada uma das quais pode estar no início de cinco palavras, de forma que 5 + 5 + 5 = 15 palavras. As letras que aparecem duas ou mais são "A", "C" e "D", cada uma das quais pode estar no início de seis palavras, de modo que 6 + 6 + 6 = 18 palavras. No total, existem 15 + 18 = 33 palavras.

Isso é mais demorado do que os outros métodos, mas, ao tentar pensar sobre a resposta dessa maneira sistemática, você pode "identificar" um dos métodos mais rápidos.

Observe que, se isso tivesse sido formulado como uma pergunta de probabilidade, sua primeira inclinação talvez fosse desenhar um diagrama em árvore . Teria começado com seis ramificações para a primeira letra, mas para a segunda letra haveria seis ramificações saindo de "A", "C" e "D" (porque elas podem ser seguidas por qualquer uma das seis letras) mas apenas cinco ramos saindo de "B", "E" e "F" (porque não podem ser seguidos por eles mesmos). Esse padrão de ramificação é efetivamente o mesmo que na minha resposta, mas você pode preferir pensar mais visualmente em uma árvore.

Silverfish
fonte
1
O é muito verdadeiro. Use força bruta (possivelmente com o Princípio de inclusão e exclusão) para obter uma estimativa aproximada, limite superior ou limite inferior da resposta.
SMCI
3

Uma abordagem matemática

Do ponto de vista matemático, a solução é o conjunto de elementos do produto cartesiano entre a lista e ela própria, uma vez removida a diagonal. Você pode resolver esse problema usando este algoritmo:

  • calcular o produto cartesiano entre sua lista e ela mesma.
  • removendo a diagonal
  • crie um conjunto a partir da matriz

Um conjunto é uma coleção bem definida de objetos distintos, portanto, os objetos não são repetidos.

Traduzindo para Python

from itertools import product
import numpy as np

letters = list("aabcccddef")
cartesianproduct = np.array(["".join(i) for i in product(letters,letters)]).reshape(10,10)


cartesianproduct

Out :
array([['aa', 'aa', 'ab', 'ac', 'ac', 'ac', 'ad', 'ad', 'ae', 'af'],
       ['aa', 'aa', 'ab', 'ac', 'ac', 'ac', 'ad', 'ad', 'ae', 'af'],
       ['ba', 'ba', 'bb', 'bc', 'bc', 'bc', 'bd', 'bd', 'be', 'bf'],
       ['ca', 'ca', 'cb', 'cc', 'cc', 'cc', 'cd', 'cd', 'ce', 'cf'],
       ['ca', 'ca', 'cb', 'cc', 'cc', 'cc', 'cd', 'cd', 'ce', 'cf'],
       ['ca', 'ca', 'cb', 'cc', 'cc', 'cc', 'cd', 'cd', 'ce', 'cf'],
       ['da', 'da', 'db', 'dc', 'dc', 'dc', 'dd', 'dd', 'de', 'df'],
       ['da', 'da', 'db', 'dc', 'dc', 'dc', 'dd', 'dd', 'de', 'df'],
       ['ea', 'ea', 'eb', 'ec', 'ec', 'ec', 'ed', 'ed', 'ee', 'ef'],
       ['fa', 'fa', 'fb', 'fc', 'fc', 'fc', 'fd', 'fd', 'fe', 'ff']], 
      dtype='|S2')

Nós removemos a diagonal

diagremv = np.array([ np.delete(arr,index) for index,arr in enumerate(cartesianproduct)]) 

diagremv

array([['aa', 'ab', 'ac', 'ac', 'ac', 'ad', 'ad', 'ae', 'af'],
       ['aa', 'ab', 'ac', 'ac', 'ac', 'ad', 'ad', 'ae', 'af'],
       ['ba', 'ba', 'bc', 'bc', 'bc', 'bd', 'bd', 'be', 'bf'],
       ['ca', 'ca', 'cb', 'cc', 'cc', 'cd', 'cd', 'ce', 'cf'],
       ['ca', 'ca', 'cb', 'cc', 'cc', 'cd', 'cd', 'ce', 'cf'],
       ['ca', 'ca', 'cb', 'cc', 'cc', 'cd', 'cd', 'ce', 'cf'],
       ['da', 'da', 'db', 'dc', 'dc', 'dc', 'dd', 'de', 'df'],
       ['da', 'da', 'db', 'dc', 'dc', 'dc', 'dd', 'de', 'df'],
       ['ea', 'ea', 'eb', 'ec', 'ec', 'ec', 'ed', 'ed', 'ef'],
       ['fa', 'fa', 'fb', 'fc', 'fc', 'fc', 'fd', 'fd', 'fe']], 
      dtype='|S2')

Calculamos o comprimento do conjunto de elementos:

len(set(list(diagremv.flatten())))

Out: 33
GM
fonte
1
Eu gosto que você formalizado e automatizado o método de força bruta
Tim Seguine
2

Eu acho que a razão pela qual alguns acham que a pergunta não está clara é porque ela usa o termo "palavras de 2 letras". Dada a maneira como todos estão abordando uma solução, todos interpretam "palavras de duas letras" para significar algo como "pares de letras". Como um ávido jogador de Scrabble, imediatamente entendi a pergunta: "Quantas palavras legítimas de duas letras podem ser feitas com essas letras?" E isso resposta é - 12! Pelo menos, de acordo com a última edição do Dicionário Oficial de Jogadores de Scrabble (OSPD5). As palavras são aa, ab, ad, ae, ba, be, da, de, ed, ef, fa e fe. (Lembre-se de que o fato de você nunca ter ouvido falar de muitas dessas palavras não nega sua validade!); O)

Apenas o meu "2 sense".

Microfone
fonte
1

Mais uma maneira de contar sem força bruta:

Se a primeira letra for a, c ou d, existem 6 opções distintas para a segunda letra.

Mas se a primeira letra for b, e ou f, existem apenas cinco opções distintas para a segunda letra.

36+35=33

Tim Seguine
fonte
0

Há um problema na maneira como você faz sua pergunta. Quais ações são realmente permitidas na linha "aabcccddef" para receber a palavra de duas letras? Podemos substituir o último ou apenas atravessar o desnecessário? Encontrei duas respostas possíveis, dependendo dessas condições:

1) Podemos substituir as letras de qualquer maneira pela resposta 33, como mencionado anteriormente. 30 pares de letras diferentes (6 * 5) e 3 pares de letras semelhantes.

2) Se não podemos trocar de lugar entre as letras e só podemos cruzar, obteremos muito menos respostas. Vamos contar do começo ao fim. Começando com "a", temos 6 letras para ser o segundo, começando com "b" é apenas 4. "c" também possui 4, "d" - 3 e "e" - 1. São 18 no total.

fixerlt
fonte
-1

minha resposta à pergunta: Quantas palavras de duas letras você pode obter de aabcccddef

  1. aa; 2. ab; 3. anúncio; 4. ae; 5. anúncio; 6. ba; 7. ser; 8. de; 9. fa; 10. fe

* // O ponto é que a pergunta diz: "palavras", não combinações de pares. Usando palavras, a letra teria que aparecer duas vezes para usar a palavra mais de uma vez, por exemplo, existem duas da letra 'a' e duas da letra 'd', portanto, é possível escrever 'ad' como uma palavra duas vezes.

Chloe F. Gundst
fonte