<snapdata remixID="9018632"><project name='Lab 4.4 Number Cruncher' app='Snap! 5.1, http://snap.berkeley.edu' version='1'>
  <notes></notes>
  <thumbnail>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKAAAAB4CAYAAAB1ovlvAAADJ0lEQVR4Xu3VMa4BcRSF8Tt6jUprA2oSnVDpNEgUrMAabNBWFBKdeXnTvbxQ+pI5n/qf3HvP+cU0bdu25c8EoAQaAULJO7ZLQIBCQBMQIBq/wwWoATQBAaLxO1yAGkATECAav8MFqAE0AQGi8TtcgBpAExAgGr/DBagBNAEBovE7XIAaQBMQIBq/wwWoATQBAaLxO1yAGkATECAav8MFqAE0AQGi8TtcgBpAExAgGr/DBagBNAEBovE7XIAaQBMQIBq/wwWoATQBAaLxO1yAGkATECAav8MFqAE0AQGi8TtcgBpAExAgGr/DBagBNAEBovE7XIAaQBMQIBq/wwWoATQBAaLxO1yAGkATECAav8MFqAE0AQGi8TtcgBpAExAgGr/DBagBNAEBovE7XIAaQBMQIBq/wwWoATQBAaLxO1yAGkATECAav8MFqAE0AQG+iX+z2dRsNqvlclnz+Rwtqc/DBfim3bZta7Va1XA47F7c7/fa7Xa1Xq9rMpn02cRXbxPgh7ifz2ft9/tqmubfq8FgUNvttg6Hw1cL69swAX5o9Ha71fV6/fPi9XrVeDzuPs+n06lvHr5+jwDfRP54POp4PHb/fr+f48Vi0YEbjUZfL6nPAwX4pt3L5VLn87mm02mf+8dvEyBeQfYCAszuH79egHgF2QsIMLt//HoB4hVkLyDA7P7x6wWIV5C9gACz+8evFyBeQfYCAszuH79egHgF2QsIMLt//HoB4hVkLyDA7P7x6wWIV5C9gACz+8evFyBeQfYCAszuH79egHgF2QsIMLt//HoB4hVkLyDA7P7x6wWIV5C9gACz+8evFyBeQfYCAszuH79egHgF2QsIMLt//HoB4hVkLyDA7P7x6wWIV5C9gACz+8evFyBeQfYCAszuH79egHgF2QsIMLt//HoB4hVkLyDA7P7x6wWIV5C9gACz+8evFyBeQfYCAszuH79egHgF2QsIMLt//HoB4hVkLyDA7P7x6wWIV5C9gACz+8evFyBeQfYCAszuH79egHgF2QsIMLt//HoB4hVkLyDA7P7x6wWIV5C9gACz+8evFyBeQfYCP0diBbc2iN46AAAAAElFTkSuQmCC</thumbnail>
  <stage inheritance='true' id='1' volume='100' height='360' tempo='60' lines='round' width='480' name='Stage' sublistIDs='false' threadsafe='false' codify='false' color='255,255,255,1' scheduled='false' pan='0' ternary='true' costume='0'>
    <pentrails>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAFoCAYAAACPNyggAAAOhUlEQVR4Xu3VwQkAAAjEMN1/abewn7jAQRC64wgQIECAAIF3gX1fNEiAAAECBAiMAHsCAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQIHLFxAWmhEwHPAAAAAElFTkSuQmCC</pentrails>
    <costumes>
      <list struct='atomic' id='2'/>
    </costumes>
    <sounds>
      <list struct='atomic' id='3'/>
    </sounds>
    <variables/>
    <blocks/>
    <scripts/>
    <sprites>
      <sprite x='-0.14354066985652025' pen='tip' id='8' y='0.43062200956939023' name='Sprite' idx='1' volume='100' rotation='1' scale='1' heading='90' draggable='true' color='80,80,80,1' pan='0' costume='0'>
        <costumes>
          <list struct='atomic' id='9'/>
        </costumes>
        <sounds>
          <list struct='atomic' id='10'/>
        </sounds>
        <blocks/>
        <variables/>
        <scripts>
          <script x='10' y='10'>
            <block s='receiveGo'/>
            <block s='doSetVar'>
              <l>numbers</l>
              <block s='reportNewList'>
                <list>
                  <l>-5</l>
                  <l>17</l>
                  <l>-9</l>
                  <l>12</l>
                  <l>3</l>
                </list>
              </block>
            </block>
            <block s='doSetVar'>
              <l>numbers2</l>
              <block s='reportNewList'>
                <list>
                  <l>5</l>
                  <l>-4</l>
                  <l>8</l>
                  <l>-6</l>
                </list>
              </block>
            </block>
          </script>
          <script x='376' y='22'>
            <block s='receiveKey'>
              <l>
                <option>5</option>
              </l>
            </block>
            <block s='doSayFor'>
              <custom-block s='maximum number in %l'>
                <block var='numbers'/>
              </custom-block>
              <l>2</l>
            </block>
          </script>
          <script x='377' y='102'>
            <block s='receiveKey'>
              <l>
                <option>6</option>
              </l>
            </block>
            <block s='doSayFor'>
              <custom-block s='make all nums positive in %l'>
                <block var='numbers'/>
              </custom-block>
              <block s='reportListLength'>
                <block var='allPositiveList'/>
              </block>
            </block>
          </script>
          <script x='379' y='189'>
            <block s='receiveKey'>
              <l>
                <option>7</option>
              </l>
            </block>
            <block s='doSayFor'>
              <custom-block s='keep even numbers from %l'>
                <block var='numbers'/>
              </custom-block>
              <block s='reportListLength'>
                <block var='onlyEvens'/>
              </block>
            </block>
          </script>
          <script x='380' y='271.00000000000034'>
            <block s='receiveKey'>
              <l>
                <option>8</option>
              </l>
            </block>
            <block s='doSayFor'>
              <custom-block s='add all nums from %l and %l'>
                <block var='numbers'/>
                <block var='numbers2'/>
              </custom-block>
              <block s='reportListLength'>
                <block var='allNumsAdded'/>
              </block>
            </block>
          </script>
          <script x='15' y='453.0000000000001'>
            <block s='receiveKey'>
              <l>
                <option>4</option>
              </l>
            </block>
            <block s='doIfElse'>
              <block s='reportEquals'>
                <custom-block s='numbers in %l increase'>
                  <block var='numbers'/>
                </custom-block>
                <block s='reportBoolean'>
                  <l>
                    <bool>true</bool>
                  </l>
                </block>
              </block>
              <script>
                <block s='doSayFor'>
                  <l>True</l>
                  <l>2</l>
                </block>
              </script>
              <script>
                <block s='doSayFor'>
                  <l>False</l>
                  <l>2</l>
                </block>
              </script>
            </block>
          </script>
          <script x='14' y='307.0000000000001'>
            <block s='receiveKey'>
              <l>
                <option>3</option>
              </l>
            </block>
            <block s='doIfElse'>
              <block s='reportEquals'>
                <custom-block s='%l includes a negative'>
                  <block var='numbers'/>
                </custom-block>
                <block s='reportBoolean'>
                  <l>
                    <bool>true</bool>
                  </l>
                </block>
              </block>
              <script>
                <block s='doSayFor'>
                  <l>True</l>
                  <l>2</l>
                </block>
              </script>
              <script>
                <block s='doSayFor'>
                  <l>False</l>
                  <l>2</l>
                </block>
              </script>
            </block>
          </script>
          <script x='21' y='226'>
            <block s='receiveKey'>
              <l>
                <option>2</option>
              </l>
            </block>
            <block s='doSayFor'>
              <custom-block s='average of numbers in %l'>
                <block var='numbers'/>
              </custom-block>
              <l>2</l>
            </block>
          </script>
          <script x='18' y='129'>
            <block s='receiveKey'>
              <l>
                <option>1</option>
              </l>
            </block>
            <block s='doSayFor'>
              <custom-block s='sum of numbers in %l'>
                <block var='numbers'/>
              </custom-block>
              <l>2</l>
            </block>
          </script>
        </scripts>
      </sprite>
      <watcher x='10' color='243,118,29' style='normal' var='numbers' y='10' hidden='true'/>
      <watcher x='10' color='243,118,29' style='normal' var='sum' y='31.000001999999995' hidden='true'/>
      <watcher x='10' color='243,118,29' style='normal' var='average' y='52.00000399999999' hidden='true'/>
      <watcher x='10' color='243,118,29' style='normal' var='numbersAdded' y='73.00000599999998' hidden='true'/>
      <watcher x='10' color='243,118,29' style='normal' var='maxNum' y='229.00001399999996' hidden='true'/>
      <watcher x='10' color='243,118,29' style='normal' var='tempList' y='204.00001199999997' hidden='true'/>
      <watcher x='10' color='243,118,29' style='normal' var='allPositiveList' y='106.999998' hidden='true'/>
      <watcher x='10' color='243,118,29' style='normal' var='onlyEvens' y='200' hidden='true'/>
      <watcher x='4' color='243,118,29' style='normal' var='allNumsAdded' y='4.999998000000005' hidden='true'/>
      <watcher x='10' color='243,118,29' style='normal' var='numbers2' y='292.999998' hidden='true'/>
    </sprites>
  </stage>
  <hidden/>
  <headers/>
  <code/>
  <blocks>
    <block-definition s='sum of numbers in %&apos;list&apos;' category='operators' type='reporter'>
      <header/>
      <code/>
      <translations/>
      <inputs>
        <input type='%l'/>
      </inputs>
      <script>
        <block s='doSetVar'>
          <l>sum</l>
          <l>0</l>
        </block>
        <block s='doForEach'>
          <l>item</l>
          <block var='list'/>
          <script>
            <block s='doIf'>
              <block s='reportEquals'>
                <block s='reportIsA'>
                  <block var='item'/>
                  <l>
                    <option>number</option>
                  </l>
                </block>
                <block s='reportBoolean'>
                  <l>
                    <bool>true</bool>
                  </l>
                </block>
              </block>
              <script>
                <block s='doChangeVar'>
                  <l>sum</l>
                  <block var='item'/>
                </block>
              </script>
            </block>
          </script>
        </block>
        <block s='doReport'>
          <block var='sum'/>
        </block>
      </script>
    </block-definition>
    <block-definition s='average of numbers in %&apos;list&apos;' category='operators' type='reporter'>
      <header/>
      <code/>
      <translations/>
      <inputs>
        <input type='%l'/>
      </inputs>
      <script>
        <block s='doSetVar'>
          <l>average</l>
          <l>0</l>
        </block>
        <block s='doSetVar'>
          <l>numbersAdded</l>
          <l>0</l>
        </block>
        <block s='doForEach'>
          <l>item</l>
          <block var='list'/>
          <script>
            <block s='doIf'>
              <block s='reportEquals'>
                <block s='reportIsA'>
                  <block var='item'/>
                  <l>
                    <option>number</option>
                  </l>
                </block>
                <block s='reportBoolean'>
                  <l>
                    <bool>true</bool>
                  </l>
                </block>
              </block>
              <script>
                <block s='doChangeVar'>
                  <l>average</l>
                  <block var='item'/>
                </block>
                <block s='doChangeVar'>
                  <l>numbersAdded</l>
                  <l>1</l>
                </block>
              </script>
            </block>
          </script>
        </block>
        <block s='doReport'>
          <block s='reportQuotient'>
            <block var='average'/>
            <block var='numbersAdded'/>
          </block>
        </block>
      </script>
    </block-definition>
    <block-definition s='%&apos;list&apos; includes a negative' category='operators' type='predicate'>
      <header/>
      <code/>
      <translations/>
      <inputs>
        <input type='%l'/>
      </inputs>
      <script>
        <block s='doReport'>
          <block s='reportIfElse'>
            <block s='reportEquals'>
              <block s='reportFindFirst'>
                <block s='reifyPredicate'>
                  <autolambda>
                    <block s='reportLessThan'>
                      <l/>
                      <l>0</l>
                    </block>
                  </autolambda>
                  <list/>
                </block>
                <block var='list'/>
              </block>
              <block s='reportBoolean'>
                <l>
                  <bool>false</bool>
                </l>
              </block>
            </block>
            <block s='reportBoolean'>
              <l>
                <bool>false</bool>
              </l>
            </block>
            <block s='reportBoolean'>
              <l>
                <bool>true</bool>
              </l>
            </block>
          </block>
        </block>
      </script>
    </block-definition>
    <block-definition s='numbers in %&apos;list&apos; increase' category='operators' type='predicate'>
      <header/>
      <code/>
      <translations/>
      <inputs>
        <input type='%l'/>
      </inputs>
      <script>
        <block s='doSetVar'>
          <l>tempList</l>
          <block s='reportKeep'>
            <block s='reifyPredicate'>
              <autolambda>
                <block s='reportIsA'>
                  <l/>
                  <l>
                    <option>number</option>
                  </l>
                </block>
              </autolambda>
              <list/>
            </block>
            <block var='list'/>
          </block>
        </block>
        <block s='doFor'>
          <l>i</l>
          <l>1</l>
          <block s='reportDifference'>
            <block s='reportListLength'>
              <block var='tempList'/>
            </block>
            <l>1</l>
          </block>
          <script>
            <block s='doIf'>
              <block s='reportGreaterThan'>
                <block s='reportListItem'>
                  <block var='i'/>
                  <block var='tempList'/>
                </block>
                <block s='reportListItem'>
                  <block s='reportSum'>
                    <block var='i'/>
                    <l>1</l>
                  </block>
                  <block var='tempList'/>
                </block>
              </block>
              <script>
                <block s='doReport'>
                  <block s='reportBoolean'>
                    <l>
                      <bool>false</bool>
                    </l>
                  </block>
                </block>
              </script>
            </block>
          </script>
        </block>
        <block s='doReport'>
          <block s='reportBoolean'>
            <l>
              <bool>true</bool>
            </l>
          </block>
        </block>
      </script>
    </block-definition>
    <block-definition s='maximum number in %&apos;list&apos;' category='operators' type='reporter'>
      <header/>
      <code/>
      <translations/>
      <inputs>
        <input type='%l'/>
      </inputs>
      <script>
        <block s='doSetVar'>
          <l>maxNum</l>
          <l>0</l>
        </block>
        <block s='doForEach'>
          <l>number</l>
          <block s='reportKeep'>
            <block s='reifyPredicate'>
              <autolambda>
                <block s='reportIsA'>
                  <l/>
                  <l>
                    <option>number</option>
                  </l>
                </block>
              </autolambda>
              <list/>
            </block>
            <block var='list'/>
          </block>
          <script>
            <block s='doIf'>
              <block s='reportGreaterThan'>
                <block var='number'/>
                <block var='maxNum'/>
              </block>
              <script>
                <block s='doSetVar'>
                  <l>maxNum</l>
                  <block var='number'/>
                </block>
              </script>
            </block>
          </script>
        </block>
        <block s='doReport'>
          <block var='maxNum'/>
        </block>
      </script>
    </block-definition>
    <block-definition s='make all nums positive in %&apos;list&apos;' category='operators' type='reporter'>
      <header/>
      <code/>
      <translations/>
      <inputs>
        <input type='%l'/>
      </inputs>
      <script>
        <block s='doSetVar'>
          <l>allPositiveList</l>
          <block s='reportNewList'>
            <list/>
          </block>
        </block>
        <block s='doForEach'>
          <l>item</l>
          <block var='list'/>
          <script>
            <block s='doAddToList'>
              <block var='item'/>
              <block var='allPositiveList'/>
            </block>
          </script>
        </block>
        <block s='doFor'>
          <l>i</l>
          <l>1</l>
          <block s='reportListLength'>
            <block var='allPositiveList'/>
          </block>
          <script>
            <block s='doIf'>
              <block s='reportLessThan'>
                <block s='reportListItem'>
                  <block var='i'/>
                  <block var='allPositiveList'/>
                </block>
                <l>0</l>
              </block>
              <script>
                <block s='doReplaceInList'>
                  <block var='i'/>
                  <block var='allPositiveList'/>
                  <block s='reportProduct'>
                    <block s='reportListItem'>
                      <block var='i'/>
                      <block var='allPositiveList'/>
                    </block>
                    <l>-1</l>
                  </block>
                </block>
              </script>
            </block>
          </script>
        </block>
        <block s='doReport'>
          <block var='allPositiveList'/>
        </block>
      </script>
    </block-definition>
    <block-definition s='keep even numbers from %&apos;list&apos;' category='operators' type='reporter'>
      <header/>
      <code/>
      <translations/>
      <inputs>
        <input type='%l'/>
      </inputs>
      <script>
        <block s='doSetVar'>
          <l>onlyEvens</l>
          <block s='reportKeep'>
            <block s='reifyPredicate'>
              <autolambda>
                <block s='reportEquals'>
                  <block s='reportModulus'>
                    <l/>
                    <l>2</l>
                  </block>
                  <l>0</l>
                </block>
              </autolambda>
              <list/>
            </block>
            <l/>
          </block>
        </block>
        <block s='doReport'>
          <block var='onlyEvens'/>
        </block>
      </script>
    </block-definition>
    <block-definition s='add all nums from %&apos;list1&apos; and %&apos;list2&apos;' category='operators' type='reporter'>
      <header/>
      <code/>
      <translations/>
      <inputs>
        <input type='%l'/>
        <input type='%l'/>
      </inputs>
      <script>
        <block s='doSetVar'>
          <l>allNumsAdded</l>
          <block s='reportNewList'>
            <list/>
          </block>
        </block>
        <block s='doIfElse'>
          <block s='reportGreaterThan'>
            <block s='reportListLength'>
              <block var='list1'/>
            </block>
            <block s='reportListLength'>
              <block var='list2'/>
            </block>
          </block>
          <script>
            <block s='doRepeat'>
              <block s='reportDifference'>
                <block s='reportListLength'>
                  <block var='list1'/>
                </block>
                <block s='reportListLength'>
                  <block var='list2'/>
                </block>
              </block>
              <script>
                <block s='doAddToList'>
                  <l>0</l>
                  <block var='list2'/>
                </block>
              </script>
            </block>
          </script>
          <script>
            <block s='doIf'>
              <block s='reportLessThan'>
                <block s='reportListLength'>
                  <block var='list1'/>
                </block>
                <block s='reportListLength'>
                  <block var='list2'/>
                </block>
              </block>
              <script>
                <block s='doRepeat'>
                  <block s='reportDifference'>
                    <block s='reportListLength'>
                      <block var='list2'/>
                    </block>
                    <block s='reportListLength'>
                      <block var='list1'/>
                    </block>
                  </block>
                  <script>
                    <block s='doAddToList'>
                      <l>0</l>
                      <block var='list1'/>
                    </block>
                  </script>
                </block>
              </script>
            </block>
          </script>
        </block>
        <block s='doFor'>
          <l>i</l>
          <l>1</l>
          <block s='reportListLength'>
            <block var='list1'/>
          </block>
          <script>
            <block s='doAddToList'>
              <block s='reportSum'>
                <block s='reportListItem'>
                  <block var='i'/>
                  <block var='list1'/>
                </block>
                <block s='reportListItem'>
                  <block var='i'/>
                  <block var='list2'/>
                </block>
              </block>
              <block var='allNumsAdded'/>
            </block>
          </script>
        </block>
        <block s='doReport'>
          <block var='allNumsAdded'/>
        </block>
      </script>
    </block-definition>
  </blocks>
  <variables>
    <variable name='numbers'>
      <list struct='atomic' id='463'>-5,17,-9,12,3</list>
    </variable>
    <variable name='sum'>
      <l>18</l>
    </variable>
    <variable name='average'>
      <l>18</l>
    </variable>
    <variable name='numbersAdded'>
      <l>5</l>
    </variable>
    <variable name='tempList'>
      <list struct='atomic' id='464'>-5,17,-9,12,3</list>
    </variable>
    <variable name='maxNum'>
      <l>17</l>
    </variable>
    <variable name='allPositiveList'>
      <list struct='atomic' id='465'>5,17,9,12,3</list>
    </variable>
    <variable name='onlyEvens'>
      <list struct='atomic' id='466'>4,12,72</list>
    </variable>
    <variable name='allNumsAdded'>
      <list struct='atomic' id='467'>0,13,-1,6,3</list>
    </variable>
    <variable name='numbers2'>
      <list struct='atomic' id='468'>5,-4,8,-6,0</list>
    </variable>
  </variables>
</project><media name="Lab 4.4 Number Cruncher" app="Snap! 5.1, http://snap.berkeley.edu" version="1"></media></snapdata>