Как рассчитать количество перестановок в базовой комбинаторике 3? - PullRequest
1 голос
/ 15 января 2009

Я никогда не любил математику, и я надеюсь, что кто-то может помочь мне со следующим.

У меня есть 5 коробок:

 1   2   3   4   5
[ ] [ ] [ ] [ ] [ ]

Ящики могут быть белыми, серыми или черными (или думать об этом как 0, 1, 2)

В скольких возможных состояниях может находиться бокс-сет?

Что такое псевдокод (или на любом языке) для генерации всех возможных результатов ??

есть ...

00000
00001
00011
00111

и т. Д. И т. Д. *

Я действительно ценю любую помощь, которую кто-нибудь может мне дать.

Ответы [ 15 ]

0 голосов
/ 15 января 2009

Уникальное количество комбинаций: 3^5=243

Код:

n = 0
for i = 0 to 3^5-1
{
    s = ""
    for j = 1 to 5
    {
        d = n mod 3
        s = toascii(d) . s
        n = n / 3
    }
    println s
    i = i + 1
}
0 голосов
/ 15 января 2009

Подсказка: представьте, что каждое поле - это позиция в номере, а каждый цвет - это отдельная цифра. В реальном мире, сколько комбинаций (включая ноль) вы получаете с 2 позициями и 10 возможными цифрами? Как насчет 3 позиций? Какова связь между добавлением дополнительной позиции и количеством комбинаций, учитывая количество имеющихся у вас цифр?

0 голосов
/ 15 января 2009

количество состояний 3 ^ 5.

псевдокод равен

for value from 0 to 3^5-1
    print base3(value)

где base3 - функция, которая многократно принимает модуль 3 для получения цифры, а затем удаляет эту цифру (путем деления на 3)

0 голосов
/ 15 января 2009

Это похоже на домашнее задание. Тогда я просто помогу вам с решением.

То, что вы говорите, состоит в том, что у каждой коробки есть три состояния, которые все независимы. У одного блока будет 3 решения, а у двух - 3 * 3 решения - для каждого состояния первого блока у второго блока также будет три состояния. Расширьте это до 5 коробок.

Чтобы сгенерировать каждое решение, вы можете просто просмотреть его. Легко создать вложенные циклы для каждого блока, а умножение на степени 10 может позволить вам показать число сразу.

Аналогичным образом можно обобщить код для нескольких полей.

0 голосов
/ 15 января 2009

Количество возможностей от 3 до 5

Если вы сделаете цикл от 0 до этого числа минус 1 и выразите его в базе 3, у вас будут все возможности (не забывайте при необходимости ставить 0)

В рубине:

number_of_possibilities = 3**5-1

for i in (0..number_of_possibilities)
  base_3_number = i.to_s(3)
  puts "%05d" % base_3_number # number formatting used to prepend 0s where necessary
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...