Heim > Web-Frontend > js-Tutorial > Lustige JavaScript-Frage: Der verlorene Cowboy

Lustige JavaScript-Frage: Der verlorene Cowboy

黄舟
Freigeben: 2017-02-13 15:57:37
Original
1237 Leute haben es durchsucht

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"]
Nach dem Login kopieren

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"]
Nach dem Login kopieren

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"]

Weil

„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"]) // []
Nach dem Login kopieren
Der erste Schritt besteht darin, die Zuordnungsbeziehung der Richtungen festzulegen, bei denen es sich um entgegengesetzte Richtungen handelt:


var opposite = {
    "NORTH":"SOUTH",
    "SOUTH":"NORTH",
    "EAST":"WEST",
    "WEST":"EAST"
};
Nach dem Login kopieren
Als nächstes durchqueren Sie den String-Array-Plan von hinten nach vorne. Wenn Sie auf die entgegengesetzte Richtung stoßen, entfernen Sie ihn aus dem Array und versetzen Sie ihn.

Dann beginnen Sie mit der zweiten Runde des Durchquerens, Entfernens, Versetzens, der dritten Runde und der N-ten Runde, bis Sie die entgegengesetzte Richtung nicht mehr finden und aus der Schleife springen können.

Das Array ist derzeit die optimierte beste Route.


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;
}
Nach dem Login kopieren

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)!


Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage