<snapdata remixID="11192899"><project name="ceaser cypher " app="Snap! 7, https://snap.berkeley.edu" version="2"><notes></notes><thumbnail>data:image/png;base64,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</thumbnail><scenes select="1"><scene name="ceaser cypher "><notes></notes><hidden></hidden><headers></headers><code></code><blocks><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;ca:_ sense la primera lletra&#xD;</translations><inputs><input type="%txt"></input></inputs><script><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="reportJoinWords"><block s="reportCDR"><block s="reportTextSplit"><custom-block s="require nonempty %s %s"><block var="string"/><l>All but first of empty word.</l></custom-block><l><option>letter</option></l></block></block></block></block></script></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;ca:_ sense la primera paraula&#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></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;ca:_ sense la darrera lletra&#xD;</translations><inputs><input type="%txt"></input></inputs><script><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="reportJoinWords"><block s="reportListAttribute"><l><option>reverse</option></l><block s="reportCDR"><block s="reportListAttribute"><l><option>reverse</option></l><block s="reportTextSplit"><custom-block s="require nonempty %s %s"><block var="string"/><l>All but first of empty word.</l></custom-block><l><option>letter</option></l></block></block></block></block></block></block></script></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;ca:_ sense la darrera paraula&#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="reportListAttribute"><l><option>reverse</option></l><block s="reportCDR"><block s="reportListAttribute"><l><option>reverse</option></l><block var="sentence"/></block></block></block></block></script></block></script></block><block s="doReport"><custom-block s="list $arrowRight sentence %l"><block s="reportListAttribute"><l><option>reverse</option></l><block s="reportCDR"><block s="reportListAttribute"><l><option>reverse</option></l><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></block></block></block></custom-block></block></script></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;ca:primera paraula 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></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;ca:primera lletra 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;ca:darrera paraula 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></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;ca:paraula buida? _&#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;ca:frase buida? _&#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="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></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></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>ca:frase _&#xD;</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="doApplyExtension"><l>err_error(msg)</l><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>ca:notació textual de _&#xD;</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" helper="true"><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;ca:primera lletra 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></block-definition></blocks><stage name="Stage" width="480" height="360" costume="0" color="255,255,255,1" tempo="60" threadsafe="false" penlog="false" volume="100" pan="0" lines="round" ternary="false" hyperops="true" codify="false" inheritance="true" sublistIDs="false" id="636"><pentrails>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAFoCAYAAACPNyggAAAAAXNSR0IArs4c6QAADoVJREFUeF7t1cEJAAAIxDDdf2m3sJ+4wEEQuuMIECBAgACBd4F9XzRIgAABAgQIjAB7AgIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+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+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECByxcQFpoRMBzwAAAABJRU5ErkJggg==</pentrails><costumes><list struct="atomic" id="637"></list></costumes><sounds><list struct="atomic" id="638"></list></sounds><variables></variables><blocks></blocks><scripts></scripts><sprites select="1"><sprite name="Sprite" idx="1" x="2.1492537313418407" y="-3.00070328983368" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="true" costume="0" color="80,80,80,1" pen="tip" id="643"><costumes><list struct="atomic" id="644"></list></costumes><sounds><list struct="atomic" id="645"></list></sounds><blocks></blocks><variables></variables><scripts><script x="522.7587890625" y="118.00000000000023"><block s="doSayFor"><l></l><l>2</l></block></script><script x="625.400390625" y="275"><block s="reportBoolean"><l><bool>true</bool></l></block></script><script x="96.7587890625" y="10"><block s="receiveGo"></block><block s="doAsk"><l>do you want to encode or decode </l></block><block s="doSetVar"><l>response to encode vs decode</l><block s="getLastAnswer"></block></block><block s="doIfElse"><block s="reportEquals"><l>encode</l><block var="response to encode vs decode"/></block><script><block s="doAsk"><l>whats your secret message  </l></block><block s="doSetVar"><l>input messages</l><custom-block s="word $arrowRight list %txt"><block s="getLastAnswer"></block></custom-block></block><block s="doSetVar"><l>index</l><l>0</l></block><block s="doForEach"><l>item</l><block var="input messages"/><script><block s="doChangeVar"><l>index</l><l>1</l></block><block s="doReplaceInList"><block var="index"/><block var="input messages"/><block s="reportUnicode"><block var="item"/></block></block></script></block><block s="doSetVar"><l>index</l><l>0</l></block><block s="doForEach"><l>item</l><block var="input messages"/><script><block s="doChangeVar"><l>index</l><l>1</l></block><block s="doReplaceInList"><block var="index"/><block var="input messages"/><block s="reportSum"><block var="item"/><l>4</l></block></block></script></block><block s="doSetVar"><l>index</l><l>0</l></block><block s="doForEach"><l>item</l><block var="input messages"/><script><block s="doChangeVar"><l>index</l><l>1</l></block><block s="doReplaceInList"><block var="index"/><block var="input messages"/><block s="reportUnicodeAsLetter"><block var="item"/></block></block></script></block><block s="bubble"><custom-block s="list $arrowRight word %l"><block var="input messages"/></custom-block></block></script><script><block s="doAsk"><l>whats your secret message  </l></block><block s="doSetVar"><l>input messages</l><custom-block s="word $arrowRight list %txt"><block s="getLastAnswer"></block></custom-block></block><block s="doSetVar"><l>index</l><l>0</l></block><block s="doForEach"><l>item</l><block var="input messages"/><script><block s="doChangeVar"><l>index</l><l>1</l></block><block s="doReplaceInList"><block var="index"/><block var="input messages"/><block s="reportUnicode"><block var="item"/></block></block></script></block><block s="doSetVar"><l>index</l><l>0</l></block><block s="doForEach"><l>item</l><block var="input messages"/><script><block s="doChangeVar"><l>index</l><l>1</l></block><block s="doReplaceInList"><block var="index"/><block var="input messages"/><block s="reportDifference"><block var="item"/><l>4</l></block></block></script></block><block s="doSetVar"><l>index</l><l>0</l></block><block s="doForEach"><l>item</l><block var="input messages"/><script><block s="doChangeVar"><l>index</l><l>1</l></block><block s="doReplaceInList"><block var="index"/><block var="input messages"/><block s="reportUnicodeAsLetter"><block var="item"/></block></block></script></block><block s="bubble"><custom-block s="list $arrowRight word %l"><block var="input messages"/></custom-block></block></script></block></script><script x="521.7587890625" y="66"><block s="doAsk"><l>whats your secret message  </l></block></script></scripts></sprite><watcher var="hello" style="normal" x="2.705408402430976" y="2.705408402431175" color="243,118,29" hidden="true"/><watcher scope="Sprite" s="yPosition" style="normal" x="2.705408402430976" y="14.068124774805398" color="74,108,212" hidden="true"/><watcher scope="Sprite" s="xPosition" style="normal" x="2.705408402430976" y="19.749482960992488" color="74,108,212" hidden="true"/><watcher var="index" style="normal" x="2.705408402430976" y="8.386766588618265" color="243,118,29"/><watcher var="response to encode vs decode" style="normal" x="11.369047619048615" y="11.369047619047635" color="243,118,29"/><watcher var="input messages" style="normal" x="5.0106035478106605" y="54.79879197316154" color="243,118,29" extX="94" extY="107.99999999999999"/></sprites></stage><variables><variable name="hello"><l>0</l></variable><variable name="input messages"><list struct="atomic" id="807">p,k,p,p,a,j,r,e,h,h,a</list></variable><variable name="index"><l>11</l></variable><variable name="response to encode vs decode"><l>decode</l></variable></variables></scene></scenes></project><media name="ceaser cypher " app="Snap! 7, https://snap.berkeley.edu" version="2"></media></snapdata>