Оцінки
Цей розділ заповнюватиметься після введення матеріалів.
Нормальний
1. bopjesvla Perl 54
2. edc65 Javascript (ES6) 91
3. name language score
4. name language score
5. name language score
Бонусний раунд
1. name language score
2. name language score
3. name language score
4. name language score
5. name language score
Карел Дж. АльфаБот
Фон
Популярний вступний курс до Java - це Карел Дж. Робот (я сам його використовую). Робот взаємодіє з сіткою вулиць (позитивні цілі y-координати) та проспектами (позитивні цілі x-координати), а також бджолами, які можна розміщувати та зберігати в сітці (зауважте, що Карел та будь-які бджоли можуть існувати лише на ґратах бали). Карел (робот) повинен виконати лише п’ять дій: рухатися вперед на 1, повернути ліворуч на місце, подати звуковий сигнал, забрати звуковий сигнал і вимкнути себе.
У моєму класі інформатики одним із наших перших завдань було запрограмувати Карел, щоб навчитися повертати праворуч, повертати та виконувати комбіновану дію рухатися вперед на 1 та опускати звуковий сигнал. Через кілька днів завданням було використовувати ці методи та писати нові методи для створення літер алфавіту.
Природно, щойно я закінчив це завдання, я написав більше методів, щоб зробити кожну букву алфавіту, а також десять цифрових цифр, і я планую розібратися, як зробити своєрідний текстовий процесор із робота, де рядок буде введено в STDIN, і робот поставив берізки на сітку таким чином, що нагадував букви.
Кожного разу, коли я писав private void draw#для кожного символу #, я додавав коментар після нього, який би розказував мені абревіатури для послідовності команд, які мені знадобляться.
У мене в розпорядженні такі команди (написані псевдокодом) (уточнення - це єдині корисні команди).
Turn Left
Rotate the robot 90˚ counterclockwise
Abbreviated as "l"
Turn Right
Rotate the robot 90˚ clockwise
Abbreviated as "r"
Move
Move one space forwards
Abbreviated as "m"
Put Beeper
Put a beeper on the spot that Karel is on
Abbreviated as "p"
Drop Beeper
Move, then Put Beeper
Abbreviated as "d"
Turn Around
Turn Left, then Turn Left
Abbreviated as "a"
Умови
Робот повинен діяти в наступному порядку.
- Робот заводиться в нижньому лівому куті прямокутника 5xN мінімальної площі, на якому буде намальована літера.
- Робот малює лист.
- Робот переміщується до правого нижнього кута прямокутника.
- Робот переміщається на два простори праворуч і повинен повернутися на північ / вгору
Давайте попрацюємо на прикладі. Припустимо, ми хочемо малювати A. Місце роботи - це літера, яка вказує його напрямок (північ, південь, схід, захід). Буква пишеться з великої літери, якщо робот знаходиться на місці із звуковим сигналом та малі літери, якщо робот знаходиться на місці без звукового сигналу. oявляє собою плями з буперами і .представляє плями без буперів.
Як ми побачимо згодом, Aце так.
.ooo.
o...o
ooooo
o...o
o...o
Ось одне можливе рішення.
Grids ..... ..... ..... ..... ..... ..... ..... ..... .....
..... ..... ..... ..... ..... ..... ..... ..... .....
..... ..... ..... N.... E.... oE... ooE.. oooE. oooW.
..... ..... N.... o.... o.... o.... o.... o.... o....
n.... N.... o.... o.... o.... o.... o.... o.... o....
Letters p d d r d d d a
..... ..... ..... ..... ..... n.... e.... .E... .oE..
..... ..... ..... ..... N.... o.... o.... o.... o....
ooWo. oWoo. Wooo. Nooo. oooo. oooo. oooo. oooo. oooo.
o.... o.... o.... o.... o.... o.... o.... o.... o....
o.... o.... o.... o.... o.... o.... o.... o.... o....
m m m r d m r d d
.ooE. .oooe .ooos .ooo. .ooo. .ooo. .ooo. .ooo.
o.... o.... o.... o...S o...o o...o o...o o...o
oooo. oooo. oooo. oooo. ooooS ooooo ooooo ooooo
o.... o.... o.... o.... o.... o...S o...o o...o
o.... o.... o.... o.... o.... o.... o...S o...E
d m r d d d d l
Остаточне mmlвиконання четвертої кулі неявне тому, що воно з’являється в кожному листі і тому, що я не хочу повертатися назад і додавати ще два стовпчики до всього, що є у запропонованому вище рішенні.
Таким чином, одне рішення зробити A- це pddrdddammmrdmrdddmrddddlmml.
Зауважте, що це не повинно бути вашим рішенням. Ваш алгоритм може пройти через кожен стовпчик, поставивши беріз у належні місця і не покладаючись на те, де розміщені чи будуть розміщені інші букери. Незалежно від того, яким є ваш алгоритм, робот може розміщувати в мережі лише один звуковий сигнал.
Програма
Ваша програма прийме як вхід 5xN сітку того, що таке сітка для листа. Зауважте, що на вході немає робота; припускається, що робот знаходиться в нижньому лівому (південно-західному) куті, зверненим на північ.
Виходом буде послідовність літер, що є скороченням для послідовності.
Зразки входів
.ooo.
o...o
ooooo
o...o
o...o
o...o.ooooo
o...o...o..
ooooo...o..
o...o...o..
o...o.ooooo
Зразки виходів
pddrdddammmrdmrdddmrddddlmml
prmmmlmlmmdrdrdddlmlmmdrdrmmmdrddddlmmlprdddlmldmmrmrmdmlmldmmrdrddddrmmmdlmml
Це код гольфу, хлопців. Діють стандартні правила CG. Виграє найкоротший код у байтах.
Бонусний раунд
Правила
Якщо ви хочете взяти участь у бонусному раунді, не забудьте зробити свої кодекси ефективними! Нижче представлена бібліотека усіх 5x5 літер, які моя програма створює під час її запуску. Мета бонусного раунду - написати програму, яка надрукує послідовність, ABCDEFGHIJKLMNOPQRSTUVWXYZяка містить якомога менше рухів. Немає вводу в STDIN. Код буде класифікований не за довжиною коду, а за його "оцінкою переміщення". Оцінка ходу призначена для відсторонення алгоритмів підмітання, які відвідують кожну точку прямокутника.
d: 1
l: 1
m: 4
p: 1
r: 1
Листи
.ooo. oooo. ooooo oooo. ooooo ooooo .oooo o...o
o...o o...o o.... o...o o.... o.... o.... o...o
ooooo oooo. o.... o...o oooo oooo. o.ooo ooooo
o...o o...o o.... o...o o.... o.... o...o o...o
o...o oooo. ooooo oooo. ooooo o.... oooo. o...o
ooooo ....o o...o o.... ooooo o...o ooooo oooo.
..o.. ....o o..o. o.... o.o.o oo..o o...o o...o
..o.. ....o oo... o.... o.o.o o.o.o o...o oooo.
..o.. o...o o..o. o.... o...o o..oo o...o o....
ooooo .ooo. o...o ooooo o...o o...o ooooo o....
oooo. oooo. ooooo ooooo o...o o...o o...o o...o
o..o. o...o o.... ..o.. o...o o...o o...o .o.o.
o..o. oooo. ooooo ..o.. o...o .o.o. o.o.o ..o..
oooo. o..o. ....o ..o.. o...o .o.o. o.o.o .o.o.
....o o...o ooooo ..o.. ooooo ..o.. ooooo o...o
o...o ooooo
.o.o. ...o.
..o.. ..o..
.o... .o...
o.... ooooo
Необхідно дотримуватися тієї самої процедури, що і оригінальне завдання: букви повинні бути складені по черзі з пробілом між кожною буквою.
Діють стандартні правила CG. Виграє вступ із найнижчим показником ходу.
Підводячи підсумок, обидва коди по суті будуть робити те саме. Перший код повинен мати мінімальну кількість байтів у коді, а другий код повинен використовувати найменшу кількість ходів.