Офтоп Алкен
5 402

Программист из Тюмени разработал скрипт, который играет за него и получает промокоды на пиццу

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

В закладки

Схема игры простая: нужно совмещать три и более одинаковых элемента, чтобы получать баллы. Их потом можно обменять на пиццу или напиток. Самый дешевый приз - кофе, чтобы получить который нужно набрать минимум 1000 очков. Правда чтобы набрать столько баллов за одну игру - нужно очень постараться.

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

Попробовал сыграть, но даже на минимальный промокод не удавалось набрать. Решил написать скрипт, который будет играть за меня. Написал все на языке Python примерно за час. Теперь мой рекорд 2700.

Иван
Программист

На данный момент «Додо-пицца» твит программиста и ситуацию никак не комментировала.

Материал опубликован пользователем. Нажмите кнопку «Написать», чтобы поделиться мнением или рассказать о своём проекте.

Написать
{ "author_name": "Алкен", "author_type": "self", "tags": [], "comments": 70, "likes": 114, "favorites": 29, "is_advertisement": false, "subsite_label": "flood", "id": 40644, "is_wide": false, "is_ugc": true, "date": "Fri, 22 Feb 2019 12:39:10 +0300" }
{ "id": 40644, "author_id": 54785, "diff_limit": 1000, "urls": {"diff":"\/comments\/40644\/get","add":"\/comments\/40644\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/40644"}, "attach_limit": 2, "max_comment_text_length": 5000, "subsite_id": 64955, "last_count_and_date": null }

70 комментариев 70 комм.

Популярные

По порядку

Написать комментарий...
100

«Программиста скрипты кормят» теперь это звучит слишком буквально

Ответить
50

Решение настолько же честное, насколько честная сама игра :)

Ответить
–40

Это читёр поганый а не погромист, бан ему и не пускайте в додо

Ответить
12

походу твою иронию никто не понял

Ответить
4

Просто настолько жирно что Рогозин.

Ответить
2

Лайкнул из за сочувствия...

Ответить
17

без ссылки на гитхаб пост не полный

Ответить
11

int pizza = 0;
dodo
{
pizza ++;
}
while (pizza < 100500);

Ответить
5

но он же писал на питоне

Ответить
38

Чо, доволен?!!! Да?! Спалил меня, что я не знаю Питона!! Ну, спасибо!
Меня теперь уволят за профнепригодность!!!!111

Ответить
1

а вот и анонимный разработчик из Rockstar San-Diego))

Ответить
0

Я в программирование "только со словарём", но это выглядит так залипательно) Красота! Питончик)

Ответить
5

def dodo():
for pizza in range(100500):
eat(pizza)

Ответить
0

Извиняюсь, редактор DTF сожрал отступы :(

Ответить
0

Можно начать срач за "питон-псевдокод" или нет?

Ответить
0

А зачем? Его все равно мало кто поймет...

Ответить
0

while (pizza < 100500);

pizza < 0xDEADD0D0; // int overflow

Ответить
0

Объясните прекол я узбек

Ответить
4

Целочисленный тип данных, integer, в памяти машины (в случае классических машин, моделей памяти и языков, выпендриться можно везде), представлен наиболее логичным видом. Он кодируется последовательным набором бит. Один бит может принимать значения вкл или выкл, то есть 1 или 0. Соответственно, возможных исходов для его состояния всего 2. Теперь, если у тебя есть, положим, байт для сохранения данных (1 байт = 8 бит), самое первое значение (ноль), которое таким образом можно записать, в памяти машины будет занимать все 8 бит, просто они будет занулены. Таким образом, выглядеть это будет примерно так: 0000 0000. Это т.н. октет. В дальнейшем, при прибавлении 1, эти регистры будут заполняться (возьмём только правые 4 регистра, чтобы не загромождать), тогда один это 0001, два это 0010, три это 0011, четыре это 0100, пять это 0101 и т.д. Вплоть до заполнения всех разрядов единицами.
В случае с бинарным представлением данных (нативным состоянием полупроводников и процессоров на них), работать в десятичной системе счисления неудобно. Поэтому используется шестнадцатеричная. Один октет можно очень удобно свернуть в виде двух чисел в шестнадцатеричной системе счисления. В ней переход на следующий разряд происходит после 15, а не 9, как в десятичной. А недостающие цифры обозначаются буквами латинского алфавита. То есть:
08, 09, 10, 11, 12, 13, 14, 15, 16, 17
превращаются в:
08, 09, 0A, 0B, 0C, 0D, 0E, 0F, 10, 11
Таким образом, 1111 1111 можно записать в виде FF (что равно 255, в десятичной). Соответственно, целочисленных тип int в данном контексте имеет 32 разряда (бита). И максимальное значение, которое он может принимать FFFF FFFF или 4 294 967 295 (в десятеричной; чтобы это быстро перевести в десятеричную, используется комбинаторная формула a^b, где a — возможное число исходов (у нас всего 2, то есть 1 или 0 соотв.), b — количество разрядов (32); 2^32 = 4294967296). Точнее, мог бы принимать, если бы у нас не стояла необходимость записывать знак. Для беззнаковой работы используется тип unsigned int, в нём 32 бита кодируют значения 0..4294967295. В случае с простым int, знак кодируется самым последним, левым битом. При пересечении максимального положительного значения в простом int, 7FFF FFFF (2147483647, или 0111...1111 в двоичном представлении), самый последний бит заполняется (перекидывается из 0 в 1), тем самым превращая зачение в отрицательное, а именно, FFFF FFFF (-1, 1111...1111). Такой резкий скачкообразный переход называется переполнение, или overflow. После чего идёт обратный процесс последовательного перекидывания всех единиц обратно в нули. Когда это произойдёт, мы снова возвращаемся к нулю и положительному значению. И всё повторяется вновь.
Соответственно, int кодирует значения -2147483648..2147483647. И если 0xDEADDOD0 представлять в виде unsigned int, он будет иметь значение 3735933136, а если просто int, то -559034160. Но как определённая в коде константа, она может иметь только тип unsigned int.

Ответить
0

# зануден моде он
0xDEADD0D0, конечно, прикольно, но переполнения там быть не должно. Это же Python, он автоматически добавляет столько байт, сколько нужно для размещения целых чисел. К тому же, это всего лишь 32-битный литерал, а нынешний стандарт - 64 бита.
# зануден моде офф :)

Ответить
2

Вообще, возможность записывать хоть и ограниченного вида, но всё-таки осмысленный текст, за который хорошо цепляется глаз, использовался в древние времена (и используется до сих пор) появились такие варианты как DEAD BEEF (dead beef, дохлая говядина) и вот это всё (в основном, это всё было связано с отладочными кодами и различными BSOD-образными вещами для различных систем), чтобы было за что зацепиться глазу, чтобы была какая-то определённая магическая константа, означающая состояние системы. В коде большинства языков префикс 0х указывает на использование шестнадцатеричной системы.
Теперь посмотри на псевдокод цикла: dodo { something } while( condition ); (dodo искажённое do, потому как по телефону, например, они говорят до-досвидания). Он будет выполнять something, до тех пор, пока condition не выполнится (не станет верным). В коде мы прибавляем по единичке числу int и сравниваем его с unsigned int, что очень опасно, так как сравниваем мы по значению. Когда мы дойдём в значении пицц к 2147483647, следующим значением будет -1. А condition, то есть выход из цикла, выполнится только в том случае, если значение наших пицц превысит 0xDEADDOD0 (3735933136). Что никогда не произойдёт, потому что максимальное положительное значение для int это 2147483647, что в 1.74 раза меньше 3735933136, а отрицательное и ежу понятно, что всегда меньше любого положительного. То есть программа зависнет в бесконечном цикле. Или, в каком-то смысле, умрёт.
Далее, есть выражение «мёртвый, как дронт» (или "dead as a Dodo"). Маврикийский дронт, он же додо — голубеобразная вымершая нелетающая птица, один из наиболее ярких представителей наплевательского отношения людей к сложившимся биоценозам. Происходило это во времена активной колонизации и только начала формирования научного метода. Дронты были очень лёгкой добычей, так как на том острове у них не было врагов, а низко висящей жратвы было завались. Собственно, португальцы чуть ли не голыми руками их хватали в охапку и намазывали на хлеб. Ну а добили популяцию птиц привезённые на кораблях крысы и прочие шерстяные пидорасы, которые лакомились кладкой.
Теперь понятно?

Ответить
0

Ты охуенный. Спасибо

Ответить
0

Крч
Крч
Это самый ахуенный скрипт, который я когда-либо видел
Просто остальные были на паскале
:()

Ответить
11

ох уж этот программист!

Ответить
–7

Хорошая пицца. Раньше брали постоянно, сейчас перешли на ТелеПиццу.

Ответить
11

Приятного аппетита!

Ответить
2

А за что так минусят-то?)

