Найти тему
Фанфик жив

Характерная ошибка программистов, игнорирующих математику

На сайте https://thecode.media/crack-safe/?utm_source=yandex&utm_medium=cpc&utm_campaign=pl_ad_rsy&utm_content=crack-safe&yclid=5574848898137920751

Выставлена задача, которая названа: «Школьная загадка про сейф, которая ставит в тупик большинство взрослых, но не программистов»

Во-первых, задача и загадка – это не синонимы! Задача – то, что надо РЕШАТЬ, а загадка – то, что надо УГАДАТЬ. Авторы, будьте внимательней!

ПРЕАМБУЛА:

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

Условия задачи цитирую:

«Отец умер, и всё его имущество перешло к жене и детям. Среди имущества был сейф, где он держал свои самые важные бумаги и драгоценности. Детям страшно хотелось попасть в этот сейф. У сейфа был секрет: если неправильно ввести шифр, всё содержимое сразу сжигается. Сам кодовый замок выглядел как квадрат из 16 ячеек, в которые нужно ввести числа. Дети назвали несколько чисел, которые они запомнили, подсматривая за отцом, но остальных они не знали. Мать вспомнила странность отцовского шифра: сумма всех чисел по каждой горизонтали, вертикали и двум главным диагоналям равнялась 50. Всё усложнялось тем, что можно было вводить только числа от 5 до 20 без повторений — особенность семейного сейфа. Помогите родственникам ввести недостающие числа с первого раза, иначе всё наследство будет уничтожено системой безопасности сейфа».

-2
Если хотя бы одно число ввести неправильно, то деньги в сейфе сгорят!
Если хотя бы одно число ввести неправильно, то деньги в сейфе сгорят!

Подобная задача ПРЕДПОЛАГАЕТ, что существует ЕДИНСТВЕННОЕ РЕШЕНИЕ, тогда как уравнений составить можно только ВОСЕМЬ, а неизвестных в задаче ДЕСЯТЬ. Ну, правда, существуют ещё неравенства. Их тоже рассмотрим!

Авторы почему-то предлагают решить задачу методом программирования, то есть составить программу для решения задачи. Но разве в условии сказано «составьте программу для подбора»? Сказано, что задачу следует РЕШИТЬ!

Написать программу, которая бы решала эту задачу методом подбора – это не означает «решить задачу». Кроме того, если программист вместо решения задачи предложит программу, то можно сказать что он задачу-то и не решил. И наконец, если он даже написал правильную программу, и если эта правильная программа найдёт одно из решений, а решений больше, то и в этом случае следует сказать, что ЗАДАЧА НЕ РЕШЕНА!

А далее почему-то автор пишет:

«Решение

Обычно люди решают эту задачу простым перебором: подставляют цифры в разные ячейки и ищут то их сочетание, которое будет соответствовать всем условиям.Но перебор — это идеальная задача для компьютера. Напишем простой алгоритм, который переберёт все варианты кодов и найдёт нужное сочетание. Решим эту задачу методом полного перебора. Это значит, что мы по очереди будем подставлять вместо иксов на картинке все числа в диапазоне от 5 до 20 в каждую ячейку, а потом проверять, выполняются условия задачи или нет».

Во-первых, «за секунду» подобную программу написать НЕВОЗМОЖНО.

Во-вторых, написать программу – не означает задачу решить.

В-третьих, на собеседовании у программиста компьютера, полагаю, нет.

В-четвёртых, надо ещё включить компьютер, вбить программу, запустить её и получить ответ – это не секундное дело.

ДЕСЯТЬ УРАВНЕНИЙ, ДЕСЯТЬ НЕИЗВЕСТНЫХ, задачу можно решить методом Гаусса.

Если вопрос стоит чтобы задачу РЕШИТЬ, а не написать программу решения задачи, тогда надо её именно РЕШАТЬ.

Задачу можно решить иначе, без применения программирования.

Во-первых, вводить те числа, которые уже известны, НЕ НАДО!

То есть не от 5 до 20, а от 6 до 20, исключая 9, 11, 14, 15, 17. Это тоже автору минус! Область допустимых значений следует видеть сразу, начинать вводить со значения 5 НЕЛЕПО.

Десять неизвестных, восемь уравнений и ещё неравенства: ни одно из чисел не равно тому, которые уже открыты, и ни одно из них не равно другому числу.

Назовём неизвестные в клетках так, как называются элементы в матрице, соответственно:

А11, А13, А22, А24 и так далее.

ШАГ 1. Десять неизвестных, ДЕСЯТЬ уравнений и ещё неравенства: ни одно из чисел не равно тому, которые уже открыты, и ни одно из них не равно другому числу.

Назовём неизвестные в клетках соответственно

А11, А13, А22, А24 и так далее.

Имеем системы уравнений

(1) А11 + 15 + А13 + 5 = 50

(2) 17 + А22 + 11 + А24 = 50

(3) А31 + А32 + А33 + А34 = 50

(4) 14 + 9 + А43 + А44 = 50

(5) А11 + 17 + А31 + 14 = 50

(6) 15 + А22 + А32 + 9 = 50

(7) А13 + 11 + А33 + А43 = 50

(8) 5 + А24 + А34 + А44 = 50

(9) А11 + А22 + А33 + А44 = 50

(10) А41 + А23 + А32 + А41 = 50

Дополнительное условие

(11) Исключены значения: 5, 9, 11, 14, 15, 17

(12) Все числа целые из диапазона от 5 до 20 включительно, но поскольку 5 исключено, то от 6 до 20.

То есть

(13) 5 < Аij < 21

(14) Аij ≠ Аnm для всех i ≠ n при j ≠ m

ДЛЯ ДЕСЯТИ НЕИЗВЕСТНЫХ остаются варианты: 6, 7, 8, 10, 12, 13, 16, 18, 19, 20

Из этого можем вывести ещё одно уравнение:

А11 + А13 + А22 + А24 + А31 + А32 + А33 + А34 + А43 + А44 = 6 + 7 + 8 + 10 + 12 + 13 + 16 + 18 + 19 + 20

Но, к сожалению, это уравнение не даёт ничего нового, поскольку это – сумма первых четырех уравнений, или же сумма уравнений с пятого по восьмое, то есть уравнение (15) не является независимым.

ШАГ 2.

Упростим:

Из (1) получаем А11 + А13 = 30

Так как А13 < 20, то А11 > 10, а так как А13 < 20, А13 > 10

Так как А24 > 5, то А22 < 17, а так как А22 > 5, то А24 < 17

Из (2) получаем А22 + А24 = 22

Из (3) получаем А31 + А32 + А33 + А34 = 50

Из (4) получаем А43 + А44 = 27

Из (5) получаем А11 + А31 = 19,

Так как А31 > 5, то А11 < 14, так как А11 > 5 и А31 < 14

Из (6) получаем А22 + А32 = 26

Из (7) получаем А13 + А33 + А43 = 39

Из (8) получаем А24 + А34 + А44 = 45

Девятое и десятое уравнения оставляем без изменений:

(9) А11 + А22 + А33 + А44 = 50

(10) А41 + А23 + А32 + А41 = 50

Если мы не хотим решать постепенным исключением величин или методом Гаусса, то есть более простой путь – методом рассуждения из простейших соотношений.

Для одной величины есть лишь два варианта, а именно: 10 < А11 < 14

то есть либо 12, либо 13

Если ставим 12, тогда нужно А31 = 7, А13 = 18, если ставим 13, тогда А31 = 6, А13 = 17.

Но значение 17 исключено, см. (11)

Следовательно, А11 = 12. Тогда: А31 = 7, А13 = 18.

Остаётся всего 7 неизвестных и 8 уравнений!

ШАГ 3.

Для семи неизвестных остаются варианты: 6, 8, 10, 13, 16, 19, 20

И следующие уравнения

(15) А22 + А24 = 22

(16) А32 + А33 + А34 = 43

(17) А43 + А44 = 27

(18) А22 + А32 = 26

(19) А24 + А34 + А44 = 45

(20) А33 + А43 = 21,

Для этих чисел А33 и А43 в соотношение (20) подходят из допустимого набора только варианты 13 и 8, иначе сумма не сойдётся. Это очевидно, достаточно взять любое из допустимых чисел и попробовать отыскать к нему пару, чтобы было в сумме 21, получаем только один вариант.

Аналогичная ситуация для соотношения (17), на роль величин А43 и А44 подходит только пара 8 и 19.

В обоих случаях повторяется число 8 и повторяется величина А43, следовательно, А43 = 8,

А это означает, что А33 = 13, А44 = 19.

Мы узнали ещё три числа и у нас осталось ЧЕТЫРЕ уравнения с ЧЕТЫРЬМЯ неизвестными, что, как известно, как правило решается. Но будем помнить, что если имеется некоторая скрытая зависимость между уравнениями, то есть одно из них можно вывести из других, тогда это уравнение не позволяет уточнить данные, и, следовательно, ЗАДАЧА МОЖЕТ ИМЕТЬ НЕСКОЛЬКО РЕШЕНИЙ. Проверим!

ШАГ 4.

Варианты значений: 6, 10, 16, 20

Остались следующие уравнения:

(21) А22 + А32 = 26,

(22) А24 + А34 = 26

(23) А22 + А24 = 22

(24) А32 + А34 = 30

Соотношение (23) выполняется лишь для чисел 6 и 16

Соотношение (24) выполняется лишь для чисел 10 и 20

В соотношении (21) число А22 равно либо 6, либо 16 (см выше) значит, А32 равно, соответственно, либо 20, либо 10.

В соотношении (22) число А24 равно либо 6, либо 16 (см выше) значит, А34 равно, соответственно, либо 20, либо 10.

На помощь приходит уравнение (9)

(9) А11 + А22 + А33 + А44 = 50

Решение этой задачи даёт следующие значения:

(ВАРИАНТ 1) А22 = 6, А24 = 16, А32 = 20, А34 = 10. И В ЭТОМ СЛУЧАЕ УРАВНЕНИЕ (9) выполняется, а также выполняется и уравнение (10)

Рассмотрим (ВАРИАНТ 2) А22 = 16, А24 = 6, А32 = 10, А34 = 20. В этом случае уравнения (9) и (10) не выполняются.

Два варианта решения но УСЛОВИЯ ПО ДИАГОНАЛЯМ выполняются ТОЛЬКО ДЛЯ ПЕРВОГО ВАРИАНТА
Два варианта решения но УСЛОВИЯ ПО ДИАГОНАЛЯМ выполняются ТОЛЬКО ДЛЯ ПЕРВОГО ВАРИАНТА
-5

Так что плюньте на всё и читайте мои фанфики

Полностью «Мемуары Арамиса» вы можете найти тут

https://litsovet.ru/books/979343-memuary-aramisa-kniga-1

https://litsovet.ru/books/979376-memuary-aramisa-kniga-2

https://litsovet.ru/books/980135-memuary-aramisa-kniga-3

https://litsovet.ru/books/981152-memuary-aramisa-kniga-4

https://litsovet.ru/books/981631-memuary-aramisa-kniga-5

https://litsovet.ru/books/983912-memuary-aramisa-kniga-6

Также в виде файлов эти книги можно найти тут

https://proza.ru/2023/03/11/1174

https://proza.ru/2023/04/25/1300

https://proza.ru/2023/06/20/295

https://proza.ru/2023/08/07/1197

https://proza.ru/2023/09/26/622

https://proza.ru/2023/12/30/1670

https://proza.ru/2024/03/04/1278

Полностью книгу «Д’Артаньян и Железная Маска» вы можете найти тут

https://litsovet.ru/books/979341-dartanyan-i-zheleznaya-maska-kniga-1

https://litsovet.ru/books/979342-dartanyan-i-zheleznaya-maska-kniga-2

Также в виде файлов эти книги можно найти тут

https://proza.ru/2022/11/10/1425

https://proza.ru/2023/01/27/1128