EDIT: Нещодавно моє питання було запропоновано як дублікат Bot Challenge 2048 . Я хотів би підкреслити, що це питання відрізняється від цього питання і вимагатиме відповіді думати інакше, ніж це питання. 2048 Bot Challenge попросив користувача створити бота, і він буде працювати протягом години, найвищий бал - оцінка користувача. Крім того, вона мала обмеження в 555 байт. Моє завдання запускає код набагато рідше, лише 3 рази. Ваш рахунок обчислюється, використовуючи середній бал цих трьох разів і діливши на довжину символів коду для гольфу. Моє запитання заохочує записи бути "розумнішими", а не намагатися отримати найвищий бал грубою силою.
-
EDIT: Метод get змінено на getTile, щоб уникнути конфлікту з ключовим словом get JS. Крім того, додано розділ з високою оцінкою.
Нещодавно я створив сайт, який дозволяє керувати популярною грою 2048 за допомогою JavaScript. Мій сайт пов’язаний тут:
Як:
Редактор тузів розташований над дошкою. Ви розміщуєте в ньому код, який запускається раз на 250 мс або 4 рази на секунду. Це називається циклом.
Використовуйте такі способи управління дошкою. Ви не можете використовувати клавіші зі стрілками.
up(); //move up
down(); //move down
left(); //move left
right(); //move right
move(integer); //integer is a direction. 0:up,1:right,2:down,3:left
getTile(y,x); //gets the value of the tile in position y,x on the board. See diagram
Наступні змінні визначені для вашої зручності:
eother //boolean, alternates every cycle
frozen //integer, counts how many cycles the board has remained stationary
lastDir //integer, indicates the last direction that was tried to move in
//uses same format as the move method above.
startup //boolean, will always be true when the game first starts
//you can change it as you wish
a
b //a b and c are all persistant variables, they do not change each cycle
c //any other variables defined in the cycle will be reset every time
Правила:
- Ніякої випадковості, ви повинні використовувати логіку. (Так, я знаю, що в прикладі код використовується випадковий.)
- Ніякого підключення до ігрових функцій чи обману інших способів
- Як правило, спробуйте викликати лише один метод переміщення за цикл. Гаразд, якщо ви використовуєте більше, але це гвинти з анімацією
- Дошка повинна починатися у випадковому стані, не змінюючи стан перед грою
- У своєму дописі ви повинні надати як нестиснуту, так і гольф версію коду.
- Ви повинні надати посилання на сайт, який уже завантажує нестиснену версію вашого коду, що подається через PasteBin (наприклад, ... thatcoolidea.com/2048?i=pH18GWtu завантажує приклад коду.)
Оцінка:
- Ваш код буде набраний мною.
- Частина А вашого рахунку - це в середньому 3 прогони коду, округлені вниз.
- Частина B вашого рахунку - це символьна довжина коду для гольфу.
- Ваш остаточний бал - частина A, поділена на частину B
Переможець отримає код, увічнений як приклад коду на сайті, якщо він захоче, та підтверджений у коментарі до коду.
Удачі! Сподіваюся, вам сподобається виклик.
Поточний високий бал 225,22 - Морозильник - користувач3217109