Pracuję w piekarni, która serwuje pszenicę, żyto, jęczmień, ziarno i francuski chleb, ale piekarz jest trochę dziwny - układa bochenki w przypadkowej kolejności, a czasami po prostu zostawia puste półki na końcu.
Każdego dnia ten sam klient przychodzi i prosi o jeden bochenek chleba, ale podstępem jest to, że jest on zarazkiem, więc kiedy napełniam jego torbę, nie mogę wziąć bochenków z dwóch sąsiednich półek w kolejnych selekcjach.
Przejście między sąsiednimi półkami zajmuje sekundę. To zatłoczony sklep; dla dowolnej losowej konfiguracji bochenków chciałbym zminimalizować czas potrzebny do uzyskania jednego z unikalnych bochenków. Mogę zaczynać i kończyć na dowolnej półce.
Jeśli dzisiejsze zamówienie jest W B W G F R Wmożliwe, możliwa jest ścieżka trwająca 0, 3, 5, 1, 4łącznie 12 sekund:abs(3-0) + abs(5-3) + abs(1-5) + abs(4-1) = 12
( 1, 2, 3, 4, 5nie działa, ponieważ chleb jest zbierany kolejno z sąsiednich półek).
Jeśli tak B W B G B F B R B W B F, możliwa jest ścieżka trwająca 1, 3, 5, 7, 10łącznie 9 sekund.
Menedżer zawsze upewnia się, że istnieje możliwe rozwiązanie, więc nie muszę się martwić o złapanie złych danych wejściowych. Zazwyczaj wysyła mi zamówienie w pliku, ale jeśli chcę, mogę wpisać go w STDIN lub odczytać w inny sposób. Chciałbym, aby program wydrukował wskaźniki najlepszej ścieżki, a także jej czas, zgodnie z domyślnymi regułami We / Wy .
W skrócie:
- 5 rodzajów chleba.
- Zamówienia na bochenek pojawiają się jako ciągi losowej kolejności i długości.
- Musisz wybrać jeden z każdego unikalnego bochenka.
- Nie można dokonać sąsiadujących kolejnych wyborów.
- Zminimalizuj odległość między wskaźnikami wyboru.
- Nie musisz się martwić o nieprawidłowe dane wejściowe.
- Obowiązują domyślne reguły we / wy .
To jest golf golfowy , wygrywa najmniejsza liczba bajtów.
'WBWG FRW'też jest poprawny?
0+3+5+1+4=13ale1+3+5+7+10=26nie9.