<snapdata remixID="10368249"><project name="2021 U4L2p2 Caesar Cipher Project (answer file)" app="Snap! 6, https://snap.berkeley.edu" version="1"><notes></notes><thumbnail>data:image/png;base64,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</thumbnail><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="true" hyperops="true" codify="false" inheritance="false" 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="149.99173864203058" y="49.62115042514177" heading="90" scale="1" volume="100" pan="0" rotation="2" draggable="true" costume="1" color="80,80,80,1" pen="tip" id="8"><costumes><list id="9"><item><costume name="Caesar2" center-x="8" center-y="5.75" image="data:image/png;base64,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" id="10"/></item></list></costumes><sounds><list struct="atomic" id="11"></list></sounds><blocks></blocks><variables></variables><scripts><comment x="19" y="88" w="484.66666666666674" collapsed="false">The unicode of block reports the number that is used for a particular character:</comment><script x="19" y="142"><block s="reportUnicode"><l>a</l></block></script><comment x="19" y="175.00000000000003" w="484.66666666666674" collapsed="false">The unicode as letter block reports the character that a given Unicode number represents:</comment><script x="19" y="229.00000000000003"><block s="reportUnicodeAsLetter"><l>65</l></block></script><comment x="19" y="262" w="484.66666666666674" collapsed="false">1.0 Experiment with the unicode of and unicode as letter blocks. Try changing a word into Unicode, telling the Unicode to a friend, and then having them change it back into a word.</comment><script x="19" y="328"><block s="reportUnicode"><l>a</l></block></script><script x="19" y="361"><block s="reportUnicodeAsLetter"><l>65</l></block></script><comment x="19" y="394" w="484.66666666666674" collapsed="false">2.0 On paper, use a shift cipher to encrypt and decrypt a short message to get a feel for how this cipher works.</comment><comment x="19" y="460" w="484.66666666666674" collapsed="false">3.0 Write a Caesar cipher procedure that works for any input text and any shift value.</comment><script x="19" y="513.9999999999999"><custom-block s="Encode Text: %txt Shift: %n"><l>Invasion of Normandy is on 6 June 1944</l><l>4</l></custom-block></script><comment x="19" y="546.9999999999999" w="484.66666666666674" collapsed="false">4.0 Now test your work. Agree with your partner on a shift value for the encryption. Then use your program to encrypt a secret message and e-mail it to your partner. Then let your partner decrypt your message by using the program to reverse the shift.</comment><script x="19" y="624.9999999999999"><block s="receiveGo"></block><block s="doSetVar"><l>inputText</l><l></l></block><block s="doSetVar"><l>shiftValue</l><l></l></block><block s="doSetVar"><l>outputText</l><l></l></block><block s="gotoXY"><l>150</l><l>50</l></block><block s="doAsk"><l>Enter your text:</l></block><block s="doSetVar"><l>inputText</l><block s="getLastAnswer"></block></block><block s="doUntil"><block s="reportIsA"><block s="getLastAnswer"></block><l><option>number</option></l></block><script><block s="doAsk"><l>What is the Shift Value for the Ceasar Cipher?  Enter a whole number.</l></block><block s="doSetVar"><l>shiftValue</l><block s="getLastAnswer"></block></block></script></block><block s="doAsk"><l>Encipher or Decipher?</l></block><block s="doIf"><block s="reportEquals"><block s="reportLetter"><l>1</l><block s="getLastAnswer"></block></block><l>D</l></block><script><block s="doSetVar"><l>shiftValue</l><block s="reportDifference"><l>0</l><block var="shiftValue"/></block></block></script></block><block s="doSetVar"><l>outputText</l><block s="reportNewList"><list><custom-block s="Encode Text: %txt Shift: %n"><block var="inputText"/><block var="shiftValue"/></custom-block></list></block></block></script><comment x="19" y="1001.4999999999999" w="484.66666666666674" collapsed="false">If There Is Time...&#xD;5.0 Improve your initials block from your U3L2-ContactList project so that it will find the initials for a person with a hyphenated name like Alexandria Ocasio-Cortez.</comment><script x="19" y="1079.5"><custom-block s="initials from name %s (unicode)"><l>Alexandria Ocasio-Cortex</l></custom-block></script><script x="19" y="1112.5"><custom-block s="Initials from name: %s (split)"><l>Alexandria Ocasio-Cortex</l></custom-block></script><comment x="19" y="1145.5" w="484.66666666666674" collapsed="false">Take It Further...&#xD;A. Implement a version of the Caesar Cipher that not only shifts the characters but also wraps them around the alphabet when the end of the alphabet is reached. You may wish to restrict your alphabet to the set of printable characters given above in the Unicode table.</comment><script x="22" y="1304.333333333333"><custom-block s="Encode One Character %s %n (TIF A version)"><l>z</l><l>4</l><comment w="177.33333333333334" collapsed="true">The real change is in here.</comment></custom-block></script><script x="22" y="1268.5"><custom-block s="Encode %txt %n (TIF A version)"><l>Invasion of Normandy is on 6 June 1944</l><l>4</l></custom-block></script><script x="78.3369140625" y="1241.5"><block var="inputText"/></script><script x="246.3359375" y="1242.5"><block var="shiftValue"/></script><comment x="25" y="1461.333333333333" w="484.66666666666674" collapsed="false">Take It Further...&#xD;C. Create your own encryption/decryption scheme and implement it in Snap!.</comment><comment x="22" y="1340.333333333333" w="484.66666666666674" collapsed="false">Take It Further...&#xD;B. Do some research on other types of ciphers used historically. Especially read about the Vigenere Cipher which was used extensively in communicating sensitive information during World War 2.&#xD;&#xD;(Put your response here:  )&#xD;</comment><comment x="19" y="10" w="485" collapsed="false">Updated by Firstname Lastname on 05/24/2021&#xD;2021 U4L2p2 Caesar Cipher Project (answer file)&#xD;Unit 4 Lab 2: Cybersecurity, Page 2 &gt; Caesar Cipher Project</comment></scripts></sprite><watcher var="inputText" style="normal" x="10.86841153745388" y="7.0191824512717105" color="243,118,29"/><watcher var="shiftValue" style="normal" x="12.226962979635005" y="39.94141240013971" color="243,118,29"/><watcher var="outputText" style="normal" x="14.966708388034931" y="73.85991381417317" color="243,118,29" extX="296.00000000000045" extY="69.9999999999999"/></sprites></stage><hidden></hidden><headers></headers><code></code><blocks><block-definition s="Encode Text: %&apos;text&apos; Shift: %&apos;shift&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%txt"></input><input type="%n"></input></inputs><script><block s="doDeclareVariables"><list><l>encodedText</l></list></block><block s="doSetVar"><l>encodedText</l><l></l></block><custom-block s="for %upvar = %n to %n %cs"><l>i</l><l>1</l><block s="reportStringSize"><block var="text"/></block><script><block s="doSetVar"><l>encodedText</l><block s="reportJoinWords"><list><block var="encodedText"/><custom-block s="Encode One Character %s %n"><block s="reportLetter"><block var="i"/><block var="text"/></block><block var="shift"/></custom-block></list></block></block></script></custom-block><block s="doReport"><block var="encodedText"/></block></script><scripts><script x="17.59999999999991" y="257.8"><block s="doReport"><custom-block s="list $arrowRight word %l"><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="Encode One Character %s %n"><l></l><block var="shift"/></custom-block></autolambda><list></list></block><block s="reportTextSplit"><block var="text"/><l><option>letter</option></l></block></block></custom-block><comment w="90" collapsed="false">A more clever approach to this problem can be achieved using the higher order function (HOF) map.  Courtesy of Christopher Archie of teacher cohort 17-18. </comment></block></script></scripts></block-definition><block-definition s="for %&apos;i&apos; = %&apos;start&apos; to %&apos;end&apos; %&apos;action&apos;" type="command" category="control"><header></header><code></code><translations></translations><inputs><input type="%upvar"></input><input type="%n">1</input><input type="%n">10</input><input type="%cs"></input></inputs><script><block s="doDeclareVariables"><list><l>step</l><l>tester</l></list></block><block s="doIfElse"><block s="reportGreaterThan"><block var="start"/><block var="end"/></block><script><block s="doSetVar"><l>step</l><l>-1</l></block><block s="doSetVar"><l>tester</l><block s="reifyReporter"><autolambda><block s="reportLessThan"><block var="i"/><block var="end"/></block></autolambda><list></list></block></block></script><script><block s="doSetVar"><l>step</l><l>1</l></block><block s="doSetVar"><l>tester</l><block s="reifyReporter"><autolambda><block s="reportGreaterThan"><block var="i"/><block var="end"/></block></autolambda><list></list></block></block></script></block><block s="doSetVar"><l>i</l><block var="start"/></block><block s="doUntil"><block s="evaluate"><block var="tester"/><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="Encode One Character %&apos;char&apos; %&apos;shift&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%n"></input></inputs><script><block s="doReport"><block s="reportUnicodeAsLetter"><block s="reportSum"><block s="reportUnicode"><block var="char"/></block><block var="shift"/></block></block></block></script></block-definition><block-definition s="Encode One Character %&apos;char&apos; %&apos;shift&apos; (TIF A version)" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%n"></input></inputs><script><block s="doDeclareVariables"><list><l>new character</l></list></block><block s="doSetVar"><l>new character</l><block s="reportSum"><block s="reportUnicode"><block var="char"/></block><block var="shift"/></block></block><block s="doIf"><block s="reportGreaterThan"><block var="new character"/><l>126</l></block><script><block s="doChangeVar"><l>new character</l><block s="reportDifference"><l>32</l><l>127</l></block></block></script></block><block s="doIf"><block s="reportLessThan"><block var="new character"/><l>32</l></block><script><block s="doChangeVar"><l>new character</l><block s="reportDifference"><l>127</l><l>32</l></block></block></script></block><block s="doReport"><block s="reportUnicodeAsLetter"><block var="new character"/></block></block></script></block-definition><block-definition s="Encode %&apos;text&apos; %&apos;shift&apos; (TIF A version)" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%txt"></input><input type="%n"></input></inputs><script><block s="doDeclareVariables"><list><l>encodedText</l></list></block><block s="doSetVar"><l>encodedText</l><l></l></block><custom-block s="for %upvar = %n to %n %cs"><l>i</l><l>1</l><block s="reportStringSize"><block var="text"/></block><script><block s="doSetVar"><l>encodedText</l><block s="reportJoinWords"><list><block var="encodedText"/><custom-block s="Encode One Character %s %n (TIF A version)"><block s="reportLetter"><block var="i"/><block var="text"/></block><block var="shift"/></custom-block></list></block></block></script></custom-block><block s="doReport"><block var="encodedText"/></block></script><scripts><script x="17.59999999999991" y="257.8"><block s="doReport"><custom-block s="list $arrowRight word %l"><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="Encode One Character %s %n"><l></l><block var="shift"/></custom-block></autolambda><list></list></block><block s="reportTextSplit"><block var="text"/><l><option>letter</option></l></block></block></custom-block><comment w="90" collapsed="false">A more clever approach to this problem can be achieved using the higher order function (HOF) map.  Courtesy of Christopher Archie of teacher cohort 17-18. </comment></block></script></scripts></block-definition><block-definition s="initials from name %&apos;name&apos; (unicode)" type="reporter" category="operators"><comment w="79.33333333333333" collapsed="true">4.2.2 ITIT 5</comment><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><block s="reportCombine"><block s="reportKeep"><block s="reifyPredicate"><autolambda><custom-block s="is %s between %s and %s ?"><block s="reportUnicode"><l></l></block><block s="reportUnicode"><l>A</l></block><block s="reportUnicode"><l>Z</l></block></custom-block></autolambda><list></list></block><block s="reportTextSplit"><block var="name"/><l><option>letter</option></l></block></block><block s="reifyReporter"><autolambda><block s="reportJoinWords"><list><l></l><l></l></list></block></autolambda><list></list></block></block><comment w="238" collapsed="false">Version using UNICODE block.&#xD;Treats the name as just a string of characters and searches for capital letters in it.  So if the name were &quot;BeAuTy and jOy of computiNg&quot; the block would report BATON. </comment></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="reportOr"><block s="reportLessThan"><block var="a"/><block var="b"/></block><block s="reportEquals"><block var="a"/><block var="b"/></block></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="reportOr"><block s="reportGreaterThan"><block var="a"/><block var="b"/></block><block s="reportEquals"><block var="a"/><block var="b"/></block></block></block></script></block-definition><block-definition s="is %&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="reportAnd"><custom-block s="%s ≥ %s"><block var="mid"/><block var="low"/></custom-block><custom-block s="%s ≤ %s"><block var="mid"/><block var="high"/></custom-block></block></block></script><scripts><comment x="14.666666666666666" y="88.8" 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="all but first letter of %&apos;string&apos;" type="reporter" category="operators"><comment x="0" y="0" w="199" collapsed="false">Takes a text string as input, and reports a new text string containing all but the first character of the input.</comment><header></header><code></code><translations>pt:_ sem o primeiro caractere&#xD;</translations><inputs><input type="%txt"></input></inputs><script><block s="doDeclareVariables"><list><l>result</l><l>i</l></list></block><block s="doIf"><block s="reportIsA"><block var="string"/><l><option>list</option></l></block><script><block s="doReport"><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="all but first letter of %txt"><l></l></custom-block></autolambda><list></list></block><block var="string"/></block></block></script></block><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>str</l></list><l>return str.slice(1);</l></block><list><custom-block s="require nonempty %s %s"><block var="string"/><l>All but first of empty word.</l></custom-block></list></block></block></script><scripts><script x="11.333333333333334" y="249.0000000000001"><block s="doWarp"><script><block s="doSetVar"><l>result</l><l></l></block><block s="doSetVar"><l>i</l><l>2</l></block><block s="doUntil"><block s="reportGreaterThan"><block var="i"/><block s="reportStringSize"><block var="string"/></block></block><script><block s="doSetVar"><l>result</l><block s="reportJoinWords"><list><block var="result"/><block s="reportLetter"><block var="i"/><block var="string"/></block></list></block></block><block s="doChangeVar"><l>i</l><l>1</l></block></script></block><block s="doReport"><block var="result"/></block></script></block></script></scripts></block-definition><block-definition s="all but first word of %&apos;sentence&apos;" type="reporter" category="operators"><comment x="0" y="0" w="223.000001" collapsed="false">Takes a text string as input, divides it into words treating one or more spaces as a word separator (only spaces count; punctuation is part of the word) and reports a text string containing all but the first word, with one space between words and no spaces at the beginning or end. (Note: consider using SENTENCE➞LIST and processing the resulting list instead of doing recursion on sentences in text string form.  List operations are faster.)</comment><header></header><code></code><translations>pt:_ sem a primeira palavra&#xD;</translations><inputs><input type="%txt"></input></inputs><script><block s="doIf"><block s="reportIsA"><block var="sentence"/><l><option>list</option></l></block><script><block s="doIfElse"><block s="reportListIsEmpty"><block var="sentence"/></block><script><custom-block s="error %txt"><l>All but first of empty sentence.</l></custom-block></script><script><block s="doReport"><block s="reportCDR"><block var="sentence"/></block></block></script></block></script></block><block s="doReport"><custom-block s="list $arrowRight sentence %l"><block s="reportCDR"><custom-block s="require nonempty %s %s"><custom-block s="sentence $arrowRight list %txt"><block var="sentence"/></custom-block><l>All but first of empty sentence.</l></custom-block></block></custom-block></block></script><scripts><script x="13.333333333333334" y="368.8888888888889"><block s="doDeclareVariables"><list><l>index</l><l>bf</l></list></block><block s="doWarp"><script><block s="doSetVar"><l>bf</l><l></l></block><block s="doSetVar"><l>index</l><l>1</l></block><block s="doUntil"><block s="reportOr"><block s="reportEquals"><block var="index"/><block s="reportStringSize"><block var="sentence"/></block></block><block s="reportNot"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block></block></block><script><block s="doChangeVar"><l>index</l><l>1</l></block></script></block><block s="doIf"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block><script><custom-block s="error %txt"><l>All but first of empty sentence.</l></custom-block></script></block><block s="doUntil"><block s="reportOr"><block s="reportEquals"><block var="index"/><block s="reportStringSize"><block var="sentence"/></block></block><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block></block><script><block s="doChangeVar"><l>index</l><l>1</l></block></script></block><block s="doIf"><block s="reportEquals"><block var="index"/><block s="reportStringSize"><block var="sentence"/></block></block><script><block s="doReport"><l></l></block></script></block><block s="doUntil"><block s="reportOr"><block s="reportEquals"><block var="index"/><block s="reportStringSize"><block var="sentence"/></block></block><block s="reportNot"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block></block></block><script><block s="doChangeVar"><l>index</l><l>1</l></block></script></block><block s="doIf"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block><script><block s="doReport"><l></l></block></script></block><block s="doUntil"><block s="reportGreaterThan"><block var="index"/><block s="reportStringSize"><block var="sentence"/></block></block><script><block s="doSetVar"><l>bf</l><block s="reportJoinWords"><list><block var="bf"/><block s="reportLetter"><block var="index"/><block var="sentence"/></block></list></block></block><block s="doChangeVar"><l>index</l><l>1</l></block></script></block><block s="doReport"><block var="bf"/></block></script></block></script></scripts></block-definition><block-definition s="all but last letter of %&apos;string&apos;" type="reporter" category="operators"><comment x="0" y="0" w="218" collapsed="false">Takes a text string as input, and reports a new text string containing all but the last letter of the input.</comment><header></header><code></code><translations>pt:_ sem o último caractere&#xD;</translations><inputs><input type="%txt"></input></inputs><script><block s="doDeclareVariables"><list><l>result</l><l>i</l></list></block><block s="doIf"><block s="reportIsA"><block var="string"/><l><option>list</option></l></block><script><block s="doReport"><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="all but last letter of %txt"><l></l></custom-block></autolambda><list></list></block><block var="string"/></block></block></script></block><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>str</l></list><l>return str.slice(0,-1);</l></block><list><custom-block s="require nonempty %s %s"><block var="string"/><l>All but last of empty word.</l></custom-block></list></block></block></script><scripts><script x="10" y="264.77777777777777"><block s="doWarp"><script><block s="doSetVar"><l>result</l><l></l></block><block s="doSetVar"><l>i</l><l>1</l></block><block s="doUntil"><block s="reportEquals"><block var="i"/><block s="reportStringSize"><block var="string"/></block></block><script><block s="doSetVar"><l>result</l><block s="reportJoinWords"><list><block var="result"/><block s="reportLetter"><block var="i"/><block var="string"/></block></list></block></block><block s="doChangeVar"><l>i</l><l>1</l></block></script></block><block s="doReport"><block var="result"/></block></script></block></script></scripts></block-definition><block-definition s="all but last word of %&apos;sentence&apos;" type="reporter" category="operators"><comment x="0" y="0" w="211.99999999999997" collapsed="false">Takes a text string as input, divides it into words treating one or more spaces as a word separator (only spaces count; punctuation is part of the word) and reports a text string containing all but the last word, with one space between words and no spaces at the beginning or end.  (Note: consider using SENTENCE-&gt;LIST and processing the resulting list instead of doing recursion on sentences in text string form.  List operations are faster.)</comment><header></header><code></code><translations>pt:_ sem a última palavra&#xD;</translations><inputs><input type="%txt"></input></inputs><script><block s="doIf"><block s="reportIsA"><block var="sentence"/><l><option>list</option></l></block><script><block s="doIfElse"><block s="reportListIsEmpty"><block var="sentence"/></block><script><custom-block s="error %txt"><l>All but last of empty sentence.</l></custom-block></script><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>arr</l></list><l>return new List(arr.itemsArray().slice(0,-1));</l></block><list><block var="sentence"/></list></block></block></script></block></script></block><block s="doReport"><custom-block s="list $arrowRight sentence %l"><block s="evaluate"><block s="reportJSFunction"><list><l>arr</l></list><l>return new List(arr.asArray().slice(0,-1));</l></block><list><custom-block s="require nonempty %s %s"><custom-block s="sentence $arrowRight list %txt"><block var="sentence"/></custom-block><l>All but last of empty sentence.</l></custom-block></list></block></custom-block></block></script><scripts><script x="9.333333333333334" y="384.4444444444446"><block s="doDeclareVariables"><list><l>index</l><l>bl</l></list></block><block s="doWarp"><script><block s="doSetVar"><l>bl</l><l></l></block><block s="doSetVar"><l>index</l><block s="reportStringSize"><block var="sentence"/></block></block><block s="doUntil"><block s="reportOr"><block s="reportEquals"><block var="index"/><l>1</l></block><block s="reportNot"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block></block></block><script><block s="doChangeVar"><l>index</l><l>-1</l></block></script></block><block s="doIf"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block><script><custom-block s="error %txt"><l>All but last of empty sentence.</l></custom-block></script></block><block s="doUntil"><block s="reportOr"><block s="reportEquals"><block var="index"/><l>1</l></block><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block></block><script><block s="doChangeVar"><l>index</l><l>-1</l></block></script></block><block s="doIf"><block s="reportEquals"><block var="index"/><l>1</l></block><script><block s="doReport"><l></l></block></script></block><block s="doUntil"><block s="reportOr"><block s="reportEquals"><block var="index"/><l>1</l></block><block s="reportNot"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block></block></block><script><block s="doChangeVar"><l>index</l><l>-1</l></block></script></block><block s="doIf"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block><script><block s="doReport"><l></l></block></script></block><block s="doUntil"><block s="reportLessThan"><block var="index"/><l>1</l></block><script><block s="doSetVar"><l>bl</l><block s="reportJoinWords"><list><block s="reportLetter"><block var="index"/><block var="sentence"/></block><block var="bl"/></list></block></block><block s="doChangeVar"><l>index</l><l>-1</l></block></script></block><block s="doReport"><block var="bl"/></block></script></block></script><script x="249" y="393.55555555555566"><block s="reportKeep"><block s="reifyPredicate"><autolambda><block s="reportLessThan"><block var="index"/><block s="reportListAttribute"><l><option>length</option></l><block var="sentence"/></block></block></autolambda><list><l>value</l><l>index</l></list></block><block var="sentence"/></block></script></scripts></block-definition><block-definition s="first word of %&apos;sentence&apos;" type="reporter" category="operators"><comment x="0" y="0" w="236" collapsed="false">Takes a text string as input, divides it into words treating one or more spaces as a word separator (only spaces count; punctuation is part of the word) and reports a text string containing only the first word, with no spaces before or after it.</comment><header></header><code></code><translations>pt:a primeira palavra de _&#xD;</translations><inputs><input type="%txt"></input></inputs><script><block s="doIfElse"><block s="reportIsA"><block var="sentence"/><l><option>list</option></l></block><script><block s="doIfElse"><block s="reportListIsEmpty"><block var="sentence"/></block><script><custom-block s="error %txt"><l>First of empty sentence.</l></custom-block></script><script><block s="doReport"><block s="reportListItem"><l>1</l><block var="sentence"/></block></block></script></block></script><script><block s="doReport"><block s="reportListItem"><l>1</l><custom-block s="require nonempty %s %s"><custom-block s="sentence $arrowRight list %txt"><block var="sentence"/></custom-block><l>First of empty sentence.</l></custom-block></block></block></script></block></script><scripts><script x="9.333333333333334" y="345.5555555555555"><block s="doDeclareVariables"><list><l>index</l><l>first</l></list></block><block s="doWarp"><script><block s="doSetVar"><l>first</l><l></l></block><block s="doSetVar"><l>index</l><l>1</l></block><block s="doIf"><block s="reportEquals"><block s="reportStringSize"><block var="sentence"/></block><l>0</l></block><script><custom-block s="error %txt"><l>First of empty sentence.</l></custom-block></script></block><block s="doUntil"><block s="reportOr"><block s="reportEquals"><block var="index"/><block s="reportStringSize"><block var="sentence"/></block></block><block s="reportNot"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block></block></block><script><block s="doChangeVar"><l>index</l><l>1</l></block></script></block><block s="doIf"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block><script><custom-block s="error %txt"><l>First of empty sentence.</l></custom-block></script></block><block s="doUntil"><block s="reportOr"><block s="reportEquals"><block var="index"/><block s="reportStringSize"><block var="sentence"/></block></block><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block></block><script><block s="doSetVar"><l>first</l><block s="reportJoinWords"><list><block var="first"/><block s="reportLetter"><block var="index"/><block var="sentence"/></block></list></block></block><block s="doChangeVar"><l>index</l><l>1</l></block></script></block><block s="doIf"><block s="reportNot"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block></block><script><block s="doSetVar"><l>first</l><block s="reportJoinWords"><list><block var="first"/><block s="reportLetter"><block var="index"/><block var="sentence"/></block></list></block></block></script></block><block s="doReport"><block var="first"/></block></script></block></script></scripts></block-definition><block-definition s="last letter of %&apos;word&apos;" type="reporter" category="operators"><comment x="0" y="0" w="260" collapsed="false">Takes a text string as input, and reports the last character in the string.</comment><header></header><code></code><translations>pt:o último caractere de _&#xD;</translations><inputs><input type="%txt"></input></inputs><script><block s="doIf"><block s="reportIsA"><block var="word"/><l><option>list</option></l></block><script><block s="doReport"><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="last letter of %txt"><l></l></custom-block></autolambda><list></list></block><block var="word"/></block></block></script></block><block s="doIf"><block s="reportEquals"><block s="reportStringSize"><block var="word"/></block><l>0</l></block><script><custom-block s="error %txt"><l>Last of empty word.</l></custom-block></script></block><block s="doReport"><block s="reportLetter"><block s="reportStringSize"><block var="word"/></block><block var="word"/></block></block></script></block-definition><block-definition s="last word of %&apos;sentence&apos;" type="reporter" category="operators"><comment x="0" y="0" w="262" collapsed="false">Takes a text string as input, divides it into words treating one or more spaces as a word separator (only spaces count; punctuation is part of the word) and reports a text string containing only the last word of the input, with no spaces before or after it.</comment><header></header><code></code><translations>pt:a última palavra de _&#xD;</translations><inputs><input type="%txt"></input></inputs><script><block s="doIf"><block s="reportIsA"><block var="sentence"/><l><option>list</option></l></block><script><block s="doIfElse"><block s="reportListIsEmpty"><block var="sentence"/></block><script><custom-block s="error %txt"><l>Last of empty sentence.</l></custom-block></script><script><block s="doReport"><block s="reportListItem"><l><option>last</option></l><block var="sentence"/></block></block></script></block></script></block><block s="doReport"><block s="reportListItem"><l><option>last</option></l><custom-block s="require nonempty %s %s"><custom-block s="sentence $arrowRight list %txt"><block var="sentence"/></custom-block><l>Last of empty sentence.</l></custom-block></block></block></script><scripts><script x="25.333333333333332" y="276.22222222222223"><block s="doDeclareVariables"><list><l>index</l><l>last</l></list></block><block s="doWarp"><script><block s="doSetVar"><l>last</l><l></l></block><block s="doSetVar"><l>index</l><block s="reportStringSize"><block var="sentence"/></block></block><block s="doIf"><block s="reportEquals"><block s="reportStringSize"><block var="sentence"/></block><l>0</l></block><script><custom-block s="error %txt"><l>Last of empty sentence.</l></custom-block></script></block><block s="doUntil"><block s="reportOr"><block s="reportEquals"><block var="index"/><l>1</l></block><block s="reportNot"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block></block></block><script><block s="doChangeVar"><l>index</l><l>-1</l></block></script></block><block s="doIf"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block><script><custom-block s="error %txt"><l>Last of empty sentence.</l></custom-block></script></block><block s="doUntil"><block s="reportOr"><block s="reportEquals"><block var="index"/><l>1</l></block><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block></block><script><block s="doSetVar"><l>last</l><block s="reportJoinWords"><list><block s="reportLetter"><block var="index"/><block var="sentence"/></block><block var="last"/></list></block></block><block s="doChangeVar"><l>index</l><l>-1</l></block></script></block><block s="doIf"><block s="reportNot"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block></block><script><block s="doSetVar"><l>last</l><block s="reportJoinWords"><list><block s="reportLetter"><block var="index"/><block var="sentence"/></block><block var="last"/></list></block></block></script></block><block s="doReport"><block var="last"/></block></script></block></script></scripts></block-definition><block-definition s="empty word? %&apos;word&apos;" type="predicate" category="operators"><comment x="0" y="0" w="208" collapsed="false">Takes a text string as input, and reports TRUE if the string has no characters in it of any kind, otherwise false.</comment><header></header><code></code><translations>pt:a palavra _ está vazia&#xD;</translations><inputs><input type="%txt"></input></inputs><script><block s="doIf"><block s="reportIsA"><block var="word"/><l><option>list</option></l></block><script><block s="doReport"><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="empty word? %txt"><l></l></custom-block></autolambda><list></list></block><block var="word"/></block></block></script></block><block s="doReport"><block s="reportEquals"><block s="reportStringSize"><block var="word"/></block><l>0</l></block></block></script></block-definition><block-definition s="empty sentence? %&apos;sentence&apos;" type="predicate" category="operators"><comment x="0" y="0" w="221" collapsed="false">Takes a text string as input, and reports TRUE if the input contains no characters other than spaces (therefore, no words when the string is considered as a sentence), otherwise FALSE.</comment><header></header><code></code><translations>pt:a frase _ está vazia&#xD;</translations><inputs><input type="%txt"></input></inputs><script><block s="doDeclareVariables"><list><l>index</l></list></block><block s="doIf"><block s="reportIsA"><block var="sentence"/><l><option>list</option></l></block><script><block s="doReport"><block s="reportListIsEmpty"><block var="sentence"/></block></block></script></block><block s="doReport"><block s="reportListIsEmpty"><custom-block s="sentence $arrowRight list %txt"><block var="sentence"/></custom-block></block></block></script><scripts><script x="12" y="258"><block s="doSetVar"><l>index</l><l>1</l></block><block s="doIf"><block s="reportEquals"><block s="reportStringSize"><block var="sentence"/></block><l>0</l></block><script><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block><block s="doUntil"><block s="reportOr"><block s="reportEquals"><block var="index"/><block s="reportStringSize"><block var="sentence"/></block></block><block s="reportNot"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block></block></block><script><block s="doChangeVar"><l>index</l><l>1</l></block></script></block><block s="doReport"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block></block></script></scripts></block-definition><block-definition s="join words %&apos;words&apos;" type="reporter" category="operators"><comment x="0" y="0" w="230.66666666666666" collapsed="false">Like JOIN, takes any number of words (text strings) and reports a sentence with its inputs concatenated, but inserts a blank space between the inputs.&#xD;Consider using SENTENCE (Lists palette) instead.</comment><header></header><code></code><translations>de:füge Wörter zusammen _&#xD;ca:uneix les paraules _&#xD;es:unir las palabras _&#xD;fr:fusionne les mots _&#xD;pt:uma frase com as palavras _&#xD;</translations><inputs><input type="%mult%txt"></input></inputs><script><block s="doIf"><block s="reportListIsEmpty"><block var="words"/></block><script><block s="doReport"><l></l></block></script></block><block s="doDeclareVariables"><list><l>first</l><l>bf</l></list></block><block s="doSetVar"><l>first</l><block s="reportIfElse"><block s="reportIsA"><block s="reportListItem"><l>1</l><block var="words"/></block><l><option>list</option></l></block><custom-block s="join words %mult%txt"><block s="reportListItem"><l>1</l><block var="words"/></block></custom-block><block s="reportListItem"><l>1</l><block var="words"/></block></block></block><block s="doSetVar"><l>bf</l><custom-block s="join words %mult%txt"><block s="reportCDR"><block var="words"/></block></custom-block></block><block s="doIf"><custom-block s="empty sentence? %txt"><block var="bf"/></custom-block><script><block s="doReport"><block var="first"/></block></script></block><block s="doIf"><custom-block s="empty sentence? %txt"><block var="first"/></custom-block><script><block s="doReport"><block var="bf"/></block></script></block><block s="doReport"><block s="reportJoinWords"><list><block var="first"/><l> </l><block var="bf"/></list></block></block></script><scripts><script x="16.666666666666668" y="409.6666666666668"><block s="doIf"><block s="reportIsA"><block s="reportListItem"><l>1</l><block var="words"/></block><l><option>list</option></l></block><script><block s="doIfElse"><custom-block s="empty sentence? %txt"><block var="first"/></custom-block><script><block s="doReport"><block var="bf"/></block></script><script><block s="doIfElse"><custom-block s="empty sentence? %txt"><block var="bf"/></custom-block><script><block s="doReport"><block var="first"/></block></script><script><block s="doReport"><block s="reportJoinWords"><list><block var="first"/><l> </l><block var="bf"/></list></block></block></script></block></script></block></script></block><block s="doIf"><custom-block s="empty sentence? %txt"><block s="reportListItem"><l>1</l><block var="words"/></block></custom-block><script><block s="doReport"><custom-block s="join words %mult%txt"><block s="reportCDR"><block var="words"/></block></custom-block></block></script></block><block s="doIf"><block s="reportEquals"><l></l><block s="reportListItem"><l>2</l><block var="words"/></block></block><script><block s="doReport"><custom-block s="join words %mult%txt"><block s="reportCONS"><block s="reportListItem"><l>1</l><block var="words"/></block><block s="reportCDR"><block s="reportCDR"><block var="words"/></block></block></block></custom-block></block></script></block><block s="doReport"><block s="reportJoinWords"><list><block s="reportListItem"><l>1</l><block var="words"/></block><l> </l><custom-block s="join words %mult%txt"><block s="reportCDR"><block var="words"/></block></custom-block></list></block></block></script></scripts></block-definition><block-definition s="list $arrowRight sentence %&apos;data&apos;" type="reporter" category="operators"><comment x="0" y="0" w="165.33333333333334" collapsed="false">Takes a sentence in list form and reports the sentence as a text string.</comment><header></header><code></code><translations>de:Liste $arrowRight Satz _&#xD;ca:llista $arrowRight frase _&#xD;es:lista $arrowRight frase _&#xD;fr:liste $arrowRight phrase _&#xD;pt:uma frase com as palavras em _&#xD;</translations><inputs><input type="%l"></input></inputs><script><block s="doReport"><custom-block s="join words %mult%txt"><block var="data"/></custom-block></block></script></block-definition><block-definition s="sentence $arrowRight list %&apos;text&apos;" type="reporter" category="operators"><comment x="0" y="0" w="196" collapsed="false">Takes a sentence in text string form and reports the sentence as a list of its words.</comment><header></header><code></code><translations>de:Satz $arrowRight Liste _&#xD;ca:frase $arrowRight llista _&#xD;es:frase $arrowRight lista _&#xD;fr:phrase $arrowRight liste _&#xD;pt:uma lista com as palavras da frase _&#xD;</translations><inputs><input type="%txt"></input></inputs><script><block s="doReport"><block s="reportKeep"><block s="reifyPredicate"><autolambda><block s="reportNot"><block s="reportEquals"><block s="reportStringSize"><l></l></block><l>0</l></block></block></autolambda><list></list></block><block s="reportTextSplit"><block var="text"/><l><option>word</option></l></block></block></block></script></block-definition><block-definition s="word $arrowRight list %&apos;word&apos;" type="reporter" category="operators"><comment x="0" y="0" w="146.42857142857144" collapsed="false">report a list in which each item is one letter from the input word</comment><header></header><code></code><translations>de:Wort $arrowRight Liste _&#xD;ca:paraula $arrowRight llista _&#xD;es:palabra $arrowRight lista _&#xD;fr:mot $arrowRight liste _&#xD;pt:uma lista com os caracteres da palavra _&#xD;</translations><inputs><input type="%txt"></input></inputs><script><block s="doIf"><block s="reportIsA"><block var="word"/><l><option>list</option></l></block><script><block s="doReport"><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="word $arrowRight list %txt"><l></l></custom-block></autolambda><list></list></block><block var="word"/></block></block></script></block><block s="doReport"><block s="reportTextSplit"><block var="word"/><l><option>letter</option></l></block></block></script></block-definition><block-definition s="list $arrowRight word %&apos;list&apos;" type="reporter" category="operators"><comment x="0" y="0" w="158.57142857142858" collapsed="false">join all the items of the input list&#xD;into a single word, and report it</comment><header></header><code></code><translations>de:Liste $arrowRight Wort _&#xD;ca:llista $arrowRight paraula _&#xD;es:lista $arrowRight palabra _&#xD;fr:liste $arrowRight mot _&#xD;pt:uma palavra com os caracteres em _&#xD;</translations><inputs><input type="%l"></input></inputs><script><block s="doIf"><block s="reportListIsEmpty"><block var="list"/></block><script><block s="doReport"><block var="list"/></block></script></block><block s="doIf"><block s="reportEquals"><block s="reportFindFirst"><block s="reifyPredicate"><autolambda><block s="reportIsA"><l></l><l><option>list</option></l></block></autolambda><list></list></block><block var="list"/></block><l></l></block><script><block s="doReport"><block s="reportJoinWords"><block var="list"/></block></block></script></block><block s="doReport"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportIfElse"><block s="reportIsA"><l></l><l><option>list</option></l></block><block s="reportNewList"><list><custom-block s="list $arrowRight word %l"><l/></custom-block></list></block><l></l></block></autolambda><list></list></block><block var="list"/></block></block></script></block-definition><block-definition s="sentence %&apos;phrase&apos;" type="reporter" category="lists"><comment x="0" y="0" w="302.6666666666667" collapsed="false">SENTENCE is the main constructor for sentences, represented&#xD;as lists of words.  It takes zero or more inputs, each of which can&#xD;be either a list or a text string.  If a list, the input is assumed to be&#xD;a list of words.  If a text string, it is converted to a list of words using&#xD;SENTENCE→LIST.  Then all the lists of words are appended to form a new list of words.&#xD;&#xD;If the inputs are lists of lists rather than lists of words, SENTENCE,&#xD;like APPEND, does only one level of flattening, reporting a list of&#xD;all the items of all the input lists.</comment><header></header><code></code><translations></translations><inputs><input type="%mult%s"></input></inputs><script><block s="doReport"><block s="reportConcatenatedLists"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportIfElse"><block s="reportIsA"><l></l><l><option>list</option></l></block><l></l><custom-block s="sentence $arrowRight list %txt"><l></l></custom-block></block></autolambda><list></list></block><block var="phrase"/></block></block></block></script></block-definition><block-definition s="error %&apos;msg&apos;" type="command" category="control"><header></header><code></code><translations>pt:lança o erro _&#xD;</translations><inputs><input type="%txt"></input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>msg</l></list><l>throw new Error(msg);</l></block><list><block var="msg"/></list></block></script></block-definition><block-definition s="printable %&apos;data&apos;" type="reporter" category="lists"><comment x="0" y="0" w="188.66666666666666" collapsed="false">Takes a (possibly deep) list as input,&#xD;and reports a human-readable text form &#xD;of the list (namely, Lisp notation).</comment><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doIf"><block s="reportNot"><block s="reportIsA"><block var="data"/><l><option>list</option></l></block></block><script><block s="doReport"><block var="data"/></block></script></block><block s="doIf"><block s="reportListIsEmpty"><block var="data"/></block><script><block s="doReport"><l>()</l></block></script></block><block s="doReport"><block s="reportJoinWords"><list><l>(</l><block s="reportCombine"><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="printable %l"><l/></custom-block></autolambda><list></list></block><block var="data"/></block><block s="reifyReporter"><autolambda><block s="reportJoinWords"><list><l></l><l> </l><l></l></list></block></autolambda><list></list></block></block><l>)</l></list></block></block></script></block-definition><block-definition s="require nonempty %&apos;text&apos; %&apos;message&apos;" type="reporter" category="operators"><comment x="0" y="0" w="220" collapsed="false">Helper function for word/sentence library.&#xD;Reports its first input, unless that input is empty, in which case it gives its second input as an error message.</comment><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input></inputs><script><block s="doIfElse"><block s="reportIfElse"><block s="reportIsA"><block var="text"/><l><option>list</option></l></block><block s="reportListIsEmpty"><block var="text"/></block><block s="reportEquals"><block s="reportStringSize"><block var="text"/></block><l>0</l></block></block><script><custom-block s="error %txt"><block var="message"/></custom-block></script><script><block s="doReport"><block var="text"/></block></script></block></script></block-definition><block-definition s="first letter of %&apos;word&apos;" type="reporter" category="operators"><comment x="0" y="0" w="260" collapsed="false">Takes a text string as input, and reports the first character in the string.</comment><header></header><code></code><translations>pt:a primeira palavra de _&#xD;</translations><inputs><input type="%txt"></input></inputs><script><block s="doIfElse"><block s="reportIsA"><block var="word"/><l><option>list</option></l></block><script><block s="doReport"><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="first letter of %txt"><l></l></custom-block></autolambda><list></list></block><block var="word"/></block></block></script><script><block s="doReport"><block s="reportLetter"><l>1</l><custom-block s="require nonempty %s %s"><block var="word"/><l>First of empty word.</l></custom-block></block></block></script></block></script><scripts><script x="14.666666666666666" y="232.8888888888888"><block s="doDeclareVariables"><list><l>index</l><l>first</l></list></block><block s="doWarp"><script><block s="doSetVar"><l>first</l><l></l></block><block s="doSetVar"><l>index</l><l>1</l></block><block s="doIf"><block s="reportEquals"><block s="reportStringSize"><block var="sentence"/></block><l>0</l></block><script><custom-block s="error %txt"><l>First of empty sentence.</l></custom-block></script></block><block s="doUntil"><block s="reportOr"><block s="reportEquals"><block var="index"/><block s="reportStringSize"><block var="sentence"/></block></block><block s="reportNot"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block></block></block><script><block s="doChangeVar"><l>index</l><l>1</l></block></script></block><block s="doIf"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block><script><custom-block s="error %txt"><l>First of empty sentence.</l></custom-block></script></block><block s="doUntil"><block s="reportOr"><block s="reportEquals"><block var="index"/><block s="reportStringSize"><block var="sentence"/></block></block><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block></block><script><block s="doSetVar"><l>first</l><block s="reportJoinWords"><list><block var="first"/><block s="reportLetter"><block var="index"/><block var="sentence"/></block></list></block></block><block s="doChangeVar"><l>index</l><l>1</l></block></script></block><block s="doIf"><block s="reportNot"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block></block><script><block s="doSetVar"><l>first</l><block s="reportJoinWords"><list><block var="first"/><block s="reportLetter"><block var="index"/><block var="sentence"/></block></list></block></block></script></block><block s="doReport"><block var="first"/></block></script></block></script></scripts></block-definition><block-definition s="Initials from name: %&apos;name&apos; (split)" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><block s="reportCombine"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportLetter"><l>1</l><l></l></block></autolambda><list></list></block><block s="reportCombine"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportTextSplit"><l></l><l>-</l></block></autolambda><list></list></block><block s="reportTextSplit"><block var="name"/><l><option>word</option></l></block></block><block s="reifyReporter"><autolambda><block s="reportConcatenatedLists"><list><l/><l/></list></block></autolambda><list></list></block></block></block><block s="reifyReporter"><autolambda><block s="reportJoinWords"><list><l></l><l></l></list></block></autolambda><list></list></block><comment w="243.33333333333334" collapsed="false">Version using an additional SPLIT block.&#xD;This version respects the abstraction that text is made up of words, not characters.  It introduces hyphens as another word delimiter (in addition to spaces).  It has an unfortunately hairy structure of higher order function calls. because the split by hyphens has to be done in each word separately (that&apos;s the inner MAP) and then the result has to be flattened (the APPEND).  The ideal solution would split into words based on spaces and hyphens together, but Snap! doesn&apos;t have that capability (yet).</comment></block></block></script></block-definition></blocks><variables><variable name="outputText"><list struct="atomic" id="1955">Mrzewmsr$sj$Rsvqerh}$mw$sr$:$Nyri$5=88</list></variable><variable name="inputText"><l>Invasion of Normandy is on 6 June 1944</l></variable><variable name="shiftValue"><l>4</l></variable></variables></project><media name="2021 U4L2p2 Caesar Cipher Project (answer file)" app="Snap! 6, https://snap.berkeley.edu" version="1"></media></snapdata>