Ответить
1

Пусть держит язык за зубами, держательвкурсе)))

Ответить
0

Спасибо!

Ответить
0

Держи в курсе...

Ответить
1

Ну все, молись, чтобы тут личку без черного списка не прикрутили =D

Ответить
7

В прошлый раз давали 100 пицц в год на 100 лет. За татуировку додо пицца. Наивность. Акцию пришлось прервать через 3 дня.

Ответить
1

А не имело значения, на ком татуировка должна быть? Или обязательно на себе?
Это что, мне придётся развязать и отпустить чувака?

Ответить
7

В контексте Додо пиццы и их подхода к бизнесу - получит специальный приз в виде приглашения на работу

Ответить
2

Больше информации по ситуации:
1) На данный момент игру временно выключили
2) Можно набрать сколько угодной очков банальным редактированием текста через "Просмотреть код", бот не нужен
3) Программист не сделал ничего уникального, в интернете полно статей о том, как самому сделать такой бот

Ответить
9

Открой форточку пожалуйста

Ответить
1

Можете пояснить вашу остроумную фразу?

Ответить
6

так а скрипт-то где?)) как раз время к обеду подходит

Ответить
–4

Я бы их пиццу только за доплату ел. Заказывал дважды - отвратительная и не вкусная.

Ответить
0

Держи в курсе....

Ответить
3

лол приложение додо упало

Ответить
0

Нууу, птица Додо тоже не дожила до сегодняшних дней)

Ответить
2

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

Ответить
–5

А зачем тут выводить твит на главную? Заметка занимает больше одного монитора в фиде. Загоголовка с подзаголовком вполне достаточно.

Ответить
1

Где пруфы, Иван? Где пицца?!

Ответить
1

Теперь мой рекорд 2700.

Ну формально рекорд принадлежит скрипту, так что и пиццу надо отдать скрипту.

Ответить
0

Можно контакты скрипта? Ему все равно не нужно есть.

Ответить
1

Самый прикол этих всех игр в том что выигрывает всегда казино, сколько бы человек не набрал очков, это же промоакция.

Ответить
0

Хрен с тобой, пойду чо-нить закажу у них пожрать.

Ответить
0

У кого какой честный рекорд?))0)

Ответить
0

Выиграл пиццу (счет 1610) и тут-то и вскрылся подвох (или нет), но: вой промокод: хххххх.... По нему мы подарим тебе нашу новую сезонную пиццу Том Ям 25 см при заказе на минимальную сумму доставки.
То есть нужно еще назаказывать :)

Ответить
1

В целом типикал, если честно. Даже не такая уж и проблема, ибо тогда пришлось бы платить за доставку. Просто, ну, это геморой. Я стабильно каждый вечер убегаю от представителей ДоДо Пиццы, которые всовывают флаеры с подобной же халявой. Да и у Ям наверняка есть такие акции на сайте. Дитенахрен(

Ответить
0

у меня 530(

Ответить
0

1060
Дальше только фарт, который имеет место быть конечно, но даже с ним до 600 добраться пиздец

Ответить
0

1690))))) если честно даже не знаю как там нечестно сделать, но выбивал минут 20 от силы

Ответить
0

Здравствуйте менеджер ДоДо, вы меня убедили позадрить ещё немного((

Ответить
0

Додёнок погрустнеет от такого(

Ответить
0

Ошибиться окном и оставить комментарий на дтф вместо менеджера.

P.S. Чувак бест

Ответить
0

Размял руки, запустил IDE, и ...
Не удалось подключиться к MySQL: (1040) Too many connections

Ответить
0

Это будет продолжаться до того момента, пока не выскочит окошко «подтвердите что вы не робот» 🌚

Ответить
0

Прямой эфир

[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fizc" } } }, { "id": 4, "label": "240х200_mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "flbq" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "clmf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjog" } } }, { "id": 10, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "clmf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-250597-0", "render_to": "inpage_VI-250597-0-1134314964", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=clmf&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Плашка на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudo", "p2": "ftjf" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fzvc" } } } ]
Хидео Кодзима оказался алгоритмом
машинного обучения
Подписаться на push-уведомления