<snapdata remixID="11989236"><project name="sleep sort" app="Snap! 11.0.8, https://snap.berkeley.edu" version="2"><notes>In general, sleep sort works by starting a separate task for each item to be sorted, where each task sleeps for an interval corresponding to the item&apos;s sort key, then emits the item. Items are then collected sequentially in time.&#xD;&#xD;Only positive integers</notes><thumbnail>data:image/png;base64,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</thumbnail><scenes select="1"><scene name="sleep sort"><notes>In general, sleep sort works by starting a separate task for each item to be sorted, where each task sleeps for an interval corresponding to the item&apos;s sort key, then emits the item. Items are then collected sequentially in time.&#xD;&#xD;Only positive integers</notes><hidden></hidden><headers></headers><code></code><blocks><block-definition s="sort number %&apos;number&apos;" type="command" category="variables"><header></header><code></code><translations></translations><inputs><input type="%n"></input></inputs><script><block s="fork"><block s="reifyScript"><script><block s="doWait"><block var="#1"/></block><block s="doAddToList"><block var="#1"/><block var="result"/></block></script><list><l>#1</l></list></block><list><block var="number"/></list></block></script><scripts><script x="443.5714285714286" y="89.1904761904762"><block var="a"/></script></scripts></block-definition><block-definition s="simple message %&apos;message&apos;" type="command" category="looks"><comment x="0" y="0" w="90" collapsed="false">By Loucheman</comment><header></header><code></code><translations></translations><inputs><input type="%mlt">This is a message !</input></inputs><script><custom-block s="save all sprite properties"></custom-block><block s="show"></block><block s="setEffect"><l><option>ghost</option></l><l>100</l></block><block s="gotoXY"><l>-60</l><l>-30</l></block><block s="doSwitchToCostume"><l><option>Turtle</option></l></block><block s="bubble"><block s="reportJoinWords"><list><block var="message"/><block s="reportUnicodeAsLetter"><l>10</l></block><block s="reportUnicodeAsLetter"><l>10</l></block><l>(Clic to continue)</l></list></block></block><block s="goToLayer"><l><option>front</option></l></block><block s="doWaitUntil"><block s="reportVariadicAnd"><list><block s="reportMouseDown"></block><custom-block s="On Stage position: %l"><block s="reportNewList"><list><block s="reportMouseX"></block><block s="reportMouseY"></block></list></block></custom-block></list></block></block><block s="doWaitUntil"><block s="reportNot"><block s="reportMouseDown"></block></block></block><custom-block s="restore all saved sprite properties keep vars? %b"><l><bool>false</bool></l></custom-block><block s="bubble"><l></l></block></script></block-definition><block-definition s="On Stage position: %&apos;position&apos;" type="predicate" category="sensing"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doIfElse"><block s="reportVariadicAnd"><list><block s="reportVariadicAnd"><list><block s="reportVariadicGreaterThan"><list><block s="reportListItem"><l>1</l><block var="position"/></block><block s="reportMonadic"><l><option>neg</option></l><block s="reportQuotient"><block s="reportListItem"><l>1</l><custom-block s="stage size"></custom-block></block><l>2</l></block></block></list></block><block s="reportVariadicLessThan"><list><block s="reportListItem"><l>1</l><block var="position"/></block><block s="reportQuotient"><block s="reportListItem"><l>1</l><custom-block s="stage size"></custom-block></block><l>2</l></block></list></block></list></block><block s="reportVariadicAnd"><list><block s="reportVariadicGreaterThan"><list><block s="reportListItem"><l>2</l><block var="position"/></block><block s="reportMonadic"><l><option>neg</option></l><block s="reportQuotient"><block s="reportListItem"><l>2</l><custom-block s="stage size"></custom-block></block><l>2</l></block></block></list></block><block s="reportVariadicLessThan"><list><block s="reportListItem"><l>2</l><block var="position"/></block><block s="reportQuotient"><block s="reportListItem"><l>2</l><custom-block s="stage size"></custom-block></block><l>2</l></block></list></block></list></block></list></block><script><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></l></block></block></script><script><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></block></block></script></block></script></block-definition><block-definition s="stage size" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportNewList"><list><block s="reportAttributeOf"><l><option>width</option></l><block s="reportGet"><l><option>stage</option></l></block></block><block s="reportAttributeOf"><l><option>height</option></l><block s="reportGet"><l><option>stage</option></l></block></block></list></block></block></script></block-definition><block-definition s="restore all saved sprite properties keep vars? %&apos;KeepVars&apos;" type="command" category="other"><header></header><code></code><translations></translations><inputs><input type="%b">false</input></inputs><script><block s="doIf"><custom-block s="does var %s exist?"><l>@SaveShown</l></custom-block><script><block s="doIfElse"><block var="@SaveShown"/><script><block s="show"></block></script><script><block s="hide"></block></script></block></script><list></list></block><block s="doIf"><custom-block s="does var %s exist?"><l>@SaveX</l></custom-block><script><block s="setXPosition"><block var="@SaveX"/></block></script><list></list></block><block s="doIf"><custom-block s="does var %s exist?"><l>@SaveY</l></custom-block><script><block s="setYPosition"><block var="@SaveY"/></block></script><list></list></block><block s="doIf"><custom-block s="does var %s exist?"><l>@SaveDir</l></custom-block><script><block s="setHeading"><block var="@SaveDir"/></block></script><list></list></block><block s="doIf"><custom-block s="does var %s exist?"><l>@SaveCostume</l></custom-block><script><block s="doSwitchToCostume"><block var="@SaveCostume"/></block></script><list></list></block><block s="doIf"><custom-block s="does var %s exist?"><l>@SaveGhostEffect</l></custom-block><script><block s="setEffect"><l><option>ghost</option></l><block var="@SaveGhostEffect"/></block></script><list></list></block><block s="doIf"><custom-block s="does var %s exist?"><l>@SaveColor</l></custom-block><script><block s="setEffect"><l><option>color</option></l><block var="@SaveColor"/></block></script><list></list></block><block s="doIf"><custom-block s="does var %s exist?"><l>@SaveSaturation</l></custom-block><script><block s="setEffect"><l><option>saturation</option></l><block var="@SaveSaturation"/></block></script><list></list></block><block s="doIf"><custom-block s="does var %s exist?"><l>@SaveBrightness</l></custom-block><script><block s="setEffect"><l><option>brightness</option></l><block var="@SaveBrightness"/></block></script><list></list></block><block s="doIf"><custom-block s="does var %s exist?"><l>@SaveFisheye</l></custom-block><script><block s="setEffect"><l><option>fisheye</option></l><block var="@SaveFisheye"/></block></script><list></list></block><block s="doIf"><custom-block s="does var %s exist?"><l>@SaveWhirl</l></custom-block><script><block s="setEffect"><l><option>whirl</option></l><block var="@SaveWhirl"/></block></script><list></list></block><block s="doIf"><custom-block s="does var %s exist?"><l>@SaveNegative</l></custom-block><script><block s="setEffect"><l><option>negative</option></l><block var="@SaveNegative"/></block></script><list></list></block><block s="doIf"><custom-block s="does var %s exist?"><l>@SaveMosaic</l></custom-block><script><block s="setEffect"><l><option>mosaic</option></l><block var="@SaveMosaic"/></block></script><list></list></block><block s="doIf"><custom-block s="does var %s exist?"><l>@SavePixelate</l></custom-block><script><block s="setEffect"><l><option>pixelate</option></l><block var="@SavePixelate"/></block></script><list></list></block><block s="fork"><block s="reifyScript"><script><block s="doIf"><block s="reportNot"><block var="KeepVars"/></block><script><custom-block s="delete var %txt"><l>@SaveShown</l></custom-block><custom-block s="delete var %txt"><l>@SaveX</l></custom-block><custom-block s="delete var %txt"><l>@SaveY</l></custom-block><custom-block s="delete var %txt"><l>@SaveDir</l></custom-block><custom-block s="delete var %txt"><l>@SaveCostume</l></custom-block><custom-block s="delete var %txt"><l>@SaveGhostEffect</l></custom-block><custom-block s="delete var %txt"><l>@SaveColor</l></custom-block><custom-block s="delete var %txt"><l>@SaveSaturation</l></custom-block><custom-block s="delete var %txt"><l>@SaveBrightness</l></custom-block><custom-block s="delete var %txt"><l>@SaveFisheye</l></custom-block><custom-block s="delete var %txt"><l>@SaveWhirl</l></custom-block><custom-block s="delete var %txt"><l>@SaveNegative</l></custom-block><custom-block s="delete var %txt"><l>@SaveMosaic</l></custom-block><custom-block s="delete var %txt"><l>@SavePixelate</l></custom-block></script><list></list></block></script><list></list></block><list></list></block></script></block-definition><block-definition s="does var %&apos;_name&apos; exist?" type="predicate" category="variables"><comment x="0" y="0" w="146" collapsed="false">This block reports &quot;true&quot; if there is a variable with this given name (input slot) in that context.&#xD;&#xD;It can be a global, sprite or script variable.&#xD;&#xD;Otherwise it reports &quot;false&quot;.</comment><header></header><code></code><translations>pt:a variável _ existe&#xD;ca:existeix la variable _ ?&#xD;es:existe la variable _ ?&#xD;de:existiert var _ ?&#xD;</translations><inputs><input type="%s"></input></inputs><script><block s="doApplyExtension"><l>err_try(cmd, catch, err)</l><list><block s="reifyScript"><script><block s="doApplyExtension"><l>err_ignore</l><list><block s="reportApplyExtension"><l>var_get(name)</l><list><block var="_name"/></list></block></list></block><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></l></block></block></script><list></list></block><block s="reifyScript"><script><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></block></block></script><list></list></block><l></l></list></block><block s="doApplyExtension"><l>err_reset</l><list></list></block></script></block-definition><block-definition s="delete var %&apos;var&apos;" type="command" category="variables"><header></header><code></code><translations></translations><inputs><input type="%txt">MySpriteVar</input></inputs><script><block s="doApplyExtension"><l>var_delete(name)</l><list><block var="var"/></list></block></script></block-definition><block-definition s="save all sprite properties" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><custom-block s="create sprite var %txt defaut %s"><l>@SaveShown</l><block s="reportShown"></block></custom-block><custom-block s="create sprite var %txt defaut %s"><l>@SaveX</l><block s="xPosition"></block></custom-block><custom-block s="create sprite var %txt defaut %s"><l>@SaveY</l><block s="yPosition"></block></custom-block><custom-block s="create sprite var %txt defaut %s"><l>@SaveDir</l><block s="direction"></block></custom-block><custom-block s="create sprite var %txt defaut %s"><l>@SaveCostume</l><block s="getCostumeIdx"></block></custom-block><custom-block s="create sprite var %txt defaut %s"><l>@SaveGhostEffect</l><block s="getEffect"><l><option>ghost</option></l></block></custom-block><custom-block s="create sprite var %txt defaut %s"><l>@SaveColor</l><block s="getEffect"><l><option>color</option></l></block></custom-block><custom-block s="create sprite var %txt defaut %s"><l>@SaveSaturation</l><block s="getEffect"><l><option>saturation</option></l></block></custom-block><custom-block s="create sprite var %txt defaut %s"><l>@SaveBrightness</l><block s="getEffect"><l><option>brightness</option></l></block></custom-block><custom-block s="create sprite var %txt defaut %s"><l>@SaveFisheye</l><block s="getEffect"><l><option>fisheye</option></l></block></custom-block><custom-block s="create sprite var %txt defaut %s"><l>@SaveWhirl</l><block s="getEffect"><l><option>whirl</option></l></block></custom-block><custom-block s="create sprite var %txt defaut %s"><l>@SaveNegative</l><block s="getEffect"><l><option>negative</option></l></block></custom-block><custom-block s="create sprite var %txt defaut %s"><l>@SaveMosaic</l><block s="getEffect"><l><option>mosaic</option></l></block></custom-block><custom-block s="create sprite var %txt defaut %s"><l>@SavePixelate</l><block s="getEffect"><l><option>pixelate</option></l></block></custom-block></script></block-definition><block-definition s="create sprite var %&apos;var&apos; defaut %&apos;defaut&apos;" type="command" category="variables"><header></header><code></code><translations></translations><inputs><input type="%txt">MySpriteVar</input><input type="%s"></input></inputs><script><block s="doIf"><block s="reportNot"><custom-block s="does var %s exist?"><block var="var"/></custom-block></block><script><custom-block s="create %s var %mult%txt"><l>sprite</l><list><block var="var"/></list></custom-block></script><list></list></block><custom-block s="set var %s to %s"><block var="var"/><block var="defaut"/></custom-block></script></block-definition><block-definition s="create %&apos;_scope&apos; var %&apos;_names&apos;" type="command" category="variables"><comment x="0" y="0" w="146" collapsed="false">This block creates  new variables on the selected scope: global (for all sprites), sprite (for this sprite only) or script (only for that blocks stack) with the names given (in &apos;names&apos; list).&#xD;&#xD;If there is already a variable with that name in that scope, it does nothing: no errors and no overwrites.</comment><header></header><code></code><translations>pt:cria as variáveis _ _&#xD;ca:crea les _ variables _&#xD;es:crear las _ variables _&#xD;de:erstellen _ var _&#xD;</translations><inputs><input type="%s" readonly="true">global<options>global&#xD;sprite&#xD;script</options></input><input type="%mult%txt"></input></inputs><script><block s="doWarp"><script><block s="doForEach"><l>_item</l><block var="_names"/><script><block s="doApplyExtension"><l>var_declare(scope, name)</l><list><block var="_scope"/><block var="_item"/></list></block></script></block></script></block></script></block-definition><block-definition s="set var %&apos;_name&apos; to %&apos;_value&apos;" type="command" category="variables"><comment x="0" y="0" w="240.4931640625" collapsed="false">This block sets the given value (last input) to the variable named with the name givent (var input).&#xD;&#xD;It looks for that variable following the scope order &apos;script&apos; -&gt; &apos;sprite&apos; -&gt; &apos;global&apos; (the first match it finds).&#xD;&#xD;If that variable does not exist (in any scope) an error happens, stopping their script. You can check it before using the &quot;does var (name) exists?&quot; block. </comment><header></header><code></code><translations>ca:assigna a _ el valor _&#xD;es:asignar a _ el valor _&#xD;pt:altera _ para _&#xD;de:setze var _ auf _&#xD;</translations><inputs><input type="%s"><options>§_getVarNamesDict</options></input><input type="%s"></input></inputs><script><block s="doApplyExtension"><l>var_set(name, val)</l><list><block var="_name"/><block var="_value"/></list></block></script></block-definition><block-definition s="catch %&apos;tag&apos; %&apos;action&apos;" type="command" category="control"><header></header><code></code><translations>de:fange _ _&#xD;ca:agafa _ _&#xD;es:atrapar _ _&#xD;fr:attrape _ _&#xD;pt:captura _ _&#xD;pl:przechwyć _ _&#xD;</translations><inputs><input type="%upvar"></input><input type="%cs"></input></inputs><script><custom-block s="run %cmdRing with continuation"><block s="reifyScript"><script><block s="doSetVar"><l>tag</l><block var="cont"/></block><block s="doRun"><block var="action"/><list></list></block></script><list><l>cont</l></list></block></custom-block></script></block-definition><block-definition s="throw %&apos;cont&apos;" type="command" category="control"><header></header><code></code><translations>de:wirf _&#xD;ca:llança _&#xD;es:lanzar _&#xD;fr:lance _&#xD;pt:lança _&#xD;pl:wyrzuć _&#xD;</translations><inputs><input type="%s">catchtag</input></inputs><script><block s="doRun"><block var="cont"/><list></list></block></script></block-definition><block-definition s="catch %&apos;tag&apos; %&apos;value&apos;" type="reporter" category="control"><header></header><code></code><translations>de:fange _ _&#xD;ca:agafa _ _&#xD;es:atrapar _ _&#xD;fr:attrape _ _&#xD;pt:captura _ _&#xD;pl:przechwyć _ _&#xD;</translations><inputs><input type="%upvar"></input><input type="%anyUE"></input></inputs><script><custom-block s="run %cmdRing with continuation"><block s="reifyScript"><script><block s="doSetVar"><l>tag</l><block var="cont"/></block><block s="doReport"><block s="evaluate"><block var="value"/><list></list></block></block></script><list><l>cont</l></list></block></custom-block></script></block-definition><block-definition s="throw %&apos;tag&apos; %&apos;value&apos;" type="command" category="control"><header></header><code></code><translations>de:wirf _ _&#xD;ca:llança _ _&#xD;es:lanzar _ _&#xD;fr:lance _ _&#xD;pt:lança _ _&#xD;pl:wyrzuć _ _&#xD;</translations><inputs><input type="%s">catchtag</input><input type="%s"></input></inputs><script><block s="doRun"><block var="tag"/><list><block var="value"/></list></block></script></block-definition><block-definition s="if %&apos;test&apos; do %&apos;action&apos; and pause all $pause-1-255-220-0" type="command" category="control"><comment x="0" y="0" w="263.3333333333333" collapsed="false">This is a breakpoint block, to be used in debugging.&#xD;The Boolean input specifies the condition under which&#xD;the program should pause.  (Use True for an unconditional breakpoint.)  The intent is that the script should have&#xD;SHOW VARIABLE blocks for the process&apos;s local variables.&#xD;After the pause, this block automatically hides all temporary variables.</comment><header></header><code></code><translations>de:falls _ dann _ und pause $pause-1-255-220-0&#xD;ca:si _ fes _ i atura-ho tot $pause-1-255-220-0&#xD;es:si _ haz _ y páralo todo $pause-1-255-220-0&#xD;fr:si _ faire _ et mettre tout en pause $pause-1-255-220-0&#xD;pt:se _ , então _ e faz pausa em tudo $pause-1-255-220-0&#xD;pl:jeżeli _ wykonaj _ i pauzuj wszystko $pause-1-255-220-0&#xD;</translations><inputs><input type="%boolUE"></input><input type="%cs"></input></inputs><script><block s="doDeclareVariables"><list><l>breakpoint</l></list></block><block s="doIf"><block s="evaluate"><block var="test"/><list></list></block><script><block s="doSetVar"><l>breakpoint</l><block var="test"/></block><block s="doShowVar"><l>breakpoint</l></block><block s="doRun"><block var="action"/><list></list></block><block s="doPauseAll"></block><block s="doHideVar"><l></l></block></script><list></list></block></script></block-definition><block-definition s="ignore %&apos;x&apos;" type="command" category="control"><comment x="0" y="0" w="206.66666666666666" collapsed="false">This block does nothing.&#xD;Use it when you are calling a reporter&#xD;for its side effect and don&apos;t care about&#xD;its return value.</comment><header></header><code></code><translations>de:ignoriere _&#xD;ca:ignora _&#xD;es:ignorar _&#xD;fr:ignore _&#xD;pt:ignora _&#xD;pl:ignoruj _&#xD;</translations><inputs><input type="%s"></input></inputs></block-definition><block-definition s="cascade %&apos;num&apos; times %&apos;function&apos; %&apos;init&apos; %&apos;#&apos;" type="reporter" category="control"><comment x="0" y="0" w="138" collapsed="false">Call f(f(f(...(f(x))))) n times where the three input slots are n, f, and x from left to right.  The # variable can be used inside f to represent how many times f has been called.</comment><header></header><code></code><translations>pt:o resultado de _ invocações em cascata de _ com argumento inicial _ _&#xD;ca:en cascada _ vegades _ _ _&#xD;pl:kaskada _ razy _ _ _&#xD;</translations><inputs><input type="%n"></input><input type="%repRing"></input><input type="%s"></input><input type="%upvar"></input></inputs><script><block s="doDeclareVariables"><list><l>result</l></list></block><block s="doSetVar"><l>result</l><block var="init"/></block><block s="doSetVar"><l>#</l><l>0</l></block><block s="doRepeat"><block var="num"/><script><block s="doChangeVar"><l>#</l><l>1</l></block><block s="doSetVar"><l>result</l><block s="evaluate"><block var="function"/><list><block var="result"/></list></block></block></script></block><block s="doReport"><block var="result"/></block></script></block-definition><block-definition s="cascade until %&apos;pred&apos; %&apos;function&apos; %&apos;init&apos; %&apos;#&apos;" type="reporter" category="control"><comment x="0" y="0" w="210.47493489583334" collapsed="false">Call f(f(f(...(f(x))))) until condition is true, where the three input slots are condition, f, and x from left to right.  The # variable can be used inside f or condition to indicate how many times f has been called.</comment><header></header><code></code><translations>pt:o resultado da invocação em cascata até que _ de _ com argumento inicial _ _&#xD;ca:en cascada fins _ _ _ _&#xD;pl:kaskada aż _ _ _ _&#xD;</translations><inputs><input type="%predRing"></input><input type="%repRing"></input><input type="%s"></input><input type="%upvar"></input></inputs><script><block s="doDeclareVariables"><list><l>result</l></list></block><block s="doSetVar"><l>result</l><block var="init"/></block><block s="doSetVar"><l>#</l><l>0</l></block><block s="doUntil"><block s="evaluate"><block var="pred"/><list><block var="result"/></list></block><script><block s="doChangeVar"><l>#</l><l>1</l></block><block s="doSetVar"><l>result</l><block s="evaluate"><block var="function"/><list><block var="result"/></list></block></block></script></block><block s="doReport"><block var="result"/></block></script></block-definition><block-definition s="compose %&apos;f&apos; %&apos;g&apos;" type="reporter" category="control"><comment x="0" y="0" w="151.33333333333334" collapsed="false">Returns the function x↦f(g(x)) where f and g are the two inputs.</comment><header></header><code></code><translations>pt:a composição de _ com _&#xD;ca:composa _ _&#xD;pl:skomponuj _ _&#xD;</translations><inputs><input type="%repRing"></input><input type="%repRing"></input></inputs><script><block s="doReport"><block s="reifyReporter"><autolambda><block s="evaluate"><block var="f"/><list><block s="evaluate"><block var="g"/><list><l></l></list></block></list></block></autolambda><list></list></block></block></script></block-definition><block-definition s="repeat %&apos;action&apos; until %&apos;pred&apos;" type="command" category="control"><comment x="0" y="0" w="202.66666666666666" collapsed="false">Like the built-in REPEAT UNTIL block, except that the ending condition is not tested until the script has been run the first time.  So the script is run at least once.</comment><header></header><code></code><translations>pt:repete _ até que _ $loop-0.7&#xD;ca:repeteix _ fins _&#xD;pl:powtarzaj _ aż _&#xD;</translations><inputs><input type="%cs"></input><input type="%boolUE"></input></inputs><script><block s="doRun"><block var="action"/><list></list></block><block s="doUntil"><block s="evaluate"><block var="pred"/><list></list></block><script><block s="doRun"><block var="action"/><list></list></block></script></block></script></block-definition><block-definition s="repeat %&apos;action&apos; while %&apos;pred&apos;" type="command" category="control"><comment x="0" y="0" w="287.3333333333333" collapsed="false">Run the script repeatedly, as long as the given condition is true.  Runs the script at least once before testing the condition.</comment><header></header><code></code><translations>pt:repete _ enquanto _ $loop-0.7&#xD;ca:repeteix _ mentre _&#xD;pl:powtarzaj _ gdy _&#xD;</translations><inputs><input type="%cs"></input><input type="%boolUE"></input></inputs><script><block s="doRun"><block var="action"/><list></list></block><block s="doUntil"><block s="reportNot"><block s="evaluate"><block var="pred"/><list></list></block></block><script><block s="doRun"><block var="action"/><list></list></block></script></block></script></block-definition><block-definition s="repeat while %&apos;pred&apos; %&apos;action&apos;" type="command" category="control"><comment x="0" y="0" w="264" collapsed="false">Runs the script repeatedly, as long as the condition is true. Tests the condition before the first time the script is run.  Like the built in REPEAT UNTIL except that in this block the condition must be true, not false.</comment><header></header><code></code><translations>pt:enquanto _ , repete _ $loop-0.7&#xD;pl:powtarzaj gdy _ _&#xD;</translations><inputs><input type="%boolUE"></input><input type="%cs"></input></inputs><script><block s="doUntil"><block s="reportNot"><block s="evaluate"><block var="pred"/><list></list></block></block><script><block s="doRun"><block var="action"/><list></list></block></script></block></script></block-definition><block-definition s="repeat %&apos;num&apos; %&apos;#&apos; %&apos;action&apos;" type="command" category="control"><comment x="0" y="0" w="171" collapsed="false">Runs the script the specified number of times, like the built-in REPEAT block, but this one provides the # variable that can be used inside the script.  Try&#xD;REPEAT (200)&#xD;                MOVE (#) STEPS&#xD;   RIGHT 92&#xD;with the pen down.</comment><header></header><code></code><translations>pt:repete _ vezes _ _ $loop-0.7&#xD;ca:repeteix _ _ _&#xD;pl:powtórz _ _ _&#xD;</translations><inputs><input type="%n"></input><input type="%upvar"></input><input type="%cs"></input></inputs><script><block s="doSetVar"><l>#</l><l>0</l></block><block s="doRepeat"><block var="num"/><script><block s="doChangeVar"><l>#</l><l>1</l></block><block s="doRun"><block var="action"/><list></list></block></script></block></script></block-definition><block-definition s="for %&apos;i&apos; = %&apos;start&apos; step %&apos;step&apos; to %&apos;end&apos; %&apos;action&apos;" type="command" category="control"><comment x="0" y="0" w="247.33333333333334" collapsed="false">The primitive FOR block uses an implicit step of ±1 depending on which of the starting and ending values is larger.  This version allows you to provide an explicit step value.  If the sign of the step input is incompatible with the ordering of the starting and ending values, the script will not be run at all.</comment><header></header><code></code><translations>pt:para _ de _ com passo _ a _ _ $loop-0.7&#xD;ca:per _ = _ incrementant _ fins _ _&#xD;pl:dla _ = _ co _ do _ _&#xD;</translations><inputs><input type="%upvar"></input><input type="%n">1</input><input type="%n">1</input><input type="%n">10</input><input type="%cs"></input></inputs><script><block s="doDeclareVariables"><list><l>test</l></list></block><block s="doSetVar"><l>i</l><block var="start"/></block><block s="doIfElse"><block s="reportVariadicLessThan"><list><block var="step"/><l>0</l></list></block><script><block s="doSetVar"><l>test</l><block s="reifyPredicate"><autolambda><block s="reportVariadicLessThan"><list><block var="i"/><block var="end"/></list></block></autolambda><list></list></block></block></script><script><block s="doSetVar"><l>test</l><block s="reifyPredicate"><autolambda><block s="reportVariadicGreaterThan"><list><block var="i"/><block var="end"/></list></block></autolambda><list></list></block></block></script></block><block s="doUntil"><block s="evaluate"><block var="test"/><list></list></block><script><block s="doRun"><block var="action"/><list></list></block><block s="doChangeVar"><l>i</l><block var="step"/></block></script></block></script></block-definition><block-definition s="let %&apos;a&apos; be %&apos;val&apos; in %&apos;loop&apos; %&apos;body&apos;" type="command" category="control"><comment x="0" y="0" w="238.66666666666666" collapsed="false">Provides LOOP as a function of one input that runs&#xD;the body of the LET with A set to the function input,&#xD;so the body can run itself recursively.&#xD;See COPY block in Variables for an example of use.</comment><header></header><code></code><translations>pt:tendo _ o valor inicial _ , executa _ definido como _&#xD;ca:fes que _ sigui _ al _ _&#xD;pl:ustaw _ na _ w _ _&#xD;</translations><inputs><input type="%upvar"></input><input type="%s"></input><input type="%upvar"></input><input type="%cs"></input></inputs><script><block s="doSetVar"><l>a</l><block var="val"/></block><block s="doSetVar"><l>loop</l><block s="reifyScript"><script><block s="doSetVar"><l>a</l><block var="new value"/></block><block s="doRun"><block var="body"/><list><block var="a"/></list></block></script><list><l>new value</l></list></block></block><block s="doRun"><block var="loop"/><list><block var="a"/></list></block></script></block-definition><block-definition s="run %&apos;action&apos; with continuation" type="command" category="control"><header></header><code></code><translations>de:führe _ mit Continuation aus&#xD;</translations><inputs><input type="%cmdRing" initial="1"></input></inputs><script><block s="doRun"><block var="action"/><list><block s="reportEnvironment"><l><option>continuation</option></l></block></list></block></script></block-definition><block-definition s="call %&apos;action&apos; with continuation" type="reporter" category="control"><header></header><code></code><translations>de:rufe _ mit Continuation auf&#xD;</translations><inputs><input type="%cmdRing" initial="1"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reifyReporter"><script><custom-block s="run %cmdRing with continuation"><block var="action"/></custom-block></script><list></list></block><list></list></block></block></script></block-definition></blocks><primitives></primitives><stage name="Stage" width="480" height="360" costume="0" color="255,255,255,1" tempo="60" threadsafe="false" penlog="false" volume="100" pan="0" lines="round" ternary="false" hyperops="true" codify="false" inheritance="true" sublistIDs="false" id="896"><pentrails>data:image/png;base64,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</pentrails><costumes><list struct="atomic" id="897"></list></costumes><sounds><list struct="atomic" id="898"></list></sounds><variables></variables><blocks></blocks><scripts></scripts><sprites select="1"><watcher var="unsortList" style="normal" x="5.390266299356199" y="3.333333333333343" color="243,118,29" extX="80" extY="349.0000000000001"/><watcher var="result" style="normal" x="363.879004052239" y="0" color="243,118,29" extX="95" extY="356"/><sprite name="Sprite" idx="1" x="-60" y="-30" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="true" costume="0" color="80,80,80,1" pen="tip" id="905"><costumes><list struct="atomic" id="906"></list></costumes><sounds><list struct="atomic" id="907"></list></sounds><blocks></blocks><variables></variables><scripts><script x="20" y="8.333333333333334"><block s="receiveGo"><comment w="242.99999999999997" collapsed="false">Only positive integer numbers</comment></block><block s="doWarp"><script><block s="doDeleteFromList"><l><option>all</option></l><block var="result"/></block><block s="doDeleteFromList"><l><option>all</option></l><block var="unsortList"/></block><block s="doFor"><l>i</l><l>1</l><l>100</l><script><block s="doInsertInList"><block var="i"/><l><option>random</option></l><block var="unsortList"/></block></script><comment w="90" collapsed="false">build the unsorted list</comment></block></script></block><custom-block s="simple message %mlt"><block s="reportJoinWords"><list><l>It will take </l><block s="reportQuotient"><block s="reportVariadicMax"><block var="unsortList"/></block><l>10</l></block><l> seconds to sort the list !</l></list></block></custom-block><block s="doWarp"><script><block s="doDeclareVariables"><list><l>go</l></list></block><block s="doSetVar"><l>go</l><block s="reportBoolean"><l><bool>false</bool></l></block></block><block s="doFor"><l>i</l><l>1</l><block s="reportListAttribute"><l><option>length</option></l><block var="unsortList"/></block><script><block s="fork"><block s="reifyScript"><script><block s="doWaitUntil"><block var="go"/></block><block s="doWait"><block s="reportQuotient"><block var="#1"/><l>10</l></block></block><block s="doAddToList"><block var="#1"/><block var="result"/></block></script><list><l>#1</l></list></block><list><block s="reportListItem"><block var="i"/><block var="unsortList"/></block></list><comment w="89.16666666666667" collapsed="false">i add &quot;#1/10&quot; for speed purpose...</comment></block></script></block><block s="doSetVar"><l>go</l><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block></script><comment x="380" y="375.6666666666663" w="90" collapsed="false">bh said it doesn&apos;t work all time with #1/100 seconds, so i change it for #1/10&#xD;thk bh!</comment><comment x="380.83333333333337" y="484.66666666666634" w="90" collapsed="false">the original algorithm wait #1 second instead of #1/10 seconds</comment></scripts></sprite></sprites></stage><variables><variable name="result"><list struct="atomic" id="996">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,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100</list></variable><variable name="unsortList"><list struct="atomic" id="997">13,39,43,28,73,10,54,16,66,31,80,15,92,97,91,30,25,76,78,44,34,21,72,74,62,50,1,55,59,51,6,75,93,2,99,96,7,45,69,90,12,94,14,8,9,4,65,100,86,77,33,19,49,64,18,52,53,82,27,35,36,41,20,46,68,40,71,3,81,24,79,32,11,70,38,37,98,88,87,85,42,22,63,48,29,89,58,47,57,17,26,67,84,95,56,60,61,23,5,83</list></variable></variables></scene></scenes></project><media name="sleep sort" app="Snap! 11.0.8, https://snap.berkeley.edu" version="2"></media></snapdata>