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

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

Опубликовано
12 часов назад, E.K. сказал:

А если приложить головной мозг, то можно и побыстрее что-то придумать..

Обидно, однако! Цель для меня выбрать инструмент, удобный для меня. Тут я могу работать как с телефона, так и с рабочего ноута. Фильтрация позволяет просмотреть только оставшиеся строки. МоёОфис попробовал - через 15 минут закрыл, когда он завис на создании доп строк.
Да, понятно, что есть комбинации, которые можно применить разом к нескольким вариантам (0^X и 1^Y) и как это применить быстро к инструменту вопрос хороший. Но у меня первоочередная цель сделать перебор всех вариантов, а не сделать быстро - так как дедлайна нет.
 

Опубликовано (изменено)

Думаю, возможна вот такая оптимизационная задумка:
(Базовая идея - конкатенировать первые две цифры набора и дальше рассматривать, что получится)


1. Для наборов, которые начинаются на 70, 71... 98, 99 сводим задачу к такой: получить из четырех оставшися цифр числа 30, 29, 28 ... 2, 1.

Если для каких-то наборов не выходит, то рассматриваем такой набор отдельно. Например, для набора 700200: из 0200 число 30 никак не получить, но 700/((0! + 2)! + 0!) = 100

2. Набор начинается на 66:
6!/6 = 120, задачу можно свести к первому пункту - "набор начинается на 80" (только со знаком минус, надо получить из четырех цифр не 20, а -20)

3. Набор начинается на 69 или 63.
6!/3! = 6!/(v9)! = 6!/6
Сводим к пункту 2


4. Рассматриваем наборы, начинающиеся на 68, 67, 65, 64, 62, 61, 60, 59, 58, 57, 56, 51

5.
- Наборы на 55 сводятся к задаче: "получить из четырех оставщихся цифр четверку", т.к. 5 × 5 = 25

- наборы на 54 - "получить из оставщихся пятерку", 5 × 4 = 20

- наборы на 53 - к пункту 1 для наборов на 75 со знаком минус, т.к 5^3 = 125

- наборы на 52 - к наборам на 55, т.к 5^2 = 25

- наборы на 50 - "получить из 4 цифр двойку"

6. Рассматриваем наборы на 48, 47

7.
- Наборы на 49 и 43 сводятся к пункту 4, наборам на 64, т.к 4^v9 = 4^3 = 64

- наборы 46 - к пункту 4, наборам на 56 со знаком минус, т.к 4! × 6 = 144

- наборы на 45 - к наборам на 80 или к наборам на 54

- наборы на 44 - к наборам на 96, 4! × 4 = 96

- наборы на 42 - к наборам на 48, 4! × 2 = 48

- наборы на 40 и 41 - к наборам на 52, т.к 4! + 0! = 25

8. Рассматриваем наборы на 33, 32, 31, 30

9.
- наборы на 39 сводятся к наборам на 80 или к наборам на 54, т.к. 3!!/9 = 80, 3! × 9 = 54

- наборы на 38 - к наборам на 90 или наборам на 48

- наборы на 37 - к наборам на 42, 3! × 7 = 42

- наборы на 36 - к наборам на 80 со знаком минус, 3!!/6 = 120

- наборы на 35 - к наборам на 56 со знаком минус, 3!!/5 = 144

- наборы на 34 - к наборам на 81 или на 72, 3^4 = 81, 3 × 4! = 72

10. Рассматриваем наборы на 29, 28, 22, 21, 19, 18, 17, 16, 13, 12, 11, 10

- наборы на 27 сводятся к наборам на 72 со знаком минус, 2^7 = 128
- наборы на 26 - к наборам на 64, 2^6 = 64
- наборы на 25 - к наборам на 52
- наборы на 24 - к наборам на 48, 2 × 4! = 48
- наборы на 23 - к наборам на 64, 2^3! = 64

- наборы на 20 - к наборам на 54, "получить из 4 цифрх пятерку"

- наборы на 15 - к наборам на 80 или 79 со знаком минус, 1 + 5! = 121

- наборы на 14 - к наборам на 52,      1 + 4! = 25


Вот такой вот черновой эскиз стратегии.

Изменено пользователем Xandr_5890___
Опубликовано

Ход мысли мне нравится! Я рассуждал похоже, но нашёл, как мне кажется, более оптимальный метод. Поскольку перебирать четырёхзнаки - это как-то не очень...

Опубликовано (изменено)

Можно еще попробовать "разбиение на биграммы", вот набросок стратегии:

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

10 ---> (0,1,2,10,10!) // без учета знака
11 ---> (0,1,2,11,11!)
....
....
99 ---> (0,1,18,81,99...) // еще 9!/9, 9^9 и т.д.

2. Каждый набор разбиваем на биграммы и, опираясь на характеры, смотрим можно ли аддитивно/мультипликативно получить 100:

Набор: 102050 ---> 10|20|50
10 ---> (0,1,2,10..)
20 ---> (0,1,2,3,20..)
50 ---> (0,1,4,5,6,50..)

10 × (2 + 0) × (5 + 0) = 100

3. Если набор состоит из трех различных биграмм и из них "чисто" мультипликативно или "чисто" аддитивно можно получить 100, то такой набор порождает еще 5 наборов, получаемых перестановкой биграмм; такие наборы в дальнейшем проверять не нужно:

102050 ---> 105020, 201050, 205010, 501020, 502010

4. Если сопоставление характеров биграмм не дает результат, то рассматриваем набор отдельно:

Набор: 110100
11 ---> (0,1,2,11,11!)
01 ---> (0,1,2)
00 ---> (0,1,2)

Из биграмм сотня не получается, но:
(11 - 0!) × 10 + 0 = 100

(Не могу утверждать, но чутье подсказывает, что таких наборов не очень много - биграммы часто порождают делителей 100)

 

p.s. захожу с одного устройства, с одной почты, а получается, что с разных аккаунтов...

Изменено пользователем Xandr_5890
Опубликовано
3 часа назад, Xandr_5890 сказал:

p.s. захожу с одного устройства, с одной почты, а получается, что с разных аккаунтов...

Эй, админы! Как так?

 

А цепочка рассуждений меня радует! Но не слишком радует :)

Опубликовано (изменено)

Можно доработать стратегию, добавив такой (по большому счету, важнейший) пункт:

После проверки набора и подтверждения его "способности генерировать сотню", вычеркиваем из списка проверки такие наборы, в характерах биграмм которых присутствуют значения, которые индуцировали генерацию в исходном наборе (уфф... прошу прощения за "перегруженный" язык). Пояснение:

Набор: 111410
(1+1) × (1+4) × 10 = 100, сотня генерируется произведением 2 × 5 × 10.
Соответственно, кроме всех перестановок биграмм набора (111014, 141110, 141011, 101114, 101411), также вычеркиваются из списка проверки все упорядоченные тройки биграмм (и их перестановки), в характерах которых есть 2, 5 и 10:
Биграммы с двойкой: 10, 11, 12, 13, 14, 16, 20, 21...
Биграммы с пятеркой: 13, 14, 15, 16, 23, 27, 29, 30...
Биграммы с десяткой: 10, 19, 25, 28, 37, 43, 46, 49...

 

Соответственно, наборы

101310, 101013, 131010, 111310, 111013 ... 121519... 979491... и т.д

Вычеркиваются

Предположу, что так мы довольно быстро переберем большой процент от всех наборов. Для "грубой" проверки останется малая доля (как мне кажется).

P.s. В принципе, можно отойти и от "чисто" биграммного разбиения и перейти к разбиению смешанному:

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

100 = 2 × 5 × 2 × 5, состав набора -
Биграммы с двойкой: 10, 11, 12...
Биграммы с пятеркой: 13, 14, 15...
Монограмма: 2
Монограмма: 5
( и все их перестановки)

100 = 120 - 24 + 4 + 0, состав набора -
Биграммы с 120: 04, 05, 13...
Биграммы с 24: 04, 05, 13...
Монограмма: 4
Монограмма: 0
( и перестановки)

Вот таким мне видится путь к решению.

Изменено пользователем Xandr_5890
Опубликовано
В 18.12.2025 в 12:51, santax сказал:

Цель для меня выбрать инструмент, удобный для меня. Тут я могу работать как с телефона, так и с рабочего ноута. Фильтрация позволяет просмотреть только оставшиеся строки. МоёОфис попробовал - через 15 минут закрыл, когда он завис на создании доп строк.

Ой... Беда... А можно воспроизвести ситуацию и бросить в меня такой таблицей? У Моёфиса в последнее время всё вроде стабильно стало - а тут такие сюрпризы.

Опубликовано
В 19.12.2025 в 20:54, Xandr_5890 сказал:

Можно еще попробовать "разбиение на биграммы", вот набросок стратегии:
1. В начале рассматриваем все пары цифр; для каждой пары составляем множество значений (назовем его "характер биграммы"), которое можно получить с помощью базовых операций:
....
2. Каждый набор разбиваем на биграммы и, опираясь на характеры, смотрим можно ли аддитивно/мультипликативно получить 100:

 

Я это назвал "коленвалом" (а ещё дальше "тройным шарниром") - три сцепленных сегмента, которые в результате дают 100. Однако, как мне кажется, это не самый рациональный подход. Хотя, очевидно, логика здесь есть!

 

В 20.12.2025 в 21:57, Xandr_5890 сказал:

100 = 2 × 5 × 2 × 5, состав набора -
Биграммы с двойкой: 10, 11, 12...
Биграммы с пятеркой: 13, 14, 15...
Монограмма: 2
Монограмма: 5
( и все их перестановки)

100 = 120 - 24 + 4 + 0, состав набора -
Биграммы с 120: 04, 05, 13...
Биграммы с 24: 04, 05, 13...
Монограмма: 4
Монограмма: 0
( и перестановки)

Вот таким мне видится путь к решению.

 

Мне кажется оптимальным решением "стратегия максимального отсеивания". То есть, с самого начала попытаться отсеять все решабельные варианты, а потом присмотреться к оставшимся.

 

Кстати, если идти по "пути биграмм", то вот вам список этих самых биграмм, из которых невозможно получить ни 2, ни 5, ни 10. Их ровно 22 штуки (если я не ошибаюсь) ->

 

07        65        78    
08        66        80    
17        67        81    
18        70        85    
36        71        87    
56        76        96    
58        77            

 

То есть, все комбинации "шестизнаков", в которых присутствуют эти биграммы нужно будет как-то фильтровать вторым уровнем... И что-то их там будет очень многовато! 22*10000 (если эта биграмма в начале) + 22*10000 (если эта биграмма в середине) + 22*10000 (если в конце шестизнака). Ой..

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

Да, сначала надо однозначно отсеять наборы с "гарантированной генерацией".

Разобъем все биграммы на три группы - идеальные, плохие и хорошие.

1. Идеальными будем называть такие биграммы, в характерах которых присутствуют значения {1,2,4,5}, либо значения {1,10}.
Примеры идеальных биграмм:
09, характер ---> (0,1,3,6,8,9,10...)
40, характер ---> (0,1,2,3,4,5,25...)

Легко заметить, что набор, который состоит из трех идеальных биграмм, всегда "генерирует" сотню.
( 100 = 4 × 5 × 5; 100 = 10 × 10 × 1;
100 = 2 × 5 × 10)

Идеальные биграммы: 03, 04, 05, 09, 10, 13, 14, 15, 16, 19, 23, 29, 30, 31, 32, 34, 37, 40, 41, 43, 44, 45, 49, 50, 51, 53, 54, 55, 79, 90, 91, 92, 94, 97

Наборов из таких биграмм 30 × 34 × 34 = 34680 штук (наборы по условию с нуля начинаться не могут).
Эти наборы проверять не нужно.

2. Далее определяем плохие биграммы.
Вы их уже упомянули - те самые 22 штуки. Только бы я в список плохих не стал бы включать:

56 - потому что можно получить 5!/6 = 20, такая биграмма будет "валентна" большинству идеальных, т.к 20 × 5 × 1 = 20 × 10/2 = 100

58 и 85 - по той же причине, 5 × 8 = 40, 40 × 10/4 = 40 × 5/2 = 100

80 - т.к 4 × 5 + 80 = 10 + 80 + 10 = 100

36, 96, 66 - как 80, только со знаком минус.

3. Биграммы, которые НЕ идеальные и НЕ плохие назовем хорошими.
Из них в большинстве случаев (я как раз на этапе подсчета этого "большинства") можно получать корректные наборы вида:

ИД|ИД|ХО
ИД|ХО|ИД
ХО|ИД|ИД

(ИД - идеальная биграмма, ХО - хорошая биграмма)

 

...Что-то мне подсказывает, что и хорошие между собой должны часто "сцепляться"...

 

4. Многим наборам с плохими биграммами, думаю, можно дать определенную огранку:

 

65|70|ИД ---> (6 × 5 + 70) = 100, а ИД по определению имеет в характере единицу

(соответственно, 70|65|ИД, ИД|65|70, ИД|70|65, 65|ИД|70, 70|ИД|65 тоже рабочие)

 

77|ИД|ИД ---> 77 + 4! - 1

70|17|ИД ---> 6 × 17 - 2

81|18|ИД ---> 99 + 1

87|18|ИД ---> 105 - 5

76|87|ИД ---> (13 + 87) × 1

 

(И, уверен, вариаций еще много)

 

 

 

 

 

 

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

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



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

    • Pager
      Автор Pager
      Собственно в названии темы описана вся проблема. Подскажите, что делать?
×
×
  • Создать...