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

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

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

Итак, очередная задачка для упорных арифмоголиков - прорешать все семизнаки. Как наиболее оптимально это сделать - хороший вопрос. Уже начали дискутировать на эту тему - и (повторюсь) я вижу три стратегии решения:

 

1. "Плясать от шестизнаков" = считать все решённые [*] "не-xxxxxx2,4,8" [*] "не-0,1xxxxxx"  [++]  все нерешённые по полной программе.

2. Традиционно-I: "abcd+efg".

3. Традиционно-II: "abc+defg".

 

Что более оптимально? Чую, что второй вариант. Но готов обсудить и другие. Вернее, обсчитать трудозатраты на все три стратегии.

 

// А пока же привожу в порядок "lib-12".

  • 4 недели спустя...
Опубликовано (изменено)

Ещё накину чуть мыслей, концовки нет, может поможете завершить логическую цепочку.

В шестизнаках у нас не решено только 35 чисел. Логично, что для семизнаков их будет того меньше. И наш главный вопрос как уменьшить число семизнаков для рассмотрения?

 

Среди шестизнаков мы решили 999965 чисел. И их мы можем получить из 7 знаков. Как?

Для примера есть семизнак 0000000. Какие шестизнаки из него можно получить? Делая разные операции (минимум, разность) над соседними цифрами. Если результат дает одну цифру, также можно применить сложение, возведение в степень, извлечение корня из двух цифр. Для моего примера будут 7 чисел: 000000, 000001, 000010, 000100, 001000, 010000,  100000. Если хотя бы один из вариантов будет находится в списке решенных шестизнаков, значит и этот семизнак. 

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

 

Ну и получается нам нужно найти семизнаки из которых можно получить только наши не решенные 35 чисел.. Умом и головой я понимаю, что скорей всего таких не будет. Но вот как доказать?!...

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

Думаю, что всё проще.

 

В 18.05.2026 в 21:32, E.K. сказал:

1. "Плясать от шестизнаков" = считать все решённые [*] "не-xxxxxx2,4,8" [*] "не-0,1xxxxxx"  [++]  все нерешённые по полной программе.

2. Традиционно-I: "abcd+efg".

3. Традиционно-II: "abc+defg".

 

1. Как-то сложно и непонятно (включая только что предложенное "шаманить над соседними цифрами").

3. "abc", которые "не-010" - таких 200+ штук.

2. "abcd", которые "не-0010" - таких получается что-то около 70 штук! Наверное, здесь и выгода.

  • Like (+1) 1
Опубликовано

У меня очень плохая новость... Это - просто катастрофа. Судя по всему, мы - на финишной прямой...

 

Объясняю.

 

Делим семизнак на "abcd+efg".

 

1. Если "abcd" даёт "0010", то вручную считаем такие "efg", которые не дают "002^n, 010". // Спойлер: всё вычищается "в ноль".

2. Если же  "abcd" не даёт "0010" (они называются "не-0010"), то начинаем применять арифметическую магию.

 

Оказалось, что "не-0010" получается меньше ста, а "четырёхзнаки-и-далее" гарантированно дают "0002" - ну и всё на этом ===>

 

1. Четырёхзнаки "abcd", которые дают "0010" - в "восьми-и-далее-знаках" точно дают сотню:  "0010"^"00...02" - и трогать их далее не требуется.

 

2. Четырёхзнаки "abcd", которые не дают "0010" - их количество будет постепенно снижаться за счёт оптимизации в "пяти-шести-[и далее не потребуется?]-знаках".

 

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

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

Итак, предлагаю ещё раз собраться с мыслями и описать решение для всех "семи-, восьми- и-так-далее-знаков". Идея решения всё та же самая: отсеять все комбинации, которые дают "100 = 10^2 = V(...(10^2^n)...) = 10*10". Выделяем первые четыре символа, смотрим какие из них дают десятку - и так далее. Семизнаки делятся на "abcd+efg", восьми-и-далее на "abcd+efgx..". Всего получается вот такой набор вариантов:

 

Семизнаки:

 

"abcd" = 0010", "efg" = 2^n или 10.   <- такие отфильтровываются сразу.

"abcd" != 0010", "efg" = любые.  <- такие идут на дополнительную фильтрацию.

"abcd" = любые, "efg" != 2^n или 10   <- дополнительная фильтрация, но уже решено вон там.

 

Восьмизнаки и далее: любой четырёх-и-далее знак даёт двойку (показано вон там). Посему для восьми-и-далее-знаков дополнительная фильтрация потребуется только для "не-0010":

 

"abcd" != 0010", "efgx.." = любые.  <- такие идут на дополнительную фильтрацию.

 

Более того, если решение либо семизнака "abcd-efg", либо же восьми++знака "abcd-efgx.." получается через единицу или двойку "abcd","001" / "abcd","002" = 100  -- это автоматически решение для всех более длинных комбинаций, которые начинаются с этой четвёрки "abcd".

 

То есть, если получилось решить "не-0010" через "1" или "2", то в дальнейшем про эту "не-десятку" можно забыть. Таким образом, решение задачи в общем виде значительно (увы!) упрощается... Боюсь, что уже завтра можно будет сказать: "все свободны, спасибо за работу!" 😞

  • Согласен 1
Опубликовано

Далее, эмпирическим путём пришли к оптимизации, что если "abcd" в комбинации с { x,y,[z] } каждый раз даёт 100, а "не-x,y,z" = пусто, то четырёхзнак "abcd" посчитан. Более того, если среди { x,y,[z] } присутствуют "1" или "2" - то автоматически посчитаны и все остальные "abcd-восьми-и-далее-знаки". // я так подробно всё расписываю, чтобы потом лет через несколько не вспоминать мучительно что здесь, как и почему... :)

 

Например, берём случайную комбинацию из "не-0010". Вот такую: "7066-efg". Что видим:

 

7066:    70+6*(6-"001") = 7^-0!*(6!-6)-"002" = 70+6*6-"003"! = 100

 

То есть, искать нерешабельные семизнаки нужно только среди таких троек "efg", которые не дают ни "001", ни "002", ни "003" - а таких не существует! То есть, "7066-efg" подсчитано целиком и полностью.

 

Более того, поскольку в решении есть "001" (и даже "002") - то автоматически подсчитаны и все остальные восьми-и-далее-знаки, начинающиеся с "7066".

 

"7066-efgxx.." = 70+6*(6-"0..001") = 100  // 7^-0!*(6!-6)-"0..002" = 100

 

Список "коротких и удобных" комбинаций "не-001-xxx" = "не-002-ххх" = пусто! вот такой:

 

"не-001-002-003"
"не-001-002-005"
"не-001-002-006"
"не-001-002-007"

 

"не-001-003-004"
"не-001-003-006"
"не-001-003-007"
"не-001-003-008"
"не-001-003-010" 

 

"не-001-004-005"
"не-001-004-006"
"не-001-004-007"

 

"не-001-005-006"
"не-001-005-007"
"не-001-005-008"

"не-001-005-010"

 

"не-001-006"
"не-001-007" 

 

"не-002-006"
"не-002-007"

 

Полный список "не-001/002-xxx-xxx" вот в этом файле:

aaa-not-001-002-xxx-empty.txt

  • Спасибо (+1) 1

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

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



Войти
×
×
  • Создать...