Задачка 7. SNTPДля того чтоб компы поддерживали животрепещущее время, они могут

Задача 7. SNTP

Для того чтоб компы поддерживали животрепещущее время, они могут обращаться

к серверам четкого времени SNTP (Simple Network Time Protocol). К раскаянию, компьютер

не может просто получить время у сервера, поэтому что информация по сети передаётся не

моментально: пока известие с текущим временем дойдёт до компьютера, оно потеряет свою

актуальность. Протокол взаимодействия клиента (компьютера, запрашивающего четкое

время) и сервера (компьютера, выдающего четкое время) выглядит последующим образом:

1) Клиент посылает запрос на сервер и запоминает время отправления A

(по клиентскому времени).

2) Сервер получает запрос в момент медли B (по четкому серверному медли)

и посылает клиенту извещенье, содержащее время B.

3) Клиент получает ответ на собственный запрос в момент медли C (по клиентскому времени)

и запоминает его. Сейчас клиент, из догадки, что сетевые задержки при

передаче известий от клиента серверу и от сервера клиенту схожи, может

найти и установить для себя четкое время, используя знаменитые значения A, B, C.

Вам предстоит воплотить метод, с точностью до секунды определяющий четкое

время для установки на клиенте по известным A, B и C. При необходимости округлите

результат до целого числа секунд по правилам математики (в наименьшую сторону, если

дробная часть числа меньше , по другому в великую сторону).

Вероятно, что, пока клиент ждал ответа, по клиентскому медли успели наступить

новые сутки, но известно, что меж отправкой клиентом запроса и получением ответа

от сервера прошло менее 24 часов.

Программка получает на вход три временные ловки A, B, C. Каждая временная метка

состоит из трёх целых чисел: количества часов, количества минут, количества секунд. То есть

1-ые три строки входных данных содержат числа Ah, Am, As часы, минуты, секунды

момента A по клиентскому времени. Последующие три строки содержат числа Bh, Bm, Bs часы,

минутки, секунды момента B по медли сервера. Последующие три строчки содержат числа Сh,

Сm, Сs часы, минутки, секунды момента С по времени клиента.

Программка обязана вывести три целых числа: часы, минутки, секунды вычисленного

точного медли, которое обязан установить для себя клиент.

Пример входных и выходных данных

Ввод

15

1

0

18

9

45

15

1

40
Вывод:
18

10

5
ПРИМЕЧАНИЕ
Клиент отправил запрос в 15:01:00 по своим часам, сервеР получил запрос в 18:09:45 по своим часам. Клиент получиЛ ответ в 15:01:40, в этот момент четкое время будет 18:10:05.

Система оценивания

Решение, верно работающее только для случаев, когда все три входных медли

и ответ на задачку принадлежат одним суткам, будет оцениваться в 6 баллов.

Задать свой вопрос
1 ответ

!/usr/bin/env python3

from collections import namedtuple

Timestamp = namedtuple('Timestamp', ['h', 'm', 's'])

Timestamp.__str__ = lambda self: "h:02:m:02:s:02".format(

h=self.h, m=self.m, s=self.s

)

def get_timestamp(s):

slices = (

(0, 2), (3, 5), (6, 9),

)

return Timestamp(*(int(s[l:r]) for l, r in slices))

SECS_IN_MINUTE = 60

SECS_IN_HOUR = SECS_IN_MINUTE * 60

SECS_IN_DAY = SECS_IN_HOUR * 24

def get_seconds(t):

ret = t.h * SECS_IN_HOUR

ret += t.m * SECS_IN_MINUTE

ret += t.s

return ret

Timestamp.__int__ = get_seconds

def get_timestamp_from_seconds(secs):

h = secs // SECS_IN_HOUR

h %= 24

secs %= SECS_IN_HOUR

m = secs // SECS_IN_MINUTE

secs %= SECS_IN_MINUTE

s = secs

return Timestamp(h, m, s)

A, B, C = [int(get_timestamp(input())) for _ in range(3)]

tm2 = 2*B + (C-A) % SECS_IN_DAY

tm = tm2 // 2 + tm2 % 2

tm = get_timestamp_from_seconds(tm)

print(tm)

, оставишь ответ?
Имя:*
E-Mail:


Последние вопросы
Рассматривая литературный язык как сложное взаимодействие книжного языка и разговорного,В.И.Чернышёв горячо

Разные вопросы.

Арабы входят в __________________ групп народов. Местом расселения арабов с незапамятных

Разные вопросы.

Грузовой автомобиль марки краз за одну поездку может доставить 7.500 кирпичей

Математика.

Определить предложения какие они по цели высказывания и по интонации

Русский язык.

"Три толстяка" Называли эту площадь Площадью Звезды последующей причине.

Русский язык.

на одной грядке коротышки посадили 3 ряда морковок по 8 штук

Разные вопросы.

эссе на тему какое образование дается в каждой семье

Қазақ тiлi.

Put the verb in brackets into the Present Indefinite. 1The Volga ,

Английский язык.

Сколько стоит коктейль молочный? Точную цену надо?

Математика.

Составить рассказ Из чего складывался культ монарха помазанника Божьего?

История.

Добро пожаловать!

Для того чтобы стать полноценным пользователем нашего портала, вам необходимо пройти регистрацию.
Зарегистрироваться
Создайте собственную учетную запить!

Пройти регистрацию
Авторизоваться
Уже зарегистрированны? А ну-ка живо авторизуйтесь!

Войти на сайт