汉诺塔交互演示
2012-05-31 13:27
本 GeoGebra 范例动态演示了经典的汉诺塔(Tower of Hanoi)数学谜题。用户可以通过界面交互或自动播放,观察将圆盘从一根柱子移动到另一根柱子的过程,同时需遵循大盘不能放在小盘之上的规则。范例中使用了序列(Sequence)命令来生成圆盘和柱子,并实时记录了当前移动步数与最优步数,直观展示了递归算法与指数增长的数学概念,适合用于算法逻辑与离散数学的教学。
所属专题
用GeoGebra制作数学游戏
<?xml version="1.0" encoding="utf-8"?>
<geogebra format="4.0" id="f1f19fe7-b798-4974-baf1-4612bb82b658" xsi:noNamespaceSchemaLocation="http://www.geogebra.org/ggb.xsd" xmlns="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
<gui>
<window width="768" height="654" />
<perspectives>
<perspective id="tmp">
<panes>
<pane location="" divider="0.32421875" orientation="1" />
</panes>
<views>
<view id="4" toolbar="0 || 2020 , 2021 , 2022 , 66 || 2001 , 2003 , 2002 , 2004 , 2005 || 2040 , 2041 , 2042 , 2044 , 2043" visible="false" inframe="false" stylebar="false" location="1,1" size="431" window="100,100,600,400" />
<view id="16" visible="false" inframe="false" stylebar="true" location="1,1" size="474" window="50,50,500,500" />
<view id="1" visible="true" inframe="false" stylebar="true" location="1" size="752" window="100,100,600,400" />
<view id="2" visible="false" inframe="false" stylebar="true" location="3" size="249" window="100,100,250,400" />
<view id="32" visible="false" inframe="true" stylebar="true" location="1" size="150" window="613,80,500,500" />
<view id="64" visible="false" inframe="true" stylebar="false" location="1" size="150" window="51,51,500,500" />
</views>
<toolbar show="true" items="0 39 59 || 1 501 67 , 5 19 , 72 | 2 15 45 , 18 65 , 7 37 | 4 3 8 9 , 13 44 , 58 , 47 || 16 51 64 , 70 | 10 34 53 11 , 24 20 22 , 21 23 | 55 56 57 , 12 || 36 46 , 38 49 50 , 71 | 30 29 54 32 31 33 | 17 26 62 73 , 14 66 68 | 25 52 60 61 || 40 41 42 , 27 28 35 , 6 | , " />
<input show="true" cmd="true" top="false" />
</perspective>
</perspectives>
<labelingStyle val="3"/>
<font size="14"/>
<graphicsSettings javaLatexFonts="false"/>
<consProtColumns col0="true" col1="true" col2="false" col3="true" col4="false" col5="true" col6="true" col7="false"/>
<consProtocol useColors="true" addIcons="false" showOnlyBreakpoints="false"/>
</gui>
<euclidianView>
<size width="752" height="483"/>
<coordSystem xZero="22.100000000000136" yZero="456.899999999999" scale="50.00000000000003" yscale="49.99999999999995"/>
<evSettings axes="false" grid="false" gridIsBold="false" pointCapturing="1" rightAngleStyle="1" checkboxSize="13" gridType="0"/>
<bgColor r="255" g="255" b="255"/>
<axesColor r="0" g="0" b="0"/>
<gridColor r="192" g="192" b="192"/>
<lineStyle axes="1" grid="10"/>
<axis id="0" show="false" label="" unitLabel="" tickStyle="1" showNumbers="true"/>
<axis id="1" show="false" label="" unitLabel="" tickStyle="1" showNumbers="true"/>
</euclidianView>
<kernel>
<continuous val="false"/>
<decimals val="2"/>
<angleUnit val="degree"/>
<algebraStyle val="0"/>
<coordStyle val="0"/>
<angleFromInvTrig val="false"/>
</kernel>
<scripting blocked="false" disabled="false"/>
<construction title="" author="" date="">
<expression label ="seqC" exp="{}"/>
<element type="list" label="seqC">
<objColor r="0" g="100" b="0" alpha="0.1"/>
<animation step="1" speed="1" type="0" playing="false"/>
<lineStyle thickness="2" type="0" typeHidden="1"/>
<pointSize val="3"/>
<pointStyle val="-1"/>
</element>
<expression label ="seqB" exp="{}"/>
<element type="list" label="seqB">
<objColor r="0" g="100" b="0" alpha="0.1"/>
<animation step="1" speed="1" type="0" playing="false"/>
<lineStyle thickness="2" type="0" typeHidden="1"/>
<pointSize val="3"/>
<pointStyle val="-1"/>
</element>
<expression label ="seqA" exp="{1, 2, 3, 4, 5}"/>
<element type="list" label="seqA">
<objColor r="0" g="100" b="0" alpha="0.1"/>
<animation step="1" speed="1" type="0" playing="false"/>
<lineStyle thickness="2" type="0" typeHidden="1"/>
<pointSize val="3"/>
<pointStyle val="-1"/>
</element>
<element type="button" label="button1">
<show object="true" label="true"/>
<objColor r="0" g="0" b="0" alpha="0.0"/>
<layer val="0"/>
<labelOffset x="23" y="15"/>
<labelMode val="0"/>
<animation step="1" speed="1" type="0" playing="false"/>
<auxiliary val="true"/>
<ggbscript val="seqA=CopyFreeObject[Sequence[num]] seqB={} seqC={} tmpA={} tmpB={} tmpC={} tmp={} steps=0"/>
<caption val="Reset"/>
</element>
<element type="numeric" label="num">
<value val="5.0"/>
<show object="true" label="true"/>
<objColor r="0" g="0" b="0" alpha="0.1"/>
<layer val="0"/>
<labelOffset x="12" y="6"/>
<labelMode val="2"/>
<tooltipMode val="3"/>
<slider min="2" max="13" width="3.5" x="1.8779999999999963" y="8.41799999999999" fixed="true" horizontal="true"/>
<lineStyle thickness="13" type="0" typeHidden="1"/>
<animation step="1" speed="1" type="0" playing="false"/>
<ggbscript onUpdate="seqA=CopyFreeObject[Sequence[num]] seqB={} seqC={} tmpA={} tmpB={} tmpC={} tmp={} steps=0"/>
<caption val="層數"/>
</element>
<command name="Sequence">
<input a0="Polygon[(2 - 2 * Element[seqA, i] / num, 4 * (Length[seqA] - i) / num), (2 + 2 * Element[seqA, i] / num, 4 * (Length[seqA] - i) / num), (2 + 2 * Element[seqA, i] / num, 4 * (Length[seqA] - i + 1) / num), (2 - 2 * Element[seqA, i] / num, 4 * (Length[seqA] - i + 1) / num)]" a1="i" a2="1" a3="Length[seqA]"/>
<output a0="discA"/>
</command>
<element type="list" label="discA">
<show object="true" label="false"/>
<objColor r="0" g="0" b="255" alpha="0.5"/>
<layer val="0"/>
<labelMode val="0"/>
<tooltipMode val="2"/>
<fixed val="true"/>
<selectionAllowed val="false"/>
<lineStyle thickness="13" type="0" typeHidden="1"/>
<pointSize val="3"/>
<pointStyle val="-1"/>
</element>
<command name="Sequence">
<input a0="Polygon[(12 - 2 * Element[seqC, i] / num, 4 * (Length[seqC] - i) / num), (12 + 2 * Element[seqC, i] / num, 4 * (Length[seqC] - i) / num), (12 + 2 * Element[seqC, i] / num, 4 * (Length[seqC] - i + 1) / num), (12 - 2 * Element[seqC, i] / num, 4 * (Length[seqC] - i + 1) / num)]" a1="i" a2="1" a3="Length[seqC]"/>
<output a0="discC"/>
</command>
<element type="list" label="discC">
<show object="true" label="false"/>
<objColor r="0" g="0" b="255" alpha="0.5"/>
<layer val="0"/>
<labelMode val="0"/>
<tooltipMode val="2"/>
<fixed val="true"/>
<selectionAllowed val="false"/>
<lineStyle thickness="13" type="0" typeHidden="1"/>
<pointSize val="3"/>
<pointStyle val="-1"/>
</element>
<command name="Sequence">
<input a0="Polygon[(7 - 2 * Element[seqB, i] / num, 4 * (Length[seqB] - i) / num), (7 + 2 * Element[seqB, i] / num, 4 * (Length[seqB] - i) / num), (7 + 2 * Element[seqB, i] / num, 4 * (Length[seqB] - i + 1) / num), (7 - 2 * Element[seqB, i] / num, 4 * (Length[seqB] - i + 1) / num)]" a1="i" a2="1" a3="Length[seqB]"/>
<output a0="discB"/>
</command>
<element type="list" label="discB">
<show object="true" label="false"/>
<objColor r="0" g="0" b="255" alpha="0.5"/>
<layer val="0"/>
<labelMode val="0"/>
<tooltipMode val="2"/>
<fixed val="true"/>
<selectionAllowed val="false"/>
<lineStyle thickness="13" type="0" typeHidden="1"/>
<pointSize val="3"/>
<pointStyle val="-1"/>
</element>
<expression label ="tmpA" exp="{}"/>
<element type="list" label="tmpA">
<objColor r="0" g="100" b="0" alpha="0.1"/>
<animation step="1" speed="1" type="0" playing="false"/>
<lineStyle thickness="2" type="0" typeHidden="1"/>
<pointSize val="3"/>
<pointStyle val="-1"/>
</element>
<expression label ="tmpB" exp="{}"/>
<element type="list" label="tmpB">
<objColor r="0" g="100" b="0" alpha="0.1"/>
<animation step="1" speed="1" type="0" playing="false"/>
<lineStyle thickness="2" type="0" typeHidden="1"/>
<pointSize val="3"/>
<pointStyle val="-1"/>
</element>
<expression label ="tmpC" exp="{}"/>
<element type="list" label="tmpC">
<show object="false" label="false"/>
<objColor r="0" g="100" b="0" alpha="0.1"/>
<layer val="0"/>
<labelMode val="0"/>
<animation step="1" speed="1" type="0" playing="false"/>
<lineStyle thickness="2" type="0" typeHidden="1"/>
<pointSize val="3"/>
<pointStyle val="-1"/>
</element>
<expression label ="tmp" exp="{}"/>
<element type="list" label="tmp">
<objColor r="0" g="100" b="0" alpha="0.1"/>
<animation step="1" speed="1" type="0" playing="false"/>
<lineStyle thickness="2" type="0" typeHidden="1"/>
<pointSize val="3"/>
<pointStyle val="-1"/>
</element>
<command name="Sequence">
<input a0="Polygon[(2 - 2 * Element[tmpA, i] / num, 5), (2 + 2 * Element[tmpA, i] / num, 5), (2 + 2 * Element[tmpA, i] / num, 5 + 4 / num), (2 - 2 * Element[tmpA, i] / num, 5 + 4 / num)]" a1="i" a2="1" a3="Length[tmpA]"/>
<output a0="discTA"/>
</command>
<element type="list" label="discTA">
<show object="true" label="false"/>
<objColor r="0" g="0" b="255" alpha="0.5"/>
<layer val="0"/>
<labelMode val="0"/>
<tooltipMode val="2"/>
<fixed val="true"/>
<selectionAllowed val="false"/>
<lineStyle thickness="13" type="0" typeHidden="1"/>
<pointSize val="3"/>
<pointStyle val="-1"/>
</element>
<command name="Sequence">
<input a0="Polygon[(7 - 2 * Element[tmpB, i] / num, 5), (7 + 2 * Element[tmpB, i] / num, 5), (7 + 2 * Element[tmpB, i] / num, 5 + 4 / num), (7 - 2 * Element[tmpB, i] / num, 5 + 4 / num)]" a1="i" a2="1" a3="Length[tmpB]"/>
<output a0="discTB"/>
</command>
<element type="list" label="discTB">
<show object="true" label="false"/>
<objColor r="0" g="0" b="255" alpha="0.5"/>
<layer val="0"/>
<labelMode val="0"/>
<tooltipMode val="2"/>
<fixed val="true"/>
<selectionAllowed val="false"/>
<lineStyle thickness="13" type="0" typeHidden="1"/>
<pointSize val="3"/>
<pointStyle val="-1"/>
</element>
<command name="Sequence">
<input a0="Polygon[(12 - 2 * Element[tmpC, i] / num, 5), (12 + 2 * Element[tmpC, i] / num, 5), (12 + 2 * Element[tmpC, i] / num, 5 + 4 / num), (12 - 2 * Element[tmpC, i] / num, 5 + 4 / num)]" a1="i" a2="1" a3="Length[tmpC]"/>
<output a0="discTC"/>
</command>
<element type="list" label="discTC">
<show object="true" label="false"/>
<objColor r="0" g="0" b="255" alpha="0.5"/>
<layer val="0"/>
<labelMode val="0"/>
<tooltipMode val="2"/>
<fixed val="true"/>
<selectionAllowed val="false"/>
<lineStyle thickness="13" type="0" typeHidden="1"/>
<pointSize val="3"/>
<pointStyle val="-1"/>
</element>
<expression label="regB" exp="{Polygon[(4.7, -0.1), (9.3, -0.1), (9, 4.3), (5, 4.3)]}" />
<element type="list" label="regB">
<show object="true" label="false"/>
<condition showObject="true"/>
<objColor r="0" g="100" b="0" alpha="0.1"/>
<layer val="1"/>
<labelMode val="0"/>
<tooltipMode val="3"/>
<fixed val="true"/>
<ggbscript val="steps=steps+If[Length[tmp]!=0&&(Min[tmp]<Min[seqB]||Length[seqB]==0)&&Length[tmpB]==0,1,0] seqB=CopyFreeObject[If[Length[tmp]==0||Min[tmp]>Min[seqB],seqB,Insert[Min[tmp],seqB,1]]] tmpA=CopyFreeObject[If[Length[tmp]==0||Min[tmp]>Min[seqB],tmpA,{}]] tmpB=CopyFreeObject[If[Length[tmp]==0||Min[tmp]>Min[seqB],tmpB,{}]] tmpC=CopyFreeObject[If[Length[tmp]==0||Min[tmp]>Min[seqB],tmpC,{}]] tmpB=CopyFreeObject[If[Length[tmp]!=0||Length[seqB]==0,tmpB,Insert[Min[seqB],tmpB,1]]] seqB=CopyFreeObject[If[Length[tmp]!=0||Length[seqB]==0,seqB,KeepIf[x>Min[seqB],seqB]]] tmp=CopyFreeObject[Join[{tmpA, tmpB, tmpC}]]"/>
<lineStyle thickness="0" type="0" typeHidden="1"/>
<ggbscript val="steps=steps+If[Length[tmp]!=0&&(Min[tmp]<Min[seqB]||Length[seqB]==0)&&Length[tmpB]==0,1,0] seqB=CopyFreeObject[If[Length[tmp]==0||Min[tmp]>Min[seqB],seqB,Insert[Min[tmp],seqB,1]]] tmpA=CopyFreeObject[If[Length[tmp]==0||Min[tmp]>Min[seqB],tmpA,{}]] tmpB=CopyFreeObject[If[Length[tmp]==0||Min[tmp]>Min[seqB],tmpB,{}]] tmpC=CopyFreeObject[If[Length[tmp]==0||Min[tmp]>Min[seqB],tmpC,{}]] tmpB=CopyFreeObject[If[Length[tmp]!=0||Length[seqB]==0,tmpB,Insert[Min[seqB],tmpB,1]]] seqB=CopyFreeObject[If[Length[tmp]!=0||Length[seqB]==0,seqB,KeepIf[x>Min[seqB],seqB]]] tmp=CopyFreeObject[Join[{tmpA, tmpB, tmpC}]]"/>
<pointSize val="3"/>
<pointStyle val="-1"/>
</element>
<expression label="regA" exp="{Polygon[(-0.3, -0.1), (4.3, -0.1), (4, 4.3), (0, 4.3)]}" />
<element type="list" label="regA">
<show object="true" label="false"/>
<condition showObject="true"/>
<objColor r="0" g="100" b="0" alpha="0.1"/>
<layer val="1"/>
<labelMode val="0"/>
<tooltipMode val="3"/>
<fixed val="true"/>
<ggbscript val="steps=steps+If[Length[tmp]!=0&&(Min[tmp]<Min[seqA]||Length[seqA]==0)&&Length[tmpA]==0,1,0] seqA=CopyFreeObject[If[Length[tmp]==0||Min[tmp]>Min[seqA],seqA,Insert[Min[tmp],seqA,1]]] tmpA=CopyFreeObject[If[Length[tmp]==0||Min[tmp]>Min[seqA],tmpA,{}]] tmpB=CopyFreeObject[If[Length[tmp]==0||Min[tmp]>Min[seqA],tmpB,{}]] tmpC=CopyFreeObject[If[Length[tmp]==0||Min[tmp]>Min[seqA],tmpC,{}]] tmpA=CopyFreeObject[If[Length[tmp]!=0||Length[seqA]==0,tmpA,Insert[Min[seqA],tmpA,1]]] seqA=CopyFreeObject[If[Length[tmp]!=0||Length[seqA]==0,seqA,KeepIf[x>Min[seqA],seqA]]] tmp=CopyFreeObject[Join[{tmpA, tmpB, tmpC}]]"/>
<lineStyle thickness="0" type="0" typeHidden="1"/>
<ggbscript val="steps=steps+If[Length[tmp]!=0&&(Min[tmp]<Min[seqA]||Length[seqA]==0)&&Length[tmpA]==0,1,0] seqA=CopyFreeObject[If[Length[tmp]==0||Min[tmp]>Min[seqA],seqA,Insert[Min[tmp],seqA,1]]] tmpA=CopyFreeObject[If[Length[tmp]==0||Min[tmp]>Min[seqA],tmpA,{}]] tmpB=CopyFreeObject[If[Length[tmp]==0||Min[tmp]>Min[seqA],tmpB,{}]] tmpC=CopyFreeObject[If[Length[tmp]==0||Min[tmp]>Min[seqA],tmpC,{}]] tmpA=CopyFreeObject[If[Length[tmp]!=0||Length[seqA]==0,tmpA,Insert[Min[seqA],tmpA,1]]] seqA=CopyFreeObject[If[Length[tmp]!=0||Length[seqA]==0,seqA,KeepIf[x>Min[seqA],seqA]]] tmp=CopyFreeObject[Join[{tmpA, tmpB, tmpC}]]"/>
<pointSize val="3"/>
<pointStyle val="-1"/>
</element>
<expression label="regC" exp="{Polygon[(9.7, -0.1), (14.3, -0.1), (14, 4.3), (10, 4.3)]}" />
<element type="list" label="regC">
<show object="true" label="false"/>
<condition showObject="true"/>
<objColor r="0" g="100" b="0" alpha="0.1"/>
<layer val="1"/>
<labelMode val="0"/>
<tooltipMode val="3"/>
<fixed val="true"/>
<ggbscript val="steps=steps+If[Length[tmp]!=0&&(Min[tmp]<Min[seqC]||Length[seqC]==0)&&Length[tmpC]==0,1,0] seqC=CopyFreeObject[If[Length[tmp]==0||Min[tmp]>Min[seqC],seqC,Insert[Min[tmp],seqC,1]]] tmpA=CopyFreeObject[If[Length[tmp]==0||Min[tmp]>Min[seqC],tmpA,{}]] tmpB=CopyFreeObject[If[Length[tmp]==0||Min[tmp]>Min[seqC],tmpB,{}]] tmpC=CopyFreeObject[If[Length[tmp]==0||Min[tmp]>Min[seqC],tmpC,{}]] tmpC=CopyFreeObject[If[Length[tmp]!=0||Length[seqC]==0,tmpC,Insert[Min[seqC],tmpC,1]]] seqC=CopyFreeObject[If[Length[tmp]!=0||Length[seqC]==0,seqC,KeepIf[x>Min[seqC],seqC]]] tmp=CopyFreeObject[Join[{tmpA, tmpB, tmpC}]]"/>
<lineStyle thickness="0" type="0" typeHidden="1"/>
<ggbscript val="steps=steps+If[Length[tmp]!=0&&(Min[tmp]<Min[seqC]||Length[seqC]==0)&&Length[tmpC]==0,1,0] seqC=CopyFreeObject[If[Length[tmp]==0||Min[tmp]>Min[seqC],seqC,Insert[Min[tmp],seqC,1]]] tmpA=CopyFreeObject[If[Length[tmp]==0||Min[tmp]>Min[seqC],tmpA,{}]] tmpB=CopyFreeObject[If[Length[tmp]==0||Min[tmp]>Min[seqC],tmpB,{}]] tmpC=CopyFreeObject[If[Length[tmp]==0||Min[tmp]>Min[seqC],tmpC,{}]] tmpC=CopyFreeObject[If[Length[tmp]!=0||Length[seqC]==0,tmpC,Insert[Min[seqC],tmpC,1]]] seqC=CopyFreeObject[If[Length[tmp]!=0||Length[seqC]==0,seqC,KeepIf[x>Min[seqC],seqC]]] tmp=CopyFreeObject[Join[{tmpA, tmpB, tmpC}]]"/>
<pointSize val="3"/>
<pointStyle val="-1"/>
</element>
<expression label="text1" exp=""Excellent!""/>
<element type="text" label="text1">
<show object="false" label="false"/>
<condition showObject="(seqB ≟ Sequence[num] ∨ seqC ≟ Sequence[num]) ∧ (steps > best)"/>
<objColor r="255" g="0" b="0" alpha="0.0"/>
<layer val="0"/>
<labelMode val="0"/>
<tooltipMode val="2"/>
<fixed val="true"/>
<selectionAllowed val="false"/>
<font serif="false" size="64" style="1"/>
<startPoint x="3.059999999999998" y="5.38" z="1.0"/>
</element>
<element type="numeric" label="steps">
<value val="0.0"/>
<show object="false" label="false"/>
<objColor r="0" g="0" b="0" alpha="0.1"/>
<layer val="0"/>
<labelMode val="1"/>
<slider min="0" max="10000" absoluteScreenLocation="true" width="100.0" x="30.0" y="90.0" fixed="false" horizontal="true"/>
<lineStyle thickness="2" type="0" typeHidden="1"/>
<animation step="1" speed="1" type="0" playing="false"/>
<selectionAllowed val="false"/>
</element>
<expression label="best" exp="2^(num) - 1" />
<element type="numeric" label="best">
<value val="31.0"/>
<objColor r="0" g="0" b="0" alpha="0.1"/>
</element>
<expression label="text3" exp=""Perfect!""/>
<element type="text" label="text3">
<show object="true" label="false"/>
<condition showObject="(seqB ≟ Sequence[num] ∨ seqC ≟ Sequence[num]) ∧ steps ≟ best"/>
<objColor r="255" g="0" b="0" alpha="0.0"/>
<layer val="0"/>
<labelMode val="0"/>
<tooltipMode val="2"/>
<fixed val="true"/>
<selectionAllowed val="false"/>
<font serif="false" size="64" style="1"/>
<startPoint x="4.064000000000008" y="5.384000000000022" z="1.0"/>
</element>
<expression label="text2" exp=""\ovalbox{已經移動 \; " + (LaTeX[steps]) + " \; 次}"" />
<element type="text" label="text2">
<show object="true" label="false"/>
<objColor r="0" g="0" b="153" alpha="0.0"/>
<layer val="0"/>
<labelMode val="0"/>
<tooltipMode val="2"/>
<fixed val="true"/>
<isLaTeX val="true"/>
<font serif="true" size="0" style="1"/>
<startPoint x="6.077999999999994" y="8.957999999999991" z="1.0"/>
</element>
<expression label="text4" exp=""\ovalbox{最佳解為" + (LaTeX[best]) + "次}"" />
<element type="text" label="text4">
<show object="true" label="false"/>
<objColor r="0" g="0" b="153" alpha="0.0"/>
<layer val="0"/>
<labelMode val="0"/>
<tooltipMode val="2"/>
<fixed val="true"/>
<isLaTeX val="true"/>
<font serif="true" size="0" style="1"/>
<startPoint x="10.057999999999993" y="8.937999999999992" z="1.0"/>
</element>
<expression label="plate" exp="{Polygon[(-0.3, -0.3), (14.3, -0.3), (14.3, -0.1), (-0.3, -0.1)]}" />
<element type="list" label="plate">
<show object="true" label="false"/>
<objColor r="153" g="102" b="0" alpha="1.0"/>
<layer val="0"/>
<labelMode val="0"/>
<tooltipMode val="2"/>
<fixed val="true"/>
<selectionAllowed val="false"/>
<lineStyle thickness="5" type="0" typeHidden="1"/>
<pointSize val="3"/>
<pointStyle val="-1"/>
</element>
<expression label="stickA" exp="{Polygon[(1.9, 4 * Length[seqA] / num + 0.1), (2.1, 4 * Length[seqA] / num + 0.1), (2.1, 4.5), (1.9, 4.5)], If[Length[seqA] ≟ 0, Polygon[(1.9, -0.1), (2.1, -0.1), (2.1, 0.1), (1.9, 0.1)]]}" />
<element type="list" label="stickA">
<show object="true" label="false"/>
<objColor r="153" g="102" b="0" alpha="1.0"/>
<layer val="0"/>
<labelMode val="0"/>
<tooltipMode val="2"/>
<fixed val="true"/>
<selectionAllowed val="false"/>
<lineStyle thickness="5" type="0" typeHidden="1"/>
<pointSize val="3"/>
<pointStyle val="-1"/>
</element>
<expression label="stickB" exp="{Polygon[(5 + 1.9, 4 * Length[seqB] / num + 0.1), (5 + 2.1, 4 * Length[seqB] / num + 0.1), (7.1, 4.5), (6.9, 4.5)], If[Length[seqB] ≟ 0, Polygon[(6.9, -0.1), (7.1, -0.1), (7.1, 0.1), (6.9, 0.1)]]}" />
<element type="list" label="stickB">
<show object="true" label="false"/>
<objColor r="153" g="102" b="0" alpha="1.0"/>
<layer val="0"/>
<labelMode val="0"/>
<tooltipMode val="2"/>
<fixed val="true"/>
<selectionAllowed val="false"/>
<lineStyle thickness="5" type="0" typeHidden="1"/>
<pointSize val="3"/>
<pointStyle val="-1"/>
</element>
<expression label="stickC" exp="{Polygon[(10 + 1.9, 4 * Length[seqC] / num + 0.1), (10 + 2.1, 4 * Length[seqC] / num + 0.1), (12.1, 4.5), (11.9, 4.5)], If[Length[seqC] ≟ 0, Polygon[(11.9, -0.1), (12.1, -0.1), (12.1, 0.1), (11.9, 0.1)]]}" />
<element type="list" label="stickC">
<show object="true" label="false"/>
<objColor r="153" g="102" b="0" alpha="1.0"/>
<layer val="0"/>
<labelMode val="0"/>
<tooltipMode val="2"/>
<fixed val="true"/>
<selectionAllowed val="false"/>
<lineStyle thickness="5" type="0" typeHidden="1"/>
<pointSize val="3"/>
<pointStyle val="-1"/>
</element>
</construction>
</geogebra>