<snapdata remixID="12371709"><project name="4.1.1 Ciphers" app="Snap! 8.2, https://snap.berkeley.edu" version="2"><notes></notes><thumbnail>data:image/png;base64,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</thumbnail><scenes select="1"><scene name="4.1.1 Ciphers"><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="reportVariadicEquals"><list><block s="reportStringSize"><block var="word"/></block><l>0</l></list></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="reportVariadicEquals"><list><block s="reportStringSize"><block var="word"/></block><l>0</l></list></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="reportVariadicEquals"><list><block s="reportStringSize"><l></l></block><l>0</l></list></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="reportVariadicEquals"><list><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></list></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="reportVariadicEquals"><list><block s="reportStringSize"><block var="text"/></block><l>0</l></list></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><block-definition s="Caesar encode, message: %&apos;message&apos; key: %&apos;key&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%txt"></input><input type="%n"></input></inputs><script><block s="doSetVar"><l>plaintext</l><block var="message"/></block><block s="doDeclareVariables"><list><l>plainList</l><l>cipherList</l></list></block><block s="doSetVar"><l>plainList</l><custom-block s="word $arrowRight list %txt"><block var="plaintext"/></custom-block></block><block s="doSetVar"><l>cipherList</l><block s="reportNewList"><list></list></block></block><block s="doForEach"><l>char</l><block var="plainList"/><script><block s="doIfElse"><block s="reportListContainsItem"><block var="symbols"/><block var="char"/></block><script><block s="doAddToList"><block var="char"/><block var="cipherList"/></block></script><script><block s="doSetVar"><l>x</l><block s="reportListIndex"><block var="char"/><block var="alphabet"/></block></block><block s="doSetVar"><l>n</l><block var="key"/></block><block s="doSetVar"><l>y</l><block s="reportModulus"><block s="reportVariadicSum"><list><block var="x"/><block var="n"/></list></block><l>26</l></block></block><block s="doAddToList"><block s="reportListItem"><block var="y"/><block var="alphabet"/></block><block var="cipherList"/></block></script></block></script></block><block s="doSetVar"><l>ciphertext</l><custom-block s="list $arrowRight word %l"><block var="cipherList"/></custom-block></block><block s="doReport"><block var="ciphertext"/></block></script><scripts><script x="457" y="423.7000000000001"><block s="doSetVar"><l>x</l><block s="reportListIndex"><block var="char"/><block var="alphabet"/></block></block><block s="doSetVar"><l>n</l><block var="key"/></block><block s="doSetVar"><l>y</l><block s="reportModulus"><block s="reportVariadicSum"><list><block var="x"/><block var="n"/></list></block><l>26</l></block></block><block s="doAddToList"><block s="reportListItem"><block var="y"/><block var="alphabet"/></block><block var="cipherList"/></block></script><script x="573" y="299.03333333333325"><block var="cipherList"/></script></scripts></block-definition><block-definition s="caesar decode, secret message: %&apos;message&apos; key: %&apos;key&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%txt"></input><input type="%n"></input></inputs><script><block s="doSetVar"><l>ciphertext</l><block var="message"/></block><block s="doDeclareVariables"><list><l>plainList</l><l>cipherList</l></list></block><block s="doSetVar"><l>cipherList</l><custom-block s="word $arrowRight list %txt"><block var="ciphertext"/></custom-block></block><block s="doSetVar"><l>plainList</l><block s="reportNewList"><list></list></block></block><block s="doForEach"><l>char</l><block var="cipherList"/><script><block s="doIfElse"><block s="reportListContainsItem"><block var="symbols"/><block var="char"/></block><script><block s="doAddToList"><block var="char"/><block var="plainList"/></block></script><script><block s="doSetVar"><l>x</l><block s="reportListIndex"><block var="char"/><block var="alphabet"/></block></block><block s="doSetVar"><l>n</l><block var="key"/></block><block s="doSetVar"><l>y</l><block s="reportModulus"><block s="reportDifference"><block var="x"/><block var="n"/></block><l>26</l></block></block><block s="doAddToList"><block s="reportListItem"><block var="y"/><block var="alphabet"/></block><block var="plainList"/></block></script></block></script></block><block s="doSetVar"><l>plaintext</l><custom-block s="list $arrowRight word %l"><block var="plainList"/></custom-block></block><block s="doReport"><block var="plaintext"/></block></script><scripts><script x="412" y="306.9999999999997"><block var="cipherList"/></script><script x="316.5833320617676" y="305.6666666666666"><block var="cipherList"/></script><script x="400" y="360.49999999999994"><block var="ciphertext"/></script><script x="298" y="147.49999999999994"><block var="plainList"/></script><script x="307.1166648864746" y="127.50000000000001"><block var="plaintext"/></script></scripts></block-definition><block-definition s="Affine encode, message: %&apos;message&apos; keyA: %&apos;a&apos; keyB: %&apos;b&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%txt"></input><input type="%n"></input><input type="%n"></input></inputs><script><block s="doSetVar"><l>plaintext</l><block var="message"/></block><block s="doDeclareVariables"><list><l>plainList</l><l>cipherList</l></list></block><block s="doSetVar"><l>plainList</l><custom-block s="word $arrowRight list %txt"><block var="plaintext"/></custom-block></block><block s="doSetVar"><l>cipherList</l><block s="reportNewList"><list></list></block></block><block s="doForEach"><l>char</l><block var="plainList"/><script><block s="doIfElse"><block s="reportListContainsItem"><block var="symbols"/><block var="char"/></block><script><block s="doAddToList"><block var="char"/><block var="cipherList"/></block></script><script><block s="doSetVar"><l>x</l><block s="reportDifference"><block s="reportListIndex"><block var="char"/><block var="alphabet"/></block><l>1</l></block></block><block s="doSetVar"><l>y</l><block s="reportVariadicSum"><list><block s="reportModulus"><block s="reportVariadicSum"><list><block s="reportVariadicProduct"><list><block var="a"/><block var="x"/></list></block><block var="b"/></list></block><l>26</l></block><l>1</l></list></block></block><block s="doAddToList"><block s="reportListItem"><block var="y"/><block var="alphabet"/></block><block var="cipherList"/></block></script></block></script></block><block s="doSetVar"><l>ciphertext</l><custom-block s="list $arrowRight word %l"><block var="cipherList"/></custom-block></block><block s="doReport"><block var="ciphertext"/></block></script></block-definition><block-definition s="pig latin translater, message: %&apos;message&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%txt"></input></inputs><script><block s="doDeclareVariables"><list><l>wordlist</l><l>first</l><l>firstTwo</l><l>pigList</l></list></block><block s="doSetVar"><l>wordlist</l><custom-block s="sentence $arrowRight list %txt"><block var="message"/></custom-block></block><block s="doSetVar"><l>pigList</l><block s="reportNewList"><list></list></block></block><block s="doForEach"><l>word</l><block var="wordlist"/><script><block s="doSetVar"><l>first</l><custom-block s="first letter of %txt"><block var="word"/></custom-block></block><block s="doSetVar"><l>firstTwo</l><block s="reportJoinWords"><list><block s="reportLetter"><l>1</l><block var="word"/></block><block s="reportLetter"><l>2</l><block var="word"/></block></list></block></block><block s="doIfElse"><block s="reportListContainsItem"><block var="vowels"/><block var="first"/></block><script><block s="doAddToList"><block s="reportJoinWords"><list><block var="word"/><l>yay</l></list></block><block var="pigList"/></block></script><script><block s="doIfElse"><block s="reportListContainsItem"><block var="clusters"/><block var="firstTwo"/></block><script><block s="doAddToList"><block s="reportJoinWords"><list><custom-block s="all but first letter of %txt"><custom-block s="all but first letter of %txt"><block var="word"/></custom-block></custom-block><block var="firstTwo"/><l>ay</l></list></block><block var="pigList"/></block></script><script><block s="doAddToList"><block s="reportJoinWords"><list><custom-block s="all but first letter of %txt"><block var="word"/></custom-block><block var="first"/><l>ay</l></list></block><block var="pigList"/></block></script></block></script></block></script></block><block s="doReport"><custom-block s="list $arrowRight sentence %l"><block var="pigList"/></custom-block></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="991"><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="992"></list></costumes><sounds><list struct="atomic" id="993"></list></sounds><variables></variables><blocks></blocks><scripts></scripts><sprites select="3"><sprite name="Sprite" idx="1" x="0" y="0" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="true" costume="0" color="80,80,80,1" pen="tip" id="998"><costumes><list struct="atomic" id="999"></list></costumes><sounds><list struct="atomic" id="1000"></list></sounds><blocks></blocks><variables></variables><scripts><script x="73" y="14.833333333333343"><block s="doSetVar"><l>alphabet</l><block s="reportNewList"><list><l>A</l><l>B</l><l>C</l><l>D</l><l>E</l><l>F</l><l>G</l><l>H</l><l>I</l><l>J</l><l>K</l><l>L</l><l>M</l><l>N</l><l>O</l><l>P</l><l>Q</l><l>R</l><l>S</l><l>T</l><l>U</l><l>V</l><l>W</l><l>X</l><l>Y</l><l>Z</l></list></block></block><block s="doSetVar"><l>symbols</l><block s="reportNewList"><list><l>!</l><l>@</l><l>#</l><l>$</l><l>%</l><l>^</l><l>&amp;</l><l>*</l><l>(</l><l>)</l><l>-</l><l>+</l><l>,</l><l>.</l><l> </l></list></block></block></script><script x="77" y="95.5"><block s="reportListItem"><l>10</l><block var="alphabet"/></block></script><script x="72" y="137.33333333333337"><block s="doSetVar"><l>plaintext</l><l>hello</l></block><block s="doDeclareVariables"><list><l>plainList</l><l>cipherList</l></list></block><block s="doSetVar"><l>plainList</l><custom-block s="word $arrowRight list %txt"><block var="plaintext"/></custom-block></block><block s="doSetVar"><l>cipherList</l><block s="reportNewList"><list></list></block></block><block s="doForEach"><l>char</l><block var="plainList"/><script><block s="doSetVar"><l>x</l><block s="reportListIndex"><block var="char"/><block var="alphabet"/></block></block><block s="doSetVar"><l>n</l><l>3</l></block><block s="doSetVar"><l>y</l><block s="reportModulus"><block s="reportVariadicSum"><list><block var="x"/><block var="n"/></list></block><l>26</l></block></block><block s="doAddToList"><block s="reportListItem"><block var="y"/><block var="alphabet"/></block><block var="cipherList"/></block></script></block><block s="doSetVar"><l>ciphertext</l><custom-block s="list $arrowRight word %l"><block var="cipherList"/></custom-block></block></script><script x="849.1000003814697" y="493.4666666666667"><custom-block s="sentence $arrowRight list %txt"><l></l></custom-block></script><script x="739.5833320617676" y="606.6333333333332"><custom-block s="list $arrowRight sentence %l"><l/></custom-block></script><script x="778" y="746.6333333333333"><block s="doReport"><l></l></block></script><script x="247" y="571"><custom-block s="Caesar encode, message: %txt key: %n"><l>Today, us a good day!#</l><l>3</l></custom-block></script><script x="230" y="616"><custom-block s="caesar decode, secret message: %txt key: %n"><l>aaaaaa aaaaaaa,aaa    a#$%#</l><l>3</l></custom-block></script></scripts></sprite><sprite name="Sprite(2)" idx="2" x="-196" y="144" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="true" costume="0" color="175.95,126.684,0,1" pen="tip" id="1127"><costumes><list struct="atomic" id="1128"></list></costumes><sounds><list struct="atomic" id="1129"></list></sounds><blocks></blocks><variables></variables><scripts><script x="71" y="59.999999999999886"><custom-block s="Affine encode, message: %txt keyA: %n keyB: %n"><l>hello</l><l>1</l><l>3</l></custom-block></script></scripts></sprite><sprite name="pig latin" idx="3" x="113" y="79" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="true" costume="0" color="0,188.7,177.378,1" pen="tip" id="1137"><costumes><list struct="atomic" id="1138"></list></costumes><sounds><list struct="atomic" id="1139"></list></sounds><blocks></blocks><variables></variables><scripts><comment x="54" y="37" w="234" collapsed="false">1. If word begins with a consonant or sonsonant cluster move to the end of word and add &apos;ay&apos;&#xD;2. If word beings with a vowel, add &apos;yay&apos;.</comment><script x="555" y="121.50000000000006"><block s="doSetVar"><l>vowels</l><block s="reportNewList"><list><l>a</l><l>e</l><l>i</l><l>o</l><l>u</l></list></block></block><block s="doSetVar"><l>clusters</l><block s="reportNewList"><list><l>sm</l><l>sn</l><l>st</l><l>sw</l><l>sk</l><l>sl</l><l>sp</l><l>sf</l><l>ow</l><l>dw</l><l>tw</l><l>or</l><l>dr</l><l>tr</l><l>kw</l><l>kl</l><l>kr</l><l>pr</l><l>fr</l><l>br</l><l>gr</l><l>pl</l><l>fl</l><l>bl</l><l>gl</l><l>sh</l></list></block></block></script><script x="23" y="303.9999999999999"><custom-block s="pig latin translater, message: %txt"><l>Coach Bucky</l></custom-block></script><comment x="22" y="339" w="194" collapsed="false">Test Cases&#xD;1. Word starts with a vowel&#xD;2. Word Start with constant&#xD;3. Words starts with a constant cluster</comment><script x="26" y="436"><custom-block s="pig latin translater, message: %txt"><l>energy</l></custom-block></script><script x="37" y="479"><custom-block s="pig latin translater, message: %txt"><l>beef</l></custom-block></script><script x="43" y="528"><custom-block s="pig latin translater, message: %txt"><l>skill</l></custom-block></script></scripts></sprite><watcher var="alphabet" style="normal" x="10" y="10" color="243,118,29" hidden="true"/><watcher var="symbols" style="normal" x="10" y="103.000002" color="243,118,29" hidden="true"/><watcher var="plaintext" style="normal" x="1" y="5.00000399999999" color="243,118,29"/><watcher var="x" style="normal" x="10" y="196.000004" color="243,118,29" hidden="true"/><watcher var="y" style="normal" x="10" y="217.00000599999998" color="243,118,29" hidden="true"/><watcher var="n" style="normal" x="10" y="238.00000799999998" color="243,118,29" hidden="true"/><watcher var="ciphertext" style="normal" x="-2" y="41.000005999999985" color="243,118,29"/><watcher var="vowels" style="normal" x="19" y="134.00000999999997" color="243,118,29" hidden="true"/><watcher var="clusters" style="normal" x="15" y="241.00001199999997" color="243,118,29" hidden="true"/></sprites></stage><variables><variable name="alphabet"><list struct="atomic" id="1204">A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z</list></variable><variable name="symbols"><list struct="atomic" id="1205">!,@,#,$,%,^,&amp;,*,(,),-,+,&quot;,&quot;,., </list></variable><variable name="plaintext"><l>hello</l></variable><variable name="ciphertext"><l>KHOOR</l></variable><variable name="x"><l>14</l></variable><variable name="y"><l>18</l></variable><variable name="n"><l>3</l></variable><variable name="vowels"><list struct="atomic" id="1206">a,e,i,o,u</list></variable><variable name="clusters"><list struct="atomic" id="1207">sm,sn,st,sw,sk,sl,sp,sf,ow,dw,tw,or,dr,tr,kw,kl,kr,pr,fr,br,gr,pl,fl,bl,gl,sh</list></variable></variables></scene></scenes></project><media name="4.1.1 Ciphers" app="Snap! 8.2, https://snap.berkeley.edu" version="2"></media></snapdata>