Bu kod golf bulmaca için ilham kaynağıdır Köprü ve Meşale sorun olduğu, d köprü başında insanlar her zaman en az miktarda de geçip gerekir.
Yakalama, en fazla iki kişinin aynı anda geçebileceği, aksi takdirde köprü ağırlıklarının altında ezilecek ve grubun köprüyü geçmek için taşınması gereken sadece bir meşale erişimi var.
Tüm bulmacanın her insanı, köprüden yürümek için belirli bir zamana sahiptir. İki kişi birlikte geçerse, çift en yavaş kişi kadar yavaş gider.
Köprüden geçmesi gereken belirli sayıda insan yoktur; çözümünüz herhangi bir d değeri için ZORUNLU olmalıdır .
Bu sorun için standart girdi kullanmanız gerekmez, ancak sorunu açıklamak için, açıklama için aşağıdaki giriş ve çıkış biçimini kullanacağım. İlk sayı olan d , köprünün başlangıcındaki kişi sayısıdır. Daha sonra kod , her biri bir kişinin hızını temsil eden d numaraları tarar .
Kod çıktısı, daha önce açıklanan kriterleri karşılarken, köprünün başından köprünün sonuna kadar herkesi geçmek için gereken EN AZ süre olacaktır.
İşte bazı giriş durumları ve çıkış durumları ve ilk giriş durumunun açıklaması. Sorunu mümkün olan en az bayt kodda çözmek için bu bilgilerden bir algoritma türetmek size kalmıştır.
giriş
4
1 2 5 8
çıktı
15
Bu çıktıya ulaşmak için, insanlar şu şekilde geçmelidir.
A and B cross forward (2 minutes)
A returns (1 minute)
C and D cross forward (8 minutes)
B returns (2 minutes)
A and B cross forward (2 minutes)
İşte size yol boyunca rehberlik edecek başka bir test örneği.
giriş
5
3 1 6 8 12
çıktı
29
Kurallar:
- Girişin sıralanmayacağını ve bunu kendi başınıza yapmanız gerektiğini varsayalım (gerekirse)
- Bulmacadaki kişi sayısı 4'te sabit değil (N> = 1)
- Her grupta ve bireysel geçişte bir meşale bulunmalıdır. Sadece bir meşale var.
- Her grup en fazla 2 kişiden oluşmalıdır!
- Hayır, köprüden atlayıp diğer tarafa yüzemezsiniz. Bunun gibi başka hile yok;).
1 4 5 6 7benzer bir sorunu var. 25
N >= 2insanları ele aldıklarını fark ettim (yani, garip bir şekilde "1 kişinin geçmesi gerekiyor" önemsiz durumunu ele almak için ekstra bir iş), bu nedenle bu konuda bazı açıklamalar harika olurdu. Şimdiden teşekkürler.
1 3 4 5, 14 değil 15 döndürmelidir gibi vakaları test ettiğinizden emin olun .