Пятничная статья о столкновении задачи на собеседовании с реальным миром.
Есть довольно известная проблема – перед вами металлическая труба, внутри которой течет вода.
Как определить, в каком направлении течет? Об этом еще можно спросить на собеседовании.
Мы уже прошли множество проблем с неточными формулировками, давайте разберемся, что не так с этой трубой.
Ожидаемое решение — нагреть трубу и посмотреть, в каком направлении распространяется тепло.
Но здесь есть много дополнительных нюансов.
Как правило, предполагается, что они будут нагреваться газовой горелкой.
Было даже ограничение, что можно было иметь любую вещь стоимостью до ста рублей, что делает проблему таким способом практически неразрешимой, но об этом позже.
Во-первых, вы должны быть уверены, что температура воды достаточно низкая, чтобы можно было прикоснуться к ней.
Ну, точнее, чтобы вы могли понять разницу между «очень жарко» и «очень-очень жарко».
Точно сказать сложно, но вряд ли она будет выше 50 градусов по Цельсию.
Во-вторых, нужно быть уверенным, что вода течет со скоростью, значительно превышающей скорость распространения тепла в воде.
Например, при скорости потока 1 мм/с вы вряд ли поймете, куда движется вода и движется ли она вообще.
В-третьих, нужно быть уверенным, что вода не течет со слишком большой скоростью.
В противном случае он просто не успеет достаточно прогреться.
Температурная чувствительность человека к перепаду температур составляет примерно один градус.
Исходя из теплоемкости воды ~4,2 кДж/кг, мы находим, что на грамм текущей воды нам необходимо передать около 4,2 Джоуля, чтобы почувствовать разницу температур.
Предположим, что, нагревая трубу какой-либо горелкой, мы передаем трубе примерно половину тепла сгоревшего топлива.
Это довольно щедрое предположение; например, хорошие газовые котлы имеют КПД около 95%.
Скорость потока в обычном холодном водопроводе составляет примерно 1 м/с.
Для обычной трубы диаметром 1/2 дюйма, скажем, в ванной, это даст расход примерно 200 г/с.
На эти цифры мы будем опираться, чтобы иметь представление о том, какого размера должна быть труба, чтобы при обычную скорость потока мы можем определить его направление.
Давайте придём с козырями.
Предположим, у вас есть хорошая сварочная горелка, ацетилен и кислород для решения проблемы.
Расход горелки составляет примерно килограмм ацетилена в час, теплотворная способность примерно 50 МДж/кг.
Соответственно, получаем примерно 13888 Дж в секунду; с учетом низкого КПД, на трубу будет переведено около 7000 из них.
В принципе, прогреть трубу на градус можно при прохождении 1,7 кг воды в секунду.
Что ж.
Кажется, решение работает. Но давайте признаем, что большинство программистов никогда не держали в руках сварочное оборудование.
И если посмотреть на архитектуру некоторых приложений, то это и к лучшему.
В качестве нагревательного устройства пусть используется обычная газовая горелка со сменным баллоном, вроде той, что используется для розжига кальянного угля.
Расход газа составляет примерно 100 г/час.
Для упрощения расчета примем теплоту сгорания пропана такой же, то есть 50 МДж.
Мы можем получить 700 Дж в секунду.
Этого достаточно, чтобы нагреть 170 граммов воды.
Это уже не выглядит так многообещающе.
Если к дальнему концу этой загадочной трубы прикрепить шланг и бабушка будет поливать из него помидоры, то есть поток жидкости через трубу практически не ограничен, то понять направление потока мы уже не сможем.
Бабушке придется слегка пережать шланг пальцем, чтобы проблема разрешилась.
В общем, условие подразумевало, что умный претендент возьмет зажигалку и нагреет трубку.
Нормы расхода газа для зажигалок я нигде не нашел.
Наверное, никому и в голову не приходило вносить такие изменения.
Возьмем данные по газовым паяльникам.
Это определенно более мощное устройство, чем зажигалка, но возьмем для расчета эти цифры.
Газовый паяльник расходует примерно 20 мл/час, то есть примерно 10 г/час.
Это означает, что с его помощью мы можем нагреть примерно 17 граммов воды в секунду на один градус.
17 г/с это очень мало.
Для такой скорости потока к трубе необходимо подключить очень скромный потребитель, например автомат с газировкой.
Причем это не тот автомат, что в ТЦ – пять секунд и пол-литровый стакан готов.
Это автомат, который наливает бокал очень медленно, с торжественностью, соответствующей случаю.
Обобщая все вышеизложенное, задачу необходимо сформулировать следующим образом: Вы находитесь в бескрайнем поле.
Перед вами металлическая труба не толще стандартной водопроводной трубы.
В нем течет вода, температура не выше 50 градусов Цельсия, со скоростью не более 1 м/с и не менее 1 мм/с.
Вы не сможете добраться до начала и конца этой трубы.
Какой предмет понадобится для определения направления движения жидкости? Звучит довольно глупо.
А еще мы опустили совсем глупые уточнения вроде того, что труба не из галлия, температура вокруг не -190, атмосфера не состоит из гремучего газа или вы не перевоплотились в бурундука.
Чтобы решить задачу в условиях, приближенных к реальным, необходимо очень серьезное оборудование.
С которым, кстати, вы, скорее всего, не умеете работать.
Как и во всех логических задачах, условностей здесь просто бесчисленное множество.
Даже если взять задачу с волком, козой и капустой – как это вообще возможно? Ты голый, стоишь на берегу реки, перед тобой все это добро и тебе нужно перейти? Ах да, берега реки сделаны из адамантия, так что закапывать капусту и не придет в голову.
В такой ситуации любой нормальный человек в первую очередь задумается, стоит ли вызывать фельдшера.
Выше мы уже подсчитали, что для того, что представляет себе нормальный человек, когда слышит словосочетание «труба с водой», тепловое решение практически неприменимо.
По крайней мере, если у вас с собой нет горелки и двух баллонов.
Однако можно придумать и несколько других решений.
Тоже не без ограничений, но более широко применимо.
Термический, но «обратный» вариант — продуть трубу углекислым газом из огнетушителя и наблюдать, как тает иней.
Вы можете поместить камертон на трубу и слушать звук слева и справа.
В направлении движения жидкости звук будет распространяться дальше.
Однако здесь нужны достаточно высокие скорости.
На очень высоких скоростях можно даже услышать эффект Доплера.
Особо сильные кандидаты могут просто пнуть трубу и посмотреть, в каком направлении волна затухает быстрее.
С помощью хомута с регулируемой силой можно сжать трубу, чтобы уменьшить проход, а затем измерить силу, необходимую для ее сжатия с обеих сторон сужения.
В общем, решения есть.
Но очень необычно для такой простой задачи.
И все они сложнее очевидного – дойти до конца трубы.
В реальном мире бесконечных труб не существует. Причем там, где это важно, при монтаже указывается направление движения жидкости.
И есть даже клапаны, препятствующие обратному движению.
К сожалению, такие задания ничего не скажут о кандидате.
Ну, кроме того, что в свободное время он любит разгадывать головоломки.
Теги: #Карьера в IT-индустрии #Пятница
-
Hosting.ua И Еще Одна Проблема
19 Oct, 24 -
Об Играх В Альтернативной Реальности
19 Oct, 24 -
Hp Джорнада 690
19 Oct, 24