turtlestitch/libraries/variadic-reporters.xml

1 wiersz
3.5 KiB
XML

<blocks app="Snap! 4.0, http://snap.berkeley.edu" version="1"><block-definition s="sum %&apos;nums&apos;" type="reporter" category="operators"><comment x="0" y="0" w="202" collapsed="false">Takes any number of numbers as inputs (use the left and right arrowheads to adjust the number of input slots) and reports the result of adding them all, so&#xD;ISUM (4) (100) (8))&#xD;reports 112.</comment><code></code><inputs><input type="%mult%n"></input></inputs><script><block s="doIf"><block s="reportEquals"><block var="nums"/><block s="reportNewList"><list></list></block></block><script><block s="doReport"><l>0</l></block></script></block><block s="doReport"><block s="reportSum"><block s="reportListItem"><l>1</l><block var="nums"/></block><custom-block s="sum %mult%n"><block s="reportCDR"><block var="nums"/></block></custom-block></block></block></script></block-definition><block-definition s="product %&apos;nums&apos;" type="reporter" category="operators"><comment x="0" y="0" w="205" collapsed="false">Takes any number of numbers as inputs (use the left and right arrowheads to adjust the number of input slots) and reports the result of multiplying them all, so&#xD;(PRODUCT (4) (100) (8))&#xD;reports 3200.</comment><code></code><inputs><input type="%mult%n"></input></inputs><script><block s="doIf"><block s="reportEquals"><block var="nums"/><block s="reportNewList"><list></list></block></block><script><block s="doReport"><l>1</l></block></script></block><block s="doReport"><block s="reportProduct"><block s="reportListItem"><l>1</l><block var="nums"/></block><custom-block s="product %mult%n"><block s="reportCDR"><block var="nums"/></block></custom-block></block></block></script></block-definition><block-definition s="all of %&apos;preds&apos;" type="predicate" category="operators"><comment x="0" y="0" w="248" collapsed="false">Takes any number of Boolean (true/false) inputs (use the left and right arrowheads to adjust the number of input slots) and reports TRUE only if all of the inputs are TRUE, otherwise FALSE. Like AND but for multiple inputs.</comment><code></code><inputs><input type="%mult%boolUE"></input></inputs><script><block s="doIf"><block s="reportEquals"><block var="preds"/><block s="reportNewList"><list></list></block></block><script><block s="doReport"><block s="reportTrue"></block></block></script></block><block s="doReport"><block s="reportAnd"><block s="evaluate"><block s="reportListItem"><l>1</l><block var="preds"/></block><list></list></block><custom-block s="all of %mult%boolUE"><block s="reportCDR"><block var="preds"/></block></custom-block></block></block></script></block-definition><block-definition s="any of %&apos;preds&apos;" type="predicate" category="operators"><comment x="0" y="0" w="240" collapsed="false">Takes any number of Boolean (true/false) inputs (use the left and right arrowheads to adjust the number of input slots) and reports TRUE if at least one input is TRUE, otherwise FALSE.</comment><code></code><inputs><input type="%mult%boolUE"></input></inputs><script><block s="doIf"><block s="reportEquals"><block var="preds"/><block s="reportNewList"><list></list></block></block><script><block s="doReport"><block s="reportFalse"></block></block></script></block><block s="doReport"><block s="reportOr"><block s="evaluate"><block s="reportListItem"><l>1</l><block var="preds"/></block><list></list></block><custom-block s="any of %mult%boolUE"><block s="reportCDR"><block var="preds"/></block></custom-block></block></block></script></block-definition></blocks>