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 hidden or 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 hidden or 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