Треки
/
Groovy
Groovy
/
Вправи
/
Симулятор робота
Симулятор робота

Симулятор робота

Легка

Вказівки

Напишіть симулятор робота.

Випробувальному центру фабрики роботів потрібна програма, яка перевіряє рухи роботів.

Роботи мають три можливі рухи:

  • повернути праворуч
  • повернути ліворуч
  • просунутися вперед

Роботів розміщують на гіпотетичній нескінченній сітці. Кожен робот повернутий у певному напрямку (north, east, south або west) і має координати {x,y}, наприклад {3,8}, причому координати зростають у напрямку north й east.

Далі робот отримує низку вказівок, після чого випробувальний центр перевіряє нову позицію робота і те, у якому напрямку він повернутий.

  • Рядок літер «RAALAL» означає:
    • Повернути праворуч
    • Просунутися двічі
    • Повернути ліворуч
    • Просунутися один раз
    • І ще раз повернути ліворуч
  • Нехай робот починає в точці {7, 3} з напрямком north. Тоді після виконання цієї послідовності вказівок він має опинитися в точці {9, 4} з напрямком west.

Властивості та поля в Groovy

У цій вправі ми, можливо, помітили, що заготовка визначає гетери, як-от getX(), але тести звертаються до значення напряму як до .x. Це зумовлено тим, як Groovy визначає властивості. Розберімо це докладніше:

  • Поле - це член класу, інтерфейсу або трейту, що зберігає дані.
  • Властивість - це видима ззовні можливість класу.

Ключові моменти щодо властивостей Groovy:

  • Groovy автоматично генерує гетери і сетери для неприватних полів (або лише гетер, якщо поле позначене як final).
  • До властивостей можна звертатися за назвою (як у тесті цієї вправи), і тоді прозоро викликається гетер або сетер.
  • За домовленістю Groovy розпізнає властивості, навіть якщо за ними не стоїть жодне поле, за умови, що є гетери або сетери.

У цій вправі ми визначили лише потрібні гетери (а отже, і властивості, як описано вище), щоб спонукати до правильної реалізації. Які саме поля (і яких типів) найкраще підійдуть для нашого рішення - вирішувати нам.

Щоб глибше розібратися з полями та властивостями, зверніться до розділу 3.3 «Поля та властивості» у документації Groovy.


Джерело

За мотивами запитання зі співбесіди у відомій компанії.
Редагувати через GitHub Посилання відкривається в новому вікні або вкладці
Groovy Exercism

Час розпочати Симулятор робота?

Зареєструйтеся на Exercism, щоб вивчати й опановувати Groovy, а також 66 вправ та справжнє наставництво від людей, і все це безкоштовно.