Программист создал алгоритм, который безупречно играет в «Змейку»

Программа ещё ни разу не проиграла.

Змея не может «погибнуть», потому что она всегда следует гамильтонову циклу, который представляет собой цикличный путь, который посещает каждое место на доске ровно один раз. Особенность этого алгоритма заключается в том, что он обладает способностью постоянно переписывать гамильтонов путь, поэтому он всегда пытается двигаться к яблоку. Если он не может перерисовать путь, чтобы идти к яблоку (это «ленивый» алгоритм), он следует по старому пути, всегда гарантируя, что он может добраться до всех мест на доске и не «погибнет».

Процесс разработки.
Таймлапс побед.

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

Написать
{ "author_name": "Дедов Дмитрий", "author_type": "self", "tags": [], "comments": 116, "likes": 549, "favorites": 175, "is_advertisement": false, "subsite_label": "avi", "id": 104193, "is_wide": true, "is_ugc": true, "date": "Mon, 17 Feb 2020 22:52:51 +0300", "is_special": false }
0
116 комментариев
Популярные
По порядку
Написать комментарий...
4

Сказал фигню и все полайкали. AI _в играх_ всегда был на простых алгоритмах и всегда назывался AI, без всяких там новомодных трендов и журналистов, вот уже десятки лет.

Ответить
1

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

Ответить
1

Про подачу согласен, но к посту с картинкой, который я комментил изначально и к комментам под ним относится мало. Тут именно что многие докопались до термина ИИ/AI, хотя он употреблен абсолютно к месту. В геймдев нанимают людей на вакансию разработчик AI и все понимают, что это человек, который как раз шарит во всем этом многообразии "простых" алгоритмов, а не будет создавать "тот самый" ИИ с самосознанием по 5 раз в день.

Ответить
0

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

Ответить
0

Ну AI его назвали, чтобы хоть как-то назвать, маркетологи только подхватили.

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

Ответить
0

Да я согласен, что когда мы говорим про ИИ в целом (вне контекста игр), то надо понимать что есть тот самый трушный ИИ которого еще не создали, а есть модные нейронки и машинное обучение с которым как раз пытаются как-то подобраться к годному самообучающемуся и универсальному ИИ в будущем. И то что маркетологи искуственным интеллектом могут назвать всё что угодно, хоть простые скрипты для умного дома и тупого чат-бота тоже понятно.
НО!
В контексте игр AI / ИИ применяется спокойно сколько я себя помню (как минимум с конца 90-х) и до последних лет, когда не было хайпа вокруг ИИ и тонн маркетингово булщита никто не сомневался в правильности термина в данном контексте. На русскоязычной и англоязычной вики есть термин https://ru.wikipedia.org/wiki/Игровой_искусственный_интеллект
Можно конечно говорить GAI/ИИИ, но я такого нигде не встречал.

Ответить
0

В целом последовательность изменения нескольких переменных. Особенно радовали моменты, когда NPC якобы прячется за углом от тебя ... но достаточно поводить прицелом чуть ниже или выше определенной области - все, ты якобы отвлекся и ИИ старается тебя удивить своей внезапностью :)

А так да ... есть эволюция, особенно бесил "ИИ" в первом Диабло, когда бегать за удиравшими монстрами приходилось ... и убегать, когда они заводили в толпу таких же единомышленников :) Эхх ... было время [накатила слеза].

Теперь поведение NPC размазано по бОльшим площадям, не так заметен градус тупизны в некоторых ситуациях.

Хорошего дня ;)

Ответить
3

Только хотел написать :)

Я такую хрень еще в школе (середина 90-х) на Паскале и Бейсике решал, а тут просто красиво сделано - дети графического интерфейса купились ;)

Ответить

Террористический фонарь

Kilyari
0

Ну тут и автор его так называет)

Ответить
0

Журналист, видимо.

Ответить
0

"Ты охуенен."  Киану Ривз.

Ответить
78

С каких пор заранее прописанные алгоритмы действий стали ИИ?

Ответить
33

Уже давно, в играх, думаешь, против тебя какой-то другой ИИ все эти годы играл?

Ответить
5

Так в большинстве игр тоже не ии, а обычные скрипты.

Ответить
42

Называется-то оно ИИ. Под ИИ вообще очень многое понимается

Ответить
4

Под ИИ вообще очень многое понимается

под ИИ подразумеваются конкретные комплексы состоящие из конкретных пунктов, а вот то, чо да же экспертные системы и нейросети нынче стали ИИ это уже другое дело

Ответить
17

Да с самого начала не было четкого определения, что такое искусственный интеллект, понятие по-разному трактуют.

Вот взять, например, играющие в шахматы компы/программы. Искусственным интеллектом их считали, хотя там никакого deep learning'а и подавно не было (кстати, создатели Deep Blue как раз не считали это ИИ, вроде).  Оценочные функции и поиск - то бишь, то же самое, что и в посте, по сути.

Ответить
2

создатели Deep Blue как раз не считали это ИИ

естественно, он по сути подбирал ходы брутфорсом
шахматы это вообще плохой пример для ИИ так как все эти deeep blue работают абсолютно так же как и гроссмейстеры, они ничего не придумывают, они перебирают варианты событий, большое количество вариантов событий

Ответить
12

На самом деле довольно распространённая практика, что решения многих задач, назывались ИИ до их получения и начинали называть алгоритмом после. Что с шахматам или маджонгом, пока компьютер не стал обыгрывать людей его называли ИИ, когда стал обыгрывать в ста процентов случаев превратился в алгоритм. И таких историй сотни. 

Типо интеллект - это штука многомерная. Какая нибудь белка умеет держать в голове местонахождение сотни припрятанных шишек и пространственно понимать, куда нужно двигаться в лесу, чтобы найти любую из них. В этом плане её интеллект выше чем у человека, но во многих других вещах хуже. Поэтому словом интеллект можно много, что обозвать и неправильным это по большому счету не будет. И определение AI меняется(-лось) много и стремительно. 

Ответить
1

проблема в том, что ИИ это не только софтварная часть, но и хардварная, логично, что определение ИИ меняется со временем и тот же DB, который подходит под определения ИИ 80-х да же рядом не лежит с AGI современности, да же narrow AI появился в 90-х с приходом машинного зрения обучения и всего вот этого для натянуть на глобус, но нельзя просто так взять предположим нейросеть и гордо назвать это ИИ, как и назвать им же прикладное применение гамильтонова графа из статьи или альфа-бета-отсечение из того же дип блю, это все кирпичики, составные части большой области, лишь прикладные применения конкретных алгоритмов из большей области и проблемы

Ответить
3

Deep blue как пример отличный, потому что в посте то же самое по сути, только у компа хватает мощности построить сразу несколько "правильных маршрутов" до конца и выбрать из них... ну не всегда оптимальный, но и не всегда худший.

Сейчас к определению ИИ часто добавляют "и учится", чего не делали раньше - вот такое определение Deep blue и программа в посте уже не выполняют, да.

Но раньше часто было просто "делает что-то, что обычно делает человек, например, решает задачи, распознает речь, итд итп". Вот такому определению они удовлетворяют, задачи решают) Был бы в примере комп послабее, то не успевал бы строить оптимальный маршрут до конца и мог бы и проиграть, как и шахматные программы. Потому это его отличает, скажем, от какого-нибудь алгоритма сортировки пузырьком, который не может "проиграть", потому сортировка - не ИИ, а это ИИ

Ответить
0

компу хватает мощности совершать операцию сложения быстрее чем человеку, это не делает сумматор ИИ
Сейчас к определению ИИ часто добавляют "и учится", чего не делали раньше - вот такое определение Deep blue и программа в посте уже не выполняют, да.

это все 90-е, еще до deep blue (и да же раньше)
Но раньше часто было просто "делает что-то, что обычно делает человек, например, решает задачи, распознает речь, итд итп".

ничего подобного, экспертные системы это область 70-х (да же 50-е) и уже тогда они подразумевали под собой не только банальный перебор

Ответить
1

Вы ужасно упертый.

Ответить
0

Ну это просто не правда. Смотрим лекцию (ближе к концу), и осознаем насколько велико такое заблуждение: https://youtu.be/Qw8MvX2LgW0

Ответить
2

Любая компьютерная программа заранее прописана, в том числе и ИИ

Такой бот все же не на if else основан. Игра проходится при любых начальных данных, динамически адаптируясь под ситуацию на поле

Ответить
1

Под ИИ можно отнести любую компьютерную программу, имитирующую поведение человека (или другого животного). Начиная от костыльного велосипеда с кучей вложенных if else, заканчивая самыми навороченными нейронными сетями.
Просто люди, когда слышат ИИ, думают, что он универсален, может решить любую задачу, и думать как человек. На деле же любой ИИ алгоритм решает узко-специализированную задачу и ни при каких обстоятельствах за пределы этой задачи выйти не может

Ответить
0

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

Ответить
34

 ИИ

Капец.

Ответить
18

тупо скайнет

Ответить
3

Deus ex machina

Ответить
0

Поправил, спасибо. Хотя у автора ии.

Ответить
8

Тогда зачем поправил?

Ответить
23

чтобы не раздражать людей

Ответить
7

Прогнулся! ИИ это запомнит и убьет тебя первым.

Ответить
33

Когда они пришли за шахматами, я молчал.
Когда они взяли GO, я - молчал.
Они пришли за змейкой - я мигрирую нахуй с этой Земли. 

Ответить
1

А куда мигрируешь? В Матрицу?

Ответить
58

"Нахуй" - я же сказал. 

Ответить
7

Понятно, Дмитрий не успел, машины пришли и за ним

Ответить
1

За аватарку с колонистами из первой цивы сразу лайк

Ответить
16

так и напишите - "который может пройти змейку", а не "бесконечно"))

Ответить

Личной Петя

SW
4

Да тут жрнолизд несколько раз за заголовок в лужу садится ))

Ответить
8

Когда я в детстве играл в змейку, у меня тоже был безпроигрышный вариант. Двигаться по такому пути, как на картинке, плотненько.
Он мог не усложнять, и написать, что бы она двигалась так же.

Ответить
–12

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

Ответить
10

А как можно проиграть при моём варианте?
Ты всегда плотнячком идёшь
Да, это не оптимально и медленно
Змейка будет расти, пока не заполнит весь экран, врезатся в себя же - невозможно
Закрутится в тупик - невозможно

Ответить
5

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

Ответить
–9

Как прекрасно, что автор видео уже написал бота и объяснил почему способ предложенный выше работает, но ты и дальше проводи дохрена времени за алгоритмами чтобы выебываться своими скудными знаниями перед людьми в интернете

Ответить
–5

ты поймешь ЧТО ты проиграл.

ЧТО

специально для тугодумов типо тебя - ВРЕМЯ, ты проиграл время,
которое можно потратить на оптимальный алгоритм а не наяривание уже беспроигрышного

Ответить

Комментарий удален

Комментарий удален

4

Когда хотя бы бакалавр по профильной специальности получишь, тогда и будешь меня олухом называть. Парень сверху описал рабочий алгоритм, который является беспроигрышным ты же начал выебываться и высирать свои авторитетные коммы про время, а на логичный вопрос отправил человека самому проверять. Ты с таким отношением зачем вообще с людьми диалог начинаешь?

Ответить
–8

Каким отношением? Тем которое ты себе в голове придумал?

Ответить
4

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

Ответить
–5

если ты не видишь здесь проблемы

Проблема у тебя в голове, это я вижу.
А еще в том, что ты слабо понимаешь контекст.

Ответить
1

Ну ты я смотрю очень шаришь за контекст, объясни мне что значит этот поток сознания "Этот вариант не оптимальный, а скорей наоборот и не беспроигрышный уж тем более" если ты когда говоришь и про оптимальность и беспроигрышность говоришь про время. Выглядит как "я люблю шашлык и шашлык уж тем более" но я тупенький, контекст не понимаю. Чему меня только преподы по математике столько лет учили не понимаю

Ответить
1

алгоритм может быть одновременно и оптимальным, и проигрывать другим алгоритмам в чем-то

Роман написал немного презрительно, но ты тоже начал свой первый комментарий ничем не лучше

Ответить
3

Ну проигрывать(другим алгоритмам) и беспроигрышный(всегда приводит к победе) разные вещи хотя бы потому что при решении подобных игровых задач второе устоявшийся термин с вполне конкретным значением(чего клиент сверху очевидно не знает), а начал я разговаривать с ним в том тоне который он вполне заслуживает за нелепые попытки выебнуться не понимая в теме примерно нихуя  

Ответить
–5

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

Ответить
3

