Турфирма, продающая путевки в Антарктиду, для привлечения
клиентов предоставляет следующую услугу: любой посетитель в офисе
компании может узнать температуру воды на южном полюсе в данный
момент. Эта информация приходит по за по спутниковому каналу. Для
защиты информации от помех используется метод Хемминга. Двоичный
канал передает числа от 0 до 15 в обычной двоичной кодировке (0 – 0000, 1 –
0001, 2 – 0010, …, 15 – 1111) с добавлением необходимого количества
контрольных символов. Но автоматическая система в офисе отказала.
По за пришло сообщение агенту
декодировать сообщение и исправить его в случае ошибок.
В ответ необходимо послать контрольную последовательность,
указывающую на корректный прием: 1001. Это значение нужно
закодировать по методу Хемминга для передачи по спутниковому каналу.
#!/usr/bin/env python3
import sys
text = sys.argv[1]
maxSequenceStart = -1
maxSequenceLength = 0
currentSequenceStart = -1
currentSequenceLength = 0
insideSequence = False
for pos, ch in enumerate(text):
if ch.isdigit():
if not insideSequence:
currentSequenceStart = pos
currentSequenceLength = 1
insideSequence = True
else:
currentSequenceLength += 1
else:
if insideSequence:
insideSequence = False
if currentSequenceLength > maxSequenceLength:
maxSequenceStart = currentSequenceStart
maxSequenceLength = currentSequenceLength
if insideSequence and currentSequenceLength > maxSequenceLength:
maxSequenceStart = currentSequenceStart
maxSequenceLength = currentSequenceLength
if maxSequenceStart < 0:
print("No digits in this text!")
else:
print("Longest digits sequence starts from index", maxSequenceStart,
"and has length of", maxSequenceLength, "digits")
$ ./max_digits_sequence.py "123 12 1234"
Longest digits sequence starts from index 7 and has length of 4 digits
Var
N,A:integer;
Begin
Write('N = ');Read(N);
A:=0;
While N>0 do
Begin
if (N mod 10) > A then A:= N mod 10;
N:=N div 10;
End;
Write(A)
End.
Var
N,A,B:integer;
C:boolean;
Begin
Write('N = ');Read(N);
A:=-1;
B:=-2;
C:=false;
While N>0 do
Begin
if A=B then C:=true;
if N>0 then
Begin
A:=N mod 10;
N:=N div 10;
End;
if A=B then C:=true;
if N>0 then
Begin
B:=N mod 10;
N:=N div 10;
End;
End;
if A=B then C:=true;
if C then Write('Есть')
else Write('Нет')
End.
Подробнее - на -