Робот оказался в лабиринте в форме креста. Его задача — за минимальное количество шагов закрасить все пять клеток в определенном порядке — по часовой стрелке: верхнюю, правую, нижнюю, левую, а затем центральную. Остановиться в исходной точке Напишите программу в одну строчку без пробелов маленькими буквами, используя следующие сокращения: u – вверх, d – вниз, l — влево, r — вправо, p — закрасить клетку.
Например, программа, сдвигающая Робота вправо, затем вверх и закрашивающая там клетку будет выглядеть так: rup
= - 127, максимальное число = + 127
2) Число 1607, ячейка двухбайтовая, один бит под знак, следовательно, под число отводится 15 бит, в двоичном представлении 1607(10) = 11001000111(2), дополняем до 16 бит, старший бит - знаковый - нулевой, так как число положительное
= 0000011001000111(2) - это двоичное представление в двухбайтовой ячейке, чтобы получить шестнадцатиричное представление, разбиваем число справа - налево по 4 бита
0000 0110 0100 0111 и записываем в шестнадцатиричном виде
0111(2) = 7(16) 0100(2) = 4(16) 0110(2) =6(16) 0000(2) = 0(16)
1607(16) = 0647(16) или без старшего не значащего нуля = 647(16)
3) для получения дополнительного кода числа, находят обратное число, или инверсию числа,
для этого каждый бит числа изменяют на противоположный, 1 на 0, 0 на 1
105(10) = 1101001(2) - это и есть дополнительный код числа - 105, т.е. дополнительным кодом
числа (- а) будет число а.
Найдем дополнительный код в однобайтовой ячейке числа 105(10) = 01101001(2),
а) находим обратное 01101001(2) ->(обратное) ->10010110(2)
б) дополнительный код-> обратный код + 1 ->(дополнительный)->10010111(2), а это число - 105
потому, что отрицательные числа представляются в дополнительном коде.
Если для числа - 105 найти дополнительный код, то получим число 105
10010111(2)->(дополнительный)->01101000+1->01101001 = 69(16) = 16*6+9 = 96+9 = 105
'''
В небоскрёбе n этажей и 1 подъезд,
на каждом этаже по 3 квартиры,
лифт останавливается только
на нечётных этажах. Человек садится
в лифт и нажимает номер нужной
ему квартиры. На какой этаж
дома довезёт лифт человека?
'''
n = int(input('n = '))
ap_to = int(input('Номер квартиры: '))
rem_floor = 1 if ap_to % 3 > 0 else 0
floor_ap_to = ap_to // 3 + rem_floor
if floor_ap_to > n:
raise ValueError('Такой квартиры нет!')
elif floor_ap_to % 2 == 0:
print('Лифт довезёт человека либо на {} этаж (придётся подняться на 1 этаж по лестнице,'.format(floor_ap_to -1))
print('либо на {} этаж, и на 1 этаж придётся спуститься.'.format(floor_ap_to + 1))
else:
print('Лифт довезёт человека на нужный этаж.')