Ну это уже сюр какой-то, я понимаю, что ты дохера времени тратишь на алгоритмы и у тебя нет времени на изучение английского и за час что мы мило беседуем ты не смог понять о чем автор видео говорит, но никакой нейронкой там и не пахнет о чем автор очень ясно и четко дает понять на протяжении всего ролика. Второе меня учили что поражение(в контексте этой задачи) это когда змейка не набирает вес при t->inf или при пересечении самой себя а то что ты себе уже какие-то кодексы чести придумал никого кроме тебя волновать не должно. И еще расскажи что это за дисциплина такая которую ты упомянул в ролике про это ничего нет да и автор особо на оптимальность своего решения не претендует(хотя бы потому что он фейлится в 1,5% случаев). И еще ответь пожалуйста имеешь ли ты мат образования чтобы я знал с кем диалог веду

Ответить

Личной Петя

Роман
0

нейронки которая будет на ходу генерировать гамильтонов цикл

Што?

Ответить
0

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

Кек, щас бы в 2020 дипломами выпендриваться. У меня на работе есть пачка ребят, которые в 18 лет без всяких дипломов шарят в IT получше рандомных ребят, закончивших со мной ИТМО "по профильной специальности".

Ответить
1

Ну это уже типичная ошибка выжившего.

Ответить
0

Расшифруй в чем она заключается. Потому что это конечно моя личная статистика, но никто не умирал и из виду не пропадал. Видно кто как учился / не учился и кто кем теперь работает. Универ многим помогает как стартовая точка, если ты в свои 15-17 еще не начал самообразование. Я например только в универе научился кодить и там уже пошло поехало. Но многим наличие 5 лет обучения и диплом не помог. Из всего этого сделал вывод - что диплом сам по себе уж точно ничего не значит без остального контекста о человеке. Вот прямо совсем.

Ответить
0

Он является беспроигрышным если змейка может с одной стороны экрана на другую переходить. Если нет, то алгоритм проигрышный. 

Ответить
0

Значит, надо оставлять один (например, нижний) ряд пустым и по нему возвращаться.

Ответить
0

Это если по горизонтали влезает четное число змеек. Если ничетное - то вернуться не получится. 

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

Ответить
0

 На выходе получается очень ограниченный алгоритм

На выходе получается обычный обход гамильтонова цикла. Если его нельзя построить (например, на поле 3х3), то в принципе нельзя гарантировать существование выигрышной стратегии для случайного спавна яблок. Любым алгоритмом.

Ответить
0

Если нечётное - то каждый чётный цикл идём по второй с края вертикали на возврат, а каждый нечётный её пропускаем и идём по крайней.

Ответить
1

принято писать "алгоритм А проигрывает алгоритму Б в скорости". Но так то да, проиграть невозможно.

 Он мог не усложнять, и написать, что бы она двигалась так же.

он усложнял не чтобы победить

Ответить
0

Если правила запрещают "телепорт" от края на другую сторону, в конце может закончиться место

Ответить
4

дохрена - это 15 минут?
автор видео ссылается на этот метод, как на самую простую выигрышную стратегию

Ответить
9

Если нравятся такие видео, советую канал CodeBullet чекнуть. Он постоянно учит нейросети в разные игры играть. Ну и про все это рассказывает с юмором. Тупым, но юмором)

Ответить
1

Автор из моего поста, кстати, на него ссылается.

Ответить

Кремлевский теркин30см

–2

Интересно, но избыточно — ИИ вынужден рисовать слишком запутанные маршруты.

Ответить
17

О чём ты говоришь? почему этот маршрут запутанный? до яблока путь самый короткий

Ответить
0

лол, и как это оптимизировать?

Ответить
0

Строить одновременно кратчайший путь, оценивать площадь, которая при этом "теряется", если длина змейки позволяет потерять эту площадь без риска - идти по кратчайшему пути

Ответить
1

Очень похоже что алгоритм так и работает, как раз с оценкой площади.

Ответить
0

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

Ответить
0

https://youtu.be/TOpBcfbAgPg?t=736

он это упоминает, вроде как

Ответить
0

Ну, судя по результату, оценочная функция не очень-то и работает.

Плюс, можно добавить было бы, чтобы из всех минимальных путей она выбирала бы ту, у которой меньше всего поворотов (1 поворот - лучше, чем 10 при тех же результатах) по возможности, ближе бы к человеческому поведению выглядело б.

Ответить
1

ну повороты может и ближе к человекческому, но кол-во пройденных клеток не меняют, парень и так убил слишком много времени на такое, чтобы еще приукрашивать

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

и мне как-то влом считать, смогла бы она выжить, если бы не заполнила определенную пустоту, но если найдешь моменты, где она явно проскартинировала вместо выполнения своего долга, то будет интересно посмотреть

https://www.youtube.com/watch?v=YqL7bl3I5IE

