<snapdata remixID="11507432"><project name="Caesar Cipher Demo" 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="Caesar Cipher Demo" palette="single"><notes></notes><hidden></hidden><headers></headers><code></code><blocks><block-definition s="message %&apos;message&apos; shifted by %&apos;shift&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%txt"></input><input type="%n"></input></inputs><script><block s="doReport"><block s="reportUnicodeAsLetter"><block s="reportVariadicSum"><list><block s="reportModulus"><block s="reportDifference"><block s="reportVariadicSum"><list><block s="reportUnicode"><block var="message"/></block><block var="shift"/></list></block><block s="reportUnicode"><l>a</l></block></block><l>26</l></block><block s="reportUnicode"><l>a</l></block></list></block></block></block></script><scripts><script x="10" y="109.5555555555556"><block s="reportJoinWords"><list><l></l></list></block></script></scripts></block-definition><block-definition s="shift %&apos;message&apos; offset %&apos;offset&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input></inputs><script><block s="doWarp"><script><block s="doDeclareVariables"><list><l>a</l></list></block><block s="doSetVar"><l>a</l><block s="reportNewList"><list></list></block></block><block s="doForEach"><l>item</l><block s="reportTextSplit"><block var="message"/><l><option>letter</option></l></block><script><block s="doAddToList"><custom-block s="message %txt shifted by %n"><block var="item"/><block s="reportVariadicSum"><list><block s="reportListItem"><block s="reportModulus"><block var="offset"/><l>6</l></block><block var="wheel1"/></block><block s="reportListItem"><block s="reportModulus"><block s="reportMonadic"><l><option>floor</option></l><block s="reportQuotient"><block var="offset"/><l>6</l></block></block><l>6</l></block><block var="wheel2"/></block></list></block></custom-block><block var="a"/></block><block s="doChangeVar"><l>offset</l><l>1</l></block></script></block><block s="doReport"><block s="reportJoinWords"><block var="a"/></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="97"><pentrails>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAFoCAYAAACPNyggAAACtUlEQVR4nO3BMQEAAADCoPVPbQwfoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+Bo3+AAF/RMkcAAAAAElFTkSuQmCC</pentrails><costumes><list struct="atomic" id="98"></list></costumes><sounds><list struct="atomic" id="99"></list></sounds><variables></variables><blocks></blocks><scripts></scripts><sprites select="1"><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="104"><costumes><list struct="atomic" id="105"></list></costumes><sounds><list struct="atomic" id="106"></list></sounds><blocks></blocks><variables></variables><scripts><comment x="13.333333333333343" y="10" w="170.66666666666666" collapsed="false">These blocks let you translate back and forth between text and Unicode.</comment><script x="13.333333333333343" y="71"><block s="reportUnicode"><l>B</l></block></script><script x="13.333333333333343" y="99"><block s="reportUnicodeAsLetter"><l>66</l></block></script><comment x="13.333333333333343" y="127" w="201.33333333333334" collapsed="false">If you type in a word, you get a list of the Unicode numbers for each of those letters.</comment><script x="13.333333333333343" y="187.99999999999994"><block s="reportUnicode"><l>BJC</l></block></script><comment x="13.333333333333343" y="215.99999999999994" w="169.33333333333334" collapsed="false">You can use hyperblocks to add a shift value to each of the numbers.</comment><script x="13.333333333333343" y="277"><block s="reportVariadicSum"><list><block s="reportUnicode"><l>BJC</l></block><l>3</l></list></block></script><comment x="13.333333333333343" y="309" w="229.33333333333334" collapsed="true">You can then change that back into letters.</comment><script x="13.333333333333343" y="336"><block s="reportUnicodeAsLetter"><block s="reportVariadicSum"><list><block s="reportUnicode"><l>BJC</l></block><l>3</l></list></block></block></script><comment x="13.333333333333343" y="372" w="225.33333333333334" collapsed="true">And then JOIN those letters back together.</comment><script x="13.333333333333343" y="399"><block s="reportJoinWords"><list><block s="reportUnicodeAsLetter"><block s="reportVariadicSum"><list><block s="reportUnicode"><l>BJC</l></block><l>3</l></list></block></block></list></block></script><comment x="13.333333333333343" y="439.0000000000001" w="205.33333333333334" collapsed="false">Generalize this process to work for any message text and any shift value.</comment><script x="73" y="598.3666666666644"><block s="doSetVar"><l>wheel2</l><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportRandom"><l>0</l><l>25</l></block></autolambda><list></list></block><block s="reportNumbers"><l>1</l><l>26</l></block></block></block></script><script x="307" y="187.7000000000006"><block s="doPlayNote"><l>60</l><l>0.5</l></block></script><script x="220" y="513.5333333333333"><custom-block s="shift %s offset %s"><l>codethatisnt</l><l>8</l></custom-block></script><script x="247" y="551"><custom-block s="shift %s offset %s"><l>llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll</l><l>32</l><comment w="90" collapsed="false">Note that the result contains the letter l, since there is not reflector.</comment></custom-block></script></scripts></sprite><watcher var="wheel1" style="normal" x="10" y="10" color="243,118,29" extX="80" extY="70"/><watcher var="wheel2" style="normal" x="10" y="103.000002" color="243,118,29" extX="80" extY="70"/></sprites></stage><variables><variable name="wheel1"><list struct="atomic" id="174">2,7,14,10,3,8,5,6,9,9,25,1,7,12,17,24,9,13,11,25,4,2,18,22,21,10</list></variable><variable name="wheel2"><list struct="atomic" id="175">4,9,18,18,25,21,15,18,13,12,8,10,19,23,11,11,23,0,25,0,1,10,24,5,3,23</list></variable></variables></scene></scenes></project><media name="Caesar Cipher Demo" app="Snap! 7, https://snap.berkeley.edu" version="2"></media></snapdata>