7. sntp для того чтобы компьютеры поддерживали актуальное время, они могут обращаться к серверам точного времени sntp (simple network time protocol). к сожалению, компьютер не может просто получить время у сервера, потому что информация по сети передаётся не мгновенно: пока сообщение с текущим временем дойдёт до компьютера, оно потеряет свою актуальность. протокол взаимодействия клиента (компьютера, запрашивающего точное время) и сервера (компьютера, точное время) выглядит следующим образом: 1) клиент отправляет запрос на сервер и запоминает время отправления a (по клиентскому времени). 2) сервер получает запрос в момент времени b (по точному серверному времени) и отправляет клиенту сообщение, содержащее время b. 3) клиент получает ответ на свой запрос в момент времени c (по клиентскому времени) и запоминает его. теперь клиент, из предположения, что сетевые задержки при передаче сообщений от клиента серверу и от сервера клиенту одинаковы, может определить и установить себе точное время, используя известные значения a, b, c. вам предстоит реализовать алгоритм, с точностью до секунды определяющий точное время для установки на клиенте по известным a, b и c. при необходимости округлите результат до целого числа секунд по правилам арифметики (в меньшую сторону, если дробная часть числа меньше ½, иначе в большую сторону). возможно, что, пока клиент ожидал ответа, по клиентскому времени успели наступить новые сутки, однако известно, что между отправкой клиентом запроса и получением ответа от сервера прошло менее 24 часов. программа получает на вход три временные метки a, b, c. каждая временная метка состоит из трёх целых чисел: количества часов, количества минут, количества секунд. то есть первые три строки входных данных содержат числа 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 .
Ответы на вопрос:
#! /usr/bin/env python3
from collections import namedtuple
timestamp = namedtuple('timestamp', ['h', 'm', 's'])
= 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
= 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( 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)
Реши свою проблему, спроси otvet5GPT
-
Быстро
Мгновенный ответ на твой вопрос -
Точно
Бот обладает знаниями во всех сферах -
Бесплатно
Задай вопрос и получи ответ бесплатно
Популярно: Информатика
-
sdfsdfsddf28.04.2020 23:41
-
dmitriy197802.02.2022 15:59
-
SMKate16.04.2021 02:29
-
Инна079409.01.2022 23:31
-
fogeimof28.07.2021 16:39
-
альбина34610.03.2023 12:22
-
Soniadesor22.06.2022 15:58
-
dimitiy0218.05.2021 06:46
-
rusyabarnakov17.11.2021 06:29
-
az1234568708.04.2022 18:15
Есть вопросы?
-
Как otvet5GPT работает?
otvet5GPT использует большую языковую модель вместе с базой данных GPT для обеспечения высококачественных образовательных результатов. otvet5GPT действует как доступный академический ресурс вне класса. -
Сколько это стоит?
Проект находиться на стадии тестирования и все услуги бесплатны. -
Могу ли я использовать otvet5GPT в школе?
Конечно! Нейросеть может помочь вам делать конспекты лекций, придумывать идеи в классе и многое другое! -
В чем отличия от ChatGPT?
otvet5GPT черпает академические источники из собственной базы данных и предназначен специально для студентов. otvet5GPT также адаптируется к вашему стилю письма, предоставляя ряд образовательных инструментов, предназначенных для улучшения обучения.