Сложная задача про длину кабеля
easy

Сложная задача про длину кабеля

Потребуется логика и воображение

Воскресенье, утро, Стамбул. Сетевой инженер из России пьёт кофе в кафе с видом на Босфор. Вдруг звонок: 

— Васян, выручай, нужно срочно продиагностировать кусок сети, без тебя никак.

— В чём дело? 

— У нас два компьютера соединены через два шлюза. Нам нужно понять скорость сигнала между этими шлюзами. 

— В смысле? Ну зайдите на шлюз и сделайте пинг. Он вам скажет точное время прохождения сигнала. 

— Мы не можем, у нас нет пароля, а у кого он — никто не знает. 

— Ладно, что вы ещё знаете? 

Дальше он узнал вот что: 

  • Есть два компьютера.
  • Между ними два шлюза: красный и синий.
  • Между двумя шлюзами ещё какие-то устройства: серверы, передатчики, шлюзы и т. д. — мы не знаем какие. Они замедляют сигнал. 
  • Мы не знаем точный пинг (то есть время прохождения сигнала) между всеми этими точками.
  • Но если прогнать пинг от первого компьютера до красного шлюза и сравнить с пингом от красного шлюза до второго компьютера, то разница в пинге будет 25 миллисекунд. 
  • А если сравнить пинг до и от синего шлюза, то разница будет уже 35 миллисекунд.
  • Скорость пинга одинаковая в обе стороны всё время.

Задача — узнать пинг (то есть скорость прохождения сигнала) между красным и синим шлюзом. Предположительно там стоит какое-то оборудование, которое замедляет наш сигнал слишком сильно, и в зависимости от показателей замедлений нужно дать кому-то по шапке. 

Василий поспорил, что сможет решить эту задачу, даже не открывая компьютера. В выпадайке — как ему это удалось. 

Нарисуем схематично наше соединение с двумя шлюзами, красным и синим. Условно будем считать, что длина каждого отрезка соответствует скорости обработки сигнала:

Теперь обозначим за x, y и z три отрезка сигнала, которые нам неизвестны, и подпишем разницу в пинге — это то, что мы знаем:

По рисунку можно составить два уравнения:

x + y − z = 25 ← когда пингуем красный шлюз

y + z − x = 35 ← когда пингуем синий шлюз

Сложим эти уравнений друг с другом:

x + y − z + y + z − x = 25 + 35

Сгруппируем неизвестные друг с другом:

(x − x) + (y + y) + (z − z) = 60

2y = 60 → y = 30

Получается, пинг между шлюзами, которое мы обозначили за y, равен 30 миллисекунд. 

Художник:

Даня Берковский

Корректор:

Ирина Михеева

Вёрстка:

Кирилл Климентьев

Соцсети:

Алина Грызлова

Получите ИТ-профессию
В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.
Вам может быть интересно
easy
[anycomment]
Exit mobile version