Расшифровать Кодировки вида BaseN используются давно.
Они были придуманы для перевода произвольной двоичной последовательности (последовательности байт) в текстовый формат для передачи этого текста по сети (например, для протокола электронной почты).
(N) в названии означает длину алфавита, в который кодируется текст. Алфавит всегда выбирается так, чтобы в нем содержались только печатаемые символы.
Вот, например, алгоритм Base32:
Возьмем алфавит как 234567. Всего 32 символа.
Поделим нашу битовую последовательность на блоки по 40 бит (5 байт). Если длина последовательности не кратна 40, то дополняем последний блок нулями и, в зависимости от количества недостающих целых байт, выполняем в самом конце такой алгоритм:
Если не хватило 1 байта, то в итоговом тексте заменим один последний символ на =
Если не хватило 2 байт, то в итоговом тексте заменим три последних символа на =
Если не хватило 3 байт, то в итоговом тексте заменим четыре последних символа на =
Если не хватило 4 байт, то в итоговом тексте заменим шесть последних символов на =
В каждом блоке выделяем по 5 бит и переводим их в десятичную систему счисления (получится число от 0 до 31). Это число будет позицией символа алфавита, который нужно добавить к итоговой строке. Не забываем, что тру программисты считают с нуля.
После выполнения пункта 3 получаем итоговую строку - это и есть наша входная последовательность, закодированная алгоритмом BASE32.
Любой текст можно преобразовать в битовую последовательность (например, при таблицы ASCII) и применить к нему алгоритм Base32. Например, строка 'A' кодируется в 'IE', а 'ABC' в 'IFBEG==='.
Задание
Мы закодировали флаг при алгоритма BASE32, но наш алфавит состоит из нашего русского алфавита, за исключением буквы Ё - . Получилось 'ОНФЗАШЫФМЩЭЦДРЛУЖМЩУДЯИ='. Ты знаешь что нужно делать - достать флаг.
Метод prompt() предназначен для вывода диалогового окна с сообщением, текстовым полем для ввода данных и кнопками «ОК» и «Отмена». Это окно предназначено для запроса данных, которые пользователю нужно ввести в текстовое поле.В переменную result возвращается значение введённое пользователем или null. Если пользователь не ввёл данные (поле ввода пустое) и нажал на «ОК», то в result будет находиться пустая строка.
Например, запросим имя пользователя при входе его на сайт с prompt, а затем выведем его в элемент #welcome:
хотела
def sqc(xa,ya,xb,yb,xc,yc) :
return ((xb - xa) * (yc - ya) - (xc - xa) * (yb - ya)) / 2
xa, ya, xb, yb = map(float,input().split())
n, m = map(int,input().split())
astra = []
sc = []
res, smax = 0, 0
for i in range(n) :
xc, yc = map(float,input().split())
astra.append((xc,yc))
sctmp = sqc(xa,ya,xb,yb,xc,yc)
if smax < abs(sctmp) :
smax = abs(sctmp)
#print(sctmp)
sc.append(sctmp)
for i in range(m) :
xc, yc = map(float,input().split())
sp = sqc(xa,ya,xb,yb,xc,yc)
if smax < abs(sp) :
smax = abs(sp)
#print(sp)
for j in range(n) :
xd, yd = astra[j][0], astra[j][1]
if sp * sc[j] < 0 :
if smax < abs(sp * sc[j]) :
smax = abs(sp * sc[j])
print('{:.2f}'.format(smax))
У меня получилось.