cosmicos
Version:
95 lines (81 loc) • 2.08 kB
JavaScript
var cos = require("./cosmic");
cos.language(2);
cos.seed(42);
cos.section("introduce equality for unary numbers","MATH");
cos.comment("The intro operator does nothing essential, and could be omitted - it just tags the first use of a new operator. The = operator is introduced alongside a duplication of unary numbers. The meaning will not quite by nailed down until we see other relational operators.");
cos.add(["intro","="]);
var examples = [1, 2, 3, 4, 5, 6, 7, 8, 1, 6, 2];
var examples2 = [];
for (var i=0; i<examples.length; i++) {
var r = examples[i];
cos.add("= " + cos.unary(r) + " " + cos.unary(r));
}
cos.section("now introduce other relational operators","MATH");
cos.comment("After this lesson, it should be clear what contexts < > and = are appropriate in.");
cos.add(["intro",">"]);
var prev = {};
for (var i=0; i<=10; i++) {
var done = false;
while (!done) {
var r = cos.irand(10)+1;
var r2 = cos.irand(r);
var idx = r*100+r2;
if (!prev[idx]) {
cos.add([">",cos.unary(r),cos.unary(r2)]);
prev[idx] = true;
done = true;
}
}
}
prev = {};
for (var i=0; i<=10; i++) {
var done = false;
while (!done) {
var r = cos.irand(10)+1;
var r2 = cos.irand(r);
var idx = r*100+r2;
if (!prev[idx]) {
cos.add(["<",cos.unary(r2),cos.unary(r)]);
prev[idx] = true;
done = true;
}
}
}
cos.comment("Some mixed examples");
prev = "";
for (var i=1; i<=4; i++) {
for (var j=1; j<=4; j++) {
var r = j;
var r2 = i;
var idx = r*100+r2;
var cmp = "=";
if (r>r2) {
cmp = ">";
} else if (r<r2) {
cmp = "<";
}
cos.add([cmp,cos.unary(r),cos.unary(r2)]);
prev[idx] = true;
}
}
cos.comment("A few more random examples");
prev = "";
for (var i=0; i<=10; i++) {
var done = false;
while (!done) {
var r = cos.irand(6);
var r2 = cos.irand(6);
var idx = r*100+r2;
if (!prev[idx]) {
var cmp = "=";
if (r>r2) {
cmp = ">";
} else if (r<r2) {
cmp = "<";
}
cos.add([cmp,cos.unary(r),cos.unary(r2)]);;
prev[idx] = true;
done = true;
}
}
}