LINUX.ORG.RU
ФорумTalks

Задачи с собеседований на интеллект.

 , ,


12

2

Подкиньте еще логических задач с собеседований. Примеры таких:

  1. Встретились два старых друга, не видевшиеся уже довольно долго. Оба когда-то вместе учились на Физтехе. Вот их диалог: — Я слышал, у тебя дети появились. — Да, три сына. — И сколько им лет? — Ну... В сумме — тринадцать! — Хм... Загадками хочешь говорить? Ну ладно. И что еще можешь сказать? — Если возрасты перемножить, получится как раз столько, сколько окон у вооон того дома. — Но этого всё еще мало! — Могу добавить, что мой старший сын — рыжий. — Ну теперь совсем другое дело. Им ... (далее следует ответ) — Правильно! Сколько же лет им было?

  2. Три мудреца поспорили, кто из них самый умный и обратились к четвертому, чтобы он их рассудил. Судья сообщил мудрецам, что у него есть три белых колпака и два черных, после чего надел каждому белый колпак на голову так, чтобы каждый видел только колпаки двух других мудрецов. Мудрецам требовалось угадать цвет колпака на собственной голове. Через некоторое время один из мудрецов сообщил, что у него на голове белый колпак и выиграл состязание. Как он смог догадаться?

  3. Человек находится в ж.д. составе, замкнутом в кольцо. Случайным образом в каждом вагоне включен или выключен свет. Окна закрыты. Человек может только переходить из вагона в вагон и включать и выключать свет. Как ему узнать длину состава? UPD: У него с собой никаких предметов, ничего что бы он мог оставить, нельзя портить вагоны и испражняться в них.

  4. Жил-был султан, и был у него совет из множества мудрецов. Решил он, подсократить их, выбрать самых умных, а остальных казнить. Для этого вызвал их и сказал: «Сегодня вас всех посадят в темницу, завтра завяжут глаза, выведут на площадь у дворца, каждому наденут на голову черный или белый колпак, построят в шеренгу, что бы каждый видел всех перед ним и никого за ним, после чего всем развяжут глаза. Каждого, начиная с последнего, спросят, какой на нем колпак, если он не угадал - его казнят». Что могли придумать мудрецы, что бы минимизировать свои потери?

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

  6. У вас есть стоэтажная башня и два идентичных стеклянных шара. Как за минимальное число попыток определить наименьший этаж, при падении с которого шар разбивается?

  7. В квадратном торте какой-то умник вырезал прямоугольное отверстие (не обязательно параллельное сторонам квадрата). Как поделить ровно пополам то, что осталось от торта?

  8. В тюрьме сидят 10 заключенных, каждый — в одиночной камере. Общаться между собой они не могут. В один прекрасный день начальник тюрьмы объявил им, что предоставляет всем шанс выйти на свободу на следующих условиях:

    «В подвале тюрьмы есть комната с переключателем, имеющим два состояния: ON и OFF («вкл.» и «выкл.»). Каждую ночь я буду приводить в эту комнату ровно одного заключенного (выбирая его абсолютно случайно) и через некоторое время уводить. Находясь в комнате, каждый из вас может либо изменить положение переключателя, либо ничего с ним не делать. Персонал тюрьмы трогать этот переключатель не будет. В какой-то момент один из вас (любой) должен понять, что в комнате побывали все заключенные, и сообщить об этом. Если он окажется прав — всех отпустят, если ошибется — все вы навсегда останетесь в тюрьме. Я обещаю, что в комнате побывают все заключенные, причем каждого будут приводить туда неограниченное число раз».

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

    Могут ли заключенные гарантированно выйти на свободу, и если да, то как им этого добиться?

Кто какие еще знает? Составляем коллекцию.



Последнее исправление: CatsCantFly (всего исправлений: 8)

Ответ на: комментарий от Miguel

Я даже для первых двух узников не могу добиться больше 30%. Для всех 100 получаются совсем микроскопические числа. Чего-то не хватает в условии.

backburner
()
Ответ на: комментарий от Xellos

Вторая часть - вопрос? Меня осенило!

Как именно им действовать, чтобы повысить вероятность спасения хотя бы до 30%?

НИКАК! Это невозможно! Я решил? :) Miguel

goingUp ★★★★★
()
Ответ на: комментарий от Xellos

Впрочем, кажется, этого не требуется. Надо подобрать второй встреченный парашют (свой - нулевой) и оставновиться.

Xellos ★★★★★
()
Ответ на: комментарий от CatsCantFly

Нет. Как ты выключишь свет во всех вагонах, если ты не знаешь длину? Включены они рандомом, ты никогда не узнаешь, во всех ты выключил или впереди остались?

очевидно, узнаешь это, когда дойдёшь до того самого вагона, с какого начал выключать свет. впрочем, процесс выключения света необязателен.

next_time ★★★★★
()
Ответ на: комментарий от Miguel

Им нужна стратегия.

Какая может быть стратегия? При таких условиях у них должен быть четко сформулированный план, кто что открывает.

backburner
()
Ответ на: комментарий от backburner

Я даже для первых двух узников не могу добиться больше 30%.

Значит, ты что-то неправильно делаешь.

Miguel ★★★★★
()
Ответ на: комментарий от goingUp

НИКАК! Это невозможно! Я решил?

У задачи ЕСТЬ решение.

Miguel ★★★★★
()
Ответ на: комментарий от lolset

Я посмотрел историю сообщений, везде вроде бы о себе в мужском роде, а в этом треде в женском. Тролль?

CYB3R ★★★★★
()
Ответ на: комментарий от backburner

При таких условиях у них должен быть четко сформулированный план, кто что открывает.

Это и есть стратегия. Вопрос в том, каков этот план.

Miguel ★★★★★
()
Ответ на: комментарий от Xellos

Допустим первый открывает коробки рандомно, и второй тоже. Вероятность, что найдет первый 0.5, второй - 0.5. Вероятность, что эти события наступят одновременно - 0.25. Уже меньше 0.3

goingUp ★★★★★
()
Ответ на: комментарий от goingUp

Правильно. Значит, надо действовать не так.

Miguel ★★★★★
()
Ответ на: комментарий от Miguel

Я написал такую программу для проверки плана открытия коробок:

import random

M = 100
N = 10000

class Test:
    def __init__(self):
        self.boxes = [i for i in range(100)]
        random.shuffle(self.boxes)

    def check(self, i, l):
        assert len(l) <= 50

        for check_box in l:
            if self.boxes[check_box] == i:
                return True

        return False

def generate():
    global M
    for i in range(M):
        yield [i for i in range(50)]

success = 0
for i in range(N):
    test = Test()

    c = 0
    fail = False
    for seq in generate():
        if not test.check(c, seq):
            fail = True
            break
        c += 1

    assert fail or c == M

    if not fail:
        success += 1

print(success / N)

generate() это собственно план и есть, в этом примере они все выбирают первые 50 коробок.

backburner
()
Ответ на: комментарий от backburner

Поздравляю. Но нужно-то не это. Твой план гарантирует провал.

Miguel ★★★★★
()
Ответ на: комментарий от backburner

И да, ты не сможешь использовать свою программу для проверки правильного решения.

Miguel ★★★★★
()
Ответ на: комментарий от Miguel

Чтобы не придирались, добавлю условие

3) Да, имена распределяются по коробкам случайным образом, с равномерным распределением (любое конкретное распределение так же вероятно, как и любое другое).

Miguel ★★★★★
()
Ответ на: комментарий от Xellos

То есть вся «олимпиадность» сводится к тому, что тебя в школе надрачивали не на те задачи, а надо было на те?

Сложно сказать. Меня, вроде, не надрачивали особо, просто нравилось решать такие задачки. Вроде как в конструктор играть. Ну и как-то помалу втянулся. Если бы родители/учителя заставляли, я бы, скорее всего, ненавидел их решать и не умел до конца жизни.

lodin ★★★★
()
Ответ на: комментарий от CYB3R

вот именно что «вроде бы». И вообще на этом форуме должно быть пофиг кто какого пола, ты не путай с форумами знакомств.

lolset
()
Ответ на: комментарий от Xellos

Допустим первый открывает коробки 1-50, вероятность, что он найдет свою - 50%. Второй, открывает 51-100, там вероятность найти его имя больше (как у 3 дверей) - 50/99 - все равно маловато.

goingUp ★★★★★
()
Ответ на: комментарий от ya-betmen

нет. на одномерной планете один робот должен идти влево, другой вправо. у задачи с вагонами другое решение.

next_time ★★★★★
()
Ответ на: комментарий от goingUp

Правильно. Значит, надо действовать не так.

Miguel ★★★★★
()
Ответ на: комментарий от Miguel

Пришла такая идея, правда вероятность я не посчитал, пишу, что надумал, чтоб не забыть:

