Нет, потому что компьютер это машина не умеющая самостоятельно мыслить, как человек.
#!/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:]))
т.к. основание исходной системы счисления является стеменью 2 то значит можно просто представить каждую цифру в двоичной системе и получить двоичное представление числа
A = 1010
F = 1111
т.к. каждая цифра числа в восьмиричной системе счисления кодируется 3 битами то можно получить представление числа в восьмиричной системе счисления просто последовательно перобразовав каждые 3 разряда в цифру в восьмиричной системе счисления
111 = 7
101 = 5
010 = 2
для преобразования в десятичную систему счисления нужно каждую цифру числа пребразованную в десятичную систему счисления умножить на основание системы счисления в спени номера разряда и все результаты просуммировать
отсчет разрдов идет справа налево от 0
A = 10
F = 15
25 (10) = 11001 (2)
Первые два бита дают 4 возможных варианта
00, 01, 10, 11. Но последний - 11, уже занят.
Остается три варианта.
00 110 (2) = 6 (10)
01 110 (2) = 14 (10)
10 110 (2) = 22 (10)
Кажждая буква несет 4 бита информации