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

Счастливые билеты

Время на прочтение 2 мин
Количество просмотров 8.3K
Уже больше недели хожу пешком и катаюсь на общественном транспорте, проездные билеты не продают после 5-го числа, поэтому приходится каждый раз при посадке оплачивать проезд. А что чаще всего делают школьники и студенты (а часто даже взрослые люди, каждый день наблюдаю) с билетом первым делом? Проверяют его на принадлежность к так называемым «счастливым», чтобы потом положить к себе в коллекцию, а может даже «по-тихому» съесть для верности. А может просто выкинуть :)

Счастливые билеты

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

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

Но, поскольку мощность наших компьютеров зачастую позволяет идти неоптимальным путем (с точки зрения математики), то решил не заморачиваться выводом формул.

В итоге оказалось быстрее :)
Привык программировать на Perl. Большинство здравомыслящих программистов, думаю, легко повторят тоже самое за несколько минут хоть на Delphi, хоть на Basic, хоть на JavaScript, etc.
Программа просто перебирает практически миллион комбинаций (989к, первый счастливый билет 1001).

#!/usr/bin/perl

print "Content-Type: text/html\n\n";

$num = 1000;
$s = 0;

while ($num < 1000000) {

  $ln = length($num);

  $l6 = substr($num,$ln-6,1) if ($ln > 5);
  $l5 = substr($num,$ln-5,1) if ($ln > 4);
  $l4 = substr($num,$ln-4,1);
  $l3 = substr($num,$ln-3,1);
  $l2 = substr($num,$ln-2,1);
  $l1 = substr($num,$ln-1,1);

  if ($l6+$l5+$l4 eq $l3+$l2+$l1) {
     print 0 x (6-$ln), "$num\n";
     $s++;
  }

  $num++;

}

print "Сумма = $s";


* This source code was highlighted with Source Code Highlighter.


В итоге на выходе я получил сумму, равную 55251 счастливому билету.
Чуть округляя, получаем, что примерно каждый 18-й билет «счастливый».

Уже из интереса решил поискать математическое решение, и нашел весьма интересный рассказ, рекомендую почитать, если хотите немного отвлечься на 10-15 минут от работы, достаточно интересно. На этой же странице еще много интересного про счастливые билеты.

А на Википедии можно посмотреть краткую вытяжку, там хорошо и коротко показано распределение «счастливых» билетов.

Как и в Википедии, так и в рассказе указано число 55252. В момент написания топика думал, что билета с номером 000000 не существует. В комментарии приведено доказательство существования такого билета.

Что я хотел всем этим сказать? Да, собственно, ничего особенного. Если нужно расслабиться во время рабочего дня — можно найти массу интересных (кроме игр) и полезных для умственной деятельности вещей.

Будьте счастливы!

UPD: Посчитал количество билетов типа «встреча» (суммы отличаются на единицу) и «письмо» (отличаются на 2). «Встреча» — 109494 билетов, «письмо» — 106524 билетов. В итоге примерно каждый 4-ый билет привносит немного позитива в нашу жизнь :)
Теги:
Хабы:
+66
Комментарии 142
Комментарии Комментарии 142

Публикации

Истории

Ближайшие события

PG Bootcamp 2024
Дата 16 апреля
Время 09:30 – 21:00
Место
Минск Онлайн
EvaConf 2024
Дата 16 апреля
Время 11:00 – 16:00
Место
Москва Онлайн
Weekend Offer в AliExpress
Дата 20 – 21 апреля
Время 10:00 – 20:00
Место
Онлайн