<snapdata remixID="8980922"><project name="Lab 3.3" app="Snap! 5.1, http://snap.berkeley.edu" version="1"><notes></notes><thumbnail>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKAAAAB4CAYAAAB1ovlvAAAFE0lEQVR4Xu2dyyu1bRSH13ZIKccycSqnlAyUsdMfYGJCFCbyLyDF3JShCXMZGShRIgOJTCjFhEJIIuTwdT+1v763PrT3s2st77ruesvgeZ611u+63M++t8Gb+Pz8/BQWCSglkEBApeQpGyWAgIigmgACqsZPcQTEAdUEEFA1foojIA6oJoCAqvFTHAFxQDUBBFSNn+IIiAOqCSCgavwUR0AcUE0AAVXjpzgC4oBqAgioGj/FERAHVBNAQNX4KY6AOKCaAAKqxk9xBMQB1QQQUDV+iiMgDqgmgICq8VMcAXFANQEEVI2f4giIA6oJIKBq/BRHQBxQTQABVeOnOALigGoCCKgaP8UREAdUE0BA1fgpjoA4oJoAAqrGT3EExAHVBBBQNX6KIyAOqCaAgKrxUxwBcUA1AQRUjZ/iCIgDqgkgoGr8FEdAHFBNAAEzEP/d3Z2cnp7K/f19Sk/Lzc2V2tpaKS8vT+m+v+liBIxJM8i3v78vzc3NUlZWltLTHh4e5OTkRAoLC6Wuri6le/+WixEwJsm9vT2pqqpKWb5k2fC/5W5sbEhXV1fMTn7n7QgYk9v6+npseY6PjyU/Pz8S2dtCwJjEkwImEgl5e3uTxsZGmZ+fl46Oji+fPD09LeFfcoXPj2HV1NTE7Ob33Y6AMZklBRwdHZWWlhaZmJiQ5eVlmZ2dlYKCAqmurpaPjw+5vb2Vx8dHmZubk4GBAXl5eZGVlZWoOgLGhOD59qSAk5OTsri4KD09PdLU1CSrq6tyc3Mj7e3tMj4+Ln19fdHOmJeXJzMzM1FkyV0QAT0bFHP2pIDhIHF5eRmdZktLS2VhYUFaW1ujXbCtrU22t7dlbW1NxsbGZGdnJ6ra2dnJDvgZjmGstBPIxCFkd3c3+j4wiOtt8RkwJvGjo6PoM1547aazwveIBwcH/+6G6TzjN9+DgBmgF74LzM7Ojr5QLi4ulpKSEgkvlrOzsx+fHq4Jh5dwj8eFgBmiHkQKh4kgU5Dv8PAw+hNbTk7OtxXCNeFg4nUh4Bfkl5aW5OrqSrq7u6WiouJHP87Pz6NDSNgJX19fpb6+3u2u9mNY/7kAAb9I6/n5WYaGhiKZgojh5/f3dxkZGfnfXW1rayu6trKyUhoaGlJh4PpaBPwG/+bmpkxNTUlRUdEfVz09Pcnw8HD0qu3v75ew+11cXLDrpfGrhIBpCBh2x8HBQcnKypLe3t40YueWZAII+M0rOOxy4U9m19fXf7yCw+c8VmYSQMAMHUIyg8PfUxDQH3NTEyOgKRz+mkFAf8xNTYyApnD4awYB/TE3NTECmsLhrxkE9Mfc1MQIaAqHv2YQ0B9zUxMjoCkc/ppBQH/MTU2MgKZw+GsGAf0xNzUxAprC4a8ZBPTH3NTECGgKh79mENAfc1MTI6ApHP6aQUB/zE1NjICmcPhrBgH9MTc1MQKawuGvGQT0x9zUxAhoCoe/ZhDQH3NTEyOgKRz+mkFAf8xNTYyApnD4awYB/TE3NTECmsLhrxkE9Mfc1MQIaAqHv2YQ0B9zUxMjoCkc/ppBQH/MTU2MgKZw+GsGAf0xNzUxAprC4a8ZBPTH3NTECGgKh79mENAfc1MTI6ApHP6aQUB/zE1NjICmcPhrBgH9MTc1MQKawuGvGQT0x9zUxAhoCoe/ZhDQH3NTEyOgKRz+mkFAf8xNTYyApnD4awYB/TE3NTECmsLhrxkE9Mfc1MQIaAqHv2YQ0B9zUxP/A0cj3bdMwV7LAAAAAElFTkSuQmCC</thumbnail><stage name="Stage" width="480" height="360" costume="0" color="255,255,255,1" tempo="60" threadsafe="false" volume="100" pan="0" lines="round" ternary="false" codify="false" inheritance="true" sublistIDs="false" scheduled="false" id="1"><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"></list></costumes><sounds><list struct="atomic" id="3"></list></sounds><variables></variables><blocks></blocks><scripts></scripts><sprites><sprite name="Sprite" idx="1" x="0" y="0" heading="90" scale="1" volume="100" pan="0" rotation="0" draggable="true" costume="0" color="80,80,80,1" pen="tip" id="8"><costumes><list struct="atomic" id="9"></list></costumes><sounds><list struct="atomic" id="10"></list></sounds><blocks></blocks><variables><variable name="cumulative days of year"><l>335</l></variable><variable name="days in February"><l>29</l></variable><variable name="iteration"><l>12</l></variable><variable name="first day of each month"><list struct="atomic" id="13">0,3,2,5,0,3,5,1,4,6,2,4</list></variable><variable name="y"><l>1991</l></variable><variable name="modulo numerator"><l>0</l></variable></variables><scripts><comment x="10" y="10" w="90" collapsed="false">1 - Basics</comment><script x="123" y="21"><custom-block s="month name for month number %n"><l>3</l><comment w="90" collapsed="false">1.1</comment></custom-block></script><script x="112" y="355"><custom-block s="date of day number %n in year %n"><l>365</l><l>2049</l><comment w="90" collapsed="false">2.3</comment></custom-block></script><script x="125" y="277"><custom-block s="is day %n of month name %txt a valid date"><l>29</l><l>February</l><comment w="90" collapsed="false">2.2</comment></custom-block></script><script x="137" y="202"><custom-block s="is %n a leap year"><l>2020</l><comment w="90" collapsed="false">2.1.</comment></custom-block></script><comment x="10" y="191" w="90" collapsed="false">2. Going Farther</comment><script x="134" y="67"><custom-block s="day name of day number %n"><l>5</l><comment w="80" collapsed="false">1.2</comment></custom-block></script><script x="132" y="129"><custom-block s="days in month name %txt"><l>January</l><comment w="90" collapsed="false">1.3</comment></custom-block></script><script x="111" y="435"><custom-block s="day of week for day %n of month name %txt in year %n"><l>9</l><l>June</l><l>1991</l><comment w="90" collapsed="false">2.4 BONUS</comment></custom-block></script></scripts></sprite><watcher scope="Sprite" var="cumulative days of year" style="normal" x="10" y="10" color="243,118,29" hidden="true"/><watcher scope="Sprite" var="days in February" style="normal" x="10" y="31.000001999999995" color="243,118,29" hidden="true"/><watcher scope="Sprite" var="iteration" style="normal" x="10" y="52.00000399999999" color="243,118,29" hidden="true"/><watcher scope="Sprite" var="first day of each month" style="normal" x="10" y="73.00000599999998" color="243,118,29" hidden="true"/><watcher scope="Sprite" var="y" style="normal" x="10" y="94.00000799999998" color="243,118,29" hidden="true"/><watcher scope="Sprite" var="modulo numerator" style="normal" x="10" y="115.00000999999997" color="243,118,29" hidden="true"/></sprites></stage><hidden></hidden><headers></headers><code></code><blocks><block-definition s="month name for month number %&apos;month number&apos;" type="command" category="operators"><comment w="90" collapsed="false">Manual mapping from each month number (1, 2, ..., 11, 12) to each month</comment><header></header><code></code><translations></translations><inputs><input type="%n"></input></inputs><script><block s="doIf"><block s="reportEquals"><block var="month number"/><l>1</l></block><script><block s="doSayFor"><l>January</l><l>2</l></block><block s="doStopThis"><l><option>this block</option></l></block></script></block><block s="doIf"><block s="reportEquals"><block var="month number"/><l>2</l></block><script><block s="doSayFor"><l>February</l><l>2</l></block><block s="doStopThis"><l><option>this block</option></l></block></script></block><block s="doIf"><block s="reportEquals"><block var="month number"/><l>3</l></block><script><block s="doSayFor"><l>March</l><l>2</l></block><block s="doStopThis"><l><option>this block</option></l></block></script></block><block s="doIf"><block s="reportEquals"><block var="month number"/><l>4</l></block><script><block s="doSayFor"><l>April</l><l>2</l></block><block s="doStopThis"><l><option>this block</option></l></block></script></block><block s="doIf"><block s="reportEquals"><block var="month number"/><l>5</l></block><script><block s="doSayFor"><l>May</l><l>2</l></block><block s="doStopThis"><l><option>this block</option></l></block></script></block><block s="doIf"><block s="reportEquals"><block var="month number"/><l>6</l></block><script><block s="doSayFor"><l>June</l><l>2</l></block><block s="doStopThis"><l><option>this block</option></l></block></script></block><block s="doIf"><block s="reportEquals"><block var="month number"/><l>7</l></block><script><block s="doSayFor"><l>July</l><l>2</l></block><block s="doStopThis"><l><option>this block</option></l></block></script></block><block s="doIf"><block s="reportEquals"><block var="month number"/><l>8</l></block><script><block s="doSayFor"><l>August</l><l>2</l></block><block s="doStopThis"><l><option>this block</option></l></block></script></block><block s="doIf"><block s="reportEquals"><block var="month number"/><l>9</l></block><script><block s="doSayFor"><l>September</l><l>2</l></block><block s="doStopThis"><l><option>this block</option></l></block></script></block><block s="doIf"><block s="reportEquals"><block var="month number"/><l>10</l></block><script><block s="doSayFor"><l>October</l><l>2</l></block><block s="doStopThis"><l><option>this block</option></l></block></script></block><block s="doIf"><block s="reportEquals"><block var="month number"/><l>11</l></block><script><block s="doSayFor"><l>November</l><l>2</l></block><block s="doStopThis"><l><option>this block</option></l></block></script></block><block s="doIf"><block s="reportEquals"><block var="month number"/><l>12</l></block><script><block s="doSayFor"><l>December</l><l>2</l></block><block s="doStopThis"><l><option>this block</option></l></block></script></block><block s="doSayFor"><l>Month does not exist</l><l>2</l><comment w="90" collapsed="false">Month was not 1, 2, ..., or 12</comment></block></script></block-definition><block-definition s="day name of day number %&apos;day number&apos;" type="command" category="operators"><comment w="90" collapsed="false">Manual mapping from each day number (1, 2, ..., 6, 7) to each day of the week</comment><header></header><code></code><translations></translations><inputs><input type="%n"></input></inputs><script><block s="doIf"><block s="reportEquals"><block var="day number"/><l>1</l></block><script><block s="doSayFor"><l>Sunday</l><l>2</l></block><block s="doStopThis"><l><option>this block</option></l></block></script></block><block s="doIf"><block s="reportEquals"><block var="day number"/><l>2</l></block><script><block s="doSayFor"><l>Monday</l><l>2</l></block><block s="doStopThis"><l><option>this block</option></l></block></script></block><block s="doIf"><block s="reportEquals"><block var="day number"/><l>3</l></block><script><block s="doSayFor"><l>Tuesday</l><l>2</l></block><block s="doStopThis"><l><option>this block</option></l></block></script></block><block s="doIf"><block s="reportEquals"><block var="day number"/><l>4</l></block><script><block s="doSayFor"><l>Wednesday</l><l>2</l></block><block s="doStopThis"><l><option>this block</option></l></block></script></block><block s="doIf"><block s="reportEquals"><block var="day number"/><l>5</l></block><script><block s="doSayFor"><l>Thursday</l><l>2</l></block><block s="doStopThis"><l><option>this block</option></l></block></script></block><block s="doIf"><block s="reportEquals"><block var="day number"/><l>6</l></block><script><block s="doSayFor"><l>Friday</l><l>2</l></block><block s="doStopThis"><l><option>this block</option></l></block></script></block><block s="doIf"><block s="reportEquals"><block var="day number"/><l>7</l></block><script><block s="doSayFor"><l>Saturday</l><l>2</l></block><block s="doStopThis"><l><option>this block</option></l></block></script></block><block s="doIf"><block s="reportLessThan"><block var="day number"/><l>0</l></block><script><custom-block s="day name of day number %n"><block s="reportSum"><block var="day number"/><l>7</l></block><comment w="90" collapsed="false">recursion</comment></custom-block></script></block><block s="doIf"><block s="reportGreaterThan"><block var="day number"/><l>7</l></block><script><custom-block s="day name of day number %n"><block s="reportDifference"><block var="day number"/><l>7</l><comment w="90" collapsed="false">recursion</comment></block></custom-block></script></block></script></block-definition><block-definition s="days in month name %&apos;month name&apos;" type="command" category="operators"><header></header><code></code><translations></translations><inputs><input type="%txt"></input></inputs><script><block s="doIf"><block s="reportOr"><block s="reportOr"><block s="reportOr"><block s="reportEquals"><block var="month name"/><l>January</l></block><block s="reportEquals"><block var="month name"/><l>March</l></block></block><block s="reportOr"><block s="reportEquals"><block var="month name"/><l>May</l></block><block s="reportEquals"><block var="month name"/><l>July</l></block></block></block><block s="reportOr"><block s="reportOr"><block s="reportEquals"><block var="month name"/><l>August</l></block><block s="reportEquals"><block var="month name"/><l>October</l></block></block><block s="reportEquals"><block var="month name"/><l>December</l></block></block><comment w="90" collapsed="false">If any of these months, 31 days</comment></block><script><block s="doSayFor"><l>31</l><l>2</l></block><block s="doStopThis"><l><option>this block</option></l></block></script></block><block s="doIf"><block s="reportEquals"><block var="month name"/><l>February</l></block><script><block s="doSayFor"><l>28</l><l>2</l></block><block s="doStopThis"><l><option>this block</option></l></block></script><comment w="90" collapsed="false">If February, 28 days</comment></block><block s="doIf"><block s="reportOr"><block s="reportOr"><block s="reportEquals"><block var="month name"/><l>April</l></block><block s="reportEquals"><block var="month name"/><l>June</l></block></block><block s="reportOr"><block s="reportEquals"><block var="month name"/><l>September</l></block><block s="reportEquals"><block var="month name"/><l>November</l><comment w="90" collapsed="false">If any of these months, 30 days</comment></block></block></block><script><block s="doSayFor"><l>30</l><l>2</l></block><block s="doStopThis"><l><option>this block</option></l></block></script></block><block s="doSayFor"><l>Month does not exist</l><l>2</l><comment w="90" collapsed="false">Month not found</comment></block></script></block-definition><block-definition s="is %&apos;year number&apos; a leap year" type="command" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input></inputs><script><block s="doIfElse"><block s="reportNot"><block s="reportEquals"><block s="reportModulus"><block var="year number"/><l>4</l></block><l>0</l></block><comment w="90" collapsed="false">Only years divisible by 4 can be leap years</comment></block><script><block s="doSayFor"><l>Not a leap year</l><l>2</l></block></script><script><block s="doIfElse"><block s="reportNot"><block s="reportEquals"><block s="reportModulus"><block var="year number"/><l>100</l></block><l>0</l></block><comment w="90" collapsed="false">Years divisible by 4 but not divisible by 100 are always leap years </comment></block><script><block s="doSayFor"><l>Leap year</l><l>2</l></block></script><script><block s="doIfElse"><block s="reportNot"><block s="reportEquals"><block s="reportModulus"><block var="year number"/><l>400</l></block><l>0</l></block></block><script><block s="doSayFor"><l>Not a leap year</l><l>2</l><comment w="90" collapsed="true">Years divisible by 100 but not 400 are not leap years</comment></block></script><script><block s="doSayFor"><l>Leap year</l><l>2</l><comment w="90" collapsed="false">All years divisible by 400 are leap years</comment></block></script></block></script></block></script></block></script></block-definition><block-definition s="is day %&apos;day&apos; of month name %&apos;month name&apos; a valid date" type="command" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%txt"></input></inputs><script><block s="doIfElse"><block s="reportLessThan"><custom-block s="days in month number %n in year %n"><custom-block s="month number for month name %txt (reporter)"><block var="month name"/></custom-block><l>2019</l></custom-block><l>1</l><comment w="90" collapsed="false">Verify month exists</comment></block><script><block s="doSayFor"><l>Month does not exist</l><l>2</l></block></script><script><block s="doIfElse"><block s="reportAnd"><block s="reportLessThan"><block var="day"/><block s="reportSum"><custom-block s="days in month number %n in year %n"><custom-block s="month number for month name %txt (reporter)"><block var="month name"/></custom-block><l>2020</l></custom-block><l>1</l></block><comment w="90" collapsed="false">If day exists in leap year</comment></block><block s="reportGreaterThan"><block var="day"/><l>0</l></block></block><script><block s="doIfElse"><block s="reportAnd"><block s="reportLessThan"><block var="day"/><block s="reportSum"><custom-block s="days in month number %n in year %n"><custom-block s="month number for month name %txt (reporter)"><block var="month name"/></custom-block><l>2019</l></custom-block><l>1</l></block><comment w="90" collapsed="false">If day exists in common year</comment></block><block s="reportGreaterThan"><block var="day"/><l>0</l></block></block><script><block s="doSayFor"><l>Date exists</l><l>2</l></block><block s="doStopThis"><l><option>this block</option></l></block></script><script><block s="doSayFor"><l>Date exists in leap years only</l><l>2</l></block></script></block></script><script><block s="doSayFor"><l>Date does not exist</l><l>2</l></block></script></block></script></block></script></block-definition><block-definition s="days in month number %&apos;month number&apos; in year %&apos;year number&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input></inputs><script><block s="doIf"><block s="reportEquals"><block var="month number"/><l>1</l></block><script><block s="doReport"><l>31</l></block></script></block><block s="doIf"><block s="reportEquals"><block var="month number"/><l>2</l></block><script><block s="doIf"><custom-block s="is %n a leap year (predicate)"><block var="year number"/></custom-block><script><block s="doReport"><l>29</l></block></script></block><block s="doReport"><l>28</l></block></script></block><block s="doIf"><block s="reportEquals"><block var="month number"/><l>3</l></block><script><block s="doReport"><l>31</l></block></script></block><block s="doIf"><block s="reportEquals"><block var="month number"/><l>4</l></block><script><block s="doReport"><l>30</l></block></script></block><block s="doIf"><block s="reportEquals"><block var="month number"/><l>5</l></block><script><block s="doReport"><l>31</l></block></script></block><block s="doIf"><block s="reportEquals"><block var="month number"/><l>6</l></block><script><block s="doReport"><l>30</l></block></script></block><block s="doIf"><block s="reportEquals"><block var="month number"/><l>7</l></block><script><block s="doReport"><l>31</l></block></script></block><block s="doIf"><block s="reportEquals"><block var="month number"/><l>8</l></block><script><block s="doReport"><l>31</l></block></script></block><block s="doIf"><block s="reportEquals"><block var="month number"/><l>9</l></block><script><block s="doReport"><l>30</l></block></script></block><block s="doIf"><block s="reportEquals"><block var="month number"/><l>10</l></block><script><block s="doReport"><l>31</l></block></script></block><block s="doIf"><block s="reportEquals"><block var="month number"/><l>11</l></block><script><block s="doReport"><l>30</l></block></script></block><block s="doIf"><block s="reportEquals"><block var="month number"/><l>12</l></block><script><block s="doReport"><l>31</l></block></script></block><block s="doReport"><l>0</l></block></script></block-definition><block-definition s="date of day number %&apos;day number&apos; in year %&apos;year number&apos;" type="command" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input></inputs><script><block s="doIf"><block s="reportLessThan"><block var="day number"/><l>1</l><comment w="90" collapsed="false">Is day valid</comment></block><script><block s="doSayFor"><l>Date does not exist</l><l>2</l></block></script></block><block s="doSetVar"><l>cumulative days of year</l><l>1</l></block><block s="doSetVar"><l>iteration</l><l>1</l><comment w="90" collapsed="false">Iterating through all 12 months</comment></block><block s="doRepeat"><l>12</l><script><block s="doIf"><block s="reportLessThan"><block var="day number"/><block s="reportSum"><custom-block s="days in month number %n in year %n"><block var="iteration"/><block var="year number"/></custom-block><block var="cumulative days of year"/><comment w="90" collapsed="false">If the date is in this month, say so and stop</comment></block></block><script><block s="doSayFor"><block s="reportJoinWords"><list><custom-block s="month name for month number %n (reporter)"><block var="iteration"/></custom-block><l> </l><block s="reportSum"><block s="reportDifference"><block var="day number"/><block var="cumulative days of year"/></block><l>1</l></block><l>, </l><block var="year number"/></list></block><l>2</l></block><block s="doStopThis"><l><option>all</option></l></block></script></block><block s="doChangeVar"><l>cumulative days of year</l><custom-block s="days in month number %n in year %n"><block var="iteration"/><block var="year number"/></custom-block><comment w="90" collapsed="false">Otherwise add this months&apos; days to the cumulative days and continue</comment></block><block s="doChangeVar"><l>iteration</l><l>1</l></block></script></block><block s="doSayFor"><l>Date does not exist</l><l>2</l></block></script></block-definition><block-definition s="is %&apos;year number&apos; a leap year (predicate)" type="predicate" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input></inputs><script><block s="doIfElse"><block s="reportNot"><block s="reportEquals"><block s="reportModulus"><block var="year number"/><l>4</l></block><l>0</l></block></block><script><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></block></block></script><script><block s="doIfElse"><block s="reportNot"><block s="reportEquals"><block s="reportModulus"><block var="year number"/><l>100</l></block><l>0</l></block></block><script><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></l></block></block></script><script><block s="doIfElse"><block s="reportNot"><block s="reportEquals"><block s="reportModulus"><block var="year number"/><l>400</l></block><l>0</l></block></block><script><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></block></block></script><script><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block></script></block></script></block></script></block-definition><block-definition s="month name for month number %&apos;month number&apos; (reporter)" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input></inputs><script><block s="doIf"><block s="reportEquals"><block var="month number"/><l>1</l></block><script><block s="doReport"><l>January</l></block></script></block><block s="doIf"><block s="reportEquals"><block var="month number"/><l>2</l></block><script><block s="doReport"><l>February</l></block></script></block><block s="doIf"><block s="reportEquals"><block var="month number"/><l>3</l></block><script><block s="doReport"><l>March</l></block></script></block><block s="doIf"><block s="reportEquals"><block var="month number"/><l>4</l></block><script><block s="doReport"><l>April</l></block></script></block><block s="doIf"><block s="reportEquals"><block var="month number"/><l>5</l></block><script><block s="doReport"><l>May</l></block></script></block><block s="doIf"><block s="reportEquals"><block var="month number"/><l>6</l></block><script><block s="doReport"><l>June</l></block></script></block><block s="doIf"><block s="reportEquals"><block var="month number"/><l>7</l></block><script><block s="doReport"><l>July</l></block></script></block><block s="doIf"><block s="reportEquals"><block var="month number"/><l>8</l></block><script><block s="doReport"><l>August</l></block></script></block><block s="doIf"><block s="reportEquals"><block var="month number"/><l>9</l></block><script><block s="doReport"><l>September</l></block></script></block><block s="doIf"><block s="reportEquals"><block var="month number"/><l>10</l></block><script><block s="doReport"><l>October</l></block></script></block><block s="doIf"><block s="reportEquals"><block var="month number"/><l>11</l></block><script><block s="doReport"><l>November</l></block></script></block><block s="doIf"><block s="reportEquals"><block var="month number"/><l>12</l></block><script><block s="doReport"><l>December</l></block></script></block><block s="doReport"><l></l></block></script></block-definition><block-definition s="day of week for day %&apos;day&apos; of month name %&apos;month name&apos; in year %&apos;year&apos;" type="command" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%txt"></input><input type="%n"></input></inputs><script><block s="doIf"><block s="reportNot"><custom-block s="is day %n of month number %n and year %n a valid date"><block var="day"/><custom-block s="month number for month name %txt (reporter)"><block var="month name"/></custom-block><block var="year"/><comment w="90" collapsed="false">Is date valid</comment></custom-block></block><script><block s="doSayFor"><l>Date is invalid</l><l>2</l></block><block s="doStopThis"><l><option>this script</option></l></block></script></block><block s="doSetVar"><l>first day of each month</l><block s="reportNewList"><list><l>0</l><l>3</l><l>2</l><l>5</l><l>0</l><l>3</l><l>5</l><l>1</l><l>4</l><l>6</l><l>2</l><l>4</l></list><comment w="90" collapsed="false">List represents offsets by month for starting day</comment></block></block><block s="doIfElse"><block s="reportLessThan"><custom-block s="month number for month name %txt (reporter)"><block var="month name"/></custom-block><l>3</l></block><script><block s="doSetVar"><l>y</l><block s="reportDifference"><block var="year"/><l>1</l><comment w="90" collapsed="false">Necessary since leap years only effect days in March onward</comment></block></block></script><script><block s="doSetVar"><l>y</l><block var="year"/></block></script></block><custom-block s="day name of day number %n"><block s="reportSum"><block s="reportModulus"><block s="reportSum"><block s="reportSum"><block s="reportDifference"><block s="reportSum"><block var="y"/><custom-block s="truncate %n"><block s="reportQuotient"><block var="y"/><l>4</l></block></custom-block></block><custom-block s="truncate %n"><block s="reportQuotient"><block var="y"/><l>100</l></block></custom-block></block><custom-block s="truncate %n"><block s="reportQuotient"><block var="y"/><l>400</l></block></custom-block></block><block s="reportSum"><block s="reportListItem"><custom-block s="month number for month name %txt (reporter)"><block var="month name"/></custom-block><block var="first day of each month"/></block><block var="day"/></block></block><l>7</l></block><l>1</l><comment w="90" collapsed="false">Sakamoto method</comment></block></custom-block></script></block-definition><block-definition s="month number for month name %&apos;month name&apos; (reporter)" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%txt"></input></inputs><script><block s="doIf"><block s="reportEquals"><block var="month name"/><l>January</l></block><script><block s="doReport"><l>1</l></block></script></block><block s="doIf"><block s="reportEquals"><block var="month name"/><l>February</l></block><script><block s="doReport"><l>2</l></block></script></block><block s="doIf"><block s="reportEquals"><block var="month name"/><l>March</l></block><script><block s="doReport"><l>3</l></block></script></block><block s="doIf"><block s="reportEquals"><block var="month name"/><l>April</l></block><script><block s="doReport"><l>4</l></block></script></block><block s="doIf"><block s="reportEquals"><block var="month name"/><l>May</l></block><script><block s="doReport"><l>5</l></block></script></block><block s="doIf"><block s="reportEquals"><block var="month name"/><l>June</l></block><script><block s="doReport"><l>6</l></block></script></block><block s="doIf"><block s="reportEquals"><block var="month name"/><l>July</l></block><script><block s="doReport"><l>7</l></block></script></block><block s="doIf"><block s="reportEquals"><block var="month name"/><l>August</l></block><script><block s="doReport"><l>8</l></block></script></block><block s="doIf"><block s="reportEquals"><block var="month name"/><l>September</l></block><script><block s="doReport"><l>9</l></block></script></block><block s="doIf"><block s="reportEquals"><block var="month name"/><l>October</l></block><script><block s="doReport"><l>10</l></block></script></block><block s="doIf"><block s="reportEquals"><block var="month name"/><l>November</l></block><script><block s="doReport"><l>11</l></block></script></block><block s="doIf"><block s="reportEquals"><block var="month name"/><l>December</l></block><script><block s="doReport"><l>12</l></block></script></block><block s="doReport"><l>0</l></block></script></block-definition><block-definition s="is day %&apos;date&apos; of month number %&apos;month number&apos; and year %&apos;year&apos; a valid date" type="predicate" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input><input type="%n"></input></inputs><script><block s="doIfElse"><block s="reportLessThan"><custom-block s="days in month number %n in year %n"><block var="month number"/><block var="year"/></custom-block><block var="date"/></block><script><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></block></block></script><script><block s="doIf"><block s="reportAnd"><block s="reportLessThan"><block var="date"/><block s="reportSum"><custom-block s="days in month number %n in year %n"><block var="month number"/><block var="year"/></custom-block><l>1</l></block></block><block s="reportGreaterThan"><block var="date"/><l>0</l></block></block><script><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block></script></block><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></block></block></script></block-definition><block-definition s="truncate %&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="reportListItem"><l>1</l><block s="reportTextSplit"><block var="number"/><l>.</l></block></block></block></script></block-definition></blocks><variables></variables></project><media name="Lab 3.3" app="Snap! 5.1, http://snap.berkeley.edu" version="1"></media></snapdata>