Vor langer Zeit führte eine Straße in den unerreichbaren Westen...
Ein junger Cowboy musste den Anweisungen zufolge von einem Ort zum anderen gehen. Anweisungen wie diese"NORDEN", "SÜDEN", "WEST", "OST".
Offensichtlich sind "NORDEN" und "SÜDEN" in entgegengesetzte Richtungen, "WEST" und "OST"Es ist auch das Gegenteil.
In eine Richtung zu gehen und dann zurückzugehen ist zweifellos eine nutzlose Anstrengung.
In dieser unzugänglichen westlichen Wildnis, bei schlechtem Wetter und knappen Wasserressourcen ist es wichtig, etwas Energie zu sparen, sonst kann man sterben!
Wie man den klügsten Weg einschlägt, ist sehr wichtig!
Anleitung für Cowboys, so:
plan = ["NORTH", "SOUTH", "SOUTH", "EAST", "WEST", "NORTH", "WEST"]
Man sieht auf einen Blick, "NORTH"und„SÜDEN“, diese Route ist offensichtlich unvernünftig, am besten bleibt man dort, wo man ist.
Ihre Aufgabe besteht also darin, die Route zu optimieren, um Energie zu sparen.
Eine bessere Lösung wäre so:
plan = ["WEST"]
Ein weiteres Beispiel:
["NORTH" , " SOUTH", "EAST", "WEST"]
Hier machen "NORTH" und "SOUTH" den Versatz, "EAST". „ und „WEST“ werden versetzt und schließlich wird ein leeres Array zurückgegeben.
Sehen Sie sich ein komplizierteres Beispiel an:
["NORTH", "EAST", "WEST", "SOUTH", "WEST", "WEST"]
"OST", "WEST" werden versetzt, um ["NORTH", "SOUTH", "WEST", "WEST"]
< zu erhalten 🎜>"NORTH", "SOUTH" werden versetzt, und schließlich erhalten wir ["WEST", "WEST"]. Bitte beachten Sie jedoch, dass die folgende Situation nicht ausgeglichen werden kann:
["NORTH", "WEST", "SOUTH", "EAST"]
„OST“, „WEST“ oder „NORD“, „SÜD“ nicht benachbart, sondern getrennt sind.
Sehen wir uns an, wie man eine solche Routenreduzierungsfunktion schreibt. Es akzeptiert ein String-Array als Parameter und gibt ein neues String-Array zurück. So:dirReduc(["NORTH", "SOUTH", "SOUTH", "EAST", "WEST", "NORTH", "WEST"]) // ["WEST"] dirReduc(["NORTH", "SOUTH", "SOUTH", "EAST", "WEST", "NORTH"]) // []
var opposite = { "NORTH":"SOUTH", "SOUTH":"NORTH", "EAST":"WEST", "WEST":"EAST" };
function dirReduc(arr){ var flag = false; while(!flag){ for(var i=arr.length-2,flag=true;i>=0;i--){ if(opposite[arr[i]] === arr[i+1]){ arr.splice(i+1,1); arr.splice(i,1); i--; flag = false; } } } return arr; }
Das Obige ist der Inhalt der lustigen JavaScript-Frage: The Lost Cowboy. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www .php.cn)!