therollingstones
therollingstones личный блог
04 июня 2017, 14:00

Смартлабовцы!

 Ломаю голову над условным оператором моего @торгового робота, по коду вопроса нет, но есть одна очень хорошая задача. 

 У меня есть 10 функций, каждая функция содержит условие, а давайте я выложу это дело 

 

let Testv1t1 = fun v1 -> if ((v1 >= 0)&&(v1 <= 3)) then 0
                                else 1
let Testv2t1 = fun v2 -> if ((v2 >= 0)&&(v2 <= 3)) then 0
                                else 1
let Testv3t1 = fun v3 -> if ((v3 >= 0)&&(v3 <= 3)) then 0
                                else 1
let Testv4t1 = fun v4 -> if ((v4 >= 0)&&(v4 <= 3)) then 0
                                else 1
let Testv5t1 = fun v5 -> if ((v5 >= 0)&&(v5 <= 3)) then 0
                                else 1
let Testv6t1 = fun v6 -> if ((v6 >= 0)&&(v6 <= 3)) then 0
                                else 1
let Testv7t1 = fun v7 -> if ((v7 >= 0)&&(v7 <= 3)) then 0
                                else 1
let Testv8t1 = fun v8 -> if ((v8 >= 0)&&(v8 <= 3)) then 0
                                else 1
let Testv9t1 = fun v9 -> if ((v9 >= 0)&&(v9 <= 3)) then 0
                                else 1
let Testv10t1 = fun v10 -> if ((v10 >= 0)&&(v10 <= 3)) then 0
                                   else 1

условие на данный момент тренировочное но вот суть вопроса.
Итогом работы этих 10 функций будет множество вариантов

Если условия во всех функциях будут выполнены мы получим во такой код 

0 0 0 0 0
0 0 0 0 0

Если условия во всех функциях будут не выполнены мы получим 

1 1 1 1 1
1 1 1 1 1

Дальше интереснее 

1 0 0 0 0   0 0 0 0 0  
0 0 0 0 0   1 0 0 0 0

0 1 0 0 0   0 0 0 0 0
0 0 0 0 0   0 1 0 0 0

0 0 1 0 0   0 0 0 0 0
0 0 0 0 0   0 0 1 0 0

0 0 0 1 0   0 0 0 0 0
0 0 0 0 0   0 0 0 1 0

0 0 0 0 1   0 0 0 0 0
0 0 0 0 0   0 0 0 0 1

Как вы понимаете, можно получить очень необычную комбинацию, например 

1 1 1 0 0
0 0 1 0 0

Я так понимаю, здесь может быть множество комбинаций, 

Мои выводы

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

Мое мнение что здесь очень тонкая грань между допустимым множеством исключений и бесконечностью, ну либо очень большим кол — вом исключений которые просто не реально будет прописать) 
Если есть идей пишите) буду рад) 

Конечно комбинации необходимо просчитывать исходя из реальной ситуации, но а ради интереса, как просчитать? 




26 Комментариев
  • FullCup
    04 июня 2017, 14:16
    вопрос то в чём? или я туплю, или лыжи не едут)))
    • FullCup
      04 июня 2017, 14:42
      Therollingstones, переведи число 1111111111 из двоичной в десятичную систему и узнаешь кол-во комбинаций))))


      если лень, то это 1023. И если 0000000000 читать комбинацией, то всего 1024 комбинации! Это же просто)))

      … не забудь плюсануть))
  • Евгений
    04 июня 2017, 14:23
    Я бы сказал на вскидку 10!, или 3628800 Но надо комбинаторику вспомнить.
      • Евгений
        04 июня 2017, 14:35
        Therollingstones, Евгений, а как получили результат  3628800

        Я могу ошибаться. Но по сути у нас есть ряд из 10 составляющих x.....n, которые можно менять местами как угодно. Количество всемозможных комбинаций можно определить как n! (n факториал). Т.е 10!=1*2*3*4*5*6*7*8*9*10=3628800. Но лучше погуглить статьи по комбинаторике)
  • Евгений
    04 июня 2017, 14:36
    www.mathelp.spb.ru/book2/tv3.htm — там есть раздел перестановки из n элементов. Я думаю что-то похожее и здесь.
        • Евгений
          04 июня 2017, 14:43
          Therollingstones, ну тут надо понимать, что представляет из себя алгоритм робота. Всегда есть способы, как можно облегчить или упростить.
  • FullCup
    04 июня 2017, 14:45
    Блин, я ж выше ответил)) Что не смотришь? )))
      • Евгений
        04 июня 2017, 14:58

        Therollingstones, https://ru.wikipedia.org/wiki/%D0%94%D0%B2%D0%BE%D0%B8%D1%87%D0%BD%D1%8B%D0%B9_%D0%BA%D0%BE%D0%B4 

        Смотри, нашел статью в википедии в подтверждении ответа FullCup

      • Replikant_mih
        04 июня 2017, 15:18

        Therollingstones, ща на пальцах объясним)) — я в этом поднаторел, потому что в математике не особо. 

        У нас десять ячеек. Вариативность каждой из них — 1 и 0, т.е. 2 варианта. Т.о., берем случай когда у нас только одна ячейка, будет два возможных варианта: 0 и 1. Теперь посмотрим, как обстоят дела с двумя ячейками. Во второй ячейке тоже возможны два вариант, а сколько комбинаций на двух ячейках: на каждый вариант в первой ячейке найдётся два варианта во второй, соответственно общее кол-во вариантов будет равно кол-ву вариаций в первой x 2. И далее аналогично — кол-во вариаций при n кол-ве ячеек будет равно кол-ву вариаций при n-1 кол-ве ячее ячеек x 2. Если попробовать проделать то же при 3-х позиционной вариативности в одной ячейке, то будет видно, что множитель 2 превратится в 3. А если попытаться из этого единую формулу сварганить, то и получится, что общее кол-во вариантов будет равно кол-во вариаций в одной ячейке в степени кол-ва ячеек.

        А тебе зачем это?)

          • Replikant_mih
            04 июня 2017, 15:34
            Therollingstones, Да чё, код. Всё равно язык непонятный).
            Как говорили в Иван Василиче: «Хотелось бы понять в общих чертах, о чем он говорит»))

  • iddqd3n
    04 июня 2017, 15:01
    2^10 = 1024 комбинации, факториал — из другой оперы.

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн