Как стать автором
Обновить

Комментарии 89

Возможно, этот известный текст, выдаваемый за «вопросы, задаваемые на собеседовании в компании Google» мог бы стать еще более задорным, если бы его расположили спиралью или, скажем, треугольниками, но у меня от такой «инфографики» очень закружилась голова. :(
Согласен, что как инфографика — г*вно, но инфа интересная.
Плохая инфографика, чем не прекрасный повод размять шею?
Цитата из фильма «21»:

— Джимми взяли в Google.
— Джимми взяли в Google?
— Повезло, согласен.
— Но если вы здорово зарабатываете, почему он ушел?
— Я сказал “Google”, а не «пиццерия».
Половина тестов сперта из книги *Как сдвинуть гору Фудзи*. Всем любителям головоломок на собеседованиях — рекомендую.
Не половина, а почти все.
Ага. И эта книга никакого отношения к гуглу не имеет. Она имеет отношение к Microsoft.
Про девочек и мальчиков — одинаковое соотношение. Или я ошибаюсь?
Мне кажется, 2:1 (мальчики: девочки)
вероятность выпадания мальчика или девочки — одинаковая. Повторное выпадения мальчика или девочки, опять же одинаковая. Первое и второе событие не связаны никак. Поэтому должно быть одинаковое соотношение.
Тут практически в каждой семье должен быть как минимум один мальчик, а девочек — только до одной, да и то не во всех. Мальчиков больше.
Если не верите, посмотрите на демографическую ситуацию в Китае :)
Мальчик будет в каждой семье (но только один), девочки будут в половине семей, приэтом в четверти семей две, в восьмой части — три и т.д., в сумме и тех и других будет поровну.
В другой четверти семей будет по два мальчика, в другой восьмой части — по три, и т.д. так что мальчиков по-любому больше
По условию задачи если рождается мальчик семья не заводит больше детей, поэтому больше одного мальчика в семье быть не может.
А, ну да, извиняюсь
А какая разница сколько детей у семьи? Ведь они не одновременно рождаются или появилась девочка, а следом сразу ещё одна, а потом мальчик и все?

Зачем усложнять. То что будет мальчик 50% вероятность (не учитываем ледибоев и прочих), вот и получается, что будет примерно поровну.
Вероятность рождения мальчика или девочки — не меняется, соответственно распределение тоже.
Если бы детей убивали (в Индии делают прерывание беременности по результатам УЗИ), соотношение было бы другое.
Тут вроде все просто (отбросим все лишнее):
1. мальчиков рождается с вероятностью 50%, как и девочек.
2. Если родилась девочка, то первое выражение повторяется.

На примере:
есть 8 семей. у них родилось 4 мальчика, 4 девочки. У кого девочки они завели (как будто завели собаку) ещё ребенка, итого ещё 2 мальчиков и 2 девочек. Потом ещё появились мальчик и девочка. И ещё мальчик.

Считаем:
мальчики: 4+2+1+1 = 8 мальчиков.
девочки: 4+2+1=7 девочек.

Итог:
Как и предполагалось количество девочек и мальчиков (в сферическом вакууме ;) ) будет 50:50, но мальчиков будет больше на 1 шт.
Почему так и предполагалось, потому что родится может либо мальчик, либо девочка. Т.е. 50 на 50. Просто у тех семей, у которых первые были девочки, появились ещё дети (или один деть).
Нет. Девочек может быть бесконечно много, а мальчиков только столько же сколько было пар.
Может быть много, но мат.ожидание количества девочек стремится к 1. Мат.ожидание мальчиков строго равно 1. Это если пара умирает не раньше рождения мальчика. А иначе да, такой социум вымирает, но всё равно их количество (м и ж) на пару совпадает и равно: (2^n-1)/2^n, где n — наибольшее количество спариваний.
>а мальчиков только столько же сколько было пар.

Почему это? Там написано, что хотят мальчиков, а не одного мальчика в семью.
Там написано, что если рождается мальчик, то дальше никого не будет в семье. Таким образом они могут хотеть, хоть 50 мальчиков, но остановятся на первом…
Думаю, да. Природа бы всё выровняла :) В конце концов было бы столько девочек, что на них не хватало бы мальчиков, помирали бы старыми девами :)
Удивительно, но это так, одинаково
<?php
$boys = $girls = 0;
$v = 0.5; 
for($i = 0; $i < 1000000; $i++){
	while(rand(1,100)/100 <= $v){
		$girls++;
	}
	$boys++;	
}

var_dump(array('boys'=>$boys, 'girls'=>$girls));


array
  'boys' => int 1000000
  'girls' => int 999918
Правильный ответ приходит в голову на второй строке кода ))
$v=0.5
На самом деле, если предположить 50/50 и не учитывать повторные браки/детей на стороне, то ответ: 0:0. Говоря по-другому, такая страны вымрет при любом раскладе.
Для численности в 10 000 человек — максимальное время у меня получилось — 403 поколения (на синтетическом тесте)

maxnum = 0

100.times do
boys = 10000
girls = 10000
num = 1

begin
pairs = boys < girls? boys: girls
boys = girls = 0
for i in 1..pairs
while rand(1..1000) maxnum
end

puts «Maxnum is #{maxnum}»
блин, хабр съел ход (или я не умею его готовить)
на пастбине: pastebin.com/YZypSQWy
нет, лучше так:

$boys = $girls = 0;
for($i = 0; $i < 1000000; $i++){
$boy = true;
while(rand(0,1)){
$girls++;
$boy = false;
}
if ($boy) $boys++;
}


получаем:

["boys"]=> int(500414) ["girls"]=> int(1000416)
["boys"]=> int(500827) ["girls"]=> int(1001099)
...


Т.е. ответ 1: 2.
Пардон, код можно в мусорку. А комент -1. Пора спать.
Одинаковое, но при следующих условиях: пары могут иметь бесконечное количество детей (если число жителей сильно большое), и вероятность рождения девочки и мальчика 50/50
Теорвер на вашей стороне. :-)
Зная, что мат.ожидание мальчиков в семье равно одному, нетрудно показать, что для девочек оно равно P / (1 — P), где P — «вероятность рождения девочки».
Пусть I = aM + bD, где a — доля мальчиков, b — девочек. Имеет смысл только отношение a:b. Тогда имеем в соответствии с условиями задачи соотношение:

I = 0.5M + 0.5(D + I) => a:b = 1:1
НЛО прилетело и опубликовало эту надпись здесь
треугольная тоже не упадёт ;)
НЛО прилетело и опубликовало эту надпись здесь
И катить можно!
НЛО прилетело и опубликовало эту надпись здесь
Кроме того, если я не ошибаюсь, у диска оптимальное распределение нагрузки из всех возможных двумерных фигур при давлении на него (ровно как у сферы или цилиндра среди трехмерных).
Про мячики весьма легкая задача. Про часы — 24 раза?
23, вроде. Не?
а секундную стрелку кто-нибудь считал?
Внимательно читать нужно условия
Считал, но не увидит отличий от случая без секундной стрелки. Все три стрелки вроде бы только раз в час оказываются на одном месте.
Не правда, все три стрелки (если говорить строго) только два раза в сутки пересекаются одновременно — в полночь и полдень
Полагаю, предполагается некоторая доля допущения в пределах одного секундного/минутного деления.
>>у диска оптимальное распределение нагрузк
Действительно. Про это мало кто знает, в отличие от «не упадёт».
Советский катить затруднительно — у них ушки есть.
НЛО прилетело и опубликовало эту надпись здесь
По-моему установка не сильно сложнее когда речь идет о прямоугольник например. А вот круглая крышка позволяет открыть люк с любой стороны прилагая одинаковое усилие. Например в ситуации если бы люк с прямоугольной крышкой был между стен, узкой стороной в проход — открыть значительно сложнее чем, если открывать с широкой стороны.

А к круглой крышке требуется приложить одинаковое усилие, по понятным причинам.
Прямоугольная крышка свободно может упасть вниз в отличие от круглой и треугольной. Плюс круг менее травмоопасен из-за отсутствия углов, плюс катить можно, так что прямоугольник. Круг — проще открыть — спорный момент:) Плюс круг менее устойчив на ребре, так что и у него есть недостатки
равносторонний?
В круглый люк диаметром D пролезть проще, чем в треугольный со стороной D.
Круг тоже надо не абы как бросить, чтобы он уселся. У него же выступы есть.
Блин, даже из бумаги вырезал.
Упадет :)
Каким образом упадет равносторонний треугольник?:)
Попробую на пальцах:
Допустим у треугольника сторона равна L
Высота у него будет H
Естественно H < L

В люк вдоль одной стороны L опускаем крышку, одной стороной строго вниз.
В итоге крышка пролезет вниз, т.к. максимальный размер у неё будет H

Вырезал и понял:) действительно падает
Минимальная проекция равностороннего треугольника на прямую — его высота, а максимальная — его сторона. Высота меньше стороны. Конечно, вы с любой формой крышки можете сделать так, чтобы она не падала, сделав разницу между размерами крышки и проема больше, но в круге и только в круге такой проблемы никогда не возникнет — разницу определим только лишь из физического удобства открывания.
НЛО прилетело и опубликовало эту надпись здесь
Я еще не встречал ни одной трубы, в которой не валялась бы крышка от люка

image

Даже такое решение не спасло — в трубе была найдена крышка:

image

