Anatoly Vorobey (avva) wrote,
Anatoly Vorobey
avva

Category:

задачка для программистов

Знакомый рассказал, ему на интервью задали. Красивая задачка, но совсем не подходящая для интервью, по-моему.

Есть некий поток элементов. Вызывая снова и снова функцию getnext(), вы получаете каждый раз следующий элемент из потока, и так до тех пор, пока функция не вернет EOF, что означает, что поток закончился. Гарантировано, что все элементы, полученные таким образом, будут отличаться друг от друга. Вернуться к началу потока, или получать элементы в каком-то другом порядке, кроме как один за другим с помощью getnext(), невозможно.

Известно, что поток когда-нибудь кончается, но заранее про количество элементов ничего не известно.

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

Функция должна использовать фиксированное количество памяти (иными словами, O(1) памяти).

Update: учтите, что в комментариях уже есть правильные ответы.

Subscribe

Recent Posts from This Journal

  • еже бо аще сѣ́етъ человѣ́къ, тожде и пожнетъ

    Арестовали известного Z-блоггера "Тринадцатого", который занимался время от времени фрондёрством и критиковал власть. Первый скриншот - его…

  • найти кацалапа

    Случайно попалась подшивка журнала "Радио" за многие годы. Вот отрывок из статьи в выпуске за март 1980 о клубе радиолюбителей в Носовке (районный…

  • проведено навечно

    Указ Президиума Верховного Совета СССР № 123/12 от 26 ноября 1948 года (без публикации) «Об уголовной ответственности за побеги из мест…

  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 100 comments
Previous
← Ctrl ← Alt
Next
Ctrl → Alt →
Previous
← Ctrl ← Alt
Next
Ctrl → Alt →

Recent Posts from This Journal

  • еже бо аще сѣ́етъ человѣ́къ, тожде и пожнетъ

    Арестовали известного Z-блоггера "Тринадцатого", который занимался время от времени фрондёрством и критиковал власть. Первый скриншот - его…

  • найти кацалапа

    Случайно попалась подшивка журнала "Радио" за многие годы. Вот отрывок из статьи в выпуске за март 1980 о клубе радиолюбителей в Носовке (районный…

  • проведено навечно

    Указ Президиума Верховного Совета СССР № 123/12 от 26 ноября 1948 года (без публикации) «Об уголовной ответственности за побеги из мест…