JSFiddle - React, Tailwind, and code Playground

by Mehmetcan Sinir

JavaScript

//connecting roads


var roads = {};

function makeRoad(from, to, length) {
    function addRoad(from, to) {
        if (!(from in roads)) {
            //if from property doesn't exist create it and make it an empty array
            roads[from] = [];
        }
        //elements of the array are objects with to and distance properties
        roads[from].push({
            to: to,
            distance: length
        });
    }
    addRoad(from, to);
    addRoad(to, from);
}

/*makeRoad("Point Kiukiu", "Hanaiapa", 19);
makeRoad("Point Kiukiu", "Mt Feani", 15);
makeRoad("Point Kiukiu", "Taaoa", 15);*/

/*In the above description, the string "Point Kiukiu" still occurs three times in a row. We could make our description even more succinct by allowing multiple roads to be specified in one line.

Write a function makeRoads that takes any uneven number of arguments. The first argument is always the starting point of the roads, and every pair of arguments after that gives an ending point and a distance.

Do not duplicate the functionality of makeRoad, but have makeRoads call makeRoad to do the actual road-making.*/

function makeRoads(start) {
    for (var i = 1; i < arguments.length; i += 2) {
        makeRoad(start, arguments[i], arguments[i + 1]);
    }
}

makeRoads("Point Kiukiu", "Hanaiapa", 19,
    "Mt Feani", 15, "Taaoa", 15);
makeRoads("Airport", "Hanaiapa", 6, "Mt Feani", 5,
    "Atuona", 4, "Mt Ootua", 11);
makeRoads("Mt Temetiu", "Mt Feani", 8, "Taaoa", 4);
makeRoads("Atuona", "Taaoa", 3, "Hanakee pearl lodge", 1);
makeRoads("Cemetery", "Hanakee pearl lodge", 6, "Mt Ootua", 5);
makeRoads("Hanapaoa", "Mt Ootua", 3);
makeRoads("Puamua", "Mt Ootua", 13, "Point Teohotepapapa", 14);

console.log(roads["Point Kiukiu"]);

//If you ran all the pieces of code above, you should now have a variable named roads that contains all the roads on the island. When we need the roads starting from a certain place, we could just do roads[place]. But then, when someone makes a...