Buğday, Çavdar, Arpa, Tahıl ve Fransız ekmeği sunan bir fırında çalışıyorum, ancak fırıncı biraz garip - somunları rastgele sırada istifliyor ve bazen sonunda bazı rafları boş bırakıyor.
Her gün, aynı müşteri gelir ve her somun ekmeğinden birini ister, ancak zor olan şey, bir germophobe, bu yüzden çantasını doldurduğumda, ardışık seçimlerde iki bitişik raftan somun alamıyorum.
Bitişik raflar arasında yürümek bir saniye sürer. Yoğun bir mağaza; somunların herhangi bir rastgele yapılandırması için, her benzersiz somundan birini almak için gereken süreyi en aza indirmek istiyorum. Herhangi bir rafta başlayıp bitirebilirim.
Bugünün sıralaması ise W B W G F R W, 0, 3, 5, 1, 4toplam 12 saniye boyunca olası bir yol :abs(3-0) + abs(5-3) + abs(1-5) + abs(4-1) = 12
( 1, 2, 3, 4, 5işe yaramaz, çünkü ekmek bitişik raflardan arka arkaya alınır.)
Eğer öyleyse B W B G B F B R B W B F, olası bir yol, 1, 3, 5, 7, 10toplam 9 saniyedir.
Yönetici her zaman olası bir çözüm olduğundan emin olur, bu yüzden kötü girdileri yakalamak konusunda endişelenmenize gerek yok. Genellikle siparişi bir dosyaya gönderir, ancak istersem STDIN'e yazabilir veya farklı bir şekilde okuyabilirim. Programın varsayılan G / Ç kurallarına göre en iyi yolun indekslerini ve zamanını yazdırmasını istiyorum .
Kısacası:
- 5 çeşit ekmek.
- Somun siparişleri, rastgele düzen ve uzunluk dizeleri olarak görünür.
- Her benzersiz somundan birini seçmelisiniz.
- Bitişik ardışık seçimler yapılamaz.
- Seçim endeksleri arasındaki mesafeyi en aza indirin.
- Geçersiz girdiler için endişelenmenize gerek yok.
- Varsayılan I / O kuralları geçerlidir.
Bu kod golf , en kısa bayt sayısı kazanır.
'WBWG FRW'geçerli bir girdi mi?
0+3+5+1+4=13ama1+3+5+7+10=26değil9.