Ich arbeite in einer Bäckerei, die Weizen, Roggen, Gerste, Getreide und französisches Brot serviert, aber der Bäcker ist etwas komisch - er stapelt die Brote in zufälliger Reihenfolge und lässt manchmal am Ende nur einige Regale leer.
Jeden Tag kommt derselbe Kunde herein und fragt nach einem Brot, aber das Schwierige ist, dass er keimtötend ist. Wenn ich also seine Tasche fülle, kann ich keine Brote aus zwei benachbarten Regalen in aufeinanderfolgender Auswahl nehmen.
Es dauert eine Sekunde, um zwischen benachbarten Regalen zu gehen. Es ist ein geschäftiger Laden; Für jede zufällige Konfiguration von Broten möchte ich die Zeit minimieren, die erforderlich ist, um eines von jedem einzelnen Brot zu erhalten. Ich kann an jedem Regal beginnen und enden.
Wenn die heutige Bestellung lautet W B W G F R W, ist ein möglicher Pfad 0, 3, 5, 1, 4für insgesamt 12 Sekunden:abs(3-0) + abs(5-3) + abs(1-5) + abs(4-1) = 12
( 1, 2, 3, 4, 5funktioniert nicht, weil Brot nacheinander aus benachbarten Regalen gepflückt wird.)
Wenn ja B W B G B F B R B W B F, ist ein möglicher Pfad 1, 3, 5, 7, 10für insgesamt 9 Sekunden.
Der Manager stellt immer sicher, dass es eine mögliche Lösung gibt, sodass ich mir keine Sorgen machen muss, schlechte Eingaben zu erhalten. Normalerweise sendet er mir die Bestellung in einer Datei, aber wenn ich möchte, kann ich sie in STDIN eingeben oder anders lesen. Ich möchte, dass das Programm die Indizes des besten Pfads sowie seine Zeit gemäß den Standard-E / A-Regeln druckt .
Zusamenfassend:
- 5 Brotsorten.
- Laibreihenfolgen werden als Zeichenfolgen in zufälliger Reihenfolge und Länge angezeigt.
- Muss eines von jedem einzelnen Brot auswählen.
- Aufeinanderfolgende aufeinanderfolgende Auswahlen können nicht getroffen werden.
- Minimieren Sie den Abstand zwischen Auswahlindizes.
- Sie müssen sich keine Sorgen über ungültige Eingaben machen.
- Es gelten die Standard-E / A-Regeln .
Dies ist Code-Golf , kürzeste Byte-Anzahl gewinnt.
'WBWG FRW'eine gültige Eingabe?
0+3+5+1+4=13aber1+3+5+7+10=26nicht9.