99 бутылок пива

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

«99 бутылок пива» (англ. 99 Bottles of Beer) — традиционная песенка в США и Канаде. Песенка часто поётся во время длительных поездок, поскольку у неё повторяющийся и легко запоминающийся мотив, а её пение может занять много времени. Особенно часто песню поют дети во время продолжительных групповых поездок на автобусе, таких как экскурсия школьного класса или выезд на природу бойскаутов. Песенка происходит от традиционной британской песни «Десять зелёных бутылок».

Основной вариант песни[править | править код]

Формат куплета является шаблонным и может быть выражен следующим образом:

Отсчёт ведётся от 99 до 1:

<количество> бутылок пива на стене
<количество> бутылок пива!
Возьми одну, пусти по кругу
<количество минус 1> бутылок пива на стене!

В оригинале:

<number> bottles of beer on the wall
<number> bottles of beer!
Take one down, pass it around
<number - 1> bottles of beer on the wall!

Таким образом, количество бутылок повторяется три раза (кроме числа 99). Предпоследняя строка в каждом куплете иногда изменяется на слова «если одна из бутылок упадёт», кроме того, у заключительного куплета есть множество разновидностей.

Одним из распространённых вариантов заключительного куплета (который может в принципе сделать песню бесконечной, смыкая её конечный куплет с первым), является:

Нет бутылок пива на стене!
Нет бутылок пива!
Пойди в магазин и купи ещё (или Пойди в магазин и стяни ещё),
99 бутылок пива на стене!

В обучении программированию[править | править код]

Текст песни используется при обучении программистов технике работы с циклами[1][2][3].

В связи со спецификой используемых языков реализация подобной программы перестаёт быть тривиальной: в случае с английским языком — необходимо менять слово bottles в предпоследнем цикле на bottle. На русском языке программист сталкивается с необходимостью учёта склонения существительного: если число находится в диапазоне от 11 до 19, нужно использовать слово "бутылок", иначе если остаток при делении числа на 10 равен 1, нужно использовать слово "бутылка", если же остаток при делении числа на 10 равен 2, 3 или 4, нужно использовать слово "бутылки", иначе используем слово "бутылок".

def count_bottle(count):
    remainder = count % 10
    if remainder == 1 and not count == 11:
        return f'{count} бутылка'
    elif remainder >= 2 and remainder <= 4 and not (count >= 12 and count <= 14):
        return f'{count} бутылки'
    else:
        return f'{count} бутылок'

def base():
    print(f'{count_bottle(N)} пива на стене')
    print(f'{count_bottle(N)} пива!')
    print('Возьми одну, пусти по кругу')
    if N == 1:
        final()
    else:
        print(f'{count_bottle(N - 1)} пива на стене!\n')
    
def final():
    print('Нет больше бутылок пива на стене!\n')
    print('Нет бутылок пива на стене!')
    print('Нет бутылок пива!')
    print('Пойди в магазин и купи ещё')
    print('99 бутылок пива на стене!')

for N in reversed(range(1,100)):
    base()

Культурное влияние[править | править код]

  • В альбоме группы Dance Club Massacre  (англ.) «Circle of Death» присутствует одноимённая песня на 27 минут 30 секунд длительности звучания.
  • В мультсериале «Кот Ик» в серии «пираты» использовался изменённый вариант 99 бутылок молока:

99 бутылок молока на борту
99 на борту
берёшь одну, пускаешь ко дну
98 осталось на борту

  • В серии Симпсонов «The Old Man and the “C” Student» Гомер избавляется от огромного количества самодельных символов несостоявшейся в Спрингфилде Олимпиады — пружинок — спуская их в унитаз, исполняя вариант «(Число) пружин пошли купаться в море, одна из них утопла».
  • В игре Monkey Island 2 один из пиратов поёт эту песню.
  • В статье «Оценка сложности песен» Д. Кнута «m бутылок пива на стене» приводится как типичная песня сложностью O().[4]
  • У американского рэпера Slaine есть песня «99 Bottles», на которую снят клип.[5]
  • В мультсериале «Эй, Арнольд!» в серии «Автобусы, велики и электрички» дети, возвращаясь с экскурсии, исполняют изменённый вариант на «99 банок пива».

Примечания[править | править код]

  1. 99 Bottles of Beer Архивная копия от 9 февраля 2010 на Wayback Machine: «99 бутылок пива» на 1500-х языках программирования и их вариациях  (англ.)
  2. Das '99 Bottles of Beer'-Programm — Ein Reiseführer durch die Welt der Programmiersprachen Архивная копия от 12 июля 2006 на Wayback Machine  (нем.)
  3. Сиерра К., Бейтс Б. Изучаем Java. — М.: Эксмо, 2012. — 720 стр. — С. 44. ISBN 978-5-699-54574-2
  4. Knuth, D. «The Complexity of Songs», SIGACT News, Summer 1977, 17—24.
  5. SlaineHipHop. Slaine - 99 Bottles. Дата обращения: 27 декабря 2018. Архивировано 14 января 2019 года.

Ссылки[править | править код]