Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def block(room):
- """
- определяет в каком блоке находится искомая комната
- :param room: номер комнаты
- :return: верхняя граница блока, в котором находится комната
- """
- x = 2 # размер блока
- sq = 1 # верхняя граница блока, в котором находится комната
- et_up = 1 # сюда будем накапливать размерность блоков, чтобы знать этаж верхней границы блока
- if room == 1:
- print(1, 1, 1)
- else:
- while sq < room:
- sq = x * x + sq
- et_up += x
- x += 1
- # print('верхняя граница блока', sq, 'размерность блока', x - 1, 'этаж верхней границы блока', et_up)
- return [sq, x - 1, et_up]
- def et_pos(block):
- '''
- определяет на каком этаже и на какой позиции находится комната, переданная на ввод функции block(room)
- :param block: функция возвращает список [граница этажа, размерность блока, этаж верхней границы блока]
- :return: этаж, позицию комнаты
- '''
- n = block[0] # граница этажа
- x = block[1] # размерность блока
- et = block[2] # этаж верхней границы блока
- right_room = n # верхняя правая ячейка блока
- c_room = n # флаг выхода из цикла
- while c_room >= room:
- for curr_et in range(et, et - x, -1):
- left_room = right_room - x
- curr_pos = x
- for curr_room in range(right_room, left_room, -1):
- c_room = curr_room
- if curr_room == room:
- print('комната {} на {} этаже {} слева'.format(room, curr_et, curr_pos))
- return [curr_et, curr_pos]
- curr_pos -= 1
- right_room -= x
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement