Я працюю в хлібозаводі, де подають пшеничний, жито, ячмінь, зерновий і французький хліб, але пекар трохи дивний - він укладає буханки у довільному порядку, а іноді просто залишає деякі полиці в кінці порожніми.
Кожного дня заходить один і той же клієнт і просить по одному короваю хліба, але хитрість полягає в тому, що він гермофоб, тому коли я наповнюю його сумку, я не можу брати хліби з двох сусідніх полиць послідовно.
Пройти між сусідніми полицями потрібно одна секунда. Це зайнятий магазин; для будь-якої випадкової конфігурації хлібів, я хотів би мінімізувати час, необхідний для отримання одного з кожного унікального батона. Я можу починати і закінчувати на будь-якій полиці.
Якщо сьогодні впорядковано W B W G F R W, можливий шлях становить 0, 3, 5, 1, 4загалом 12 секунд:abs(3-0) + abs(5-3) + abs(1-5) + abs(4-1) = 12
( 1, 2, 3, 4, 5не працює, оскільки хліб збирають послідовно з сусідніх полиць.)
Якщо це так B W B G B F B R B W B F, можливий шлях триває 1, 3, 5, 7, 10загалом 9 секунд.
Менеджер завжди переконується, що є можливе рішення, тому мені не потрібно турбуватися про те, щоб потрапити на погані дані. Зазвичай він надсилає мені замовлення у файл, але якщо я хочу, я можу набрати його на STDIN або прочитати його по-іншому. Я хотів би, щоб програма роздрукувала індекси найкращого шляху, а також його час, відповідно до правил вводу / виводу за замовчуванням .
Коротко:
- 5 видів хліба.
- Замовлення на батони відображаються у вигляді рядків випадкового порядку та довжини.
- Потрібно вибрати один з кожного унікального батона.
- Неможливо зробити сусідні послідовні вибірки.
- Мінімізуйте відстань між індексами вибору.
- Не потрібно турбуватися про недійсні введення.
- Застосовуються правила вводу / виводу за замовчуванням .
Це кодовий гольф , виграє найкоротший байт.
'WBWG FRW'коректним введенням?
0+3+5+1+4=13але1+3+5+7+10=26, ні9.