JavaScript
// SRS Levels: A1 A2 A3 A4 G1 G2 M E B
var accuracy = [80.0, 80.0, 85.0, 90.0, 95.0, 95.0, 99.0, 96.0, 97.0];
//var accuracy = [90.0, 90.0, 90.0, 90.0, 90.0, 90.0, 90.0, 90.0, 90.0];
//var accuracy = [100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0];
//var review_times = ['06:00', '12:00', '17:00', '21:00'];
var review_times = ['07:00', '21:00'];
//var review_times = ['21:00'];
var max_lessons_per_day = 999; // Not yet used.
var srs_levels = [
'Apprentice 1', 'Apprentice 2', 'Apprentice 3', 'Apprentice 4',
'Guru 1', 'Guru 2', 'Master', 'Enlightened', 'Burned'
];
var lvls = [
[ 1,26,18, 42],[ 2,35,38, 90],[ 3,22,33, 68],[ 4,33,38,104],[ 5,27,42,124],
[ 6,19,40,115],[ 7,17,33, 95],[ 8,16,32,132],[ 9,15,35,115],[10,14,35,114],
[11,14,38,121],[12,11,37,125],[13,16,37,113],[14, 6,32,114],[15, 7,33, 96],
[16, 6,35,116],[17, 8,33,122],[18, 8,29,134],[19, 9,34,105],[20, 7,32,112],
[21, 7,32,105],[22, 6,31,112],[23, 7,31, 96],[24, 7,31,118],[25, 8,33, 98],
[26, 3,33,122],[27, 8,32,110],[28, 5,34,112],[29, 8,33,102],[30, 5,31,100],
[31, 7,36,112],[32, 6,33,111],[33, 5,32,101],[34, 5,34,125],[35, 4,32, 99],
[36, 7,33, 97],[37, 4,32,111],[38, 6,32,100],[39, 8,34,100],[40, 3,32,115],
[41, 4,30,108],[42, 4,33, 98],[43, 5,35,108],[44, 5,34,106],[45, 3,35, 97],
[46, 2,37,103],[47, 3,36, 94],[48, 3,37,105],[49, 2,33,104],[50, 3,35, 88],
[51, 1,35, 77],[52, 0,35, 99],[53, 2,35,104],[54, 0,35,114],[55, 0,35, 76],
[56, 0,35, 88],[57, 2,35, 93],[58, 0,35, 81],[59, 1,35, 79],[60, 1,32, 65]
];
var intervals = {
r: [ 4, 8, 23, 47, 167, 335, 729, 2921],
k: [ 4, 8, 23, 47, 167, 335, 729, 2921],
v: [ 4, 8, 23, 47, 167, 335, 729, 2921]
};
function newArray(dimensions, init_val) {
if (typeof dimensions === 'number') dimensions = [dimensions];
if (!dimensions.hasOwnProperty(length)) return undefined;
var dim = dimensions[0];
var arr = new Array(dim);
if...