J.Reinis Ierakstīts Jūlijs 1, 2014 Share Ierakstīts Jūlijs 1, 2014 (labots) Tikko paziņa, kas kodē sev interneta bodei bilžu karuseli atsūtīja interesantu jautājumu par JavaScript kodēšanu, ar ko gribēju padalīties - pievienoju arī bildīti, lai ilustrētu problēmu. Iedomājies bilžu karuseļa animēšanas funkciju, kurai tiek padotas divas vērtības - sākuma un beigu pozīcijas: function carouselDifference(startpos,endpos) { .. } Uzdevums ir atrast mazāko pozīciju skaitu starp dotajām vērtībām, BET pieņemot, ka kopā ir tikai sešpadsmit pozīcijas, un viņas it kā ir izvietotas aplī (kā bildē).Tātad, attiecīgi - ja tiek padotas sekojošas sākuma un beigu pozīcijas, tad rezultāts sanāktu: (1,4) = 3(1,9) = 8(1, 14) = 3(1, 10) = 7 No sākuma iešāvās prātā vienkāršākais risinājums - pārdefinēt, ka pozīcijas virs 9 iet sarūkošā secībā. Attiecīgi function carouselDifference(startpos,endpos) { if( endpos ==='10') endpos = 8; if( endpos ==='11') endpos = 7; if( endpos ==='12') endpos = 6; if( endpos ==='13') endpos = 5; if( endpos ==='14') endpos = 4; if( endpos ==='15') endpos = 3; if( endpos ==='16') endpos = 2; var duration = (startpos - endpos); animateCarousel(duration); } Bet tas, protams, nestrādā ja sākumpozīcija nav 1, un darbojas tikai tad, ja ir zināms kopējais bilžu skaits. Kādam ir kāds labāks piedāvājums? =============== Update: Cits paziņa esot piedāvājis vienkāršu un elegantu risinājumu steps (a, b) { val1 = b - a val2 = 16 + a - b return val1 > val2 ? val1 : val2 } Varbūt, intereses pēc, kādam vēl kāda neordināra ideja kā pieiet šai problēmai? Labots Jūlijs 1, 2014 - J.Reinis Link to comment Share on other sites More sharing options...
VIL Jūlijs 1, 2014 Share Jūlijs 1, 2014 Tas "neordinārais" risinājums arī ir efektīvākais. 2 Link to comment Share on other sites More sharing options...
Recommended Posts
Izveido kontu, vai pieraksties esošajā, lai komentētu
Jums ir jābūt šī foruma biedram, lai varētu komentēt tēmas
Izveidot jaunu kontu
Piereģistrējies un izveido jaunu kontu, tas būs viegli!
Reģistrēt jaunu kontuPierakstīties
Jums jau ir konts? Pierakstieties tajā šeit!
Pierakstīties tagad!