departure = [x,y]
ve destination = [x,y]
verilen iki nokta arasındaki mesafeyi buluyorum. X veya y ile, her zaman bir kayan nokta ve diğeri int, bu yüzden her zaman bir satırda. Hedef noktaya ulaşmak için kılavuz çizgileri üzerinde kalmanız gerekir ve hiçbir ek artış yoktur. Ben burada inters ve floats karışımı ile ilgilenen bir ızgara üzerinde mesafe bulma konusunda herhangi bir mesaj görmedim. Izgarada 2 nokta arasındaki mesafeyi bulun
Bu
benim kodudur:def perfectCity(departure, destination):
return abs(destination[0]-departure[0]) + abs(destination[1]-departure[1])
bir örnek departure = [0.4, 1]
ve destination = [0.9, 3]
olacağını, bu 2.7 eşit olmalıdır, ama ben 2.5
Örneğin, [1, 3]
[0.9, 3]
ila [1, 1]
için [0.4, 1]
gitmek olsun Toplam 2.7 fark için. Manhattan mesafesini hesaplamak gibidir, ancak kafes noktalarından başlamak ve bitirmek yerine, bir bloğun yarısına kadar başlayıp/veya sona erdirebilirsiniz.
hemen hemen her zaman yuvarlama hatası biraz var yüzer. Baz 10'daki sonlu ondalık açılımlar her zaman temel 2 –
'daki sonlu ondalık açılımlar değildir. [Kayan nokta matematik bozuk mu?] (Http://stackoverflow.com/questions/588004/is-floating-point-math-broken) olası kopyası –
Onun bir kopya olduğunu düşünmüyorum, çünkü onun bir açık nokta hatası, diğer iş parçacığı kendi açık bilmeniz gerekir. – JonnyDoeInWisco