Перейти к содержанию

Рекомендуемые сообщения

Опубликовано

Ну, вот нам наконец-то потребовалась четвёрка "004". Вернее, там требуется пара "не-004 и не-010", и все такие варианты можно получить из "не-010". Однако, что-то мне подсказывает, что просто "не-004" нам ещё пригодится.

 

Итак, требуется найти все "трёхзнаки", из которых не получается "004". Ну, например, из "000" как-то вообще не видится никаких арифметических преобразований, которые в результате дают четвёрку. Сколько всего таких - и хочется весь список. Но опять перебирать 1000 возможных вариантов как-то лениво.. Хочется оптимизации. И она есть! - предложена в ветке "Обсуждение" уважаемыми  Xandr_5890 и santax - методы "двузнаков" и оптимизации цифр. А именно. Если присмотреться к этому "не-004" ->

 

1. Оптимизация цифр.

 

Если мы без конкатенации ("склеивания") цифр (типа "V(16)=4" или подобного) решили вариант "1bc", то очевидно подходит и "0bc", который через факториал "0! bc" сводится к уже решённому "1bc". Ещё раз обращаю внимание, только в случаях "отдельно стоящей единицы", без конкатенации цифр.

 

Аналогично "2bc", решённое без конкатенаций, даёт и решение для "4bc" через "V(4) bc".

 

Аналогично, если без конкатенации решено "6bc" => решается и "3! bc" => решается "V(9)! bc".

 

То есть, сначала решаем "1bc не равно 4" - а потом из оставшегося решаем "0bc не равно 4". Затем решаем "2bc", из оставшегося ищем что там в "4bc". Дальше смотрим "6bc" => "3bc" => "9bc".

 

Но перебирать всю сотню вариантов на каждый первый "а" из "abc" тоже не хочется. А для оптимизации этого процесса есть ->

 

2. Метод двузнаков.

 

У нас есть "abc". Давайте посмотрим по каждому "a" что нам наколдуется с "bc", чтобы получить искомую четвёрку? То есть, давайте сразу отфильтруем то, что заведомо решается. Вот таким образом. У нас есть а=0,1,2,...,9. Переберём их по порядку, но с учётом "оптимизации цифр" =>

 

1+"03" = 1*"04" = -1+"05" = 4        not "03,04,05"

 

То есть, при решении "1bc" все двузнаки, которые складываются в 03,04,05 - их надо сразу выкинуть, поскольку заведомо решаемая комбинация. Затем решаем "0" ->

 

0 = из того, что осталось от единицы.

 

Далее двойка =>

 

2+"02" = -2+"06" = 4            not "02,06"

 

Тройку пропускаем, поскольку ждём результатов решения "6". То есть, следующий ход - четвёрка.

 

4 = из того, что осталось от двойки (без конкатенаций), но альтернативно:

4*"01" = -4+"08" = 4            not "01,08"

 

Далее пятая позиция:

 

5-"01" = -5+"09" = 4            not "01,09"

 

Шестёрка:

 

6-"02" = -6+"10" = 4            not "02,10"

 

Тут же сразу "3" и "9":

 

3 = из того, что осталось от шестёрки.

9 = из того, что осталось от тройки.

 

Далее "7" и "8":

 

7-"03" = V(7+"09") = 4            not "03,09" // "09" не потребуется, она перекрывается тройкой.
8-"04" = V(8+"08") = 4            not "04,08"

 

Вот такая логика получается у данного процесса. Интересно, насколько эффективно фильтруется изначальный материал? Сколько из 1000 изначальных вариантов останется для "ручной обработки"?

 

Ну, поехали. Последовательность действий такая:

 

1 => 0, 2 =>4, 5, 6 => 3 => 9, 7, 8  == готово.

 

А также нам потребуются заранее заготовленные двузнаки:

 

not "03,04,05" - новый, надо подсчитать... да они тут все новые.

not "02,06"

not "01,09"
not "02,10"

not "03" 
not "04,08"

 

Все эти комбинации новые, чуть позже займусь.

Пожалуйста, войдите, чтобы комментировать

Вы сможете оставить комментарий после входа в



Войти
  • Похожий контент

    • E.K.
      Автор E.K.
      "Не-03" = 55 комбинаций.
       
      aa-not-05-xx.xods
       
      00    23    46    61    78
      01    24    48    65    79
      05    26    49    66    82
      06    28    50    67    83
      07    29    51    68    84
      10    35    53    70    86
      11    37    55    71    87
      15    38    56    73    88
      16    42    57    75    89
      17    43    59    76    95
      22    44    60    77    97
    • E.K.
      Автор E.K.
      "Не-02" = 32 варианта.
      aa-not-02.xods
       
      06    45    61    76
      07    47    65    77
      08    52    66    78
      17    54    67    80
      18    55    70    81
      25    56    71    85
      27    58    72    87
      36    60    74    96
       
    • E.K.
      Автор E.K.
      Теперь - восьмёрки! Комбинации "не 010", которые начинаются с цифры 8 выглядят вот так:
       
      806    856    867    878
      827    858    870    880
      847    860    871    881
      852    861    876    887
      855    866    877        
       
      Их 19 штук, с какой начать? Предлагаю с самого начала.
       
      Что мы можем сделать с "806xxx" - а?
    • E.K.
      Автор E.K.
      Не-двойки и не-"прочие". Хранилище решений.
       
      aaa-not-002-007.xods    - 0 вариантов // зеро!!
       aaa-not-002-008.xods   - 8 вариантов
    • E.K.
      Автор E.K.
      Здесь надо бы поработать над комбинациями, где вторыми трёхзнаками являются следующие 20 5 всего три комбинации:
       
      656    767
      667    768
      676    776
      677    778
      678    786
      726    787
      737    788
      746    797
      757    856
      766    877
       
      Ну, пожелаем всем удачи! Или всё же попробовать превратить их в "2" или "10"?
       
      UPD: Как подсказал Xandr_5890, -> V(V("010"^"008")) = 100. Если же развить эту тему, то все "def", дающие степень двойки, преобразуются в [много корней V]("010"^[степень двойки]) = 100. То есть, из списка нужно вычеркнуть всё, что даёт степень двойки. То есть, вычёркиваем 667, 677, 678, 726, 737, 746, 766, 767, 768, 776, 778, 787, 788, 797, 856, 877 - а нормально отфильтровали ненужные варианты! А также 757 => (7-5)^7. Вроде больше ничего не оптимизируется. Остаются варианты:
       
      656
      676
      786
       
      Всего пять три варианта! Ура!
×
×
  • Создать...