Ответить
0

да, теперь вижу, она делает лишние движения, странно, это особенно когда поле фактически пустое

Ответить
1

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

Возможно, она это делает, просто надо было бы тоньше настраивать алгоритм, при какой величине змейки стоит начинать играть осторожнее, итд

Ответить
1

Еще - предположение - можно посмотреть на количество "идеальных путей", которые она строит, и как выбирает между ними.

Возможно, можно было сделать так:
а) строим гамильтонов путь.
б) строим N путей (кратчайшие и около них)
в) строим гамильтонов путь, из состояния, когда змейка достигла цели таким путем.  Если строится - отлично, идем так. Если не строится - пробуем другой путь. Если пути кончились или кончилось время на принятие решения - берем путь из "а"

Ответить
0

Или вот картинками

В этом вообще не было нужды.

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

Ответить
0

Возможно, будь железо получше, были бы и результаты ближе к оптимальным

Ответить
0

Так веселее

Ответить
5

Meh,
Делал такое руками на старой нокле в школе.

Ответить
1

Интересно, какой-нибудь кореец или китаец справился бы с этой задачей лучше?)

Ответить
8

Лучшие из хумансов играют осторожнее

Ответить

Хороший Макс

Oleg
–1

Неь

Ответить
–9

Как любит говорить моя мама:
- Конда собаке нехуй делать, она себе яйца лижет!

Ответить
4

А когда твоей мамке нехуй делать, что она делает?

Ответить
16

Разговаривает поговорками.

Ответить
1

А это что-то реально новое и уникальное?

Ответить
4

Естественно нет, гамильтоновые циклы уже давно используют, среди прочих

https://towardsdatascience.com/slitherin-solving-the-classic-game-of-snake-with-ai-part-1-domain-specific-solvers-d1f5a5ccd635

Может он доработал алгоритм, но звучит не совсем сенсационно

Ответить

Личной Петя

Андрей
0

Судя по википедии и дате рождения Гамильтона - примерно с 19го века используют.

Ответить
2

Z 4 L 1 P 4 7 3 Л Ь N 0

Ответить
1

Разве первым это не code bullet сделал года три назад?

Ответить
1

автор кода на него ссылается, что после просмотра работы code bullet - разработка лучшей версии стало навязчивой идеей.

Ответить
–1

Блин... тоже мне... мега ИИ. 

Если честно, такая штука это простой поиск путей. 

А - алгоритм, с весами, который каждый раз просчитывает путь до объекта - в нашем случае точки. 

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

Ответить

Животный паук например

Дмитрий
2

Зачем изобретать велосипед, если все уже описано?

Ответить
1

Я вообще этот комментарий просто случайно, спонтанно написал, спать хотел жутко, а тут тема с алгоритмом поиска путей выскочила, начал мысли в слух изливать, на кой то черт. 

Но вообще приятно за парня, любой алгоритм который рвет общепринятые другие, невероятно классно изобретать. 

Парню респект.

Ответить
1

филиал ебаного.ит в каментах

Ответить
0

Эх, как хочется самому написать что-нибудь подобное, да вот только не хочу мучиться над тем, как и на чем реализовать красивую движущуюся картинку

Ответить
0

JS базовый ведь подойдет для такого

Ответить
0

Не бесконечно,а скорее до конца)

Ответить
0

Ок, когда компуктер у шахматистрв выигрывал мне было пофиг. Но теперь мне страшно. Астановитесь! 

Ответить
0

невероятно!

выходит что все боты игры в змейку из 80-х написаны ИИ, но тогда ведь не было ИИ, значит мы живем в матрице

вот оно как

Ответить
0

Нормальный скринсейвер.

Ответить
0

Он же читер. Вот если бы сам прошел, вот был бы скилчанским пацанчиком. 

Ответить
0

Началось! Звоните Джону Коннору!

Ответить
0

дичайше вводящий в заблуждение заголовок

в учебниках змейка использовалась как пример использования гамильтонова графа ещё в 90 годы

Ответить

Прямой эфир

{ "jsPath": "/static/build/dtf.ru/specials/DeliveryCheats/js/all.min.js?v=05.02.2020", "cssPath": "/static/build/dtf.ru/specials/DeliveryCheats/styles/all.min.css?v=05.02.2020", "fontsPath": "https://fonts.googleapis.com/css?family=Roboto+Mono:400,700,700i&subset=cyrillic" }