E.K. Опубликовано 18 мая Опубликовано 18 мая Итак, очередная задачка для упорных арифмоголиков - прорешать все семизнаки. Как наиболее оптимально это сделать - хороший вопрос. Уже начали дискутировать на эту тему - и (повторюсь) я вижу три стратегии решения: 1. "Плясать от шестизнаков" = считать все решённые [*] "не-xxxxxx2,4,8" [*] "не-0,1xxxxxx" [++] все нерешённые по полной программе. 2. Традиционно-I: "abcd+efg". 3. Традиционно-II: "abc+defg". Что более оптимально? Чую, что второй вариант. Но готов обсудить и другие. Вернее, обсчитать трудозатраты на все три стратегии. // А пока же привожу в порядок "lib-12".
santax Опубликовано 12 июня Опубликовано 12 июня (изменено) Ещё накину чуть мыслей, концовки нет, может поможете завершить логическую цепочку. В шестизнаках у нас не решено только 35 чисел. Логично, что для семизнаков их будет того меньше. И наш главный вопрос как уменьшить число семизнаков для рассмотрения? Среди шестизнаков мы решили 999965 чисел. И их мы можем получить из 7 знаков. Как? Для примера есть семизнак 0000000. Какие шестизнаки из него можно получить? Делая разные операции (минимум, разность) над соседними цифрами. Если результат дает одну цифру, также можно применить сложение, возведение в степень, извлечение корня из двух цифр. Для моего примера будут 7 чисел: 000000, 000001, 000010, 000100, 001000, 010000, 100000. Если хотя бы один из вариантов будет находится в списке решенных шестизнаков, значит и этот семизнак. UP. пока писал, понял что нужно уточнение - полученная цифра из двух соседних в решении должна быть однозначной, без слияния с соседними цифрами.. Ну и получается нам нужно найти семизнаки из которых можно получить только наши не решенные 35 чисел.. Умом и головой я понимаю, что скорей всего таких не будет. Но вот как доказать?!... Изменено 12 июня пользователем santax
E.K. Опубликовано 12 июня Автор Опубликовано 12 июня Думаю, что всё проще. В 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 штук! Наверное, здесь и выгода. 1
E.K. Опубликовано 12 июня Автор Опубликовано 12 июня У меня очень плохая новость... Это - просто катастрофа. Судя по всему, мы - на финишной прямой... Объясняю. Делим семизнак на "abcd+efg". 1. Если "abcd" даёт "0010", то вручную считаем такие "efg", которые не дают "002^n, 010". // Спойлер: всё вычищается "в ноль". 2. Если же "abcd" не даёт "0010" (они называются "не-0010"), то начинаем применять арифметическую магию. Оказалось, что "не-0010" получается меньше ста, а "четырёхзнаки-и-далее" гарантированно дают "0002" - ну и всё на этом ===> 1. Четырёхзнаки "abcd", которые дают "0010" - в "восьми-и-далее-знаках" точно дают сотню: "0010"^"00...02" - и трогать их далее не требуется. 2. Четырёхзнаки "abcd", которые не дают "0010" - их количество будет постепенно снижаться за счёт оптимизации в "пяти-шести-[и далее не потребуется?]-знаках". Что-то мне подсказывает, что мы вошли в быстро сужающуюся воронку. Мы на финишной прямой. Как жить дальше без наших привычных арифметических безобразий - не понимаю...
E.K. Опубликовано Суббота в 13:48 Автор Опубликовано Суббота в 13:48 Итак, предлагаю ещё раз собраться с мыслями и описать решение для всех "семи-, восьми- и-так-далее-знаков". Идея решения всё та же самая: отсеять все комбинации, которые дают "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
E.K. Опубликовано Суббота в 14:10 Автор Опубликовано Суббота в 14:10 Далее, эмпирическим путём пришли к оптимизации, что если "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
Рекомендуемые сообщения
Пожалуйста, войдите, чтобы комментировать
Вы сможете оставить комментарий после входа в
Войти