<snapdata remixID="12713863"><project name="U2L4-MathLibraries" app="Snap! 9.0, https://snap.berkeley.edu" version="2"><notes></notes><thumbnail>data:image/png;base64,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</thumbnail><scenes select="1"><scene name="U2L4-MathLibraries"><notes></notes><hidden></hidden><headers></headers><code></code><blocks><block-definition s="is num even %&apos;number&apos;" type="predicate" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input></inputs><script><block s="doReport"><custom-block s="is %n divisible by %n"><block var="number"/><l>2</l></custom-block></block></script></block-definition><block-definition s="%&apos;mid&apos; between %&apos;low&apos; and %&apos;high&apos; ?" type="predicate" category="operators"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input><input type="%s"></input></inputs><script><block s="doReport"><block s="reportVariadicAnd"><list><custom-block s="%s is greater than or equal too %s"><block var="mid"/><block var="low"/></custom-block><custom-block s="%s is less than or equal too %s"><block var="mid"/><block var="high"/></custom-block></list></block></block></script><scripts><comment x="14.666666666666629" y="88.80000000000001" w="304.6666666666667" collapsed="false">As the lab says, it&apos;s okay to use &quot;&gt;&quot; and &quot;&lt;&quot; instead of &quot;≥&quot; and &quot;≤.&quot;</comment></scripts></block-definition><block-definition s="is num odd %&apos;number&apos;" type="predicate" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input></inputs><script><block s="doReport"><block s="reportNot"><custom-block s="is %n divisible by %n"><block var="number"/><l>2</l></custom-block></block></block></script></block-definition><block-definition s="number of divisors %&apos;number&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input></inputs><script><block s="doReport"><block s="reportListAttribute"><l><option>length</option></l><custom-block s="divisors of %n"><block var="number"/></custom-block></block></block></script></block-definition><block-definition s="square roots of %&apos;number&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input></inputs><script><block s="doDeclareVariables"><list><l>positive root</l></list></block><block s="doSetVar"><l>positive root</l><block s="reportMonadic"><l><option>sqrt</option></l><block var="number"/></block></block><block s="doReport"><block s="reportNewList"><list><block var="positive root"/><block s="reportVariadicProduct"><list><l>-1</l><block var="positive root"/></list></block></list></block></block></script></block-definition><block-definition s="%&apos;a&apos; is less than or equal too %&apos;b&apos;" type="predicate" category="operators"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input></inputs><script><block s="doReport"><block s="reportVariadicOr"><list><block s="reportVariadicLessThan"><list><block var="a"/><block var="b"/></list></block><block s="reportVariadicEquals"><list><block var="a"/><block var="b"/></list></block></list></block></block></script></block-definition><block-definition s="%&apos;a&apos; is greater than or equal too %&apos;b&apos;" type="predicate" category="operators"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input></inputs><script><block s="doReport"><block s="reportVariadicOr"><list><block s="reportVariadicGreaterThan"><list><block var="a"/><block var="b"/></list></block><block s="reportVariadicEquals"><list><block var="a"/><block var="b"/></list></block></list></block></block></script></block-definition><block-definition s="%&apos;a&apos; ≠ %&apos;b&apos;" type="predicate" category="operators"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input></inputs><script><block s="doReport"><block s="reportNot"><block s="reportVariadicEquals"><list><block var="a"/><block var="b"/></list></block></block></block></script></block-definition><block-definition s="minimum of list %&apos;data&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doReport"><block s="reportCombine"><block var="data"/><block s="reifyReporter"><autolambda><custom-block s="minimum of %n and %n"><l></l><l></l></custom-block></autolambda><list></list></block></block></block></script></block-definition><block-definition s="minimum of %&apos;a&apos; and %&apos;b&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input></inputs><script><block s="doReport"><block s="reportIfElse"><block s="reportVariadicLessThan"><list><block var="a"/><block var="b"/></list></block><block var="a"/><block var="b"/></block></block></script></block-definition><block-definition s="average of list %&apos;data&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doReport"><block s="reportQuotient"><custom-block s="sum of list %l"><block var="data"/></custom-block><block s="reportListAttribute"><l><option>length</option></l><block var="data"/></block></block></block></script><scripts><comment x="14" y="88.8" w="289.3333333333333" collapsed="false">Important note:  It does NOT work to make a block that takes the average of two numbers and then do</comment><script x="19" y="151.13333333333333"><block s="doReport"><block s="reportCombine"><block var="data"/><block s="reifyReporter"><autolambda><custom-block s="average of %n and %n"><l></l><l></l></custom-block></autolambda><list></list></block></block></block></script><script x="15" y="273.8"><block s="reportCombine"><block s="reportNewList"><list><l>5</l><l>100</l><l>200</l></list></block><block s="reifyReporter"><autolambda><custom-block s="average of %n and %n"><l></l><l></l></custom-block></autolambda><list></list></block></block></script><script x="15.333333333333334" y="306.46666666666664"><block s="reportCombine"><block s="reportNewList"><list><l>200</l><l>100</l><l>5</l></list></block><block s="reifyReporter"><autolambda><custom-block s="average of %n and %n"><l></l><l></l></custom-block></autolambda><list></list></block></block></script><comment x="18.333333333333332" y="190.80000399999997" w="303.3333333333333" collapsed="false">This will tempt students because it follows the pattern of the other exercises so far on this page.  But COMBINE can be used only with associative operators, which AVERAGE isn&apos;t.  The last number to be averaged in will have too much influence.  Try these:</comment></scripts></block-definition><block-definition s="average of %&apos;a&apos; and %&apos;b&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input></inputs><script><block s="doReport"><block s="reportQuotient"><block s="reportVariadicSum"><list><block var="a"/><block var="b"/></list></block><l>2</l></block></block></script></block-definition><block-definition s="sum of list %&apos;data&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doReport"><block s="reportCombine"><block var="data"/><block s="reifyReporter"><autolambda><block s="reportVariadicSum"><list><l></l><l></l></list></block></autolambda><list></list></block></block></block></script></block-definition><block-definition s="nand %&apos;val1&apos; %&apos;val2&apos;" type="predicate" category="operators"><header></header><code></code><translations></translations><inputs><input type="%b"></input><input type="%b"></input></inputs><script><block s="doReport"><block s="reportNot"><block s="reportVariadicAnd"><list><block var="val1"/><block var="val2"/></list></block></block></block></script></block-definition><block-definition s="nor %&apos;val1&apos; %&apos;val2&apos;" type="predicate" category="operators"><header></header><code></code><translations></translations><inputs><input type="%b"></input><input type="%b"></input></inputs><script><block s="doReport"><block s="reportNot"><block s="reportVariadicOr"><list><block var="val1"/><block var="val2"/></list></block></block></block></script></block-definition><block-definition s="xor %&apos;val1&apos; %&apos;val2&apos;" type="predicate" category="operators"><header></header><code></code><translations></translations><inputs><input type="%b"></input><input type="%b"></input></inputs><script><block s="doReport"><block s="reportNot"><block s="reportVariadicAnd"><list><block s="reportVariadicOr"><list><block var="val1"/><block var="val2"/></list></block><custom-block s="nand %b %b"><block var="val1"/><block var="val2"/></custom-block></list></block></block></block></script></block-definition><block-definition s="is num integer %&apos;e&apos;" type="predicate" category="operators"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doIfElse"><block s="reportVariadicEquals"><list><block var="e"/><block s="reportRound"><block var="e"/></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="xnor %&apos;val1&apos; %&apos;val2&apos;" type="predicate" category="operators"><header></header><code></code><translations></translations><inputs><input type="%b"></input><input type="%b"></input></inputs><script><block s="doReport"><block s="reportVariadicOr"><list><custom-block s="nor %b %b"><block var="val1"/><block var="val2"/></custom-block><block s="reportVariadicAnd"><list><block var="val1"/><block var="val2"/></list></block></list></block></block></script></block-definition><block-definition s="G C D of %&apos;a&apos; and %&apos;b&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input></inputs><script><block s="doReport"><custom-block s="maximum of list %l"><custom-block s="intersection %l %l"><custom-block s="divisors of %n"><block var="a"/></custom-block><custom-block s="divisors of %n"><block var="b"/></custom-block></custom-block></custom-block></block></script></block-definition><block-definition s="greatest common divisor of %&apos;a&apos; and %&apos;b&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input></inputs><script><block s="doReport"><block s="reportListItem"><l><option>last</option></l><custom-block s="intersection %l %l"><custom-block s="divisors of %n"><block var="a"/></custom-block><custom-block s="divisors of %n"><block var="b"/></custom-block></custom-block></block></block></script><scripts><comment x="12" y="88.8" w="410" collapsed="false">The expected, and perfectly correct, solution would be</comment><script x="8" y="136.13333333333333"><block s="doReport"><custom-block s="maximum of list %l"><custom-block s="intersection %l %l"><custom-block s="divisors of %n"><block var="a"/></custom-block><custom-block s="divisors of %n"><block var="b"/></custom-block></custom-block></custom-block></block></script><comment x="12" y="173.73333333333338" w="411.3333333333333" collapsed="false">But DIVISORS OF reports a list of the divisors /in order/, and INTERSECTION doesn&apos;t change that, so we already know that the biggest value is at the end of the list.</comment></scripts></block-definition><block-definition s="divisors of %&apos;number&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%n"></input></inputs><script><block s="doReport"><block s="reportKeep"><block s="reifyPredicate"><autolambda><custom-block s="is %n divisible by %n"><block var="number"/><l></l></custom-block></autolambda><list></list></block><block s="reportNumbers"><l>1</l><block var="number"/></block></block></block></script></block-definition><block-definition s="is %&apos;big&apos; divisible by %&apos;small&apos;" type="predicate" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input></inputs><script><block s="doReport"><block s="reportVariadicEquals"><list><block s="reportModulus"><block var="big"/><block var="small"/></block><l>0</l></list></block></block></script></block-definition><block-definition s="intersection %&apos;lista&apos; %&apos;listb&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%l"></input><input type="%l"></input></inputs><script><block s="doReport"><block s="reportKeep"><block s="reifyPredicate"><autolambda><block s="reportListContainsItem"><block var="listb"/><l></l></block></autolambda><list></list></block><block var="lista"/></block></block></script><scripts><comment x="10.666666666666666" y="92.8" w="314.6666666666667" collapsed="false">This solution is a little counterintuitive, because it treats the two lists asymmetrically.  We start with LISTA and keep items from it that are also in LISTB.  So, expect students to have trouble thinking of this solution.</comment></scripts></block-definition><block-definition s="maximum of list %&apos;data&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doReport"><block s="reportCombine"><block var="data"/><block s="reifyReporter"><autolambda><custom-block s="maximum of %n %n"><l></l><l></l></custom-block></autolambda><list></list></block></block></block></script></block-definition><block-definition s="maximum of %&apos;a&apos; %&apos;b&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input></inputs><script><block s="doReport"><block s="reportIfElse"><block s="reportVariadicGreaterThan"><list><block var="a"/><block var="b"/></list></block><block var="a"/><block var="b"/></block></block></script><scripts><comment x="16" y="87.46666666666664" w="246.66666666666666" collapsed="false">The &quot;reporter IF&quot; used here is the simplest and most elegant solution, and you should show it to students when you debrief this lab, but you&apos;re more likely to get commands, e.g. this:</comment><script x="23" y="172.46666666666664"><block s="doIfElse"><block s="reportVariadicGreaterThan"><list><block var="a"/><block var="b"/></list></block><script><block s="doReport"><block var="a"/></block></script><script><block s="doReport"><block var="b"/></block></script></block></script></scripts></block-definition></blocks><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="441"><pentrails>data:image/png;base64,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</pentrails><costumes><list struct="atomic" id="442"></list></costumes><sounds><list struct="atomic" id="443"></list></sounds><variables></variables><blocks></blocks><scripts></scripts><sprites select="1"><sprite name="Sprite" idx="1" x="0" y="0" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="true" costume="0" color="80,80,80,1" pen="tip" id="448"><costumes><list struct="atomic" id="449"></list></costumes><sounds><list struct="atomic" id="450"></list></sounds><blocks></blocks><variables></variables><scripts><script x="12" y="226"><custom-block s="maximum of list %l"><block s="reportNewList"><list><l>1</l><l>22</l><l>3</l><l>-4</l></list></block></custom-block></script><script x="119" y="258"><custom-block s="minimum of list %l"><block s="reportNewList"><list><l>1</l><l>22</l><l>3</l><l>-4</l></list></block></custom-block></script><script x="46" y="294"><custom-block s="sum of list %l"><block s="reportNewList"><list><l>1</l><l>2</l><l>3</l><l>10</l></list></block></custom-block></script><script x="121" y="327"><custom-block s="average of list %l"><block s="reportNewList"><list><l>1</l><l>2</l><l>3</l><l>4</l></list></block></custom-block></script><script x="34" y="449"><custom-block s="minimum of %n and %n"><l>5</l><l>3</l></custom-block></script><script x="30" y="480.9999999999999"><custom-block s="G C D of %s and %s"><l>10</l><l>10</l></custom-block></script><script x="30" y="509"><custom-block s="maximum of %n %n"><l>6</l><l>4</l></custom-block></script><script x="30" y="545"><custom-block s="is %n divisible by %n"><l>15</l><l>3</l></custom-block></script><script x="26" y="585"><custom-block s="%s between %s and %s ?"><l>6</l><l>5</l><l>7</l></custom-block></script><script x="31" y="615"><custom-block s="%s ≠ %s"><l>5</l><l>7</l></custom-block></script><script x="27" y="643"><custom-block s="is num even %n"><l>-22</l></custom-block></script><script x="32" y="416"><custom-block s="number of divisors %n"><l>8</l></custom-block></script><script x="277" y="423"><custom-block s="is num odd %n"><l>7</l></custom-block></script><script x="277" y="481"><custom-block s="nor %b %b"><l><bool>true</bool></l><l><bool>false</bool></l></custom-block></script><script x="277" y="529"><custom-block s="nand %b %b"><l><bool>true</bool></l><l><bool>true</bool></l></custom-block></script><script x="275" y="572"><custom-block s="xor %b %b"><l><bool>false</bool></l><l><bool>false</bool></l></custom-block></script><script x="275" y="612"><custom-block s="xnor %b %b"><l><bool>false</bool></l><l><bool>true</bool></l></custom-block></script><script x="461" y="420"><custom-block s="%s is greater than or equal too %s"><l>9</l><l>2</l></custom-block></script><script x="460" y="464"><custom-block s="%s is less than or equal too %s"><l>1</l><l>2</l></custom-block></script><script x="451" y="517"><custom-block s="is num integer %s"><l></l></custom-block></script></scripts></sprite></sprites></stage><variables></variables></scene></scenes></project><media name="U2L4-MathLibraries" app="Snap! 9.0, https://snap.berkeley.edu" version="2"></media></snapdata>