Исследование доказывает, как неумелая реализация может испортить даже самую классную архитектуру.
круглые крышки, потому что круглые дырки делать проще!
Вот бы еще ответы почитать. Лень всю книгу читать.
тут можно посмотреть ответы.
Хм, интересно. Там есть задача про бросание яиц. Они дают ответ 14, но мне лично кажется, что ответ ceil(log2(100)) = 7, потому как задача напоминает имитацию бинарного поиска.
НЛО прилетело и опубликовало эту надпись здесь
Мда… И о чем я читал? :) Пора на боковую.
А про настройщиков пианино существует логичный ответ?
Да. Там просто высчитывается примерное количество пианин, время на настройку и распределение пианин по районам — и дается приблизительный ответ. В подобных задачах главное — логика рассуждений, а не точный ответ.
А разве не берется самый простой ответ: столько же сколько и пианино, ведь один настройщик настраивает одно пианино.
Нет. Ведь пианино надо настраивать раз в полгода(к примеру) — получается, что если каждый настройщик будет настраивать каждое пианино, то все они будут работать только раз в полгода.
Тут принцип такой — обычно пианино у богатых, у них свой настройщик. Настраивается пианино раз в неделю или в две недели, насколько помню. Либо у организаций, у которых в штате свой. Платят им немало.
Если бы каждые 2 недели, но рекомендуемая частота настройки пианино/фортепиано это таки 6 месяцев, что очень легко гуглится. Ваш К.О.
Значит я не прав.

А если так:
Один настройщик тратит день на настройку пианино. За полгода он настроит, примерно, 100-150 штук, потом пойдет по новому кругу. Значит если в городе (районе) больше 150 штук пианино, то настройщиков кратно 150.
НЛО прилетело и опубликовало эту надпись здесь
Про мячи весьма несложная задачка.
Шарики для гольфа и настройщики пианино — задача без решения, которая демонстрирует умение делать предварительные оценки при заведомо неизвестных (или приблизительно известных) параметрах.
про шарики бы я ответил — типа сколько запихаете. может кто-нить и мерял, но это не очень общеизвестный факт.

про стекла — человеческой жизни при любых деньгах не хватит :)

про мальчиков и девочек и так все ясно :)

настройщиков — меньше чем пианино в мире :)

канализационный люк — круг идеальная фигура по соотношению площадь/длина периметра, т.е. меньше метала на него уйдет. просто экономия. хотя могли тут и с нагрузками замарочится. и с трубами, которые эти крышки прикрывают :)

сан Франциско — вроде город спадающий к морю, так что эвакуация через море и без вопросов! :)

секундная стрелка, минутная и часовая пересекаются в сутки 2 раза — оба на 12, если брать их непрерывное движение. а не так, что минутная стрелка скачет на деление после каждой минуты…

про записку — вообще, наверное я задачу не понял

про мячики — школьная задачка про монеты

про уменьшение до 5ти центовой монеты то же условие не понятно, имеется ввиду что получили 5ти центовую монету с положительной плавучестью? если так, можно забиться под лопасти, либо зацепись за лопасть выкатиться наружу :)

>сан Франциско — вроде город спадающий к морю, так что эвакуация через море и без вопросов! :)
А если это цунами?
ну тогда есть универсальный план:

обернуться белыми простынями и тихо ползти на кладбище, чтобы не создавать паники (с) анехдот
однозначно универсальный :)
А кроме шуток — без уточняющего вопроса «а что собственно случилось» тяжко продумать — от тактического ядерного удара и от зомби-апокалипсиса спасать людей всё таки придется по-разному
может в этом именно и заключался ответ?
скорее всего! хотя злоупотреблять на собеседованиях вопросом на вопрос может оказаться фатально
Про часы: а как же пересечение в 1:05 (примерно), 2:10 и т.к… Пересечение происходит каждый час и ~5,5 минут. Так что за сутки пересекаться будут 22 раза.
я вот считаю что стекли все двигаются каждую секунду. даже с точностью до 0.01, все равно получается на 12 часах всего одно значение 0 0 0.

пример программы:

$max = 12 * 3600;

$s = 0;
$v = 0;
$h = 0;

for ($i=0; $i < $max; $i++) {
if (abs($s-$v) < 0.01 && abs($s-$h) < 0.01) {
echo $h, "\t", $v, "\t", $s, "\n";
}
$s = ($s + 1)%60;
$v = $v + 1/60;
if ($v >= 60) {
$v = 0;
}
$h = $h + 1/3600;
}
стоп, я че то вру под вечер. щас проверим
да, наврал там должно быть

if (abs($s-$v) < 0.01 && abs($s-$h*5) < 0.01) {

либо я конкретно туплю :)
Можно просто посмотреть на механические часы (а лучше переводить вперед и посчитать).
сот отвлекись и подумай. ты СЕКУНДНУЮ стрелку то же переводишь? :)
Про секундную стрелку и не подумал…

Сейчас проверил на часах. пересекаются в 22:54:54…
не надо смотреть на часы — все уже посчитано :)
Да-к, это вопрос на Менеджера, а не на Инженера.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории