All branches in a Choose Your Own Adventure book are visualized as lines. Pages are ordered from top to bottom. Green and red lines are for going forward and backward, respectively. Colored dots are the endings (no next pages). The longest path from the first page is highlighted in bold.
Last active
February 2, 2020 07:48
-
-
Save puripant/9e876ff1b496831bf847c4b5d3be6a28 to your computer and use it in GitHub Desktop.
How many adventures in Choose Your Own Adventure
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!DOCTYPE html> | |
<head> | |
<meta charset="utf-8"> | |
<script src="https://cdn.jsdelivr.net/npm/vega@5"></script> | |
<script src="https://cdn.jsdelivr.net/npm/vega-lite@4.0.0-beta.2"></script> | |
<script src="https://cdn.jsdelivr.net/npm/vega-embed@5"></script> | |
</head> | |
<body> | |
<div id="vis"></div> | |
<script> | |
const spec = "spec.json"; | |
vegaEmbed("#vis", spec) | |
// result.view provides access to the Vega View API | |
.then(result => console.log(result)) | |
.catch(console.warn); | |
</script> | |
</body> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"$schema": "https://vega.github.io/schema/vega/v5.json", | |
"width": 500, | |
"height": 1000, | |
"padding": 10, | |
"data": [ | |
{ | |
"name": "edges", | |
"values": [ | |
{"forward": true, "highlighted": 2.5, "source": 9, "target": 11}, | |
{"forward": true, "highlighted": 0.5, "source": 9, "target": 23}, | |
{"forward": true, "highlighted": 2.5, "source": 10, "target": 99}, | |
{"forward": true, "highlighted": 2.5, "source": 11, "target": 53}, | |
{"forward": true, "highlighted": 0.5, "source": 12, "target": 42}, | |
{"forward": true, "highlighted": 2.5, "source": 13, "target": 34}, | |
{"forward": false, "highlighted": 2.5, "source": 14, "target": 10}, | |
{"forward": false, "highlighted": 2.5, "source": 15, "target": 13}, | |
{"forward": true, "highlighted": 0.5, "source": 15, "target": 123}, | |
{"forward": true, "highlighted": 0.5, "source": 16, "target": 35}, | |
{"forward": false, "highlighted": 2.5, "source": 17, "target": 14}, | |
{"forward": false, "highlighted": 2.5, "source": 18, "target": 17}, | |
{"forward": false, "highlighted": 2.5, "source": 19, "target": 15}, | |
{"forward": true, "highlighted": 0.5, "source": 20, "target": 28}, | |
{"forward": false, "highlighted": 0.5, "source": 20, "target": 16}, | |
{"forward": false, "highlighted": 2.5, "source": 21, "target": 18}, | |
{"forward": false, "highlighted": 2.5, "source": 22, "target": 19}, | |
{"forward": false, "highlighted": 0.5, "source": 23, "target": 12}, | |
{"forward": true, "highlighted": 2.5, "source": 24, "target": 27}, | |
{"forward": false, "highlighted": 2.5, "source": 25, "target": 21}, | |
{"forward": false, "highlighted": 0.5, "source": 26, "target": 20}, | |
{"forward": false, "highlighted": 2.5, "source": 27, "target": 25}, | |
{"forward": true, "highlighted": 0.5, "source": 28, "target": 32}, | |
{"forward": true, "highlighted": 0.5, "source": 29, "target": 31}, | |
{"forward": true, "highlighted": 0.5, "source": 30, "target": 40}, | |
{"forward": true, "highlighted": 0.5, "source": 31, "target": 33}, | |
{"forward": true, "highlighted": 0.5, "source": 32, "target": 36}, | |
{"forward": false, "highlighted": 0.5, "source": 33, "target": 26}, | |
{"forward": true, "highlighted": 2.5, "source": 34, "target": 109}, | |
{"forward": true, "highlighted": 0.5, "source": 35, "target": 38}, | |
{"forward": true, "highlighted": 0.5, "source": 36, "target": 41}, | |
{"forward": true, "highlighted": 0.5, "source": 37, "target": 39}, | |
{"forward": true, "highlighted": 0.5, "source": 37, "target": 80}, | |
{"forward": true, "highlighted": 0.5, "source": 38, "target": 43}, | |
{"forward": true, "highlighted": 0.5, "source": 40, "target": 70}, | |
{"forward": true, "highlighted": 0.5, "source": 41, "target": 44}, | |
{"forward": true, "highlighted": 0.5, "source": 42, "target": 48}, | |
{"forward": true, "highlighted": 0.5, "source": 43, "target": 126}, | |
{"forward": true, "highlighted": 0.5, "source": 44, "target": 56}, | |
{"forward": false, "highlighted": 0.5, "source": 46, "target": 37}, | |
{"forward": false, "highlighted": 0.5, "source": 47, "target": 31}, | |
{"forward": true, "highlighted": 0.5, "source": 48, "target": 108}, | |
{"forward": true, "highlighted": 0.5, "source": 48, "target": 63}, | |
{"forward": false, "highlighted": 0.5, "source": 49, "target": 45}, | |
{"forward": true, "highlighted": 0.5, "source": 50, "target": 55}, | |
{"forward": false, "highlighted": 0.5, "source": 51, "target": 46}, | |
{"forward": false, "highlighted": 0.5, "source": 52, "target": 49}, | |
{"forward": true, "highlighted": 2.5, "source": 53, "target": 100}, | |
{"forward": true, "highlighted": 0.5, "source": 54, "target": 112}, | |
{"forward": false, "highlighted": 0.5, "source": 54, "target": 52}, | |
{"forward": true, "highlighted": 0.5, "source": 55, "target": 58}, | |
{"forward": true, "highlighted": 0.5, "source": 56, "target": 83}, | |
{"forward": true, "highlighted": 0.5, "source": 57, "target": 115}, | |
{"forward": true, "highlighted": 0.5, "source": 58, "target": 62}, | |
{"forward": true, "highlighted": 0.5, "source": 59, "target": 65}, | |
{"forward": false, "highlighted": 0.5, "source": 60, "target": 57}, | |
{"forward": true, "highlighted": 0.5, "source": 62, "target": 68}, | |
{"forward": true, "highlighted": 0.5, "source": 63, "target": 67}, | |
{"forward": false, "highlighted": 2.5, "source": 64, "target": 61}, | |
{"forward": true, "highlighted": 0.5, "source": 65, "target": 120}, | |
{"forward": false, "highlighted": 2.5, "source": 66, "target": 64}, | |
{"forward": true, "highlighted": 2.5, "source": 67, "target": 69}, | |
{"forward": false, "highlighted": 0.5, "source": 68, "target": 54}, | |
{"forward": true, "highlighted": 2.5, "source": 69, "target": 71}, | |
{"forward": true, "highlighted": 0.5, "source": 69, "target": 74}, | |
{"forward": false, "highlighted": 0.5, "source": 70, "target": 51}, | |
{"forward": false, "highlighted": 2.5, "source": 71, "target": 24}, | |
{"forward": false, "highlighted": 0.5, "source": 72, "target": 60}, | |
{"forward": true, "highlighted": 0.5, "source": 72, "target": 75}, | |
{"forward": true, "highlighted": 0.5, "source": 73, "target": 118}, | |
{"forward": true, "highlighted": 0.5, "source": 74, "target": 76}, | |
{"forward": true, "highlighted": 0.5, "source": 76, "target": 124}, | |
{"forward": true, "highlighted": 0.5, "source": 76, "target": 81}, | |
{"forward": false, "highlighted": 0.5, "source": 77, "target": 72}, | |
{"forward": true, "highlighted": 0.5, "source": 78, "target": 125}, | |
{"forward": true, "highlighted": 0.5, "source": 78, "target": 119}, | |
{"forward": true, "highlighted": 0.5, "source": 79, "target": 105}, | |
{"forward": false, "highlighted": 0.5, "source": 79, "target": 77}, | |
{"forward": false, "highlighted": 0.5, "source": 80, "target": 79}, | |
{"forward": true, "highlighted": 0.5, "source": 81, "target": 84}, | |
{"forward": true, "highlighted": 0.5, "source": 82, "target": 127}, | |
{"forward": true, "highlighted": 0.5, "source": 83, "target": 86}, | |
{"forward": true, "highlighted": 0.5, "source": 84, "target": 124}, | |
{"forward": true, "highlighted": 0.5, "source": 84, "target": 89}, | |
{"forward": true, "highlighted": 0.5, "source": 86, "target": 97}, | |
{"forward": true, "highlighted": 0.5, "source": 87, "target": 114}, | |
{"forward": true, "highlighted": 0.5, "source": 87, "target": 117}, | |
{"forward": false, "highlighted": 0.5, "source": 88, "target": 85}, | |
{"forward": true, "highlighted": 0.5, "source": 89, "target": 92}, | |
{"forward": true, "highlighted": 0.5, "source": 90, "target": 94}, | |
{"forward": false, "highlighted": 0.5, "source": 91, "target": 88}, | |
{"forward": false, "highlighted": 0.5, "source": 93, "target": 91}, | |
{"forward": false, "highlighted": 2.5, "source": 93, "target": 66}, | |
{"forward": true, "highlighted": 0.5, "source": 94, "target": 98}, | |
{"forward": false, "highlighted": 2.5, "source": 95, "target": 93}, | |
{"forward": false, "highlighted": 2.5, "source": 96, "target": 95}, | |
{"forward": true, "highlighted": 0.5, "source": 97, "target": 103}, | |
{"forward": true, "highlighted": 0.5, "source": 98, "target": 101}, | |
{"forward": true, "highlighted": 2.5, "source": 99, "target": 104}, | |
{"forward": true, "highlighted": 2.5, "source": 100, "target": 110}, | |
{"forward": false, "highlighted": 0.5, "source": 101, "target": 82}, | |
{"forward": true, "highlighted": 0.5, "source": 102, "target": 112}, | |
{"forward": true, "highlighted": 0.5, "source": 103, "target": 106}, | |
{"forward": false, "highlighted": 2.5, "source": 104, "target": 96}, | |
{"forward": false, "highlighted": 0.5, "source": 105, "target": 77}, | |
{"forward": true, "highlighted": 0.5, "source": 106, "target": 111}, | |
{"forward": false, "highlighted": 2.5, "source": 107, "target": 67}, | |
{"forward": false, "highlighted": 0.5, "source": 108, "target": 30}, | |
{"forward": false, "highlighted": 0.5, "source": 109, "target": 29}, | |
{"forward": false, "highlighted": 2.5, "source": 109, "target": 107}, | |
{"forward": false, "highlighted": 0.5, "source": 110, "target": 47}, | |
{"forward": false, "highlighted": 2.5, "source": 110, "target": 22}, | |
{"forward": false, "highlighted": 0.5, "source": 111, "target": 102}, | |
{"forward": true, "highlighted": 0.5, "source": 113, "target": 116}, | |
{"forward": true, "highlighted": 0.5, "source": 114, "target": 128}, | |
{"forward": false, "highlighted": 0.5, "source": 115, "target": 59}, | |
{"forward": true, "highlighted": 0.5, "source": 117, "target": 121}, | |
{"forward": false, "highlighted": 0.5, "source": 118, "target": 78}, | |
{"forward": true, "highlighted": 0.5, "source": 119, "target": 122}, | |
{"forward": false, "highlighted": 0.5, "source": 120, "target": 73}, | |
{"forward": false, "highlighted": 0.5, "source": 121, "target": 90}, | |
{"forward": false, "highlighted": 0.5, "source": 124, "target": 87}, | |
{"forward": false, "highlighted": 0.5, "source": 125, "target": 113}, | |
{"forward": false, "highlighted": 0.5, "source": 126, "target": 50}, | |
{"forward": false, "highlighted": 0.5, "source": 127, "target": 9} | |
] | |
}, | |
{ | |
"name": "sourceDegree", | |
"source": "edges", | |
"transform": [ | |
{"type": "aggregate", "groupby": ["source"]} | |
] | |
}, | |
{ | |
"name": "targetDegree", | |
"source": "edges", | |
"transform": [ | |
{"type": "aggregate", "groupby": ["target"]} | |
] | |
}, | |
{ | |
"name": "nodes", | |
"values": [ | |
{"name": "หน้า 1"}, | |
{"name": "2"}, | |
{"name": "3"}, | |
{"name": "4"}, | |
{"name": "5"}, | |
{"name": "6"}, | |
{"name": "7"}, | |
{"name": "8"}, | |
{"name": "9"}, | |
{"name": "10"}, | |
{"name": "11"}, | |
{"name": "12"}, | |
{"name": "13"}, | |
{"name": "14"}, | |
{"name": "15"}, | |
{"name": "16"}, | |
{"name": "17"}, | |
{"name": "18"}, | |
{"name": "19"}, | |
{"name": "20"}, | |
{"name": "21"}, | |
{"name": "22"}, | |
{"name": "23"}, | |
{"name": "24"}, | |
{"name": "25"}, | |
{"name": "26"}, | |
{"name": "27"}, | |
{"name": "28"}, | |
{"name": "29"}, | |
{"name": "30"}, | |
{"name": "31"}, | |
{"name": "32"}, | |
{"name": "33"}, | |
{"name": "34"}, | |
{"name": "35"}, | |
{"name": "36"}, | |
{"name": "37"}, | |
{"name": "38"}, | |
{"name": "39"}, | |
{"name": "40"}, | |
{"name": "41"}, | |
{"name": "42"}, | |
{"name": "43"}, | |
{"name": "44"}, | |
{"name": "45"}, | |
{"name": "46"}, | |
{"name": "47"}, | |
{"name": "48"}, | |
{"name": "49"}, | |
{"name": "50"}, | |
{"name": "51"}, | |
{"name": "52"}, | |
{"name": "53"}, | |
{"name": "54"}, | |
{"name": "55"}, | |
{"name": "56"}, | |
{"name": "57"}, | |
{"name": "58"}, | |
{"name": "59"}, | |
{"name": "60"}, | |
{"name": "61"}, | |
{"name": "62"}, | |
{"name": "63"}, | |
{"name": "64"}, | |
{"name": "65"}, | |
{"name": "66"}, | |
{"name": "67"}, | |
{"name": "68"}, | |
{"name": "69"}, | |
{"name": "70"}, | |
{"name": "71"}, | |
{"name": "72"}, | |
{"name": "73"}, | |
{"name": "74"}, | |
{"name": "75"}, | |
{"name": "76"}, | |
{"name": "77"}, | |
{"name": "78"}, | |
{"name": "79"}, | |
{"name": "80"}, | |
{"name": "81"}, | |
{"name": "82"}, | |
{"name": "83"}, | |
{"name": "84"}, | |
{"name": "85"}, | |
{"name": "86"}, | |
{"name": "87"}, | |
{"name": "88"}, | |
{"name": "89"}, | |
{"name": "90"}, | |
{"name": "91"}, | |
{"name": "92"}, | |
{"name": "93"}, | |
{"name": "94"}, | |
{"name": "95"}, | |
{"name": "96"}, | |
{"name": "97"}, | |
{"name": "98"}, | |
{"name": "99"}, | |
{"name": "100"}, | |
{"name": "101"}, | |
{"name": "102"}, | |
{"name": "103"}, | |
{"name": "104"}, | |
{"name": "105"}, | |
{"name": "106"}, | |
{"name": "107"}, | |
{"name": "108"}, | |
{"name": "109"}, | |
{"name": "110"}, | |
{"name": "111"}, | |
{"name": "112"}, | |
{"name": "113"}, | |
{"name": "114"}, | |
{"name": "115"}, | |
{"name": "116"}, | |
{"name": "117"}, | |
{"name": "118"}, | |
{"name": "119"}, | |
{"name": "120"}, | |
{"name": "121"}, | |
{"name": "122"}, | |
{"name": "123"}, | |
{"name": "124"}, | |
{"name": "125"}, | |
{"name": "126"}, | |
{"name": "127"}, | |
{"name": "128"} | |
], | |
"format": {"type": "json"}, | |
"transform": [ | |
{ "type": "window", "ops": ["rank"], "as": ["order"] }, | |
{ "type": "window", "ops": ["rank"], "as": ["index"] }, | |
{ | |
"type": "lookup", "from": "sourceDegree", "key": "source", | |
"fields": ["index"], "as": ["sourceDegree"], | |
"default": {"count": 0} | |
}, | |
{ | |
"type": "lookup", "from": "targetDegree", "key": "target", | |
"fields": ["index"], "as": ["targetDegree"], | |
"default": {"count": 0} | |
}, | |
{ | |
"type": "formula", "as": "degree", | |
"expr": "datum.sourceDegree.count + datum.targetDegree.count" | |
} | |
] | |
} | |
], | |
"scales": [ | |
{ | |
"name": "position", | |
"type": "band", | |
"domain": {"data": "nodes", "field": "order", "sort": true}, | |
"range": "height" | |
}, | |
{ | |
"name": "stroke", | |
"domain": [true, false], | |
"range": ["green", "red"] | |
}, | |
{ | |
"name": "fill", | |
"domain": [0, 1], | |
"range": ["green", "lightgray"], | |
"clamp": true | |
} | |
], | |
"marks": [ | |
{ | |
"type": "symbol", | |
"name": "layout", | |
"interactive": false, | |
"from": {"data": "nodes"}, | |
"encode": { | |
"enter": { | |
"opacity": {"value": 0} | |
}, | |
"update": { | |
"y": {"scale": "position", "field": "order"}, | |
"x": {"value": 30}, | |
"size": {"field": "degree", "mult": 20, "offset": 0} | |
} | |
} | |
}, | |
{ | |
"type": "text", | |
"from": {"data": "nodes"}, | |
"encode": { | |
"update": { | |
"y": {"scale": "position", "field": "order"}, | |
"x": {"value": 20}, | |
"fontSize": {"value": 8}, | |
"align": {"value": "right"}, | |
"baseline": {"value": "middle"}, | |
"text": {"field": "name"} | |
} | |
} | |
}, | |
{ | |
"type": "path", | |
"from": {"data": "edges"}, | |
"encode": { | |
"update": { | |
"stroke": {"scale": "stroke", "field": "forward"}, | |
"strokeOpacity": {"value": 0.5}, | |
"strokeWidth": {"field": "highlighted"} | |
} | |
}, | |
"transform": [ | |
{ | |
"type": "lookup", "from": "layout", "key": "datum.index", | |
"fields": ["datum.source", "datum.target"], | |
"as": ["sourceNode", "targetNode"] | |
}, | |
{ | |
"type": "linkpath", | |
"sourceY": {"expr": "min(datum.sourceNode.y, datum.targetNode.y)"}, | |
"targetY": {"expr": "max(datum.sourceNode.y, datum.targetNode.y)"}, | |
"sourceX": {"expr": "30"}, | |
"targetX": {"expr": "30"}, | |
"shape": "arc" | |
} | |
] | |
}, | |
{ | |
"type": "symbol", | |
"from": {"data": "layout"}, | |
"encode": { | |
"update": { | |
"x": {"field": "x"}, | |
"y": {"field": "y"}, | |
"fill": {"scale": "fill", "field": "datum.sourceDegree.count"}, | |
"size": {"field": "size"} | |
} | |
} | |
} | |
] | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment