Как я заработал 100 евро на лотерее.
Как-то позвонил один товарищ мне, представился знакомым знакомой, спросил, "программист" ли я. Ну я так-то вообще не программист, и последний раз кодил что-то еще на дипломке по автоматике, о чем я ему и сказал. Но парень был очень настойчив, ему нужен был именно программист, а знакомая сказала, что я шарю.
Шарил я в починке компов, если что, но кому не похуй.
В общем, парень настоял, что ему нужно сделать программу и он заплатит за нее денег.
- Насколько сложная программа? - поинтересовался я.
И тут он поплыл. Надо было ему какое-то непонятное что-то, что из неких названий должно собирать любые комбинации этих названий. Плохо объяснил? Ну вот так объяснил и он мне, и такой же я программист, чтоб вы понимали.
Объясню проще. Вот у нас слова "один", "два", "три" и так далее. Слова, а не цифры. И вот надо, чтоб с клавы вводилось количество слов и, собственно, слова, а комп чтоб выдавал все возможные комбинации и их общее количество.
Так это ж хухня, скажут сейчас программисты. Я, если честно, подумал точно так же.
- Сколько будет стоить? - спросил меня парень.
- Да хз, - ответил я, - я такими вещами за деньги не занимался.
- Ну, сотка евро - хватит? - предложил он.
Сотка евро было вполне себе заманчиво, потому что это было ровно на сотку евро больше, чем я должен был получить в том месяце, и потому я понял, что ее хватит.
В целом, опущу, как я пришел к решению задачи. Программистам уже все понятно, а непрограммистам скажу лишь, что долго пилил алгоритм и так и эдак, и все фигня получалась. То работало с двумя порядками, то уже с тремя, а потом хуяк и не работало вообще. Тупил я, короч, даже на форумах спрашивал, но чёт все отмораживались.
Ну и потом меня осенило как-то прямо перед сроком сдачи, за день или за два.
Сделал я прогу быстро, правда, когда ее скопмилил ( а делал я ее в турбо паскале, так как мне в нем проще было, да и нихуя не умею я в эти ваши Питоны, Джавы и Си), отчего-то антивирь снес ее к ебеням. Ну, я ее снова скомпилил, отключив антивирь, закинул на копеешную флешку (и на всякий случай, на сиди диск, ну чтоб никакой антивирь ее больше не грохнул), и поехал сдавать работу парню.
Встреча была как в тех ваших шпионских фильмах.
"все работает?" - " само собой"
"покажи" - *показываю на ноуте*
"давай" - "сначала деньги"
Обменялись, вышли, закурили. Стоим, каждый о своем думаем.
И тут парень решил поделиться.
Это у него, оказывается гениальный план был, программа чтоб перебирала все возможные номера лотереи (ну, там не совсем лотерея была, больше ставки, но не суть), а он потом наймет людей, накупит билетов, и они во все эти билеты внесут все напечатанные компом номера, и один из них выиграет по любому, ну и все, он миллионер. Он даже подсчеты показал, сколько билет стоит, сколько надо купить, сколько в итоге будет выигрыш минус затраты на билеты и людей.
Гениальная идея, правда, я уже знал, что она не сработает. И не потому, что я на тот момент уже читал статью о том самом гениальном математике, который таким макаром выиграл парочку-другую лотерей, нет.
Да и парень думал вполне себе логично.
Вот только одна ошибочка у него была, я о ней сразу сказал. Говорю, а ну глянь сюда. Ноут достаю, и в него забиваю его лотерею. Ну и в результате комп выдает количество вариантов, и оно примерно в 100 раз больше, чем он предполагал. То есть образно он считал, что вариантов 1 миллион, при стоимости билета в 1 доллар, а выигрыш порядка 10 миллионов - отсюда 9 лямов навар, ну там минус работникам, что заполнять будут.
А оказалось, что вариантов 100 миллионов.
Вы бы видели его лицо. Он пытался понять, где он ошибался, и ему, наверное, даже уже жалко стало те самые 100 евро, что он потратил на эту, теперь бесполезную прогу, но деньги были у меня, а прога уже у него.
А потому я попрощался, прыгнул в машину и уехал.
Вот так я заработал на лотерее 100 евро.
А парень получил урок по терверу (а точнее - по математике) за 100 евро.
ЗЫ. А знаете, почему ругался антивирь на прогу? Да потому что решение банально простое и это тупо брутфорс. Обычный простой алгоритм перебора всех вариантов из заданной последовательности. Да, программистам это очевидно, а вот мне пришлось поломать голову.