Примечание: "шаг X" означает таблицу на рисунке, которая совпадает с номером X.
1. Рисуем квадрат 4x4 и заполняем известными значениями (шаг 1).
2. Видим, что в диагонали отсутствует одно число. Но мы знаем, что сумма чисел в диагонали магического квадрата равна константе, которая вычисляется по формуле:
Подставляем в формулу известные значения:
Теперь вычитаем известные значения в диагонали: 34 - 13 - 11 - 4 = 6.
Подставляем в пустую клетку это значение (шаг 2).
3. Так же есть свойство магического квадрата 4x4: квадраты 2x2 на углах квадрата 4x4 тоже "равны" константе. Нам известен левый нижний угол. Если сложить все числа, получится 34. В правом верхнем квадрате нам не известно одно число. Вычитаем известные значения из константы: 34 -2 -13 - 11 = 8. Подставляем в пустую клетку значение 8 (шаг 3).
4. Шаг 4.
В условии сказано, что это нормальный магический квадрат, то есть в нем должны быть числа от 1 до 16. Выпишем справа числа, которых еще нет в магическом квадрате. Также над каждой колонкой и рядом с каждой строкой запишем количество, которого не хватает до 34-х.
Видим две колонки, которым не хватает 21-го. 21 из имеющихся чисел можно получить добавив либо 16 + 5, либо 14 + 7. Записываем о одну колонку 16 и 5, а в другую 14 и 7. Как мы видим, по столбцам все правильно, так как над ними написан 0. А вот по строкам не сходится. К первой строке и ко второй надо добавить те числа, которые у нас есть в наборе, но вот 5 и 8 уже есть в квадрате, значит что-то мы сделали неправильно (шаг 5).
5. Тогда попробуем поменять местами в 3-ей колонке 14 и 7 (шаг 6). Теперь мы видим, что можем поставить в каждую строку недостающее значение из оставшихся чисел (шаг 7). Получился магический квадрат для расшифровки.
6. Подставляем оставшиеся числа из списка. И проверяем, расшифровывая сообщение. После расшифровки получится фраза FIRSTTHINGSFIRST. Эта фраза осмысленная, потому что если добавить пробелы, получится выражение FIRST THINGS FIRST.
ответ: FIRSTTHINGSFIRST
Примечание: "шаг X" означает таблицу на рисунке, которая совпадает с номером X.
1. Рисуем квадрат 4x4 и заполняем известными значениями (шаг 1).
2. Видим, что в диагонали отсутствует одно число. Но мы знаем, что сумма чисел в диагонали магического квадрата равна константе, которая вычисляется по формуле:
Подставляем в формулу известные значения:
Теперь вычитаем известные значения в диагонали: 34 - 13 - 11 - 4 = 6.
Подставляем в пустую клетку это значение (шаг 2).
3. Так же есть свойство магического квадрата 4x4: квадраты 2x2 на углах квадрата 4x4 тоже "равны" константе. Нам известен левый нижний угол. Если сложить все числа, получится 34. В правом верхнем квадрате нам не известно одно число. Вычитаем известные значения из константы: 34 -2 -13 - 11 = 8. Подставляем в пустую клетку значение 8 (шаг 3).
4. Шаг 4.
В условии сказано, что это нормальный магический квадрат, то есть в нем должны быть числа от 1 до 16. Выпишем справа числа, которых еще нет в магическом квадрате. Также над каждой колонкой и рядом с каждой строкой запишем количество, которого не хватает до 34-х.
Видим две колонки, которым не хватает 21-го. 21 из имеющихся чисел можно получить добавив либо 16 + 5, либо 14 + 7. Записываем о одну колонку 16 и 5, а в другую 14 и 7. Как мы видим, по столбцам все правильно, так как над ними написан 0. А вот по строкам не сходится. К первой строке и ко второй надо добавить те числа, которые у нас есть в наборе, но вот 5 и 8 уже есть в квадрате, значит что-то мы сделали неправильно (шаг 5).
5. Тогда попробуем поменять местами в 3-ей колонке 14 и 7 (шаг 6). Теперь мы видим, что можем поставить в каждую строку недостающее значение из оставшихся чисел (шаг 7). Получился магический квадрат для расшифровки.
6. Подставляем оставшиеся числа из списка. И проверяем, расшифровывая сообщение. После расшифровки получится фраза FIRSTTHINGSFIRST. Эта фраза осмысленная, потому что если добавить пробелы, получится выражение FIRST THINGS FIRST.
ответ: Тут в задание опечатка скорее всего
Если делать по примеру из задания, будет такой код:
for i in range(20):
n = i
n = bin(n)[2:]
sum = 0
if int(n) % 2 == 0:
sum = str(n).count('1')
sum = bin(sum)[2:]
r = n + sum
else:
r = '11' + n + '00'
r = int(r, 2)
if r > 215:
print(i)
Если делать по условию задание, будет такой код:
for i in range(30):
n = i
n = bin(n)[2:]
sum = 0
if int(n) % 2 == 0:
sum = str(n).count('1')
sum = bin(sum)[2:]
r = n + sum
else:
r = '1' + n + '00'
r = int(r, 2)
if r > 215:
print(i)