Скільки двох літер слів можна отримати від aabcccddef


14

(аа був би одним із багатьох, bb не став)

Я думав, що це буде 10! / 8! Але, мабуть, я роблю щось не так. Хто-небудь може мені допомогти, тому що я наткнувся.


6
Дякуємо, що показали нам, що ви спробували. Чи можете ви пояснити, чому ви думали, що це буде 10! / 8! як це може допомогти нам виправити будь-яке ваше концептуальне непорозуміння? Також це питання з курсу чи підручника? Якщо так, додайте [self-study]тег і прочитайте його вікі .
Срібна рибка

(Хоча автор цього питання спочатку не додав тег "самонавчання", я думаю, що це питання підпадає під настанови самонавчання, наприклад, вони подбали про те, щоб показати нам, що вони намагалися, і саме питання видається зрозумілим . досить відповідь на RoryT вказує на те , що, ймовірно, недолік в мисленні за 10/8 відповідь, хоча, звичайно , було б непогано , якщо оригінальний плакат може підтвердити це) !.
Серебрянка

1
Деякі голосують за те, щоб закрити це як "незрозуміле". Я не можу побачити, що тут незрозуміло, а наведені відповіді вказують на те, що питання було зрозумілим і чітким.
kjetil b halvorsen

2
Чому для створення двох літерних слів чому "c" відображається 3 рази у списку доступних букв?

3
@statman Я також помітив це (див. коментарі нижче), але в ретроспективі я захоплююся винахідливістю питання, що задає питання, включаючи його. Хоча це не жорстоке доповнення, воно вимагає додаткової хвилини думки.
Срібна рибка

Відповіді:


22

У вас є 6 різних літер: a, b, c, d, e, f, з яких ви можете генерувати 6 x 5 = 30 слів з двома різними літерами. Крім того, ви можете генерувати 3 слова aa, cc, dd з однаковою літерою двічі. Отже загальна кількість слів становить 30 + 3 = 33.


17

Альтернатива методу Захави: існує способів сполучення двох букв af. Однак символів немає 2 b, e або f, тому "bb", "ee" і "ff" неможливі, тому кількість слів 36 - 3 = 33 .62=3636-3=33

Те, як ви намагалися підійти до проблеми, здається, ігнорує той факт, що немає 10 різних літер. Якщо у вас було 10 різних літер, то ваша відповідь була б правильною.


4
(+1) Дійсно, що тут є десять букв - це трохи червона оселедець, оскільки три з них були "С"! З точки зору того, скільки можна скласти двобуквенних слів, це не мало б значення, якби "C" з'являлося п'ятдесят разів. Що-небудь більше, ніж два види однієї і тієї самої літери є зайвими.
Срібна рибка

7

Якщо ви не можете це пояснити "розумним" способом, часто варто спробувати грубу силу. Уявіть, що намагаєтесь записати алфавітно впорядкований список усіх слів, які ви можете скласти.

Скільки можна починати з «А»? Ну а "А" може супроводжуватися A, B, C, D, E або F, тож це шість способів.

Скільки можна починати з «В»? За цим може слідувати A, C, D, E або F, що є лише п’ятьма способами, оскільки не існує другого "B".

Скільки можна починати з "C"? Оскільки "C" відображається у вашому списку тричі, його можна супроводжувати як самим, так і будь-яким з інших п'яти літер, так само як і для "A", існує шість способів. Зауважте, що ми не отримуємо жодних "зайвих" способів лише тому, що "C" з'являється більше разів, ніж "A"; все, що перевищує другу появу, є зайвим.

Сподіваємось, зараз зрозуміло, що кожна літера, що з’являється лише один раз у вашому списку, може з’являтися на початку п'яти слів, а літери, які з’являються двічі або більше, можуть з’являтися на початку шести слів. Букви, що з’являються лише один раз, - це "B", "E" і "F", кожне з яких може бути на початку п'яти слів, так що складає 5 + 5 + 5 = 15 слів. Літери, які з’являються двічі або більше, - це "A", "C" і "D", кожне з яких може бути на початку з шести слів, так що виходить 6 + 6 + 6 = 18 слів. Всього є 15 + 18 = 33 слова.

Це більш завзято, ніж інші методи, але, намагаючись думати про відповідь таким систематичним способом, можливо, ви змогли «помітити» один із швидших методів.

Зауважте, що якби це було викладено як питання про ймовірність, вашим першим нахилом, можливо, було б скласти схему дерева . Для першої літери воно починалося б із шести гілок, але для другої літери було б шість гілок, що виходять із "А", "С" та "D" (тому що за ними може слідувати будь-яка з шести літер) але лише п'ять гілок, що виходять із "B", "E" та "F" (тому що вони не можуть слідувати самі собою). Ця схема розгалуження фактично така сама, як і в моїй відповіді, але ви, можливо, вважаєте за краще подумати про неї більш візуально на дереві.


1
Це дуже правда. Використовуйте грубу силу (можливо, з принципом включення), щоб отримати бальну оцінку, верхню чи нижню межу відповіді.
smci

3

Математичний підхід

З математичної точки зору рішення - це сукупність елементів декартового твору між списком і самим колись знятим діагоналем. Вирішити цю проблему можна за допомогою цього алгоритму:

  • обчислення декартового продукту між вашим списком та самим собою.
  • зняття діагоналі
  • створити набір з масиву

Набір - це чітко визначена колекція різних об'єктів, отже, об'єкти не повторюються.

Переклад його на 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')

Діагональ знімаємо

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

Обчислюємо довжину набору елементів:

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

Out: 33

1
Мені подобається, що ви формалізували і автоматизували метод грубої сили
Тім Сегуїн

2

Я вважаю, що причина деяких вважає це питання незрозумілим у тому, що він використовує термін "2-літерні слова". З огляду на те, як всі підходять до рішення, всі вони інтерпретують "двобуквенні слова", щоб означати щось на зразок "літерних пар". Як завзятий гравець Scrabble, я одразу сприйняв питання, яке означає: "Скільки законних слів з двох літер можна зробити з цих букв?" І ця відповідь - 12! Принаймні, згідно з останньою редакцією Офіційного словника гравців Scrabble (OSPD5). Слова - aa, ab, ad, ae, ba, be, da, de, ed, ef, fa, fe. (Будь ласка, майте на увазі, що той факт, що ви ніколи не чули про багато цих слів, не скасовує їх дійсності!); O)

Просто моє «2 почуття».


1

Ще один спосіб порахувати без грубої сили:

Якщо перша літера є a, c або d, то для другої літери залишилось 6 різних варіантів.

Але якщо перша буква є b, e або f, для другої літери залишилося лише 5 різних варіантів.

Так є 36+35=33 виділити два буквені слова.


0

У тому, як ви ставите своє запитання, існує проблема. Які дії фактично дозволено в рядку "aabcccddef" приймати слово з двох букв? Чи можемо ми замінити останнє або лише перекреслити непотрібне? Я знайшов дві можливі відповіді залежно від цих умов:

1) Це ми можемо будь-яким чином замінити букви на відповідь як на 33, як згадувалося раніше. 30 пар різних літер (6 * 5) і 3 пари подібних букв.

2) Якщо ми не можемо переключити місця букв і можемо лише перехрещуватися, ми отримаємо набагато менше відповідей. Давайте порахуємо від початку до кінця. Починаючи з "а", у нас є 6 букв, щоб бути другими, починаючи з "б", це лише 4. "с" також має 4, "d" - 3 і "e" - 1. Це всього 18.


-1

моя відповідь на питання: Скільки двох буквених слів можна отримати від aabcccddef

  1. аа; 2. аб; 3. оголошення; 4. ае; 5. оголошення; 6. ба; 7. бути; 8. де; 9. fa; 10. фе

* // Суть у тому, що запитання читається, "слова", а не комбінації пар. Використовуючи слова, які букву довелося б з’являтись двічі, щоб використовувати слово більше одного разу, наприклад, два букви «а» і два букви «d», тому «оголошення» як слово можна записати двічі.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.