aboutsummaryrefslogtreecommitdiff
path: root/posts/2015-04-02-juggling-skill-tree.md
blob: 11eb3773cb0397b9c3e716c8cd9c200b018951ca (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
---
template: oldpost
title: jst
date: 2015-04-02
comments: true
archive: false
---
jst = juggling skill tree

If you have ever played a computer role playing game, you may have
noticed the protagonist sometimes has a skill "tree" (most of the time
it is actually a directed acyclic graph), where certain skills leads to
others. For example,
[here](http://hydra-media.cursecdn.com/diablo.gamepedia.com/3/37/Sorceress_Skill_Trees_%28Diablo_II%29.png?version=b74b3d4097ef7ad4e26ebee0dcf33d01)
is the skill tree of sorceress in [Diablo
II](https://en.wikipedia.org/wiki/Diablo_II).

Now suppose our hero embarks on a quest for learning all the possible
juggling patterns. Everyone would agree she should start with cascade,
the simplest nontrivial 3-ball pattern, but what afterwards? A few other
accessible patterns for beginners are juggler's tennis, two in one and
even reverse cascade, but what to learn after that? The encyclopeadic
[Library of Juggling](http://libraryofjuggling.com/) serves as a good
guide, as it records more than 160 patterns, some of which very
aesthetically appealing. On this website almost all the patterns have a
"prerequisite" section, indicating what one should learn beforehand. I
have therefore written a script using [Python](http://python.org),
[BeautifulSoup](http://www.crummy.com/software/BeautifulSoup/) and
[pygraphviz](http://pygraphviz.github.io/) to generate a jst (graded by
difficulties, which is the leftmost column) from the Library of Juggling
(click the image for the full size): 

<a href="../assets/resources/juggling.png"><img src="../assets/resources/juggling.png" alt="The juggling skill tree" style="width:38em" /></a>