<img src="https://upload.wikimedia.org/wikipedia/commons/thumb/9/90/Adventures_in_the_wilderness%3B_%281889%29_%2817317693013%29.jpg/320px-Adventures_in_the_wilderness%3B_%281889%29_%2817317693013%29.jpg" style="float:right; margin-left:8px" alt="canoe">
You and your two friends now will work on the various tasks to build a <i>gwitn</i> (Ojibwe - <i>jiimaan</i>).
<hr>
[[next]]
<script>function myFunction() {var x = document.getElementById("myDIV"); if (x.style.display == "none") {x.style.display = "inline";} else {x.style.display = "none";}}</script>(if: (passage:)'s tags contains "donotshow")[<!--Do nothing-->](else:)[
<div id="myDIV"><table class="tasks">
<tr><th>code</th><th>tasks</th><th>time (in hours)</th><th>prerequisite(s)</th></tr>
<tr><td>template</td><td>make template</td><td>2</td><td>-</td></tr>
<tr><td>bark</td><td>get birch bark</td><td>7</td><td>-</td></tr>
<tr><td>birch</td><td>get birch wood</td><td>3</td><td>-</td></tr>
<tr><td>cedar</td><td>get cedar</td><td>6</td><td>-</td></tr>
<tr><td>roots</td><td>get spruce roots</td><td>9</td><td>-</td></tr>
<tr><td>sap</td><td>get spruce sap</td><td>3</td><td>-</td></tr>
<tr><td>paddles</td><td>carve paddles</td><td>7</td><td>birch</td></tr>
<tr><td>watap</td><td>make watap</td><td>12</td><td>roots</td></tr>
<tr><td>roll</td><td>roll out bark, stake</td><td>7</td><td>bark, template</td></tr>
<tr><td>thwarts</td><td>make thwarts</td><td>4</td><td>birch, roll</td></tr>
<tr><td>stem</td><td>make stempieces</td><td>6</td><td>cedar, watap</td></tr>
<tr><td>sheathing</td><td>make sheathing</td><td>5</td><td>cedar, roll</td></tr>
<tr><td>ribs</td><td>make ribs</td><td>9</td><td>cedar, roll</td></tr>
<tr><td>gunnels</td><td>make gunnels</td><td>9</td><td>cedar, template</td></tr>
<tr><td>insert</td><td>insert stems</td><td>7</td><td>roll, stem</td></tr>
<tr><td>lash1</td><td>lash gunnels</td><td>8</td><td>gunnels, stem</td></tr>
<tr><td>lash2</td><td>lash gunnels</td><td>8</td><td>gunnels, stem</td></tr>
<tr><td>fit</td><td>fit thwarts</td><td>4</td><td>thwarts, lash1, lash2</td></tr>
<tr><td>lay</td><td>lay sheathing</td><td>6</td><td>sheathing, fit</td></tr>
<tr><td>slot</td><td>slot ribs</td><td>6</td><td>lay, ribs</td></tr>
<tr><td>peg</td><td>peg topwale</td><td>4</td><td>slot</td></tr>
<tr><td>gum1</td><td>gum seams</td><td>3</td><td>sap, slot</td></tr>
<tr><td>gum2</td><td>gum seams</td><td>3</td><td>sap, peg</td></tr>
</table>
</div>
Click to <button onclick="myFunction()">show/hide</button> tasks<br>]There are 21 different steps to building the birch bark canoe. Most can only be done by one worker at a time. Click on the button above to see each step, how long each one takes to do, and which need to be done before others can be done.
<hr>
Assign the [[first task|P1]]
{(set: $runTime to 0, $P1next to 0, $P2next to 0, $P3next to 0, $msg to "")
(set: $ready to (a: "idle", "template", "bark", "birch", "cedar", "roots", "sap", "paddles"), $waiting to (a: "watap", "thwarts", "stem", "sheathing", "ribs", "roll", "gunnels", "lash1", "lash2", "insert", "fit", "slot", "lay", "peg", "gum1", "gum2"), $started to (a:), $finished to (a:))
(set: $worker to "P1", $barkExtra to false, $rootsExtra to false, $efficiency to 1)}
<img src="https://upload.wikimedia.org/wikipedia/commons/c/ce/Canoe_%28PSF%29.png" alt="">{(if: $P1next > $runTime) [(goto: "P2")] <!- P1 still working -->
(if: $finished's length is 23)[(goto:"done")]
<!- P1 finished task -->}
{time: $runTime<br>
<span class="w">$msg</span>(set: $msg to "")
Select a task for your first worker<br>
(set: $selected to "")
(for: each _item, ...$ready)[
(print: '(link: _item)[(set: $selected to "' + _item + '")(go-to: "runP1")]')
]
}(set: $showFooter to true)(set: $worker to "P1", $P1selected to $selected)
(goto: $selected){(set: $started to it + (a: $selected))
(set: $ready to it - (a: $selected))
(set: $hours to (round: ($efficiency*2)))
(if: ($worker is "P1"))[(set: $P1next to it + $hours)(goto: "P2")]
(else-if: ($worker is "P2"))[(set: $P2next to it + $hours)(goto: "P3")]
(else:)[(set: $P3next to it + $hours)(goto:"advance")]}(if: (passage:)'s tags contains "donotshow")[<!--Do nothing-->](else:)[
tasks started: $started
tasks finished: $finished]{(if: $P2next > $runTime) [(goto: "P3")] <!- P2 still working -->
(if: $finished's length is 23)[(goto:"done")]
<!- P2 finished task -->}
{time: $runTime<br>
<span class="w">$msg</span>(set: $msg to "")
Select a task for your second worker<br>
(set: $selected to "")
(for: each _item, ...$ready)[
(print: '(link: _item)[(set: $selected to "' + _item + '")(go-to: "runP2")]')
]
}(set: $showFooter to true){(if: $P3next > $runTime) [(goto: "advance")] <!- P3 still working -->
(if: $finished's length is 23)[(goto:"done")]
<!- P3 finished task -->}
{time: $runTime<br>
<span class="w">$msg</span>(set: $msg to "")
Select a task for your third worker<br>
(set: $selected to "")
(for: each _item, ...$ready)[
(print: '(link: _item)[(set: $selected to "' + _item + '")(go-to: "runP3")]')
]
}(set: $showFooter to true)(set: $worker to "P2", $P2selected to $selected)
(goto: $selected)(set: $worker to "P3", $P3selected to $selected)
(goto: $selected)(if: $finished's length is 23)[(goto:"done")]
{(set:$runTime to $runTime + 1)
(if: ($P1next is $runTime and $P1selected is not "idle"))
[ (set: $started to it - (a: $P1selected))
(set: $finished to it + (a: $P1selected))
(set: $msg to $P1selected + " finished<br>")]
(if: ($P2next is $runTime and $P2selected is not "idle"))
[ (set: $started to it - (a: $P2selected))
(set: $finished to it + (a: $P2selected))
(set: $msg to it + $P2selected + " finished<br>")]
(if: ($P3next is $runTime and $P3selected is not "idle"))
[ (set: $started to it - (a: $P3selected))
(set: $finished to it + (a: $P3selected))
(set: $msg to $P3selected + " finished<br>")]
(if: ($finished contains "birch" and "roll") and ($waiting contains "thwarts"))
[(set: $ready to $ready + (a: "thwarts"))
(set: $waiting to $waiting - (a:"thwarts"))]
(if: ($finished contains "birch") and ($waiting contains "paddles"))
[(set: $ready to $ready + (a: "paddles"))
(set: $waiting to $waiting - (a:"paddles"))]
(if: ($finished contains "cedar" and "roll") and ($waiting contains "sheathing"))
[(set: $ready to $ready + (a: "sheathing"))
(set: $waiting to $waiting - (a:"sheathing"))]
(if: ($finished contains "roots") and ($waiting contains "watap"))
[(set: $ready to $ready + (a: "watap"))
(set: $waiting to $waiting - (a:"watap"))]
(if: ($finished contains "cedar" and "watap") and ($waiting contains "stem"))
[(set: $ready to $ready + (a: "stem"))
(set: $waiting to $waiting - (a:"stem"))]
(if: ($finished contains "cedar" and "roll") and ($waiting contains "ribs"))
[(set: $ready to $ready + (a: "ribs"))
(set: $waiting to $waiting - (a:"ribs"))]
(if: ($finished contains "bark" and "template") and ($waiting contains "roll"))
[(set: $ready to $ready + (a: "roll"))
(set: $waiting to $waiting - (a:"roll"))]
(if: ($finished contains "cedar" and "template") and ($waiting contains "gunnels"))
[(set: $ready to $ready + (a: "gunnels"))
(set: $waiting to $waiting - (a:"gunnels"))]
(if: ($finished contains "stem") and ($waiting contains "insert"))
[(set: $ready to $ready + (a: "insert"))
(set: $waiting to $waiting - (a:"insert"))]
(if: ($finished contains "gunnels" and "roll" and "stem") and ($waiting contains "lash1"))
[(set: $ready to $ready + (a: "lash1"))
(set: $waiting to $waiting - (a:"lash1"))]
(if: ($finished contains "gunnels" and "roll" and "stem") and ($waiting contains "lash2"))
[(set: $ready to $ready + (a: "lash2"))
(set: $waiting to $waiting - (a:"lash2"))]
(if: ($finished contains "lash1" and "lash2" and "thwarts") and ($waiting contains "fit"))
[(set: $ready to $ready + (a: "fit"))
(set: $waiting to $waiting - (a:"fit"))]
(if: ($finished contains "sheathing" and "fit") and ($waiting contains "lay"))
[(set: $ready to $ready + (a: "lay"))
(set: $waiting to $waiting - (a:"lay"))]
(if: ($finished contains "lay" and "ribs") and ($waiting contains "slot"))
[(set: $ready to $ready + (a: "slot"))
(set: $waiting to $waiting - (a:"slot"))]
(if: ($finished contains "slot") and ($waiting contains "peg"))
[(set: $ready to $ready + (a: "peg"))
(set: $waiting to $waiting - (a:"peg"))]
(if: ($finished contains "sap" and "slot") and ($waiting contains "gum1"))
[(set: $ready to $ready + (a: "gum1"))
(set: $waiting to $waiting - (a:"gum1"))]
(if: ($finished contains "sap" and "peg") and ($waiting contains "gum2"))
[(set: $ready to $ready + (a: "gum2"))
(set: $waiting to $waiting - (a:"gum2"))]
}
time: $runTime
(goto: "P1"){(set: $started to it + (a: $selected))
(set: $ready to it - (a: $selected))
(set: $hours to (round: ($efficiency*3)))
(if: ($worker is "P1"))[(set: $P1next to it + $hours)(goto: "P2")]
(else-if: ($worker is "P2"))[(set: $P2next to it + $hours)(goto: "P3")]
(else:)[(set: $P3next to it + $hours)(goto:"advance")]}{(set: $started to it + (a: $selected))
(set: $ready to it - (a: $selected))
(set: $hours to (round: ($efficiency*7)))}
<img src="https://upload.wikimedia.org/wikipedia/commons/thumb/7/7f/Senden%2C_Venner_Moor_--_2020_--_6664.jpg/320px-Senden%2C_Venner_Moor_--_2020_--_6664.jpg" alt="birch tree" style="float:right">
You find a good birch tree to get bark from. If you take the bark slowly, it will eventually grow back and the tree will survive but it will add 3 hours to the task.
<hr>
Will you take bark [[quickly|all around]], or [[slowly|one side]]?{(set: $started to it + (a: $selected))
(set: $ready to it - (a: $selected))
(set: $hours to (round: ($efficiency*6)))
(if: ($worker is "P1"))[(set: $P1next to it + $hours)(goto: "P2")]
(else-if: ($worker is "P2"))[(set: $P2next to it + $hours)(goto: "P3")]
(else:)[(set: $P3next to it + $hours)(goto:"advance")]}All tasks completed with run time: $runTime
(if: $runtime <60)[(set: $code to (random: 50, 350) * 23 + 7)
Congratulations! You planned well.
Confirmation code: $code]
(else:)[Your mentor hopes you can plan better next time.]
<hr>
Try [[again|next]] or [[not]]?{(set: $started to it + (a: $selected))
(set: $ready to it - (a: $selected))
(set: $hours to (round: ($efficiency*9)))}
<img src="https://upload.wikimedia.org/wikipedia/commons/thumb/c/c2/Spruce_trees_at_our_campground_on_Lac_Jean_P%C3%A9r%C3%A9.jpg/180px-Spruce_trees_at_our_campground_on_Lac_Jean_P%C3%A9r%C3%A9.jpg" alt="spruce tree" style="float:right">
You find a spruce tree with good straight roots. If you take more than one root from the tree, you could kill it. But looking for more spruce trees will add 4 hours to the task.
<hr>
Do you dig for more roots from [[this tree]] or look for [[more trees]]?
{(set: $started to it + (a: $selected))
(set: $ready to it - (a: $selected))
(set: $hours to (round: ($efficiency*3)))
(if: ($worker is "P1"))[(set: $P1next to it + $hours)(goto: "P2")]
(else-if: ($worker is "P2"))[(set: $P2next to it + $hours)(goto: "P3")]
(else:)[(set: $P3next to it + $hours)(goto:"advance")]}{(set: $started to it + (a: $selected))
(set: $ready to it - (a: $selected))
(set: $hours to (round: ($efficiency*12)))
(if: $rootsExtra is true) [(goto: "help")]
(if: ($worker is "P1"))[(set: $P1next to it + $hours)(goto: "P2")]
(else-if: ($worker is "P2"))[(set: $P2next to it + $hours)(goto: "P3")]
(else:)[(set: $P3next to it + $hours)(goto:"advance")]}{(set: $started to it + (a: $selected))
(set: $ready to it - (a: $selected))
(set: $hours to (round: ($efficiency*4)))
(if: ($worker is "P1"))[(set: $P1next to it + $hours)(goto: "P2")]
(else-if: ($worker is "P2"))[(set: $P2next to it + $hours)(goto: "P3")]
(else:)[(set: $P3next to it + $hours)(goto:"advance")]}{(set: $started to it + (a: $selected))
(set: $ready to it - (a: $selected))
(set: $hours to (round: ($efficiency*6)))
(if: ($worker is "P1"))[(set: $P1next to it + $hours)(goto: "P2")]
(else-if: ($worker is "P2"))[(set: $P2next to it + $hours)(goto: "P3")]
(else:)[(set: $P3next to it + $hours)(goto:"advance")]}{(set: $started to it + (a: $selected))
(set: $ready to it - (a: $selected))
(set: $hours to (round: ($efficiency*7)))
(if: ($worker is "P1"))[(set: $P1next to it + $hours)(goto: "P2")]
(else-if: ($worker is "P2"))[(set: $P2next to it + $hours)(goto: "P3")]
(else:)[(set: $P3next to it + $hours)(goto:"advance")]}{(set: $started to it + (a: $selected))
(set: $ready to it - (a: $selected))
(set: $hours to (round: ($efficiency*5)))
(if: ($worker is "P1"))[(set: $P1next to it + $hours)(goto: "P2")]
(else-if: ($worker is "P2"))[(set: $P2next to it + $hours)(goto: "P3")]
(else:)[(set: $P3next to it + $hours)(goto:"advance")]}{(set: $started to it + (a: $selected))
(set: $ready to it - (a: $selected))
(if: $barkExtra is true) [(goto: "sharpen")]
(set: $hours to (round: ($efficiency*7)))
(if: ($worker is "P1"))[(set: $P1next to it + $hours)(goto: "P2")]
(else-if: ($worker is "P2"))[(set: $P2next to it + $hours)(goto: "P3")]
(else:)[(set: $P3next to it + $hours)(goto:"advance")]}{(set: $started to it + (a: $selected))
(set: $ready to it - (a: $selected))
(set: $hours to (round: ($efficiency*9)))
(if: ($worker is "P1"))[(set: $P1next to it + $hours)(goto: "P2")]
(else-if: ($worker is "P2"))[(set: $P2next to it + $hours)(goto: "P3")]
(else:)[(set: $P3next to it + $hours)(goto:"advance")]}{(set: $started to it + (a: $selected))
(set: $ready to it - (a: $selected))
(set: $hours to (round: ($efficiency*9)))
(if: ($worker is "P1"))[(set: $P1next to it + $hours)(goto: "P2")]
(else-if: ($worker is "P2"))[(set: $P2next to it + $hours)(goto: "P3")]
(else:)[(set: $P3next to it + $hours)(goto:"advance")]}{(set: $started to it + (a: $selected))
(set: $ready to it - (a: $selected))
(set: $hours to (round: ($efficiency*7)))
(if: ($worker is "P1"))[(set: $P1next to it + $hours)(goto: "P2")]
(else-if: ($worker is "P2"))[(set: $P2next to it + $hours)(goto: "P3")]
(else:)[(set: $P3next to it + $hours)(goto:"advance")]}{(set: $started to it + (a: $selected))
(set: $ready to it - (a: $selected))
(set: $hours to (round: ($efficiency*8)))
(if: ($worker is "P1"))[(set: $P1next to it + $hours)(goto: "P2")]
(else-if: ($worker is "P2"))[(set: $P2next to it + $hours)(goto: "P3")]
(else:)[(set: $P3next to it + $hours)(goto:"advance")]}{(set: $started to it + (a: $selected))
(set: $ready to it - (a: $selected))
(set: $hours to (round: ($efficiency*8)))
(if: ($worker is "P1"))[(set: $P1next to it + $hours)(goto: "P2")]
(else-if: ($worker is "P2"))[(set: $P2next to it + $hours)(goto: "P3")]
(else:)[(set: $P3next to it + $hours)(goto:"advance")]}{(set: $started to it + (a: $selected))
(set: $ready to it - (a: $selected))
(set: $hours to (round: ($efficiency*4)))
(if: ($worker is "P1"))[(set: $P1next to it + $hours)(goto: "P2")]
(else-if: ($worker is "P2"))[(set: $P2next to it + $hours)(goto: "P3")]
(else:)[(set: $P3next to it + $hours)(goto:"advance")]}{(set: $started to it + (a: $selected))
(set: $ready to it - (a: $selected))
(set: $hours to (round: ($efficiency*6)))
(if: ($worker is "P1"))[(set: $P1next to it + $hours)(goto: "P2")]
(else-if: ($worker is "P2"))[(set: $P2next to it + $hours)(goto: "P3")]
(else:)[(set: $P3next to it + $hours)(goto:"advance")]}{(set: $started to it + (a: $selected))
(set: $ready to it - (a: $selected))
(set: $hours to (round: ($efficiency*6)))
(if: ($worker is "P1"))[(set: $P1next to it + $hours)(goto: "P2")]
(else-if: ($worker is "P2"))[(set: $P2next to it + $hours)(goto: "P3")]
(else:)[(set: $P3next to it + $hours)(goto:"advance")]}{(set: $started to it + (a: $selected))
(set: $ready to it - (a: $selected))
(set: $hours to (round: ($efficiency*4)))
(if: ($worker is "P1"))[(set: $P1next to it + $hours)(goto: "P2")]
(else-if: ($worker is "P2"))[(set: $P2next to it + $hours)(goto: "P3")]
(else:)[(set: $P3next to it + $hours)(goto:"advance")]}{(set: $started to it + (a: $selected))
(set: $ready to it - (a: $selected))
(set: $hours to (round: ($efficiency*3)))
(if: ($worker is "P1"))[(set: $P1next to it + $hours)(goto: "P2")]
(else-if: ($worker is "P2"))[(set: $P2next to it + $hours)(goto: "P3")]
(else:)[(set: $P3next to it + $hours)(goto:"advance")]}{(set: $started to it + (a: $selected))
(set: $ready to it - (a: $selected))
(set: $hours to (round: ($efficiency*3)))
(if: ($worker is "P1"))[(set: $P1next to it + $hours)(goto: "P2")]
(else-if: ($worker is "P2"))[(set: $P2next to it + $hours)(goto: "P3")]
(else:)[(set: $P3next to it + $hours)(goto:"advance")]}(if: ($worker is "P1"))[(set: $P1next to it + 1)(goto: "P2")]
(else-if: ($worker is "P2"))[(set: $P2next to it + 1)(goto: "P3")])
(else:)[(set: $P3next to it + 1)(goto:"advance")]}(if: ($worker is "P1"))[(set: $P1next to it + $hours)(goto: "P2")]
(else-if: ($worker is "P2"))[(set: $P2next to it + $hours)(goto: "P3")]
(else:)[(set: $P3next to it + $hours)(goto:"advance")](set: $barkExtra to true, $hours to it + 3)
(if: ($worker is "P1"))[(set: $P1next to it + $hours)(goto: "P2")]
(else-if: ($worker is "P2"))[(set: $P2next to it + $hours)(goto: "P3")]
(else:)[(set: $P3next to it + $hours)(goto:"advance")](if: ($worker is "P1"))[(set: $P1next to it + $hours)(goto: "P2")]
(else-if: ($worker is "P2"))[(set: $P2next to it + $hours)(goto: "P3")]
(else:)[(set: $P3next to it + $hours)(goto:"advance")]}(set: $rootsExtra to true, $hours to it + 4)
(if: ($worker is "P1"))[(set: $P1next to it + $hours)(goto: "P2")]
(else-if: ($worker is "P2"))[(set: $P2next to it + $hours)(goto: "P3")]
(else:)[(set: $P3next to it + $hours)(goto:"advance")]}An elder sees you working. "Thank you for respecting the <i>gawatgug</i>. Let me help you with the watap," she says.
<hr>
[[continue|watap help]](set: $hours to it - 6)]
(if: ($worker is "P1"))[(set: $P1next to it + $hours)(goto: "P2")]
(else-if: ($worker is "P2"))[(set: $P2next to it + $hours)(goto: "P3")]
(else:)[(set: $P3next to it + $hours)(goto:"advance")]{(set: $efficiency to 0.9)}
An elder watches your work. "Thank you for respecting the <i>masqwi</i>. Let me help you by sharpening your tools," he says.
<hr>
[[continue|tools]](set: $hours to (round: ($efficiency*7)))
(if: ($worker is "P1"))[(set: $P1next to it + $hours)(goto: "P2")]
(else-if: ($worker is "P2"))[(set: $P2next to it + $hours)(goto: "P3")]
(else:)[(set: $P3next to it + $hours)(goto:"advance")]Ok, see you around.