Combien de mots de 2 lettres pouvez-vous obtenir de aabcccddef


14

(aa serait l'un des nombreux, bb ne le ferait pas)

Je pensais que ce serait 10! / 8! Mais apparemment, je fais quelque chose de mal. Quelqu'un peut-il m'aider parce que je suis perplexe.


6
Merci de nous avoir montré ce que vous avez essayé. Pourriez-vous expliquer pourquoi vous pensiez que ce serait 10! / 8! car cela pourrait nous aider à corriger tout malentendu conceptuel que vous avez? Est-ce aussi une question d'un cours ou d'un manuel? Si oui, veuillez ajouter la [self-study]balise et lire son wiki .
Silverfish

(Bien que l'auteur de cette question n'ait pas ajouté à l'origine la balise "self-study", je pense que cette question relève des lignes directrices d'auto-apprentissage, par exemple, ils ont pris soin de nous montrer ce qu'ils ont essayé, et la question elle-même semble claire La réponse de RoryT indique quel était probablement le défaut dans la pensée derrière la réponse 10! / 8!, bien que ce serait bien si l'affiche originale pouvait le confirmer.)
Silverfish

1
Certains votent pour clore cela comme étant "peu clair". Je ne vois pas ce qui n'est pas clair ici, et les réponses données indiquent que la question a été comprise et suffisamment claire.
kjetil b halvorsen

2
Pour créer des mots de 2 lettres, pourquoi «c» apparaît-il 3 fois dans la liste des lettres disponibles?

3
@statman J'ai également remarqué cela (voir les commentaires ci-dessous) mais rétrospectivement, j'admire l'ingéniosité du poseur de questions à l'inclure. Bien que ce ne soit pas un ajout cruel, il nécessite une réflexion supplémentaire.
Silverfish

Réponses:


22

Vous avez 6 lettres différentes: a, b, c, d, e, f à partir desquelles vous pouvez générer 6 x 5 = 30 mots avec deux lettres différentes. De plus, vous pouvez générer deux fois les 3 mots aa, cc, dd avec la même lettre. Donc, le nombre total de mots est de 30 + 3 = 33.


17

Une alternative à la méthode de Zahava: il existe façons d'appairer deux des lettres af. Cependant, il n'y a pas 2 caractères b, e ou f, donc "bb", "ee" et "ff" ne sont pas possibles, ce qui fait que le nombre de mots 36 - 3 = 33 .62=3636-3=33

La façon dont vous avez essayé d'aborder le problème semble ignorer le fait qu'il n'y a pas 10 lettres distinctes. Si vous aviez 10 lettres distinctes, votre réponse serait correcte.


4
(+1) En effet, le fait qu'il y ait dix lettres est un peu un hareng rouge ici, puisque trois d'entre elles étaient "C"! En ce qui concerne le nombre de mots de deux lettres qui peuvent être créés, cela n'aurait pas d'importance si le "C" apparaissait cinquante fois. Plus de deux apparitions de la même lettre sont redondantes.
Silverfish

7

Si vous ne pouvez pas le raisonner de manière "intelligente", cela vaut souvent la peine d'essayer la force brute. Imaginez que vous essayez d'écrire une liste alphabétique de tous les mots que vous pouvez créer.

Combien peuvent commencer par "A"? Eh bien, "A" peut être suivi de A, B, C, D, E ou F, c'est donc six façons.

Combien peuvent commencer par "B"? Cela peut être suivi par A, C, D, E ou F, qui ne sont que cinq voies, car il n'y a pas de deuxième "B".

Combien peuvent commencer par "C"? Étant donné que "C" apparaît trois fois dans votre liste, il peut être suivi par lui-même ou par l'une des cinq autres lettres, de même que pour "A", il existe six façons. Notez que nous n'obtenons aucun moyen "supplémentaire" simplement parce que "C" apparaît plus de fois que "A"; quoi que ce soit au-delà d'une seconde apparence est redondant.

J'espère qu'il est maintenant clair que chaque lettre qui n'apparaît qu'une seule fois dans votre liste peut apparaître au début de cinq mots, et les lettres qui apparaissent deux fois ou plus peuvent apparaître au début de six mots. Les lettres qui n'apparaissent qu'une seule fois sont "B", "E" et "F", chacune pouvant être au début de cinq mots, ce qui fait 5 + 5 + 5 = 15 mots. Les lettres qui apparaissent deux fois ou plus sont "A", "C" et "D", chacune pouvant être au début de six mots, ce qui fait 6 + 6 + 6 = 18 mots. Au total, il y a 15 + 18 = 33 mots.

C'est plus long que les autres méthodes, mais en essayant de réfléchir à la réponse de cette manière systématique, vous avez peut-être pu «repérer» l'une des méthodes les plus rapides.

Notez que si cela avait été formulé comme une question de probabilité, votre première inclinaison aurait pu être de dessiner un diagramme d'arbre . Cela aurait commencé avec six branches pour la première lettre, mais pour la deuxième lettre, il y aurait eu six branches provenant de "A", "C" et "D" (parce qu'elles peuvent être suivies par n'importe laquelle des six lettres) mais seulement cinq branches sortant de "B", "E" et "F" (car elles ne peuvent pas être suivies par elles-mêmes). Ce modèle de ramification est effectivement le même que dans ma réponse, mais vous préférerez peut-être y penser plus visuellement dans un arbre.


1
C'est très vrai. Utilisez la force brute (éventuellement avec le principe d'inclusion-exclusion) pour obtenir une estimation approximative, borne supérieure ou borne inférieure sur la réponse.
smci

3

Une approche mathématique

D'un point de vue mathématique, la solution est l'ensemble des éléments du produit cartésien entre la liste et lui-même une fois enlevé la diagonale. Vous pouvez résoudre ce problème en utilisant cet algorithme:

  • calculer le produit cartésien entre votre liste et lui-même.
  • enlever la diagonale
  • créer un ensemble à partir du tableau

Un ensemble est une collection bien définie d'objets distincts, donc les objets ne sont pas répétés.

Le traduire en 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')

On enlève la diagonale

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')

Nous calculons la longueur de l'ensemble des éléments:

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

Out: 33

1
J'aime que vous ayez officialisé et automatisé la méthode de la force brute
Tim Seguine

2

Je pense que la raison pour laquelle certains pensent que la question n'est pas claire est qu'elle utilise le terme «mots de 2 lettres». Étant donné la façon dont tout le monde aborde une solution, ils interprètent tous les «mots de 2 lettres» pour signifier quelque chose comme des «paires de lettres». En tant que passionné de Scrabble, j'ai immédiatement compris que la question signifiait: "Combien de mots légitimes de 2 lettres peuvent être créés à partir de ces lettres?" Et cette réponse est - 12! Du moins, selon la dernière édition du Dictionnaire officiel des joueurs de Scrabble (OSPD5). Les mots sont aa, ab, ad, ae, ba, be, da, de, ed, ef, fa et fe. (Veuillez garder à l'esprit que le fait que vous n'ayez jamais entendu parler de beaucoup de ces mots ne nie pas leur validité!); O)

Juste mon "2 sens".


1

Encore une autre façon de compter sans force brute:

Si la première lettre est a, c ou d, il reste 6 choix distincts pour la deuxième lettre.

Mais si la première lettre est b, e ou f, il ne reste que 5 choix distincts pour la deuxième lettre.

36+35=33 mots distincts de deux lettres.


0

Il y a un problème dans la façon dont vous posez votre question. Quelles actions sont réellement autorisées sur la ligne "aabcccddef" pour prendre un mot de 2 lettres? Pouvons-nous remplacer ces derniers ou ne traverser que les inutiles? J'ai trouvé deux réponses possibles en fonction de ces conditions:

1) Si nous pouvons remplacer les lettres de quelque façon que ce soit, la réponse est 33 comme il est mentionné précédemment. 30 paires de lettres différentes (6 * 5) et 3 paires de lettres similaires.

2) Si nous ne pouvons pas changer les lettres et ne pouvons que croiser, nous obtiendrons beaucoup moins de réponses. Comptons du début à la fin. En commençant par "a" nous avons 6 lettres pour être deuxième, en commençant par "b" c'est seulement 4. "c" a aussi 4, "d" - 3 et "e" - 1. C'est 18 totalement.


-1

ma réponse à la question: combien de mots de 2 lettres pouvez-vous obtenir de aabcccddef

  1. aa; 2. ab; 3. annonce; 4. ae; 5. annonce; 6. ba; 7. être; 8. de; 9. fa; 10. fe

* // Le point est que la question se lit, "les mots" et non les combinaisons de paires. En utilisant des mots, la lettre devrait apparaître deux fois pour utiliser le mot plus d'une fois, par exemple, il y a deux de la lettre 'a' et deux de la lettre 'd' donc il est possible d'écrire 'ad' comme mot deux fois.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.