Первый начинает открывать коробки по порядку 1, затем 2 и далее, пока не наткнётся на имя следующего за собой, после чего он начинает открывать коробки начиная с сотой в обратном порядке. Шанс найти своё имя по прежнему 1/2, ведь никакой информации у него нет, но в таком случае можно быть уверенным, что хотя бы следующий, действуя по тому же принципу, тоже точно найдёт своё. Следующий действует точно так же.

UPD: нет, наверное ерунда всё же. Но думаю, за не имением информации о предыдущем и следующем результате, надо действовать каким-то таким образом. Учитывать имена других. Может быть тех, кто уже побывал в комнате

Psych218 ★★★★★
()
Последнее исправление: Psych218 (всего исправлений: 1)
Ответ на: комментарий от Psych218

Учитывать имена других.

Во, разумная мысль.

Miguel ★★★★★
()
Ответ на: комментарий от HeipaVai1o

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

polym
()

В задаче с вагонами можно просто каким-либо образом оставить себе след. Снять шапку и кинуть на пол//сломать дверь//нацарапать что-либо//дефекация на пол, а потом идти до тех пор, пока не дойдешь до своей «Точки отсчета».

Co6aku
()
Ответ на: комментарий от Xellos

Три двери с одним призом, и один шанс поменять выбор.

Меняй.

Sadler ★★★
()
Ответ на: комментарий от CatsCantFly

2-ух абсолютно одинаковых вагонов не бывает, даже если пометку оставить нельзя она там всё равно будет изначально

next_time ★★★★★
()
Ответ на: комментарий от CatsCantFly

Если действовать «аут ов зе бокс» это требование к решению то надо действовать вне его, ибо таково требование к решению. Играться с воображением, придумывая очередной я в домике побег из системы - тупик.

Следовательно надо или разорвать систему или действовать в одной итерации извне - а так как система подразумевает мышление «аут оф зе бокс» - то надо нарушить его.

polym
()
Ответ на: комментарий от CatsCantFly

Ну так предполагаем, что не на сторожа устраиваемся.

То есть, если Вам предложить побольше, Вы ещё на что-нибудь эдакое согласитесь во время интервью?

Sadler ★★★
()
Ответ на: комментарий от goingUp

Он подумал, если остальные молчат, значит они не могут знать (а ведь они мудрецы). Значит это не вариант 2 черных, 1 белый.

неправильно, это не вариант, потому, что он видит перед собой 2 белых колпака

next_time ★★★★★
()

В поезде надо кодировать каждое некоторое количество вагонов в байт, отображающий номер первого из них.
Так можно одолеть даже бесконечный поезд. Ну, при наличии бесконечного времени.

polym
()

Как ему узнать длину состава?

В первом вагоне свет выключаем, дальше идем вперед на N вагонов, включаем в них свет и возвращаемся. Удваиваем N, повторяем процедуру до тех пор, пока при возвращении, в первом свет не будет выключен. Вот и все.

backburner
()

Может стоит для задач, которые кто-то уже решил из не-авторов, прятать под спойлер решение? Что бы не было флуда по уже давно решенным задачам.

CatsCantFly
() автор топика
Ответ на: комментарий от next_time

Потому что тогда второму бы не потребовалось ещё одно уточнение, и он сразу назвал бы ответ.

Psych218 ★★★★★
()

Господи, какая чушь! И вот это дают на собеседованиях в серьезные места? Да лучше бы делом занимались, чем трахали себе мозги вот таким.

Sociopsih ★☆
()
Ответ на: комментарий от HeipaVai1o

Приведи пример реальной задачи, эквивалентной тому поезду.

Точный аналог - проверка целостности и восстановление системы с ограниченной памятью после сбоя, при невозможности загрузки с чистого носителя.

lodin ★★★★
()
Ответ на: комментарий от HeipaVai1o

Приведи пример реальной задачи, эквивалентной тому поезду.

А вообще the задача в промышленном программировании (если не брать гуглы, ядра линукса и прочий эмбед, а вот именно что приложения для человеков) - опознать в неясных хотелках продакта (которые он формулирует на языке вагонов и тумблеров, потому что не айтишник, а бывший железнодорожник) известную задачу, имеющую стандартное решение. И не городить тормозной, глючный и жрущий память велосипед.

По-моему, так (с).

lodin ★★★★
()
Последнее исправление: lodin (всего исправлений: 1)
Ответ на: комментарий от next_time

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

v9lij ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.