<snapdata remixID="13298402"><project name="U5L6-TicTacToe" app="Snap! 9.0, https://snap.berkeley.edu" version="2"><notes></notes><thumbnail>data:image/png;base64,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</thumbnail><scenes select="1"><scene name="U5L6-TicTacToe"><notes></notes><hidden></hidden><headers></headers><code></code><blocks><block-definition s="join words %&apos;words&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%mult%txt"></input></inputs><script><block s="doWarp"><script><block s="doIf"><block s="reportListIsEmpty"><block s="reportCDR"><block var="words"/></block></block><script><block s="doReport"><block s="reportListItem"><l>1</l><block var="words"/></block></block></script><list></list></block><block s="doIf"><block s="reportVariadicEquals"><list><l></l><block s="reportListItem"><l>1</l><block var="words"/></block></list></block><script><block s="doReport"><custom-block s="join words %mult%txt"><block s="reportCDR"><block var="words"/></block></custom-block></block></script><list></list></block><block s="doIf"><block s="reportVariadicEquals"><list><l></l><block s="reportListItem"><l>2</l><block var="words"/></block></list></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><list></list></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></block></script><scripts><script x="229.00000300000002" y="196.77778077777774"><block s="reportJoinWords"><list><l></l><l></l></list></block></script></scripts></block-definition><block-definition s="ignore %&apos;x&apos;" type="command" category="control"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs></block-definition><block-definition s="is there a win?" type="predicate" category="variables"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><l></l></block></script></block-definition><block-definition s="is there a win at positions" type="predicate" category="control"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><l></l></block></script></block-definition><block-definition s="Possible winning triples" type="reporter" category="variables"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportNewList"><list><block s="reportNewList"><list><l>3</l><l>5</l><l>7</l></list></block><block s="reportNewList"><list><l>1</l><l>4</l><l>7</l></list></block><block s="reportNewList"><list><l>1</l><l>5</l><l>9</l></list></block><block s="reportNewList"><list><l>2</l><l>5</l><l>8</l></list></block><block s="reportNewList"><list><l>3</l><l>6</l><l>9</l></list></block><block s="reportNewList"><list><l>7</l><l>8</l><l>9</l></list></block><block s="reportNewList"><list><l>4</l><l>5</l><l>6</l></list></block><block s="reportNewList"><list><l>1</l><l>2</l><l>3</l></list></block></list></block></block></script></block-definition><block-definition s="Status of all winning triples" type="reporter" category="variables"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="status of triple %l"><l/></custom-block></autolambda><list></list></block><custom-block s="Possible winning triples"></custom-block></block></block></script><scripts><script x="366.73203125" y="82.63333333333338"><custom-block s="Possible winning triples"></custom-block></script><script x="156.248046875" y="115.7999999999999"><block s="reportListItem"><l></l><block var="board"/></block></script><script x="64.087890625" y="94.80000000000001"><block s="reportNewList"><list><l>1</l><l>2</l><l>3</l></list></block></script></scripts></block-definition><block-definition s="Move in this square" type="command" category="motion"><header></header><code></code><translations></translations><inputs></inputs></block-definition><block-definition s="next move for computer" type="reporter" category="other"><comment x="0" y="0" w="53.333333333333336" collapsed="true">5.6.4.3</comment><header></header><code></code><translations></translations><inputs></inputs><script><block s="doIf"><custom-block s="can player %s win now?"><l>O</l><comment w="126" collapsed="true">First rule: win if I can.</comment></custom-block><script><block s="doReport"><custom-block s="winning square for player %s"><l>O</l></custom-block></block></script><list></list></block><block s="doIf"><custom-block s="can player %s win now?"><l>X</l><comment w="192.66666666666666" collapsed="true">Second rule: block opponent&apos;s win.</comment></custom-block><script><block s="doReport"><custom-block s="winning square for player %s"><l>X</l></custom-block></block></script><list></list></block><block s="doReport"><custom-block s="best empty square"></custom-block><comment w="165.33333333333334" collapsed="true">Fallback: move somewhere!</comment></block></script></block-definition><block-definition s="can player %&apos;who&apos; win now?" type="predicate" category="sensing"><comment w="53.333333333333336" collapsed="true">5.6.4.2</comment><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><block s="reportIsA"><custom-block s="winning square for player %s"><block var="who"/></custom-block><l><option>number</option></l></block></block></script><scripts><comment x="10" y="87.46666666666664" w="366.6666666666667" collapsed="false">This is a place where students are likely to use an unnecessary IF/ELSE block because the solution above seems &quot;too easy&quot; and therefore suspicious.  Ideally they should both understand that their solution is correct if it works -- there isn&apos;t only one &quot;right&quot; way to write a program -- and that composition of functions enables fairly complicated algorithms to be one-liners when actually coded.</comment></scripts></block-definition><block-definition s="move in this square" type="command" category="motion"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doIfElse"><block var="X&apos;s turn?"/><script><block s="doSwitchToCostume"><l>X</l></block><block s="doReplaceInList"><block var="position number"/><block var="board"/><l>X</l></block><block s="doIfElse"><custom-block s="won? %s"><l>X</l></custom-block><script><block s="bubble"><l>X won!</l></block></script><script><block s="doIfElse"><l><bool>false</bool></l><script><block s="doBroadcast"><custom-block s="best empty square"></custom-block><list></list></block></script><script><block s="doBroadcast"><block s="reportListItem"><custom-block s="best empty square"></custom-block><block s="reportKeep"><block s="reifyPredicate"><autolambda><block s="reportIsA"><l></l><l><option>number</option></l></block></autolambda><list></list></block><block var="board"/></block></block><list></list></block></script></block></script></block><block s="doIf"><custom-block s="tied?"></custom-block><script><block s="bubble"><l>It&apos;s a tie.</l></block></script><list></list></block></script><script><block s="doSwitchToCostume"><l>O</l></block><block s="doReplaceInList"><block var="position number"/><block var="board"/><l>O</l></block><block s="doIf"><custom-block s="won? %s"><l>O</l></custom-block><script><block s="bubble"><l>O won!</l></block></script><list></list></block></script></block><block s="doSetVar"><l>X&apos;s turn?</l><block s="reportNot"><block var="X&apos;s turn?"/></block></block></script></block-definition><block-definition s="best empty square" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportFindFirst"><block s="reifyPredicate"><autolambda><block s="reportListContainsItem"><block var="board"/><l></l></block></autolambda><list></list></block><block s="reportNewList"><list><l>5</l><l>1</l><l>3</l><l>7</l><l>9</l><l>2</l><l>4</l><l>6</l><l>8</l></list></block></block></block></script></block-definition><block-definition s="won? %&apos;who&apos;" type="predicate" category="operators"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><block s="reportListContainsItem"><custom-block s="status of all winning triples"></custom-block><block s="reportNewList"><list><block var="who"/><block var="who"/><block var="who"/></list></block></block></block></script></block-definition><block-definition s="tied?" type="predicate" category="operators"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportVariadicEquals"><list><block s="reportFindFirst"><block s="reifyPredicate"><autolambda><block s="reportIsA"><l></l><l><option>number</option></l></block></autolambda><list></list></block><block var="board"/></block><l></l></list></block></block></script></block-definition><block-definition s="winning square for player %&apos;who&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doDeclareVariables"><list><l>triple</l></list></block><block s="doSetVar"><l>triple</l><custom-block s="winning triple for player %s"><block var="who"/></custom-block></block><block s="doIf"><block s="reportIsA"><block var="triple"/><l><option>list</option></l></block><script><block s="doReport"><block s="reportFindFirst"><block s="reifyPredicate"><autolambda><block s="reportIsA"><l></l><l><option>number</option></l></block></autolambda><list></list></block><block var="triple"/></block></block></script><list></list></block><block s="doReport"><l></l></block></script></block-definition><block-definition s="winning triple for player %&apos;who&apos;" type="reporter" category="lists"><comment x="0" y="0" w="53.333333333333336" collapsed="true">5.6.3.7</comment><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><block s="reportFindFirst"><block s="reifyPredicate"><autolambda><block s="reportVariadicAnd"><list><block s="reportVariadicEquals"><list><custom-block s="how many %s in %l ?"><block var="who"/><l/></custom-block><l>2</l></list></block><block s="reportVariadicEquals"><list><custom-block s="how many %s in %l ?"><custom-block s="opponent %s"><block var="who"/></custom-block><l/></custom-block><l>0</l></list></block></list></block></autolambda><list></list></block><custom-block s="status of all winning triples"></custom-block></block></block></script></block-definition><block-definition s="how many %&apos;letter&apos; in %&apos;triple&apos; ?" type="reporter" category="lists"><comment x="0" y="0" w="53.333333333333336" collapsed="true">5.6.3.5</comment><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%l"></input></inputs><script><block s="doReport"><block s="reportListAttribute"><l><option>length</option></l><block s="reportKeep"><block s="reifyPredicate"><autolambda><block s="reportVariadicEquals"><list><l></l><block var="letter"/></list></block></autolambda><list></list></block><block var="triple"/></block></block></block></script></block-definition><block-definition s="opponent %&apos;who&apos;" type="reporter" category="operators"><comment x="0" y="0" w="108" collapsed="true">helper for 5.6.3.7</comment><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><block s="reportIfElse"><block s="reportVariadicEquals"><list><block var="who"/><l>X</l></list></block><l>O</l><l>X</l></block></block></script></block-definition><block-definition s="draw win line" type="command" category="lists"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doFor"><l>i</l><l>1</l><l>8</l><script><block s="doDeclareVariables"><list><l>line</l></list></block><block s="doIf"><block s="reportVariadicOr"><list><block s="reportVariadicEquals"><list><block s="reportListItem"><block var="i"/><custom-block s="status of all winning triples"></custom-block></block><block s="reportNewList"><list><l>X</l><l>X</l><l>X</l></list></block></list></block><block s="reportVariadicEquals"><list><block s="reportListItem"><block var="i"/><custom-block s="status of all winning triples"></custom-block></block><block s="reportNewList"><list><l>O</l><l>O</l><l>O</l></list></block></list></block></list></block><script><block s="doSetVar"><l>line</l><block s="reportListItem"><block var="i"/><block var="win lines"/></block></block><block s="up"></block><block s="doGotoObject"><block s="reportListItem"><l>1</l><block var="line"/><comment w="137.33333333333334" collapsed="false">This is why each line in WIN LINES is a list of points, each of which is a list of x,y coordinates:  It allows us to use the endpoints, as points, in the GO TO block.</comment></block></block><block s="down"></block><block s="doGotoObject"><block s="reportListItem"><l>2</l><block var="line"/></block></block><block s="up"></block></script><list></list></block></script></block></script><scripts><comment x="174" y="6.666666666666667" w="244" collapsed="false">I&apos;m kind of bummed that I didn&apos;t find a beautiful one-line solution using FIND FIRST, but it just gives the value it finds, not the position in the list, which is what we need to find the line endpoints in WIN LINES. So it&apos;s a plain old fashioned FOR loop.</comment></scripts></block-definition><block-definition s="status of all winning triples" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="status of triple %l"><l/></custom-block></autolambda><list></list></block><custom-block s="possible winning triples"></custom-block></block></block></script></block-definition><block-definition s="status of triple %&apos;triple&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doReport"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportListItem"><l></l><block var="board"/></block></autolambda><list></list></block><block var="triple"/></block></block></script></block-definition><block-definition s="possible winning triples" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportNewList"><list><block s="reportNewList"><list><l>1</l><l>2</l><l>3</l></list></block><block s="reportNewList"><list><l>4</l><l>5</l><l>6</l></list></block><block s="reportNewList"><list><l>7</l><l>8</l><l>9</l></list></block><block s="reportNewList"><list><l>1</l><l>4</l><l>7</l></list></block><block s="reportNewList"><list><l>2</l><l>5</l><l>8</l></list></block><block s="reportNewList"><list><l>3</l><l>6</l><l>9</l></list></block><block s="reportNewList"><list><l>1</l><l>5</l><l>9</l></list></block><block s="reportNewList"><list><l>3</l><l>5</l><l>7</l></list></block></list></block></block></script></block-definition><block-definition s="makeBoard" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doSwitchToCostume"><l>Empty</l></block><block s="show"></block><block s="setEffect"><l><option>ghost</option></l><l>30</l><comment w="78" collapsed="true">3.3.3 TIF B</comment></block><block s="setScale"><l>95</l><comment w="190" collapsed="true">Oops costumes are a bit too big.</comment></block><block s="doSetVar"><l>position number</l><l>1</l><comment w="53.333333333333336" collapsed="true">3.3.1.4</comment></block><custom-block s="for %upvar = %n to %n %cs"><l>i</l><l>1</l><l>3</l><script><custom-block s="for %upvar = %n to %n %cs"><l>j</l><l>1</l><l>3</l><script><block s="gotoXY"><block s="reportVariadicSum"><list><l>-100</l><block s="reportVariadicProduct"><list><l>50</l><block var="j"/></list></block></list></block><block s="reportDifference"><l>100</l><block s="reportVariadicProduct"><list><l>50</l><block var="i"/></list></block></block></block><block s="createClone"><l><option>myself</option></l></block><block s="doChangeVar"><l>position number</l><l>1</l><comment w="53.333333333333336" collapsed="true">3.3.1.4</comment></block></script></custom-block></script></custom-block><block s="hide"></block></script></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="reportVariadicGreaterThan"><list><block var="start"/><block var="end"/></list></block><script><block s="doSetVar"><l>step</l><l>-1</l></block><block s="doSetVar"><l>tester</l><block s="reifyReporter"><autolambda><block s="reportVariadicLessThan"><list><block var="i"/><block var="end"/></list></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="reportVariadicGreaterThan"><list><block var="i"/><block var="end"/></list></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></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="true" hyperops="true" codify="false" inheritance="false" sublistIDs="false" id="766"><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="767"></list></costumes><sounds><list struct="atomic" id="768"></list></sounds><variables></variables><blocks></blocks><scripts></scripts><sprites select="1"><sprite name="Square" idx="1" x="50" y="-50" heading="270" scale="1" volume="100" pan="0" rotation="1" draggable="true" costume="1" color="80,80,80,1" pen="tip" id="773"><costumes><list id="774"><item><ref mediaID="Square_cst_Empty"></ref></item><item><ref mediaID="Square_cst_X"></ref></item><item><ref mediaID="Square_cst_O"></ref></item></list></costumes><sounds><list struct="atomic" id="775"></list></sounds><blocks></blocks><variables><variable name="position number"><l>10</l></variable></variables><scripts><script x="36.60000000000002" y="18"><block s="doWearNextCostume"></block></script><script x="23.600000000000023" y="40.000000000000014"><block s="receiveInteraction"><l><option>clicked</option></l></block><block s="doIf"><block var="X&apos;s turn?"/><script><block s="doSwitchToCostume"><l>X</l></block><block s="doSetVar"><l>X&apos;s turn?</l><block s="reportBoolean"><l><bool>false</bool></l></block></block><block s="doReplaceInList"><block var="position number"/><block var="board"/><l>X</l></block></script><list><l><bool>true</bool></l><script><block s="doSwitchToCostume"><l>O</l></block><block s="doSetVar"><l>X&apos;s turn?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><block s="doReplaceInList"><block var="position number"/><block var="board"/><l>O</l></block></script></list></block><block s="doIf"><custom-block s="won? %s"><l>X</l></custom-block><script><block s="doSayFor"><l>X won!</l><l>2</l></block></script><list><custom-block s="won? %s"><l>O</l></custom-block><script><block s="doSayFor"><l>O won!</l><l>2</l></block></script><block s="reportNot"><block s="reportVariadicAnd"><list><custom-block s="won? %s"><l>X</l></custom-block><custom-block s="won? %s"><l>O</l></custom-block></list></block></block><script><block s="doSayFor"><l>Tie!</l><l>2</l></block></script></list></block></script><script x="381" y="144.00000000000023"><custom-block s="status of triple %l"><block s="reportNewList"><list><l>1</l><l>2</l><l>3</l></list></block></custom-block></script><script x="735" y="35.000000000000014"><block s="receiveInteraction"><l><option>clicked</option></l></block><block s="doIf"><block s="reportVariadicAnd"><list><block var="playing"/><block s="reportVariadicEquals"><list><block s="getCostumeIdx"></block><l>1</l></list></block></list></block><script><custom-block s="move in this square"></custom-block><block s="doBroadcast"><l>1</l><list></list></block></script><list></list></block></script><script x="752" y="191"><block s="receiveMessage"><l><option>any message</option></l><list><l>data</l></list></block><block s="doIf"><block s="reportVariadicEquals"><list><block var="data"/><block var="position number"/></list></block><script><custom-block s="Move in this square"></custom-block></script><list></list></block></script><script x="220.60000000000002" y="79.66666666666676"><block s="doSetVar"><l>board</l><block s="reportNewList"><list><l>1</l><l>2</l><l>3</l><l>4</l><l>5</l><l>6</l><l>7</l><l>8</l><l></l></list></block></block></script><script x="203.60000000000002" y="10"><block s="createClone"><l><option>myself</option></l></block></script><script x="249.60000000000002" y="46.66666666666664"><block s="show"></block></script><script x="378" y="15"><custom-block s="next move for computer"></custom-block></script><script x="345" y="182.3333333333312"><block s="doIfElse"><block s="reportVariadicEquals"><list><custom-block s="Status of all winning triples"></custom-block><block s="reportNewList"><list><l>X</l><l>X</l><l>X</l></list></block></list></block><script><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></l></block></block></script><script><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></block></block></script></block></script><script x="349.1015625" y="301.33333333333087"><block s="reportNewList"><list><l>1</l><l>2</l><l>3</l></list></block></script><script x="333.505859375" y="330.3333333333311"><block s="reportFindFirst"><block s="reifyPredicate"><autolambda><block s="reportIsA"><l></l><l><option>number</option></l></block></autolambda><list></list></block><l/></block></script><script x="10" y="432.3333333333331"><block s="receiveGo"></block><block s="doSwitchToCostume"><l>Empty</l></block><custom-block s="makeBoard"></custom-block><block s="doSetVar"><l>X&apos;s turn?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block></script><script x="130.4951171875" y="435.09999999999974"><custom-block s="Possible winning triples"></custom-block></script><script x="184.6416015625" y="458.33333333333036"><custom-block s="status of triple %l"><l/></custom-block></script><script x="192" y="484.9999999999997"><custom-block s="best empty square"></custom-block></script><script x="193" y="509.9999999999997"><custom-block s="winning square for player %s"><l></l></custom-block></script><script x="199" y="539.9999999999995"><custom-block s="won? %s"><l>X</l></custom-block></script><script x="334" y="368.0000000000001"><custom-block s="can player %s win now?"><l></l></custom-block></script><script x="344" y="396"><custom-block s="winning triple for player %s"><l></l></custom-block></script><script x="696" y="362.0000000000001"><block s="receiveInteraction"><l><option>clicked</option></l></block><block s="doIf"><block s="reportVariadicEquals"><list><block s="getCostumeIdx"></block><l>1</l></list></block><script><custom-block s="move in this square"></custom-block></script><list></list></block></script><script x="21" y="576.9999999999997"><block s="doIf"><block s="reportVariadicAnd"><list><block var="playing"/><block s="reportVariadicEquals"><list><block s="getCostumeIdx"></block><l>1</l></list></block></list></block><script><block s="doIfElse"><block var="X&apos;s turn?"/><script><block s="doSwitchToCostume"><l>X</l></block><block s="doReplaceInList"><block var="position number"/><block var="board"/><l>X</l></block><block s="doIf"><custom-block s="won? %s"><l>X</l></custom-block><script><block s="bubble"><l>X won!</l></block><block s="goToLayer"><l><option>front</option></l></block><block s="doTellTo"><l>Sprite</l><block s="reifyScript"><script><custom-block s="draw win line"></custom-block></script><list></list></block><list></list></block><block s="doSetVar"><l>playing</l><block s="reportBoolean"><l><bool>false</bool></l></block></block></script><list></list></block></script><script><block s="doSwitchToCostume"><l>O</l></block><block s="doReplaceInList"><block var="position number"/><block var="board"/><l>O</l></block><block s="doIf"><custom-block s="won? %s"><l>O</l></custom-block><script><block s="bubble"><l>O won!</l></block><block s="goToLayer"><l><option>front</option></l></block><block s="doTellTo"><l>Sprite</l><block s="reifyScript"><script><custom-block s="draw win line"></custom-block></script><list></list></block><list></list></block><block s="doSetVar"><l>playing</l><block s="reportBoolean"><l><bool>false</bool></l></block></block></script><list></list></block></script></block><block s="doSetVar"><l>X&apos;s turn?</l><block s="reportNot"><block var="X&apos;s turn?"/></block></block><block s="doIf"><block s="reportVariadicAnd"><list><block var="playing"/><custom-block s="tied?"></custom-block></list></block><script><block s="bubble"><l>It&apos;s a tie.</l></block><block s="goToLayer"><l><option>front</option></l></block></script><list></list></block><block s="doDeclareVariables"><list><l>available squares</l></list></block><block s="doSetVar"><l>available squares</l><block s="reportKeep"><block s="reifyPredicate"><autolambda><block s="reportIsA"><l></l><l><option>number</option></l></block></autolambda><list></list></block><block var="board"/></block></block><block s="doIf"><block s="reportVariadicAnd"><list><block var="playing"/><block s="reportVariadicEquals"><list><block s="reportListAttribute"><l><option>length</option></l><block var="available squares"/></block><l>1</l></list></block></list></block><script><block s="doReplaceInList"><block s="reportListItem"><l>1</l><block var="available squares"/></block><block var="board"/><l>X</l></block><block s="doIf"><block s="reportNot"><custom-block s="won? %s"><l>X</l></custom-block></block><script><block s="bubble"><l>It&apos;s a tie.</l></block><block s="goToLayer"><l><option>front</option></l></block><block s="doSetVar"><l>playing</l><block s="reportBoolean"><l><bool>false</bool></l></block></block></script><list></list></block></script><list></list></block></script><list></list></block></script><script x="334" y="420.99999999999994"><custom-block s="winning square for player %s"><l>O</l></custom-block></script><script x="378" y="444.9999999999994"><block s="receiveMessage"><l><option>any message</option></l><list></list></block><block s="doIf"><block s="reportVariadicEquals"><list><block s="getLastMessage"></block><block var="position number"/></list></block><script><custom-block s="move in this square"></custom-block></script><list></list></block></script><script x="55" y="1417.6666666666672"><block s="doSetVar"><l>win lines</l><block s="reportNewList"><list><block s="reportNewList"><list><block s="reportNewList"><list><l>-100</l><l>50</l></list></block><block s="reportNewList"><list><l>100</l><l>50</l></list></block></list></block><block s="reportNewList"><list><block s="reportNewList"><list><l>-100</l><l>0</l></list></block><block s="reportNewList"><list><l>100</l><l>0</l></list></block></list></block><block s="reportNewList"><list><block s="reportNewList"><list><l>-100</l><l>-50</l></list></block><block s="reportNewList"><list><l>100</l><l>-50</l></list></block></list></block><block s="reportNewList"><list><block s="reportNewList"><list><l>-50</l><l>100</l></list></block><block s="reportNewList"><list><l>-50</l><l>-100</l></list></block></list></block><block s="reportNewList"><list><block s="reportNewList"><list><l>0</l><l>100</l></list></block><block s="reportNewList"><list><l>0</l><l>-100</l></list></block></list></block><block s="reportNewList"><list><block s="reportNewList"><list><l>50</l><l>100</l></list></block><block s="reportNewList"><list><l>50</l><l>-100</l></list></block></list></block><block s="reportNewList"><list><block s="reportNewList"><list><l>-100</l><l>100</l></list></block><block s="reportNewList"><list><l>100</l><l>-100</l></list></block></list></block><block s="reportNewList"><list><block s="reportNewList"><list><l>-100</l><l>-100</l></list></block><block s="reportNewList"><list><l>100</l><l>100</l></list></block></list></block></list></block></block></script><script x="358" y="567.3333333333343"><custom-block s="draw win line"></custom-block></script><script x="361" y="621.1666666666677"><custom-block s="makeBoard"></custom-block></script></scripts></sprite><watcher var="X&apos;s turn?" style="normal" x="5" y="5" color="243,118,29" hidden="true"/><watcher scope="Stage" s="reportMouseX" style="normal" x="7.912087912087827" y="7.912087912087905" color="4,148,220" hidden="true"/><watcher scope="Square" var="position number" style="normal" x="-5" y="70" color="243,118,29"/><watcher var="board" style="normal" x="306" y="7.999999999999993" color="243,118,29" extX="80" extY="70"/><watcher scope="Stage" s="reportMouseY" style="normal" x="5.054945054945165" y="40.24175982417583" color="4,148,220" hidden="true"/><watcher var="playing" style="normal" x="10" y="10" color="243,118,29"/></sprites></stage><variables><variable name="X&apos;s turn?"><bool>false</bool></variable><variable name="board"><list struct="atomic" id="1333">O,2,X,X,O,X,O,8,X</list></variable><variable name="playing"><l>0</l></variable><variable name="win lines"><list id="1334"><item><list id="1335"><item><list struct="atomic" id="1336">-100,50</list></item><item><list struct="atomic" id="1337">100,50</list></item></list></item><item><list id="1338"><item><list struct="atomic" id="1339">-100,0</list></item><item><list struct="atomic" id="1340">100,0</list></item></list></item><item><list id="1341"><item><list struct="atomic" id="1342">-100,-50</list></item><item><list struct="atomic" id="1343">100,-50</list></item></list></item><item><list id="1344"><item><list struct="atomic" id="1345">-50,100</list></item><item><list struct="atomic" id="1346">-50,-100</list></item></list></item><item><list id="1347"><item><list struct="atomic" id="1348">0,100</list></item><item><list struct="atomic" id="1349">0,-100</list></item></list></item><item><list id="1350"><item><list struct="atomic" id="1351">50,100</list></item><item><list struct="atomic" id="1352">50,-100</list></item></list></item><item><list id="1353"><item><list struct="atomic" id="1354">-100,100</list></item><item><list struct="atomic" id="1355">100,-100</list></item></list></item><item><list id="1356"><item><list struct="atomic" id="1357">-100,-100</list></item><item><list struct="atomic" id="1358">100,100</list></item></list></item></list></variable></variables></scene></scenes></project><media name="U5L6-TicTacToe" app="Snap! 9.0, https://snap.berkeley.edu" version="2"><costume name="Empty" center-x="26" center-y="26" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQAAAA0CAYAAADFeBvrAAAAAXNSR0IArs4c6QAAAMdJREFUaEPtmrENgmAUBh9TYEfBIs6i4lAEZ6GVGAs3MjFxgK+5wJ+jv3y8O0q6auzpqupcVWsLdw3D+P4ddLlO62OZD33Tc3vVdLt/PGivGS201zL/97KQhWADfnKw8HjOQrEyGLAQLDyes1CsDAYsBAuP5ywUK4MBC8HC4zkLxcpgwEKw8HjOQrEyGLAQLDyes1CsDAYsBAuP5ywUK4MBC8HC4zkLxcpgwEKw8HjOQrEyGLAQLDyes1CsDAbaLtTKH419f9q+t56dV83eYNkAAAAASUVORK5CYII=" mediaID="Square_cst_Empty"/><costume name="X" center-x="26" center-y="26" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQAAAA0CAYAAADFeBvrAAAAAXNSR0IArs4c6QAAAgVJREFUaEPt2rtOAkEUBuBDpTRgTdRQ8gRIaUUMoIk3RAQlEWm9FpYG7IzxKSyoLC3VTmPUxkvrLVFLLOhMzJJgREHOnDlnZxeh22Qv882/O+HPrgcAgvH4xKbP19MLLv9Vqx/XHgAYDocjh9mFnKtBb68vcHV58VADJZPpg3J5v8/NAZ2encN2qdgFOTbE/5nQ49MzDA70OyqVVmNCJbSYL0AgEIBSccsRqJvbOxhNJGBndw8mx8caxoQCVSrvkF8qQCgUMo6qY+Yy2aZjQYGsKXACqh3GGicaZBqFwSiDTKGwGBLIbpQKhgyyC6WK0QJJoygYbZAUiophAXGjdDBsIC6ULoYVpIviwLCDqCgujAhIFcWJEQNhUdwYUVA7lARGHNQKJYWxBfQTlUrN1MpZqz7T0NYIG0r1gXD+r0OsPpXJzsPJ8REsr6yKFUXbQNZtFo/FwOv1wtR00t2g78/MxvqaaJ0XT6jZAiBZ50VBf61mUigxEGZplkCJgDCY+vLHjWIHqWAkUKwgCoYbxQbSwXCiWEAcGC6UNogTw4HSAklgdFFkkCRGB0UC2YGhopRBdmIoKCWQCYwqCg0yiVFBoUBOwGBRKFA0OgJDkYhYy1St9vU/tKnZNO2lsRNf61sov9/3ay5QCanOoMn9uyCTs4+5dmcn1GkfAAYBIIeJ1QX73H8CynJ8DoPjGXcAAAAASUVORK5CYII=" mediaID="Square_cst_X"/><costume name="O" center-x="26" center-y="26" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQAAAA0CAYAAADFeBvrAAAAAXNSR0IArs4c6QAABGBJREFUaEPtmktME1EUhv+uFXCnCQIRBOpjYYtGN4qiIUbwFTUKPmKUghIXEKNxQyllY5ACC+ODYmJUoPiIDzAxREV04QNpNRFESDSCzx0PXWPOmJu0dKZzZ+ZOQWSSpovee+Z85z9z7r1nasE0uywA1gLomA5cSUkp3RLQocOOjksN9f8004uXXXAUFL6dAZqqMs4oxKtM+8PH8PsDGOj/gI7Hj/Dp08ewqTt37UZ8fDyW2ezIWpeJxIT5vOYVxwlVaHDoC7zeBjReu4qM5Sukj91ugzU9TdZZunnfh368Cfhx7+4dafyevHzs2L5FN5gQoGCQwiPFyM/brSvat27fg6+5CSPDwyg6WqwLzDDQ5SuNcLucIJCjRQ7ExcXqji6bSOlaXVWFhMRElJc7NQVHN9DIyCjKXRXo7emBu7ISq1auMAwSbIDsn7/oRf2Fc7hQ70X2hiwu+7qA6GYFjkLExsaixlMtRBUlbykNTxwvxRlPLVcKagZiMFarFZVuF1fUjA7q6X2Pzbm5XFCagQ4XFCImJgZ1tR6jfmqaT1BLlyzG8xevIqa3JqCz5y6i80kHGrz1pqaZWvoFAgHF+3MDsQi96+nFksWLNEVX5OCS0uOSOaUM4QaiVLPZM3CsuEikf5pt0TNss9nQ1OyTTT0uIBqUn7cHkaTW7JmBCZT6AX835I46XEAk88LUtElXh8WAqdTa1haW/qpAtK1JSkzA8PDIpBQCJSFPV3nw+9dY2NKhCkRbG9o8RrtMq2UkFanSklK0tz8IGaoKROm2ek0m1yqt5oTo35OTUzAx7VSB5CaJdkyvPblgqwJZLBaMj4/rvaep86ja0RW8lEQEoh89Hg9uXPeZ6phe43TMaPH5Qsq3KpDX65Wt93qdEDmPnJ/o3wyQyAgbtaVZIaVab9QRUfPp8PfsaWfIGvl/VTmKZHb2RlN6BiJUohPAppzckEVfVaEypwspC1Nx8MBeET4ItUGL/pPOzpCukCoQ65VNtbWItbo07+Voqz5nThw+Dw5p6o8JlULGGGXOrNkxOHXy7wmWXaoK0UClyWY7rWQ/UpC5gOhMtDYzc0qdWH/++C7bRuMCYirRd7R6cUrqsAOn0iPADcRUUmpORCv9qFSnpqWHPTuaniE2mLVlJ6tZQsfu7tddEfuC3AoxKCoQfX19UW82smDKNUY0V7mJ6RRtKF4Y8lOzQhOVcrnKTe2k0qm0proqrHeg9MzqBiKDlNP0/sbpcgvfGlERqqhwY2hwELV1tdxBMwTEJHaWlUlv2xwOh+EXX7RoXm1sllTR81bQMBBBBTuxLmt92A6Yp6STIk3NLZLiZENvcIQAMYcJ7PbdVtxva5XK65at26QW8vIMuzRkkTVd6r7SwXFs7Be+fvuOgYEBaSx99u7bj5ycHEMqCwUKVoIi3vXaLzlM/1UYHR3FzRst0pAFC5IlFejFGQMW9Y7WNCCeNDNjzAyQGVEVaXN6KzRd/tE4d+68l38AHzaJdYJvYYIAAAAASUVORK5CYII=" mediaID="Square_cst_O"/></media></snapdata>