Сколько двухбуквенных слов вы можете получить от aabcccddef

14

(аа будет одним из многих, бб не будет)

Я думал, что это будет 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 = 3362знак равно3636-3знак равно33 .

То, как вы пытались подойти к проблеме, похоже, игнорирует тот факт, что нет 10 разных букв. Если бы у вас было 10 разных букв, то ваш ответ был бы правильным.

RoryT
источник
4
(+1) На самом деле, тот факт, что есть десять букв, является чем-то вроде красной сельди здесь, так как три из них были "C"! С точки зрения количества двухбуквенных слов, это не имело бы значения, если бы буква «С» появлялась пятьдесят раз. Все, что больше, чем два появления одного и того же письма, является излишним.
Серебряная
7

Если вы не можете объяснить это «умным» способом, часто стоит попробовать грубую силу. Представьте себе, что вы пытаетесь записать в алфавитном порядке список всех слов, которые вы можете сделать.

Сколько можно начать с «А»? За «A» могут следовать A, B, C, D, E или F, так что это шесть способов.

Сколько можно начать с "B"? За этим могут следовать A, C, D, E или F, что является только пятью способами, поскольку нет второй буквы «B».

Сколько можно начать с "C"? Поскольку «С» появляется в вашем списке три раза, за ним может следовать сама буква или любые другие пять букв, так же как и с «А», существует шесть способов. Обратите внимание, что мы не получаем никаких «дополнительных» способов только потому, что «C» появляется чаще, чем «A»; все, кроме второго появления, является излишним.

Надеемся, что теперь ясно, что каждая буква, которая появляется только один раз в вашем списке, может появляться в начале пяти слов, а буквы, которые появляются дважды или более, могут появляться в начале шести слов. Буквы, которые появляются только один раз, это «B», «E» и «F», каждая из которых может быть в начале пяти слов, так что получается 5 + 5 + 5 = 15 слов. Буквы, которые появляются дважды или более, представляют собой «A», «C» и «D», каждая из которых может быть в начале шести слов, что составляет 6 + 6 + 6 = 18 слов. Всего 15 + 18 = 33 слова.

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

Обратите внимание, что если бы это было сформулировано как вопрос вероятности, ваша первая склонность заключалась в том, чтобы нарисовать древовидную диаграмму . Началось бы с шести ответвлений для первой буквы, но для второй буквы было бы шесть ответвлений от «A», «C» и «D» (потому что за ними может следовать любая из шести букв) но только пять веток выходят из "B", "E" и "F" (потому что они не могут следовать сами за собой). Этот шаблон ветвления практически такой же, как в моем ответе, но вы можете предпочесть думать об этом более наглядно в дереве.

тарпон
источник
1
Это очень верно. Используйте грубую силу (возможно, с принципом включения-исключения), чтобы получить приблизительную оценку, верхнюю или нижнюю оценку ответа.
17
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
GM
источник
1
Мне нравится, что вы формализовали и автоматизировали метод грубой силы
Тим Сегин
2

Я думаю, что причина, по которой некоторые считают этот вопрос неясным, заключается в том, что в нем используется термин «двухбуквенные слова». Учитывая то, как каждый подходит к решению, все они интерпретируют «двухбуквенные слова» как нечто вроде «буквенных пар». Будучи заядлым игроком в скрэббл, я сразу же взял вопрос, чтобы сказать: «Сколько законных двухбуквенных слов можно сделать из этих букв?» И это ответ - 12! По крайней мере, согласно последнему изданию Официального словаря игроков в скрэббл (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 и «е» - 1. Это всего 18.

fixerlt
источник
-1

мой ответ на вопрос: сколько двухбуквенных слов вы можете получить от aabcccddef

  1. аа; 2. ab; 3. объявление; 4. ае; 5. объявление; 6. ба; 7. быть; 8. де; 9. Fa; 10. fe

* // Дело в том, что вопрос гласит: «слова», а не комбинации пар. При использовании слов буква должна появляться дважды, чтобы использовать слово более одного раза, например, есть две буквы «а» и две буквы «д», поэтому можно написать «ad» как слово дважды.

Хлоя Ф. Гундст
источник