login:        password:      
Combats Scrolls
Rambler's Top100
Гость БК
Profile Friend page
ru
updated 30.06.23 13:47
07-02-23 @ 21:43

Интерпретатор Open user info Open user photogallery
Сейф обители
Сложный сейф
Первый рычаг поворачивает на 90 градусов рычаги №№1, 2, 4
Второй рычаг поворачивает на 90 градусов рычаги №№2, 3, 5
Третий рычаг поворачивает на 90 градусов рычаги №№1, 3, 5
Четвертый рычаг поворачивает на 90 градусов рычаги №№1, 3, 4
Пятый рычаг поворачивает на 90 градусов рычаги №№2, 4, 5

Положение рычагов кодируем как: вверх = 0, влево = 1, вниз = 2, вправо = 3
Записываем 5 линейных уравнений для каждого рычага и решаем в целых числах, учитывая, что для каждого рычага всегда можно добавить +4 = полный оборот

Пускай положения рычагов равны a, b, c, d, e
Количества необходимых поворотов рычагов 1-5 равны х1-х5. Тогда
x1 + x3 + x4 = a
x1 + x2 + x5 = b
x2 + x3 + x4 = c
x1 + x4 + x5 = d
x2 + x3 + x5 = e

Решаем систему и получаем:
3x5 = -a - b - c + 2d + 2e
Если сумма справа не делится на 3, дополняем ее четверками 1 или 2 раза.
Получаем x5
x4 = c - e + x5
x3 = a - d + x5
x2 = b - a + x3 + x4 - x5
x1 = a - x3- x4

Решение на питоне с ipywidgets:

from ipywidgets import interact
values = [('Вверх', 0), ('Вправо', 3), ('Вниз', 2), ('Влево', 1)]

@interact(a=values, b=values, c=values, d=values,e=values)
def fun(a=0, b=0, c=0, d=0, e=0):
if a + b + c + d + e> 0:
t3 = -a - b - c + 2*d + 2*e
if t3 % 3 > 0:
t = (t3 + 4*(3- t3 % 3)) // 3
else:
t = t3 // 3
t = t % 4
w = (c - e + t) % 4
z = (a - d + t) % 4
y = (b - a + z + w - t) % 4
x = (a - z - w) % 4
print(f'{x}\t{y}\t{z}\t{w}\t{t}')





Простой сейф:

@interact(a=values, b=values, c=values)
def fun(a=0, b=0, c=0):
if a + b + c > 0:
x = (b - c) % 4
y = (a - b + c) % 4
z = (b - a ) % 4
print(f'Крутки рычагов\t{x}\t{y}\t{z}')



Средний сейф:
@interact(a=values, b=values, c=values, d=values)
def fun(a=0, b=0, c=0, d=0):
if a + b + c + d> 0:
xz3 = a + c
yw3 = b + d
if xz3 % 3 > 0:
xz = (xz3 + 4*(3 - xz3 % 3)) // 3
else:
xz = xz3 // 3
if yw3 % 3 > 0:
yw = (yw3 + 4*(3 - yw3 % 3)) // 3
else:
yw = yw3 // 3
x = (c - xz) % 4
y = (b - yw) % 4
z = (xz - x) % 4
w = (yw - y) % 4
print(f'Крутки рычагов:\t{x}\t{y}\t{z}\t{w}')



Я думаю, что это: Scrolls.multiLike:)

view mode: linear threads

Post reply | Post reply with quote



 
 © 2007–2025 «combats.com»
  18+  
feedback