If this is a first time you visiting Scrolls, please register in Fight Club. If you already registered, please authorize on Fight Club start page with your login and password.
Сложный сейф Первый рычаг поворачивает на 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
@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}')
Вам запрещено комментирование в скроллах. Причина: Character level to low