conditionals
This commit is contained in:
parent
bd86d3a373
commit
fc7f07ef47
13 changed files with 516 additions and 2 deletions
55
eloquentjavascript/04_data/code/chapter/04_data.js
Normal file
55
eloquentjavascript/04_data/code/chapter/04_data.js
Normal file
|
@ -0,0 +1,55 @@
|
|||
var journal = [];
|
||||
|
||||
function addEntry(events, squirrel) {
|
||||
journal.push({events, squirrel});
|
||||
}
|
||||
|
||||
function phi(table) {
|
||||
return (table[3] * table[0] - table[2] * table[1]) /
|
||||
Math.sqrt((table[2] + table[3]) *
|
||||
(table[0] + table[1]) *
|
||||
(table[1] + table[3]) *
|
||||
(table[0] + table[2]));
|
||||
}
|
||||
|
||||
function tableFor(event, journal) {
|
||||
let table = [0, 0, 0, 0];
|
||||
for (let i = 0; i < journal.length; i++) {
|
||||
let entry = journal[i], index = 0;
|
||||
if (entry.events.includes(event)) index += 1;
|
||||
if (entry.squirrel) index += 2;
|
||||
table[index] += 1;
|
||||
}
|
||||
return table;
|
||||
}
|
||||
|
||||
function journalEvents(journal) {
|
||||
let events = [];
|
||||
for (let entry of journal) {
|
||||
for (let event of entry.events) {
|
||||
if (!events.includes(event)) {
|
||||
events.push(event);
|
||||
}
|
||||
}
|
||||
}
|
||||
return events;
|
||||
}
|
||||
|
||||
function max(...numbers) {
|
||||
let result = -Infinity;
|
||||
for (let number of numbers) {
|
||||
if (number > result) result = number;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
var list = {
|
||||
value: 1,
|
||||
rest: {
|
||||
value: 2,
|
||||
rest: {
|
||||
value: 3,
|
||||
rest: null
|
||||
}
|
||||
}
|
||||
};
|
99
eloquentjavascript/04_data/code/journal.js
Normal file
99
eloquentjavascript/04_data/code/journal.js
Normal file
|
@ -0,0 +1,99 @@
|
|||
var JOURNAL = [
|
||||
{"events":["carrot","exercise","weekend"],"squirrel":false},
|
||||
{"events":["bread","pudding","brushed teeth","weekend","touched tree"],"squirrel":false},
|
||||
{"events":["carrot","nachos","brushed teeth","cycling","weekend"],"squirrel":false},
|
||||
{"events":["brussel sprouts","ice cream","brushed teeth","computer","weekend"],"squirrel":false},
|
||||
{"events":["potatoes","candy","brushed teeth","exercise","weekend","dentist"],"squirrel":false},
|
||||
{"events":["brussel sprouts","pudding","brushed teeth","running","weekend"],"squirrel":false},
|
||||
{"events":["pizza","brushed teeth","computer","work","touched tree"],"squirrel":false},
|
||||
{"events":["bread","beer","brushed teeth","cycling","work"],"squirrel":false},
|
||||
{"events":["cauliflower","brushed teeth","work"],"squirrel":false},
|
||||
{"events":["pizza","brushed teeth","cycling","work"],"squirrel":false},
|
||||
{"events":["lasagna","nachos","brushed teeth","work"],"squirrel":false},
|
||||
{"events":["brushed teeth","weekend","touched tree"],"squirrel":false},
|
||||
{"events":["lettuce","brushed teeth","television","weekend"],"squirrel":false},
|
||||
{"events":["spaghetti","brushed teeth","work"],"squirrel":false},
|
||||
{"events":["brushed teeth","computer","work"],"squirrel":false},
|
||||
{"events":["lettuce","nachos","brushed teeth","work"],"squirrel":false},
|
||||
{"events":["carrot","brushed teeth","running","work"],"squirrel":false},
|
||||
{"events":["brushed teeth","work"],"squirrel":false},
|
||||
{"events":["cauliflower","reading","weekend"],"squirrel":false},
|
||||
{"events":["bread","brushed teeth","weekend"],"squirrel":false},
|
||||
{"events":["lasagna","brushed teeth","exercise","work"],"squirrel":false},
|
||||
{"events":["spaghetti","brushed teeth","reading","work"],"squirrel":false},
|
||||
{"events":["carrot","ice cream","brushed teeth","television","work"],"squirrel":false},
|
||||
{"events":["spaghetti","nachos","work"],"squirrel":false},
|
||||
{"events":["cauliflower","ice cream","brushed teeth","cycling","work"],"squirrel":false},
|
||||
{"events":["spaghetti","peanuts","computer","weekend"],"squirrel":true},
|
||||
{"events":["potatoes","ice cream","brushed teeth","computer","weekend"],"squirrel":false},
|
||||
{"events":["potatoes","ice cream","brushed teeth","work"],"squirrel":false},
|
||||
{"events":["peanuts","brushed teeth","running","work"],"squirrel":false},
|
||||
{"events":["potatoes","exercise","work"],"squirrel":false},
|
||||
{"events":["pizza","ice cream","computer","work"],"squirrel":false},
|
||||
{"events":["lasagna","ice cream","work"],"squirrel":false},
|
||||
{"events":["cauliflower","candy","reading","weekend"],"squirrel":false},
|
||||
{"events":["lasagna","nachos","brushed teeth","running","weekend"],"squirrel":false},
|
||||
{"events":["potatoes","brushed teeth","work"],"squirrel":false},
|
||||
{"events":["carrot","work"],"squirrel":false},
|
||||
{"events":["pizza","beer","work","dentist"],"squirrel":false},
|
||||
{"events":["lasagna","pudding","cycling","work"],"squirrel":false},
|
||||
{"events":["spaghetti","brushed teeth","reading","work"],"squirrel":false},
|
||||
{"events":["spaghetti","pudding","television","weekend"],"squirrel":false},
|
||||
{"events":["bread","brushed teeth","exercise","weekend"],"squirrel":false},
|
||||
{"events":["lasagna","peanuts","work"],"squirrel":true},
|
||||
{"events":["pizza","work"],"squirrel":false},
|
||||
{"events":["potatoes","exercise","work"],"squirrel":false},
|
||||
{"events":["brushed teeth","exercise","work"],"squirrel":false},
|
||||
{"events":["spaghetti","brushed teeth","television","work"],"squirrel":false},
|
||||
{"events":["pizza","cycling","weekend"],"squirrel":false},
|
||||
{"events":["carrot","brushed teeth","weekend"],"squirrel":false},
|
||||
{"events":["carrot","beer","brushed teeth","work"],"squirrel":false},
|
||||
{"events":["pizza","peanuts","candy","work"],"squirrel":true},
|
||||
{"events":["carrot","peanuts","brushed teeth","reading","work"],"squirrel":false},
|
||||
{"events":["potatoes","peanuts","brushed teeth","work"],"squirrel":false},
|
||||
{"events":["carrot","nachos","brushed teeth","exercise","work"],"squirrel":false},
|
||||
{"events":["pizza","peanuts","brushed teeth","television","weekend"],"squirrel":false},
|
||||
{"events":["lasagna","brushed teeth","cycling","weekend"],"squirrel":false},
|
||||
{"events":["cauliflower","peanuts","brushed teeth","computer","work","touched tree"],"squirrel":false},
|
||||
{"events":["lettuce","brushed teeth","television","work"],"squirrel":false},
|
||||
{"events":["potatoes","brushed teeth","computer","work"],"squirrel":false},
|
||||
{"events":["bread","candy","work"],"squirrel":false},
|
||||
{"events":["potatoes","nachos","work"],"squirrel":false},
|
||||
{"events":["carrot","pudding","brushed teeth","weekend"],"squirrel":false},
|
||||
{"events":["carrot","brushed teeth","exercise","weekend","touched tree"],"squirrel":false},
|
||||
{"events":["brussel sprouts","running","work"],"squirrel":false},
|
||||
{"events":["brushed teeth","work"],"squirrel":false},
|
||||
{"events":["lettuce","brushed teeth","running","work"],"squirrel":false},
|
||||
{"events":["candy","brushed teeth","work"],"squirrel":false},
|
||||
{"events":["brussel sprouts","brushed teeth","computer","work"],"squirrel":false},
|
||||
{"events":["bread","brushed teeth","weekend"],"squirrel":false},
|
||||
{"events":["cauliflower","brushed teeth","weekend"],"squirrel":false},
|
||||
{"events":["spaghetti","candy","television","work","touched tree"],"squirrel":false},
|
||||
{"events":["carrot","pudding","brushed teeth","work"],"squirrel":false},
|
||||
{"events":["lettuce","brushed teeth","work"],"squirrel":false},
|
||||
{"events":["carrot","ice cream","brushed teeth","cycling","work"],"squirrel":false},
|
||||
{"events":["pizza","brushed teeth","work"],"squirrel":false},
|
||||
{"events":["spaghetti","peanuts","exercise","weekend"],"squirrel":true},
|
||||
{"events":["bread","beer","computer","weekend","touched tree"],"squirrel":false},
|
||||
{"events":["brushed teeth","running","work"],"squirrel":false},
|
||||
{"events":["lettuce","peanuts","brushed teeth","work","touched tree"],"squirrel":false},
|
||||
{"events":["lasagna","brushed teeth","television","work"],"squirrel":false},
|
||||
{"events":["cauliflower","brushed teeth","running","work"],"squirrel":false},
|
||||
{"events":["carrot","brushed teeth","running","work"],"squirrel":false},
|
||||
{"events":["carrot","reading","weekend"],"squirrel":false},
|
||||
{"events":["carrot","peanuts","reading","weekend"],"squirrel":true},
|
||||
{"events":["potatoes","brushed teeth","running","work"],"squirrel":false},
|
||||
{"events":["lasagna","ice cream","work","touched tree"],"squirrel":false},
|
||||
{"events":["cauliflower","peanuts","brushed teeth","cycling","work"],"squirrel":false},
|
||||
{"events":["pizza","brushed teeth","running","work"],"squirrel":false},
|
||||
{"events":["lettuce","brushed teeth","work"],"squirrel":false},
|
||||
{"events":["bread","brushed teeth","television","weekend"],"squirrel":false},
|
||||
{"events":["cauliflower","peanuts","brushed teeth","weekend"],"squirrel":false}
|
||||
];
|
||||
|
||||
// This makes sure the data is exported in node.js —
|
||||
// `require('./path/to/journal.js')` will get you the array.
|
||||
if (typeof module != "undefined" && module.exports && (typeof window == "undefined" || window.exports != exports))
|
||||
module.exports = JOURNAL;
|
||||
if (typeof global != "undefined" && !global.JOURNAL)
|
||||
global.JOURNAL = JOURNAL;
|
9
eloquentjavascript/04_data/code/load.js
Normal file
9
eloquentjavascript/04_data/code/load.js
Normal file
|
@ -0,0 +1,9 @@
|
|||
// Since the code for most chapter in Eloquent JavaScript isn't
|
||||
// written with node's module system in mind, this kludge is used to
|
||||
// load dependency files into the global namespace, so that the
|
||||
// examples can run on node.
|
||||
|
||||
module.exports = function(...args) {
|
||||
for (let arg of args)
|
||||
(1,eval)(require("fs").readFileSync(__dirname + "/../" + arg, "utf8"))
|
||||
}
|
15
eloquentjavascript/04_data/index.html
Normal file
15
eloquentjavascript/04_data/index.html
Normal file
|
@ -0,0 +1,15 @@
|
|||
<!doctype html>
|
||||
<script src="code/journal.js"></script>
|
||||
<script src="code/chapter/04_data.js"></script>
|
||||
|
||||
<body><script>
|
||||
for (let event of journalEvents(JOURNAL)) {
|
||||
let correlation = phi(tableFor(event, JOURNAL));
|
||||
if (correlation > 0.1 || correlation < -0.1) {
|
||||
console.log(event + ":", correlation);
|
||||
}
|
||||
}
|
||||
// → brushed teeth: -0.3805211953
|
||||
// → work: -0.1371988681
|
||||
// → reading: 0.1106828054
|
||||
</script></body>
|
12
eloquentjavascript/04_data/run_with_node.js
Normal file
12
eloquentjavascript/04_data/run_with_node.js
Normal file
|
@ -0,0 +1,12 @@
|
|||
// load dependencies
|
||||
require("./code/load")("code/journal.js", "code/chapter/04_data.js");
|
||||
|
||||
for (let event of journalEvents(JOURNAL)) {
|
||||
let correlation = phi(tableFor(event, JOURNAL));
|
||||
if (correlation > 0.1 || correlation < -0.1) {
|
||||
console.log(event + ":", correlation);
|
||||
}
|
||||
}
|
||||
// → brushed teeth: -0.3805211953
|
||||
// → work: -0.1371988681
|
||||
// → reading: 0.1106828054
|
Loading…
Add table
Add a link
Reference in a new issue