Sorun Açıklaması
Hepimiz bir Twix'i seviyoruz (çünkü en iyi şeker olduğu için), ama bu çocukların ilk Cadılar Bayramı --- onlar için her şeker türünden en az birini almalıyız. Her Halloween, Numberline caddesinin tüm sakinlerine bu yıl ne tür şeker vereceklerini belirten bir e-posta gönderir.
Ah! Ve 1B dünyasında yaşıyoruz.
Bazı açılardan son derece tembel ve diğerlerinde değil, cadde boyunca konumlarını veren evlerin haritasını çıkardık. Ayrıca şeker çeşitlerini de kaydettik. İşte bu yıl için yaptığımız harita:
[(-2, {"Kisses", "KitKats"}),
(1, {"KitKats", "Peanut Butter Cups"}),
(6, {"Kisses", "Twix"}),
(9, {"Skittles"}),
(10, {"Twix"})]
Çocukların küçük bacakları uğruna , her şeker türünden en az birini toplamak için mahalledeki herhangi bir evde başlayan en kısa yürüyüşü bulmamız gerekir .
Örnekler
Birkaç kullanıcının (Shaggy dahil) isteği üzerine, işe yarayan bazı örneklere atıyorum. Umarım bu şeyleri temizler. :) Giriş:
[(-2, {"Kisses", "KitKats"}),
(1, {"KitKats", "Peanut Butter Cups"}),
(6, {"Kisses", "Twix"}),
(9, {"Skittles"}),
(10, {"Twix"})]
Çıktı:
[1, 2, 3]
Başka bir harita ve çözüm ...
Giriş:
[(-3, {"KitKats", "Twix"}),
(-1, {"Hundred Grands"}),
(3, {"Kisses"}),
(12, {"Hundred Grands", "Twix", "KitKats"})]
Çıktı :
[0, 1, 2]
Koordinat 9'da ev 6 ve 1'de şeker toplamaya başlayabiliriz. Bu, şeker kotasını 8 birim yürerek doldurur, ancak en kısa çözüm bu mudur?
kurallar
Girişler , örneğe benzer şekilde yapılandırılmış tek bir argüman almalı ve evlerin endekslerini en kısa çözümde ziyaret etmelidir .
Tipik kod golf kuralları geçerlidir: baytlarda en kısa doğru çözüm kazanır!
Not: Bu bana dünyanın en büyük teknoloji şirketlerinden biri tarafından verilen röportaj sorusuydu. Golften hoşlanmıyorsanız, k şeker tipi sayısı ve n ev sayısı olan O (k * n) zaman çözümünü bulmaya çalışın.
Düzenle
Jonathon Allan'ın işaret ettiği gibi, bu durumda "endekslerin" ne anlama geldiği konusunda bazı karışıklıklar var. Şerit üzerindeki koordinatlarını değil , evlerin argüman listesindeki konumlarını çıkarmak istiyoruz .