Maison > interface Web > js tutoriel > le corps du texte

Question amusante JavaScript : le cowboy perdu

黄舟
Libérer: 2017-02-13 15:57:37
original
1202 Les gens l'ont consulté

Il y a bien longtemps, il y avait une route menant à l'ouest inaccessible...

Un jeune cow-boy, selon les instructions, devait se rendre d'un endroit à un autre. Des instructions comme celle-ci"NORD", "SUD", "OUEST", "EST".

Évidemment, "NORD" et "SUD" sont dans des directions opposées, "OUEST" et "EST"C'est aussi le contraire.

Marcher dans une direction puis revenir en arrière est sans aucun doute un effort inutile.

Dans cette nature sauvage de l'ouest inaccessible, avec du mauvais temps et des ressources en eau rares, il est important d'économiser un peu d'énergie, sinon vous risquez de mourir !

Comment emprunter la voie la plus sage est très important !

Instructions pour les cowboys, comme ceci :


plan = ["NORTH", "SOUTH", "SOUTH", "EAST", "WEST", "NORTH", "WEST"]
Copier après la connexion

Vous pouvez voir d'un coup d'oeil, "NORD"et"SUD", cet itinéraire est évidemment déraisonnable, il vaut mieux rester sur place.
Votre tâche consiste donc à rationaliser l'itinéraire pour économiser de l'énergie.

Une meilleure solution serait comme ceci :


plan = ["WEST"]
Copier après la connexion

Un autre exemple :

["NORD", " SUD", "EST", "OUEST"]

Ici, "NORD" et "SUD" font le décalage, "EST " et "WEST" sont décalés, et finalement un tableau vide est renvoyé.

Regardez un exemple plus compliqué :

["NORD", "EST", "OUEST", "SUD", "OUEST", "OUEST"]

"EST", "OUEST" sont décalés pour obtenir ["NORD", "SUD", "OUEST", "OUEST"]

"NORD", "SUD" sont décalés, et finalement on obtient ["OUEST", "OUEST"].
Veuillez toutefois noter que la situation suivante ne peut être compensée :

["NORD", "OUEST", "SUD", "EST"]

Parce que "EST", "OUEST" ou "NORD", "SUD" ne sont pas adjacents, mais séparés.

Voyons comment écrire une telle fonction de réduction d'itinéraire.

Il accepte un tableau de chaînes comme paramètre et renvoie un nouveau tableau de chaînes.

Comme ceci :


dirReduc(["NORTH", "SOUTH", "SOUTH", "EAST", "WEST", "NORTH", "WEST"]) // ["WEST"]
dirReduc(["NORTH", "SOUTH", "SOUTH", "EAST", "WEST", "NORTH"]) // []
Copier après la connexion

La première étape consiste à établir la relation cartographique des directions, qui sont les directions opposées :


var opposite = {
    "NORTH":"SOUTH",
    "SOUTH":"NORTH",
    "EAST":"WEST",
    "WEST":"EAST"
};
Copier après la connexion

Ensuite, parcourez le plan du réseau de chaînes d'arrière en avant. Lorsque vous rencontrez la direction opposée, retirez-le du réseau et décalez-le.

Ensuite, commencez le deuxième tour de traversée, retrait, décalage, troisième tour, Nième tour, jusqu'à ce que vous ne puissiez pas trouver la direction opposée et sortir de la boucle.

Le tableau à l'heure actuelle est le meilleur itinéraire rationalisé.


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;
}
Copier après la connexion


Ce qui précède est le contenu de la question amusante JavaScript : The Lost Cowboy. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www. .php.cn) !

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!