#!/usr/bin/python3
'''
пологаю, условие как есть: без пробелов, без OCR, без какого-либо форматирования
т.е. вводные строки текста выглядят так:
aaaaaayyyymmddbbbbbbbccccсрочныйeeee
я добавил поддержку некоторых разделителей в выражение, на случай если они
всётаки имеются
тестовые данные:
123456199601011234567987срочный000
123456199603291234567987срочный000
123456 1996-03-29 1234567 987 срочный 000
123456200109111234567987срочный000
тогда, решаем это с помощью регулярных выражений
как видно, в условии не сказано, что считать за код города. предположим,
что код города - это первая цифра от num2
'''
import re
import datetime
R = re.compile(
r'\s*(?P<num1>\d{6})\s*(?P<y>\d{4})\-?(?P<m>\d{2})\-?(?P<d>\d{2})\s*'
r'(?P<num2>\d{7})\s*'
r'(?P<time>\d+)\s*(?P<urgency>(срочный|обычный))\s*(?P<price>\d+)\s*'
)
d1 = datetime.datetime(1996, 3, 15)
d2 = datetime.datetime(1996, 4, 12)
while True:
a = ""
try:
a = input("введи> ")
except EOFError:
print("\n")
exit(0)
res = R.match(a)
if res == None:
print("ошибка парсинга")
continue
dd = datetime.datetime.now()
try:
dd = datetime.datetime(
int(res.group("y")),
int(res.group("m")),
int(res.group("d"))
)
except ValueError:
print("неправильная дата")
if res.group("urgency") == "срочный" and (dd > d1 and dd < d2):
n = res.group("num2")
print("номер1 {}, код {}, номер2 {}".format(
res.group("num1"), n[0], n[1:]))
Ответ: одна буква несет 5 бит информации.
, Первоначально (после первого цикла): A = 0 1 2 ... 10
Посмотрим, что делает второй цикл.
Заметим, что переменная k здесь бесполезна - ей присваивают какие-то значения, а потом ничего с ними не делают. Тогда про неё можно забыть. Остаётся только одна команда: A[i] = A[10-i]
Для i = 0, 1, 2, 3, 4 она просто заменяет A[i] на значение, симметричное относительно центра A[5]; A[0]=10, A[1]=9; A[2]=8; A[3]=7; A[4]=6.
С i=5 не происходит ничего: присвоение имеет вид A[5]=A[5]
Для последующих i опять A[i] меняется на симметричное. Но после i=4 массив и так "симметричен", так что все эти команды ничего не делают.
A = [10, 9, 8, 7, 6, 5, 6, 7, 8, 9, 10]
6 бит. 8×8=64 64 = 2 в 6 степени. Степень двойки показывает кол-во информации в битах