JSFiddle - React, Tailwind, and code Playground

by Tim Ko

JavaScript

1 2 3 4 5
2 3 4 5 1
3 4 5 1 2

// music app, playlist of 100 songs, shuffle this playlist randomly

// playlist: array

function shuffle(playlist) {
    for (var i = 0, ln = playlist.length; i < ln; i++) {
        var a = parseInt(ln * Math.random());
        var b = parseInt(ln * Math.random());
        
        swap(playlist, a, b);
    }
}

function swap(playlist, a, b) {
    var tmp = playlist[a];
    
    playlist[a] = playlist[b];
    playlist[b] = tmp;
}

function testShuffle() {
    var originalPlaylist = ['song a', 'song b', 'song c', 'song d'];
    
    var originalCopy1 = originalPlaylist;
    var originalCopy2 = originalPlaylist;
    var shuffledPlaylist1 = shuffle(shuffle(shuffle(originalCopy1)));
    var shuffledPlaylist2 = shuffle(shuffle(shuffle(originalCopy2)));
    var shuffledPlaylist3 = shuffle(shuffle(shuffle(originalCopy3)));
    
    var differences1 = 0;
    for (var i = 0, ln = originalPlaylist.length; i < ln; i++) {
        if (originalCopy1[i] != shuffledPlaylist1[i]) {
            differences1++;
        }
    }
    var differences2 = 0;
    for (var i = 0, ln = originalPlaylist.length; i < ln; i++) {
        if (originalCopy2[i] != shuffledPlaylist2[i]) {
            differences2++;
        }
    }
    
    var differences3 = 0;
    for (var i = 0, ln = originalPlaylist.length; i < ln; i++) {
        if (shuffledPlaylist1[i] != shuffledPlaylist2[i]) {
            differences3++;
        }
    }
    
    // differences1 checks to make sure shuffle works
    // differences1 should not be 0
    
    // differences2 checks to make sure shuffle works
    // differences2 should not be 0
    
    // differences3 checks to make sure two shuffles don't produce same result
    // differences3 should not be 0
}
























String => Integer

get ()
insert ()
remove ()

var size = 1000;
var hashmap = Array(size);

{
    var key;
    var value;
}

function hash(key) {
    key % size
}

this.insert = function(key, value) {
    var...