Ile 2-literowych słów można uzyskać od aabcccddef

14

(aa byłby jednym z wielu, bb nie)

Myślałem, że to będzie 10! / 8! Ale najwyraźniej robię coś złego. Czy ktoś może mi pomóc, bo jestem zakłopotany.

Anthony
źródło
6
Dziękujemy za pokazanie nam tego, czego próbowałeś. Czy możesz wyjaśnić, dlaczego myślałeś, że to będzie 10! / 8! ponieważ może to pomóc nam naprawić wszelkie nieporozumienia pojęciowe, które masz? Czy to pytanie pochodzi z kursu lub podręcznika? Jeśli tak, dodaj [self-study]tag i przeczytaj jego wiki .
Silverfish,
(Chociaż autor tego pytania pierwotnie nie dodał tagu „samokształcenie”, myślę, że pytanie to mieści się w wytycznych dotyczących samokształcenia, np. Zadbali o to, aby pokazać nam, co próbowali, a samo pytanie wydaje się jasne wystarczy. Odpowiedź RoryT wskazuje na pewną wadę w myśleniu o odpowiedzi 10! / 8 !, choć oczywiście byłoby miło, gdyby oryginalny plakat mógł to potwierdzić.)
Silverfish,
1
Niektórzy głosują za zamknięciem tego jako „niejasne”. Nie widzę tu, co jest niejasne, a udzielone odpowiedzi wskazują, że pytanie zostało zrozumiane i wystarczająco jasne.
kjetil b halvorsen
2
Dlaczego przy tworzeniu dwuliterowych słów trzy razy „c” pojawia się na liście dostępnych liter?
3
@statman Zauważyłem to również (patrz komentarze poniżej), ale z perspektywy czasu podziwiam pomysłowość osoby zadającej pytania, która ją uwzględniła. Chociaż nie jest to okrutny dodatek, wymaga dodatkowej chwili zastanowienia.
Silverfish,

Odpowiedzi:

22

Masz 6 różnych liter: a, b, c, d, e, f, z których możesz wygenerować 6 x 5 = 30 słów za pomocą dwóch różnych liter. Ponadto możesz wygenerować 3 słowa aa, cc, dd z tą samą literą dwa razy. Zatem łączna liczba słów wynosi 30 + 3 = 33.

Zahava Kor
źródło
17

Alternatywa dla metody Zahavy: istnieje sposobów parowania dwóch liter af. Jednak nie ma 2 znaków b, e lub f, więc „bb”, „ee” i „ff” nie są możliwe, dzięki czemu liczba słów 36 - 3 = 33 .62)=3636-3)=33

Sposób, w jaki próbowałeś podejść do problemu, wydaje się ignorować fakt, że nie ma 10 różnych liter. Jeśli miałbyś 10 różnych liter, twoja odpowiedź byłaby poprawna.

RoryT
źródło
4
(+1) Rzeczywiście, fakt, że jest dziesięć liter, jest tutaj trochę czerwonym śledziem, ponieważ trzy z nich miały literę „C”! Jeśli chodzi o liczbę słów dwuliterowych, nie miałoby to znaczenia, gdyby „C” pojawiło się pięćdziesiąt razy. Coś więcej niż dwa występy tego samego listu jest zbędne.
Silverfish,
7

Jeśli nie potrafisz tego uzasadnić w „sprytny” sposób, często warto spróbować brutalnej siły. Wyobraź sobie, że próbujesz zapisać uporządkowaną alfabetycznie listę wszystkich słów, które możesz napisać.

Ile może zaczynać się od „A”? Cóż, „A” może następować A, B, C, D, E lub F, więc to sześć sposobów.

Ile może zaczynać się na „B”? Następnie mogą występować litery A, C, D, E lub F, czyli tylko pięć sposobów, ponieważ nie ma drugiego „B”.

Ile może zaczynać się na „C”? Ponieważ „C” pojawia się trzy razy na liście, po nim może występować sam lub dowolna z pozostałych pięciu liter, podobnie jak w przypadku „A” istnieje sześć sposobów. Zauważ, że nie dostajemy żadnych „dodatkowych” sposobów tylko dlatego, że „C” pojawia się więcej razy niż „A”; wszystko poza drugim wyglądem jest zbędne.

Mamy nadzieję, że teraz jest jasne, że każda litera, która pojawia się tylko raz na liście, może pojawić się na początku pięciu słów, a litery, które pojawiają się dwa razy lub więcej, mogą pojawić się na początku sześciu słów. Litery, które pojawiają się tylko raz, to „B”, „E” i „F”, z których każda może znajdować się na początku pięciu słów, co daje 5 + 5 + 5 = 15 słów. Litery, które pojawiają się dwa razy lub więcej, to „A”, „C” i „D”, z których każda może znajdować się na początku sześciu słów, co daje 6 + 6 + 6 = 18 słów. W sumie jest 15 + 18 = 33 słów.

Jest to bardziej skomplikowane niż w przypadku innych metod, ale próbując zastanowić się nad odpowiedzią w ten systematyczny sposób, być może udało Ci się „dostrzec” jedną z szybszych metod.

Zauważ, że jeśli zostało to sformułowane jako pytanie prawdopodobieństwa, twoją pierwszą skłonnością mogło być narysowanie diagramu drzewa . Zacząłby się od sześciu gałęzi dla pierwszej litery, ale dla drugiej litery byłoby sześć gałęzi wychodzących z liter „A”, „C” i „D” (ponieważ po nich może następować dowolna z sześciu liter) ale tylko pięć gałęzi wychodzi z „B”, „E” i „F” (ponieważ nie mogą same za sobą podążać). Ten wzór rozgałęziania jest faktycznie taki sam, jak w mojej odpowiedzi, ale możesz pomyśleć o nim bardziej wizualnie na drzewie.

Silverfish
źródło
1
To jest bardzo prawdziwe. Użyj siły brutalnej (być może z zasadą włączenia-wykluczenia), aby uzyskać szacunkową wartość pola golfowego, górną lub dolną granicę odpowiedzi.
smci,
3

Podejście matematyczne

Z matematycznego punktu widzenia rozwiązaniem jest zestaw elementów produktu kartezjańskiego między listą a sobą po usunięciu przekątnej. Możesz rozwiązać ten problem za pomocą tego algorytmu:

  • obliczanie iloczynu kartezjańskiego między twoją listą a sobą.
  • usunięcie przekątnej
  • utwórz zestaw z tablicy

Zestaw jest dobrze zdefiniowaną kolekcją różnych obiektów, dlatego obiekty nie są powtarzane.

Tłumaczenie go na język 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')

Usuwamy przekątną

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

Obliczamy długość zestawu elementów:

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

Out: 33
GM
źródło
1
Podoba mi się, że sformalizowałeś i zautomatyzowałeś metodę brutalnej siły
Tim Seguine,
2

Myślę, że niektórzy uważają, że pytanie jest niejasne, ponieważ używa terminu „słowa dwuliterowe”. Biorąc pod uwagę sposób, w jaki wszyscy podchodzą do rozwiązania, wszyscy interpretują „2-literowe słowa” w znaczeniu czegoś w rodzaju „par liter”. Jako zapalony gracz Scrabble, od razu przyjąłem pytanie: „Ile legalnych 2-literowych słów można utworzyć z tych liter?” I że odpowiedź brzmi - 12! Przynajmniej według najnowszego wydania Official Scrabble Players Dictionary (OSPD5). Są to: aa, ab, ad, ae, ba, be, da, de, ed, ef, fa i fe. (Należy pamiętać, że fakt, że nigdy nie słyszałeś o wielu z tych słów, nie neguje ich ważności!); O)

Po prostu mój „2 zmysł”.

Mikrofon
źródło
1

Jeszcze inny sposób na liczenie bez brutalnej siły:

Jeśli pierwsza litera to a, c lub d, istnieje 6 różnych pozostałych opcji dla drugiej litery.

Ale jeśli pierwszą literą jest b, e lub f, istnieje tylko 5 różnych pozostałych wyborów dla drugiej litery.

Więc tutaj są 3)6+3)5=33 rozróżnić dwuliterowe słowa.

Tim Seguine
źródło
0

Podczas zadawania pytania występuje problem. Jakie działania są dozwolone w wierszu „aabcccddef”, aby pobrać 2-literowe słowo? Czy możemy wymienić te ostatnie, czy tylko przekroczyć niepotrzebne? Znalazłem dwie możliwe odpowiedzi w zależności od tych warunków:

1) Możemy w dowolny sposób zastąpić litery odpowiedzią na 33, jak wspomniano wcześniej. 30 par różnych liter (6 * 5) i 3 pary podobnych liter.

2) Jeśli nie możemy zamienić liter na litery i możemy tylko przejść, otrzymamy znacznie mniej odpowiedzi. Policzmy od początku do końca. Zaczynając od „a” mamy 6 liter na drugie, zaczynając od „b” to tylko 4. „c” ma również 4, „d” - 3 i „e” - 1. To w sumie 18.

fixerlt
źródło
-1

moja odpowiedź na pytanie: ile 2-literowych słów można uzyskać od aabcccddef

  1. aa; 2. ab; 3. reklama; 4. ae; 5. reklama; 6. ba; 7. być; 8. de; 9. fa; 10. fe

* // Chodzi o pytanie, które brzmi: „słowa”, a nie kombinacje par. Używając słów, litera musiałaby pojawić się dwukrotnie, aby użyć słowa więcej niż jeden raz, na przykład dwie litery to „a” i dwie litery „d”, dlatego możliwe jest dwukrotne wpisanie słowa „reklama”.

Chloe F. Gundst
źródło