[{"data":1,"prerenderedAt":3226},["ShallowReactive",2],{"post:\u002F2019\u002F06\u002F28\u002Ftic-tac-toe":3},{"id":4,"title":5,"body":6,"date":3218,"description":12,"extension":3219,"meta":3220,"navigation":69,"path":3221,"seo":3222,"stem":3223,"subtitle":3224,"__hash__":3225},"posts\u002F2019\u002F06\u002F28\u002Ftic-tac-toe.md","Tic Tac Toe",{"type":7,"value":8,"toc":3216},"minimark",[9,13,16,19,22,25,28,83,86,262,265,268,588,591,669,672,936,939,1008,1011,1014,1295,1298,1953,1964,1967,1970,2082,2085,3212],[10,11,12],"p",{},"I'm back! And in Toronto now. There hasn't been a post in quite some time. It turns out that moving to a different country is more demanding of your time than I had once thought. So after spending the obligatory month-and-a-bit making sure I wasn't homeless, getting a credit score and going through the financial turmoil of furnishing a living space I'm back to doing what I love, coding.",[10,14,15],{},"I thought I'd start with something relevant to me at the moment, which is a coding test. This particular one was given to me in my last place of work for my coding interview. Tic Tac Toe.",[10,17,18],{},"side note: If you're a perspective employer reading this, hello, I'm great and a super great employee.",[10,20,21],{},"OK, lets get started.",[10,23,24],{},"The game is Tic Tac Toe, everyone's played it and it makes for a good coding exercise. Its a 3 x 3 board where you each take a turn marking an X or an O with the hopes of getting three in a row. simple",[10,26,27],{},"lets begin with creating the Game class",[29,30,35],"pre",{"className":31,"code":32,"language":33,"meta":34,"style":34},"language-ruby shiki shiki-themes github-dark","class Game\n  def initialize()\n\n  end\nend\n","ruby","",[36,37,38,51,64,71,77],"code",{"__ignoreMap":34},[39,40,43,47],"span",{"class":41,"line":42},"line",1,[39,44,46],{"class":45},"snl16","class",[39,48,50],{"class":49},"svObZ"," Game\n",[39,52,54,57,60],{"class":41,"line":53},2,[39,55,56],{"class":45},"  def",[39,58,59],{"class":49}," initialize",[39,61,63],{"class":62},"s95oV","()\n",[39,65,67],{"class":41,"line":66},3,[39,68,70],{"emptyLinePlaceholder":69},true,"\n",[39,72,74],{"class":41,"line":73},4,[39,75,76],{"class":45},"  end\n",[39,78,80],{"class":41,"line":79},5,[39,81,82],{"class":45},"end\n",[10,84,85],{},"Now we have a class with an initialize method in it, easy money. Now lets get the contestants.",[29,87,89],{"className":31,"code":88,"language":33,"meta":34,"style":34},"class Game\n  def initialize()\n   setup_players\n  end\n  \n  def setup_players\n    puts(\"Hello and welcome to Tic Tac Toe\")\n    puts(\"Please enter the name of player 1:\")\n    @player1 = gets.chomp()\n\n    puts(\"Please enter the name of player 2:\")\n    @player2 = gets.chomp()\n    puts(\"welcome #{@player1} and #{@player2}. #{@player1} goes first.\")\n  end\nend\n\n",[36,90,91,97,105,110,114,119,127,144,156,176,181,193,209,252,257],{"__ignoreMap":34},[39,92,93,95],{"class":41,"line":42},[39,94,46],{"class":45},[39,96,50],{"class":49},[39,98,99,101,103],{"class":41,"line":53},[39,100,56],{"class":45},[39,102,59],{"class":49},[39,104,63],{"class":62},[39,106,107],{"class":41,"line":66},[39,108,109],{"class":62},"   setup_players\n",[39,111,112],{"class":41,"line":73},[39,113,76],{"class":45},[39,115,116],{"class":41,"line":79},[39,117,118],{"class":62},"  \n",[39,120,122,124],{"class":41,"line":121},6,[39,123,56],{"class":45},[39,125,126],{"class":49}," setup_players\n",[39,128,130,134,137,141],{"class":41,"line":129},7,[39,131,133],{"class":132},"sDLfK","    puts",[39,135,136],{"class":62},"(",[39,138,140],{"class":139},"sU2Wk","\"Hello and welcome to Tic Tac Toe\"",[39,142,143],{"class":62},")\n",[39,145,147,149,151,154],{"class":41,"line":146},8,[39,148,133],{"class":132},[39,150,136],{"class":62},[39,152,153],{"class":139},"\"Please enter the name of player 1:\"",[39,155,143],{"class":62},[39,157,159,162,165,168,171,174],{"class":41,"line":158},9,[39,160,161],{"class":62},"    @player1 ",[39,163,164],{"class":45},"=",[39,166,167],{"class":132}," gets",[39,169,170],{"class":62},".",[39,172,173],{"class":132},"chomp",[39,175,63],{"class":62},[39,177,179],{"class":41,"line":178},10,[39,180,70],{"emptyLinePlaceholder":69},[39,182,184,186,188,191],{"class":41,"line":183},11,[39,185,133],{"class":132},[39,187,136],{"class":62},[39,189,190],{"class":139},"\"Please enter the name of player 2:\"",[39,192,143],{"class":62},[39,194,196,199,201,203,205,207],{"class":41,"line":195},12,[39,197,198],{"class":62},"    @player2 ",[39,200,164],{"class":45},[39,202,167],{"class":132},[39,204,170],{"class":62},[39,206,173],{"class":132},[39,208,63],{"class":62},[39,210,212,214,216,219,222,225,228,231,233,236,238,241,243,245,247,250],{"class":41,"line":211},13,[39,213,133],{"class":132},[39,215,136],{"class":62},[39,217,218],{"class":139},"\"welcome ",[39,220,221],{"class":139},"#{",[39,223,224],{"class":62},"@player1",[39,226,227],{"class":139},"}",[39,229,230],{"class":139}," and ",[39,232,221],{"class":139},[39,234,235],{"class":62},"@player2",[39,237,227],{"class":139},[39,239,240],{"class":139},". ",[39,242,221],{"class":139},[39,244,224],{"class":62},[39,246,227],{"class":139},[39,248,249],{"class":139}," goes first.\"",[39,251,143],{"class":62},[39,253,255],{"class":41,"line":254},14,[39,256,76],{"class":45},[39,258,260],{"class":41,"line":259},15,[39,261,82],{"class":45},[10,263,264],{},"So here we've added a simple method to setup the players, it prompts them to enter their names and grabs the text and stores it in a class variable. We also want this to run as soon as the game is run so we call the method in our initialize method.",[10,266,267],{},"Its all well and good having the players but they have nothing to play, lets create the board.",[29,269,271],{"className":31,"code":270,"language":33,"meta":34,"style":34},"  def setup_board\n    @board = {one: 1, two: 2, three: 3, four: 4, five: 5,\n              six: 6, seven: 7, eight: 8, nine: 9}\n  end\n\n  def get_board\n    puts(\"\\n\")\n    puts(\"#{@board[:one]} | #{@board[:two]} | #{@board[:three]}\")\n    puts(\"- + - + -\")\n    puts(\"#{@board[:four]} | #{@board[:five]} | #{@board[:six]}\")\n    puts(\"- + - + -\")\n    puts(\"#{@board[:seven]} | #{@board[:eight]} | #{@board[:nine]}\")\n    puts(\"\\n\")\n  end\n",[36,272,273,280,332,367,371,375,382,398,451,462,511,521,570,584],{"__ignoreMap":34},[39,274,275,277],{"class":41,"line":42},[39,276,56],{"class":45},[39,278,279],{"class":49}," setup_board\n",[39,281,282,285,287,290,293,296,299,302,305,307,310,313,315,318,321,323,326,329],{"class":41,"line":53},[39,283,284],{"class":62},"    @board ",[39,286,164],{"class":45},[39,288,289],{"class":62}," {",[39,291,292],{"class":132},"one:",[39,294,295],{"class":132}," 1",[39,297,298],{"class":62},", ",[39,300,301],{"class":132},"two:",[39,303,304],{"class":132}," 2",[39,306,298],{"class":62},[39,308,309],{"class":132},"three:",[39,311,312],{"class":132}," 3",[39,314,298],{"class":62},[39,316,317],{"class":132},"four:",[39,319,320],{"class":132}," 4",[39,322,298],{"class":62},[39,324,325],{"class":132},"five:",[39,327,328],{"class":132}," 5",[39,330,331],{"class":62},",\n",[39,333,334,337,340,342,345,348,350,353,356,358,361,364],{"class":41,"line":66},[39,335,336],{"class":132},"              six:",[39,338,339],{"class":132}," 6",[39,341,298],{"class":62},[39,343,344],{"class":132},"seven:",[39,346,347],{"class":132}," 7",[39,349,298],{"class":62},[39,351,352],{"class":132},"eight:",[39,354,355],{"class":132}," 8",[39,357,298],{"class":62},[39,359,360],{"class":132},"nine:",[39,362,363],{"class":132}," 9",[39,365,366],{"class":62},"}\n",[39,368,369],{"class":41,"line":73},[39,370,76],{"class":45},[39,372,373],{"class":41,"line":79},[39,374,70],{"emptyLinePlaceholder":69},[39,376,377,379],{"class":41,"line":121},[39,378,56],{"class":45},[39,380,381],{"class":49}," get_board\n",[39,383,384,386,388,391,394,396],{"class":41,"line":129},[39,385,133],{"class":132},[39,387,136],{"class":62},[39,389,390],{"class":139},"\"",[39,392,393],{"class":132},"\\n",[39,395,390],{"class":139},[39,397,143],{"class":62},[39,399,400,402,404,406,408,411,414,417,420,423,425,427,429,432,434,436,438,440,442,445,447,449],{"class":41,"line":146},[39,401,133],{"class":132},[39,403,136],{"class":62},[39,405,390],{"class":139},[39,407,221],{"class":139},[39,409,410],{"class":62},"@board",[39,412,413],{"class":139},"[",[39,415,416],{"class":132},":one",[39,418,419],{"class":139},"]}",[39,421,422],{"class":139}," | ",[39,424,221],{"class":139},[39,426,410],{"class":62},[39,428,413],{"class":139},[39,430,431],{"class":132},":two",[39,433,419],{"class":139},[39,435,422],{"class":139},[39,437,221],{"class":139},[39,439,410],{"class":62},[39,441,413],{"class":139},[39,443,444],{"class":132},":three",[39,446,419],{"class":139},[39,448,390],{"class":139},[39,450,143],{"class":62},[39,452,453,455,457,460],{"class":41,"line":158},[39,454,133],{"class":132},[39,456,136],{"class":62},[39,458,459],{"class":139},"\"- + - + -\"",[39,461,143],{"class":62},[39,463,464,466,468,470,472,474,476,479,481,483,485,487,489,492,494,496,498,500,502,505,507,509],{"class":41,"line":178},[39,465,133],{"class":132},[39,467,136],{"class":62},[39,469,390],{"class":139},[39,471,221],{"class":139},[39,473,410],{"class":62},[39,475,413],{"class":139},[39,477,478],{"class":132},":four",[39,480,419],{"class":139},[39,482,422],{"class":139},[39,484,221],{"class":139},[39,486,410],{"class":62},[39,488,413],{"class":139},[39,490,491],{"class":132},":five",[39,493,419],{"class":139},[39,495,422],{"class":139},[39,497,221],{"class":139},[39,499,410],{"class":62},[39,501,413],{"class":139},[39,503,504],{"class":132},":six",[39,506,419],{"class":139},[39,508,390],{"class":139},[39,510,143],{"class":62},[39,512,513,515,517,519],{"class":41,"line":183},[39,514,133],{"class":132},[39,516,136],{"class":62},[39,518,459],{"class":139},[39,520,143],{"class":62},[39,522,523,525,527,529,531,533,535,538,540,542,544,546,548,551,553,555,557,559,561,564,566,568],{"class":41,"line":195},[39,524,133],{"class":132},[39,526,136],{"class":62},[39,528,390],{"class":139},[39,530,221],{"class":139},[39,532,410],{"class":62},[39,534,413],{"class":139},[39,536,537],{"class":132},":seven",[39,539,419],{"class":139},[39,541,422],{"class":139},[39,543,221],{"class":139},[39,545,410],{"class":62},[39,547,413],{"class":139},[39,549,550],{"class":132},":eight",[39,552,419],{"class":139},[39,554,422],{"class":139},[39,556,221],{"class":139},[39,558,410],{"class":62},[39,560,413],{"class":139},[39,562,563],{"class":132},":nine",[39,565,419],{"class":139},[39,567,390],{"class":139},[39,569,143],{"class":62},[39,571,572,574,576,578,580,582],{"class":41,"line":211},[39,573,133],{"class":132},[39,575,136],{"class":62},[39,577,390],{"class":139},[39,579,393],{"class":132},[39,581,390],{"class":139},[39,583,143],{"class":62},[39,585,586],{"class":41,"line":254},[39,587,76],{"class":45},[10,589,590],{},"Now we're cooking with gas, we have a method that creates a hash giving each tile on the board a number, the idea being that if player ones presses 1 it will be replaced with an x. The get board method will get the board in its current state and print it to the screen. so when we run the game we'll be asked for our names and presented with the board",[29,592,596],{"className":593,"code":594,"language":595,"meta":34,"style":34},"language-shell shiki shiki-themes github-dark","1 | 2 | 3\n- + - + -\n4 | 5 | 6\n- + - + -\n7 | 8 | 9\n","shell",[36,597,598,613,629,643,655],{"__ignoreMap":34},[39,599,600,603,606,608,610],{"class":41,"line":42},[39,601,602],{"class":49},"1",[39,604,605],{"class":45}," |",[39,607,304],{"class":49},[39,609,605],{"class":45},[39,611,612],{"class":49}," 3\n",[39,614,615,618,621,624,626],{"class":41,"line":53},[39,616,617],{"class":49},"-",[39,619,620],{"class":139}," +",[39,622,623],{"class":139}," -",[39,625,620],{"class":139},[39,627,628],{"class":139}," -\n",[39,630,631,634,636,638,640],{"class":41,"line":66},[39,632,633],{"class":49},"4",[39,635,605],{"class":45},[39,637,328],{"class":49},[39,639,605],{"class":45},[39,641,642],{"class":49}," 6\n",[39,644,645,647,649,651,653],{"class":41,"line":73},[39,646,617],{"class":49},[39,648,620],{"class":139},[39,650,623],{"class":139},[39,652,620],{"class":139},[39,654,628],{"class":139},[39,656,657,660,662,664,666],{"class":41,"line":79},[39,658,659],{"class":49},"7",[39,661,605],{"class":45},[39,663,355],{"class":49},[39,665,605],{"class":45},[39,667,668],{"class":49}," 9\n",[10,670,671],{},"This game is shaping up nicely, but the players can't interact with the board in any way. This might stifle gameplay so lets address that next. We want to make it possible for players to take turns choosing tiles and having the board update to reflect those changes. So, 1.) we need to prompt the player to pick a tile. 2.) we need to start a counter to govern who's turn it is and 3.) we need to print the new updated board back so the players can see where they are in the game.",[29,673,675],{"className":31,"code":674,"language":33,"meta":34,"style":34},"  # the updated initialize method with our new methods in it.\n  def initialize()\n    @turn_counter = 0\n    setup_players\n    setup_board\n    get_board\n    player_move\n  end\n \n\n  def player_move\n    if @turn_counter \u003C 9 && @turn_counter.even?\n      print(\"#{@player1} please select a tile:\")\n      key = gets.chomp().to_i\n        @board[@board.keys[key - 1]] = 'x'\n        @turn_counter += 1\n      end\n    else\n      print(\"#{@player2} please select a tile:\")\n      key = gets.chomp().to_i\n      @board[@board.keys[key - 1]] = 'o'\n      @turn_counter += 1\n     end\n     get_board\n    end\n",[36,676,677,683,691,701,706,711,716,721,725,730,734,741,763,783,804,827,839,845,851,870,887,908,918,924,930],{"__ignoreMap":34},[39,678,679],{"class":41,"line":42},[39,680,682],{"class":681},"sAwPA","  # the updated initialize method with our new methods in it.\n",[39,684,685,687,689],{"class":41,"line":53},[39,686,56],{"class":45},[39,688,59],{"class":49},[39,690,63],{"class":62},[39,692,693,696,698],{"class":41,"line":66},[39,694,695],{"class":62},"    @turn_counter ",[39,697,164],{"class":45},[39,699,700],{"class":132}," 0\n",[39,702,703],{"class":41,"line":73},[39,704,705],{"class":62},"    setup_players\n",[39,707,708],{"class":41,"line":79},[39,709,710],{"class":62},"    setup_board\n",[39,712,713],{"class":41,"line":121},[39,714,715],{"class":62},"    get_board\n",[39,717,718],{"class":41,"line":129},[39,719,720],{"class":62},"    player_move\n",[39,722,723],{"class":41,"line":146},[39,724,76],{"class":45},[39,726,727],{"class":41,"line":158},[39,728,729],{"class":62}," \n",[39,731,732],{"class":41,"line":178},[39,733,70],{"emptyLinePlaceholder":69},[39,735,736,738],{"class":41,"line":183},[39,737,56],{"class":45},[39,739,740],{"class":49}," player_move\n",[39,742,743,746,749,752,754,757,760],{"class":41,"line":195},[39,744,745],{"class":45},"    if",[39,747,748],{"class":62}," @turn_counter ",[39,750,751],{"class":45},"\u003C",[39,753,363],{"class":132},[39,755,756],{"class":45}," &&",[39,758,759],{"class":62}," @turn_counter.",[39,761,762],{"class":49},"even?\n",[39,764,765,768,770,772,774,776,778,781],{"class":41,"line":211},[39,766,767],{"class":132},"      print",[39,769,136],{"class":62},[39,771,390],{"class":139},[39,773,221],{"class":139},[39,775,224],{"class":62},[39,777,227],{"class":139},[39,779,780],{"class":139}," please select a tile:\"",[39,782,143],{"class":62},[39,784,785,789,792,794,796,798,801],{"class":41,"line":254},[39,786,788],{"class":787},"s9osk","      key",[39,790,791],{"class":45}," =",[39,793,167],{"class":132},[39,795,170],{"class":62},[39,797,173],{"class":132},[39,799,800],{"class":62},"().",[39,802,803],{"class":49},"to_i\n",[39,805,806,809,812,815,817,819,822,824],{"class":41,"line":259},[39,807,808],{"class":62},"        @board[@board.",[39,810,811],{"class":49},"keys",[39,813,814],{"class":62},"[key ",[39,816,617],{"class":45},[39,818,295],{"class":132},[39,820,821],{"class":62},"]] ",[39,823,164],{"class":45},[39,825,826],{"class":139}," 'x'\n",[39,828,830,833,836],{"class":41,"line":829},16,[39,831,832],{"class":62},"        @turn_counter ",[39,834,835],{"class":45},"+=",[39,837,838],{"class":132}," 1\n",[39,840,842],{"class":41,"line":841},17,[39,843,844],{"class":45},"      end\n",[39,846,848],{"class":41,"line":847},18,[39,849,850],{"class":45},"    else\n",[39,852,854,856,858,860,862,864,866,868],{"class":41,"line":853},19,[39,855,767],{"class":132},[39,857,136],{"class":62},[39,859,390],{"class":139},[39,861,221],{"class":139},[39,863,235],{"class":62},[39,865,227],{"class":139},[39,867,780],{"class":139},[39,869,143],{"class":62},[39,871,873,875,877,879,881,883,885],{"class":41,"line":872},20,[39,874,788],{"class":787},[39,876,791],{"class":45},[39,878,167],{"class":132},[39,880,170],{"class":62},[39,882,173],{"class":132},[39,884,800],{"class":62},[39,886,803],{"class":49},[39,888,890,893,895,897,899,901,903,905],{"class":41,"line":889},21,[39,891,892],{"class":62},"      @board[@board.",[39,894,811],{"class":49},[39,896,814],{"class":62},[39,898,617],{"class":45},[39,900,295],{"class":132},[39,902,821],{"class":62},[39,904,164],{"class":45},[39,906,907],{"class":139}," 'o'\n",[39,909,911,914,916],{"class":41,"line":910},22,[39,912,913],{"class":62},"      @turn_counter ",[39,915,835],{"class":45},[39,917,838],{"class":132},[39,919,921],{"class":41,"line":920},23,[39,922,923],{"class":45},"     end\n",[39,925,927],{"class":41,"line":926},24,[39,928,929],{"class":62},"     get_board\n",[39,931,933],{"class":41,"line":932},25,[39,934,935],{"class":45},"    end\n",[10,937,938],{},"Lets take a look at what we've done. The player_move method checks the counter and if its even (0 is even too) its player1's go, and if its odd its player2's go. Simple, now it prompts the player to pick a tile, stores the input as a int, checks the value against the hash we created (subtracting 1 from the number because this is programming and everything starts at 0) earlier and updates it. so when we print the board again at the end of this method we can see the updated board with the player's input on it.",[29,940,942],{"className":593,"code":941,"language":595,"meta":34,"style":34},"x | o | x\n- + - + -\no | 5 | 6\n- + - + -\n7 | 8 | 9\n",[36,943,944,959,971,984,996],{"__ignoreMap":34},[39,945,946,949,951,954,956],{"class":41,"line":42},[39,947,948],{"class":49},"x",[39,950,605],{"class":45},[39,952,953],{"class":49}," o",[39,955,605],{"class":45},[39,957,958],{"class":49}," x\n",[39,960,961,963,965,967,969],{"class":41,"line":53},[39,962,617],{"class":49},[39,964,620],{"class":139},[39,966,623],{"class":139},[39,968,620],{"class":139},[39,970,628],{"class":139},[39,972,973,976,978,980,982],{"class":41,"line":66},[39,974,975],{"class":49},"o",[39,977,605],{"class":45},[39,979,328],{"class":49},[39,981,605],{"class":45},[39,983,642],{"class":49},[39,985,986,988,990,992,994],{"class":41,"line":73},[39,987,617],{"class":49},[39,989,620],{"class":139},[39,991,623],{"class":139},[39,993,620],{"class":139},[39,995,628],{"class":139},[39,997,998,1000,1002,1004,1006],{"class":41,"line":79},[39,999,659],{"class":49},[39,1001,605],{"class":45},[39,1003,355],{"class":49},[39,1005,605],{"class":45},[39,1007,668],{"class":49},[10,1009,1010],{},"So far so good, but there's no winning in this game, just a board you get to update. The game looses its charm after you notice it never ends and you can update tiles that have already been chosen. Its a modern take on the game thus far, but certainly the game-breaking \"features\" takes away from the experience somewhat. So next on the list are the win\u002Fdraw conditions and making sure the players can only update a tile once.",[10,1012,1013],{},"First lets bang out the issue of multiple-use tiles:",[29,1015,1017],{"className":31,"code":1016,"language":33,"meta":34,"style":34},"  def tile_taken(tile)\n    tile.kind_of?(String)\n  end\n\n  #updated player_move to check for used tiles\n  def player_move\n    if @turn_counter \u003C 9 && @turn_counter.even?\n      print(\"#{@player1} please select a tile:\")\n      key = gets.chomp().to_i\n      if tile_taken(@board[@board.keys[key - 1]])\n        puts(\"that tile is taken, please select another\")\n      else\n        @board[@board.keys[key - 1]] = 'x'\n        @turn_counter += 1\n      end\n    else\n      print(\"#{@player2} please select a tile:\")\n      key = gets.chomp().to_i\n      if tile_taken(@board[@board.keys[key - 1]])\n        puts(\"that tile is taken, please select another\")\n      else\n        @board[@board.keys[key - 1]] = 'o'\n        @turn_counter += 1\n      end\n    end\n    get_board\n  end\n",[36,1018,1019,1029,1044,1048,1052,1057,1063,1079,1097,1113,1134,1146,1151,1169,1177,1181,1185,1203,1219,1237,1247,1251,1269,1277,1281,1285,1290],{"__ignoreMap":34},[39,1020,1021,1023,1026],{"class":41,"line":42},[39,1022,56],{"class":45},[39,1024,1025],{"class":49}," tile_taken",[39,1027,1028],{"class":62},"(tile)\n",[39,1030,1031,1034,1037,1039,1042],{"class":41,"line":53},[39,1032,1033],{"class":62},"    tile.",[39,1035,1036],{"class":49},"kind_of?",[39,1038,136],{"class":62},[39,1040,1041],{"class":132},"String",[39,1043,143],{"class":62},[39,1045,1046],{"class":41,"line":66},[39,1047,76],{"class":45},[39,1049,1050],{"class":41,"line":73},[39,1051,70],{"emptyLinePlaceholder":69},[39,1053,1054],{"class":41,"line":79},[39,1055,1056],{"class":681},"  #updated player_move to check for used tiles\n",[39,1058,1059,1061],{"class":41,"line":121},[39,1060,56],{"class":45},[39,1062,740],{"class":49},[39,1064,1065,1067,1069,1071,1073,1075,1077],{"class":41,"line":129},[39,1066,745],{"class":45},[39,1068,748],{"class":62},[39,1070,751],{"class":45},[39,1072,363],{"class":132},[39,1074,756],{"class":45},[39,1076,759],{"class":62},[39,1078,762],{"class":49},[39,1080,1081,1083,1085,1087,1089,1091,1093,1095],{"class":41,"line":146},[39,1082,767],{"class":132},[39,1084,136],{"class":62},[39,1086,390],{"class":139},[39,1088,221],{"class":139},[39,1090,224],{"class":62},[39,1092,227],{"class":139},[39,1094,780],{"class":139},[39,1096,143],{"class":62},[39,1098,1099,1101,1103,1105,1107,1109,1111],{"class":41,"line":158},[39,1100,788],{"class":787},[39,1102,791],{"class":45},[39,1104,167],{"class":132},[39,1106,170],{"class":62},[39,1108,173],{"class":132},[39,1110,800],{"class":62},[39,1112,803],{"class":49},[39,1114,1115,1118,1120,1123,1125,1127,1129,1131],{"class":41,"line":178},[39,1116,1117],{"class":45},"      if",[39,1119,1025],{"class":49},[39,1121,1122],{"class":62},"(@board[@board.",[39,1124,811],{"class":49},[39,1126,814],{"class":62},[39,1128,617],{"class":45},[39,1130,295],{"class":132},[39,1132,1133],{"class":62},"]])\n",[39,1135,1136,1139,1141,1144],{"class":41,"line":183},[39,1137,1138],{"class":132},"        puts",[39,1140,136],{"class":62},[39,1142,1143],{"class":139},"\"that tile is taken, please select another\"",[39,1145,143],{"class":62},[39,1147,1148],{"class":41,"line":195},[39,1149,1150],{"class":45},"      else\n",[39,1152,1153,1155,1157,1159,1161,1163,1165,1167],{"class":41,"line":211},[39,1154,808],{"class":62},[39,1156,811],{"class":49},[39,1158,814],{"class":62},[39,1160,617],{"class":45},[39,1162,295],{"class":132},[39,1164,821],{"class":62},[39,1166,164],{"class":45},[39,1168,826],{"class":139},[39,1170,1171,1173,1175],{"class":41,"line":254},[39,1172,832],{"class":62},[39,1174,835],{"class":45},[39,1176,838],{"class":132},[39,1178,1179],{"class":41,"line":259},[39,1180,844],{"class":45},[39,1182,1183],{"class":41,"line":829},[39,1184,850],{"class":45},[39,1186,1187,1189,1191,1193,1195,1197,1199,1201],{"class":41,"line":841},[39,1188,767],{"class":132},[39,1190,136],{"class":62},[39,1192,390],{"class":139},[39,1194,221],{"class":139},[39,1196,235],{"class":62},[39,1198,227],{"class":139},[39,1200,780],{"class":139},[39,1202,143],{"class":62},[39,1204,1205,1207,1209,1211,1213,1215,1217],{"class":41,"line":847},[39,1206,788],{"class":787},[39,1208,791],{"class":45},[39,1210,167],{"class":132},[39,1212,170],{"class":62},[39,1214,173],{"class":132},[39,1216,800],{"class":62},[39,1218,803],{"class":49},[39,1220,1221,1223,1225,1227,1229,1231,1233,1235],{"class":41,"line":853},[39,1222,1117],{"class":45},[39,1224,1025],{"class":49},[39,1226,1122],{"class":62},[39,1228,811],{"class":49},[39,1230,814],{"class":62},[39,1232,617],{"class":45},[39,1234,295],{"class":132},[39,1236,1133],{"class":62},[39,1238,1239,1241,1243,1245],{"class":41,"line":872},[39,1240,1138],{"class":132},[39,1242,136],{"class":62},[39,1244,1143],{"class":139},[39,1246,143],{"class":62},[39,1248,1249],{"class":41,"line":889},[39,1250,1150],{"class":45},[39,1252,1253,1255,1257,1259,1261,1263,1265,1267],{"class":41,"line":910},[39,1254,808],{"class":62},[39,1256,811],{"class":49},[39,1258,814],{"class":62},[39,1260,617],{"class":45},[39,1262,295],{"class":132},[39,1264,821],{"class":62},[39,1266,164],{"class":45},[39,1268,907],{"class":139},[39,1270,1271,1273,1275],{"class":41,"line":920},[39,1272,832],{"class":62},[39,1274,835],{"class":45},[39,1276,838],{"class":132},[39,1278,1279],{"class":41,"line":926},[39,1280,844],{"class":45},[39,1282,1283],{"class":41,"line":932},[39,1284,935],{"class":45},[39,1286,1288],{"class":41,"line":1287},26,[39,1289,715],{"class":62},[39,1291,1293],{"class":41,"line":1292},27,[39,1294,76],{"class":45},[10,1296,1297],{},"Now that that's been ironed out, onto the win\u002Fdraw conditions. Tic Tac Toe as a game only has 8 possible combinations that result in a player winning, with a number that low we can just hard-code them in and do a quick check to see if a player has won after each turn. And because there's only nine tiles, after 9 moves the game will end anyway because the board is full and the game is no longer playable.",[29,1299,1301],{"className":31,"code":1300,"language":33,"meta":34,"style":34},"  def win_condition_met\n    if @board.values_at(:one,:two,:three).uniq.length == 1 ||\n      @board.values_at(:four,:five,:six).uniq.length == 1 ||\n      @board.values_at(:seven,:eight,:nine).uniq.length == 1 ||\n      @board.values_at(:one,:four,:seven).uniq.length == 1 ||\n      @board.values_at(:two,:five,:eight).uniq.length == 1 ||\n      @board.values_at(:three,:six,:nine).uniq.length == 1 ||\n      @board.values_at(:one,:five,:nine).uniq.length == 1 ||\n      @board.values_at(:three,:five,:seven).uniq.length == 1\n      @turn_counter.even? ? puts(\"Congratulations #{@player2} you are the winner!\") : puts(\"Congratulations #{@player1} you are the winner!\")\n      exit()\n    end\n  end\n\n  def move_limit_reached\n    @turn_counter >= 9 ? puts(\"its a draw!\") && exit() : player_move\n  end\n\n  #added the win\u002Fdraw methods to check after each turn. \n  def player_move\n    if @turn_counter \u003C 9 && @turn_counter.even?\n      print(\"#{@player1} please select a tile:\")\n      key = gets.chomp().to_i\n      if tile_taken(@board[@board.keys[key - 1]])\n        puts(\"that tile is taken, please select another\")\n      else\n        @board[@board.keys[key - 1]] = 'x'\n        @turn_counter += 1\n      end\n    else\n      print(\"#{@player2} please select a tile:\")\n      key = gets.chomp().to_i\n      if tile_taken(@board[@board.keys[key - 1]])\n        puts(\"that tile is taken, please select another\")\n      else\n        @board[@board.keys[key - 1]] = 'o'\n        @turn_counter += 1\n      end\n    end\n    get_board\n    win_condition_met\n    move_limit_reached\n  end\nend\n",[36,1302,1303,1310,1352,1385,1417,1449,1481,1513,1545,1575,1623,1630,1634,1638,1642,1649,1679,1683,1687,1692,1698,1714,1732,1748,1766,1776,1780,1798,1807,1812,1817,1836,1853,1872,1883,1888,1907,1916,1921,1926,1931,1937,1943,1948],{"__ignoreMap":34},[39,1304,1305,1307],{"class":41,"line":42},[39,1306,56],{"class":45},[39,1308,1309],{"class":49}," win_condition_met\n",[39,1311,1312,1314,1317,1320,1322,1324,1327,1329,1331,1333,1336,1339,1341,1344,1347,1349],{"class":41,"line":53},[39,1313,745],{"class":45},[39,1315,1316],{"class":62}," @board.",[39,1318,1319],{"class":49},"values_at",[39,1321,136],{"class":62},[39,1323,416],{"class":132},[39,1325,1326],{"class":62},",",[39,1328,431],{"class":132},[39,1330,1326],{"class":62},[39,1332,444],{"class":132},[39,1334,1335],{"class":62},").",[39,1337,1338],{"class":49},"uniq",[39,1340,170],{"class":62},[39,1342,1343],{"class":49},"length",[39,1345,1346],{"class":45}," ==",[39,1348,295],{"class":132},[39,1350,1351],{"class":45}," ||\n",[39,1353,1354,1357,1359,1361,1363,1365,1367,1369,1371,1373,1375,1377,1379,1381,1383],{"class":41,"line":66},[39,1355,1356],{"class":62},"      @board.",[39,1358,1319],{"class":49},[39,1360,136],{"class":62},[39,1362,478],{"class":132},[39,1364,1326],{"class":62},[39,1366,491],{"class":132},[39,1368,1326],{"class":62},[39,1370,504],{"class":132},[39,1372,1335],{"class":62},[39,1374,1338],{"class":49},[39,1376,170],{"class":62},[39,1378,1343],{"class":49},[39,1380,1346],{"class":45},[39,1382,295],{"class":132},[39,1384,1351],{"class":45},[39,1386,1387,1389,1391,1393,1395,1397,1399,1401,1403,1405,1407,1409,1411,1413,1415],{"class":41,"line":73},[39,1388,1356],{"class":62},[39,1390,1319],{"class":49},[39,1392,136],{"class":62},[39,1394,537],{"class":132},[39,1396,1326],{"class":62},[39,1398,550],{"class":132},[39,1400,1326],{"class":62},[39,1402,563],{"class":132},[39,1404,1335],{"class":62},[39,1406,1338],{"class":49},[39,1408,170],{"class":62},[39,1410,1343],{"class":49},[39,1412,1346],{"class":45},[39,1414,295],{"class":132},[39,1416,1351],{"class":45},[39,1418,1419,1421,1423,1425,1427,1429,1431,1433,1435,1437,1439,1441,1443,1445,1447],{"class":41,"line":79},[39,1420,1356],{"class":62},[39,1422,1319],{"class":49},[39,1424,136],{"class":62},[39,1426,416],{"class":132},[39,1428,1326],{"class":62},[39,1430,478],{"class":132},[39,1432,1326],{"class":62},[39,1434,537],{"class":132},[39,1436,1335],{"class":62},[39,1438,1338],{"class":49},[39,1440,170],{"class":62},[39,1442,1343],{"class":49},[39,1444,1346],{"class":45},[39,1446,295],{"class":132},[39,1448,1351],{"class":45},[39,1450,1451,1453,1455,1457,1459,1461,1463,1465,1467,1469,1471,1473,1475,1477,1479],{"class":41,"line":121},[39,1452,1356],{"class":62},[39,1454,1319],{"class":49},[39,1456,136],{"class":62},[39,1458,431],{"class":132},[39,1460,1326],{"class":62},[39,1462,491],{"class":132},[39,1464,1326],{"class":62},[39,1466,550],{"class":132},[39,1468,1335],{"class":62},[39,1470,1338],{"class":49},[39,1472,170],{"class":62},[39,1474,1343],{"class":49},[39,1476,1346],{"class":45},[39,1478,295],{"class":132},[39,1480,1351],{"class":45},[39,1482,1483,1485,1487,1489,1491,1493,1495,1497,1499,1501,1503,1505,1507,1509,1511],{"class":41,"line":129},[39,1484,1356],{"class":62},[39,1486,1319],{"class":49},[39,1488,136],{"class":62},[39,1490,444],{"class":132},[39,1492,1326],{"class":62},[39,1494,504],{"class":132},[39,1496,1326],{"class":62},[39,1498,563],{"class":132},[39,1500,1335],{"class":62},[39,1502,1338],{"class":49},[39,1504,170],{"class":62},[39,1506,1343],{"class":49},[39,1508,1346],{"class":45},[39,1510,295],{"class":132},[39,1512,1351],{"class":45},[39,1514,1515,1517,1519,1521,1523,1525,1527,1529,1531,1533,1535,1537,1539,1541,1543],{"class":41,"line":146},[39,1516,1356],{"class":62},[39,1518,1319],{"class":49},[39,1520,136],{"class":62},[39,1522,416],{"class":132},[39,1524,1326],{"class":62},[39,1526,491],{"class":132},[39,1528,1326],{"class":62},[39,1530,563],{"class":132},[39,1532,1335],{"class":62},[39,1534,1338],{"class":49},[39,1536,170],{"class":62},[39,1538,1343],{"class":49},[39,1540,1346],{"class":45},[39,1542,295],{"class":132},[39,1544,1351],{"class":45},[39,1546,1547,1549,1551,1553,1555,1557,1559,1561,1563,1565,1567,1569,1571,1573],{"class":41,"line":158},[39,1548,1356],{"class":62},[39,1550,1319],{"class":49},[39,1552,136],{"class":62},[39,1554,444],{"class":132},[39,1556,1326],{"class":62},[39,1558,491],{"class":132},[39,1560,1326],{"class":62},[39,1562,537],{"class":132},[39,1564,1335],{"class":62},[39,1566,1338],{"class":49},[39,1568,170],{"class":62},[39,1570,1343],{"class":49},[39,1572,1346],{"class":45},[39,1574,838],{"class":132},[39,1576,1577,1580,1583,1586,1589,1591,1594,1596,1598,1600,1603,1606,1609,1611,1613,1615,1617,1619,1621],{"class":41,"line":178},[39,1578,1579],{"class":62},"      @turn_counter.",[39,1581,1582],{"class":49},"even?",[39,1584,1585],{"class":45}," ?",[39,1587,1588],{"class":132}," puts",[39,1590,136],{"class":62},[39,1592,1593],{"class":139},"\"Congratulations ",[39,1595,221],{"class":139},[39,1597,235],{"class":62},[39,1599,227],{"class":139},[39,1601,1602],{"class":139}," you are the winner!\"",[39,1604,1605],{"class":62},") : ",[39,1607,1608],{"class":132},"puts",[39,1610,136],{"class":62},[39,1612,1593],{"class":139},[39,1614,221],{"class":139},[39,1616,224],{"class":62},[39,1618,227],{"class":139},[39,1620,1602],{"class":139},[39,1622,143],{"class":62},[39,1624,1625,1628],{"class":41,"line":183},[39,1626,1627],{"class":132},"      exit",[39,1629,63],{"class":62},[39,1631,1632],{"class":41,"line":195},[39,1633,935],{"class":45},[39,1635,1636],{"class":41,"line":211},[39,1637,76],{"class":45},[39,1639,1640],{"class":41,"line":254},[39,1641,70],{"emptyLinePlaceholder":69},[39,1643,1644,1646],{"class":41,"line":259},[39,1645,56],{"class":45},[39,1647,1648],{"class":49}," move_limit_reached\n",[39,1650,1651,1653,1656,1658,1660,1662,1664,1667,1670,1673,1676],{"class":41,"line":829},[39,1652,695],{"class":62},[39,1654,1655],{"class":45},">=",[39,1657,363],{"class":132},[39,1659,1585],{"class":45},[39,1661,1588],{"class":132},[39,1663,136],{"class":62},[39,1665,1666],{"class":139},"\"its a draw!\"",[39,1668,1669],{"class":62},") ",[39,1671,1672],{"class":45},"&&",[39,1674,1675],{"class":132}," exit",[39,1677,1678],{"class":62},"() : player_move\n",[39,1680,1681],{"class":41,"line":841},[39,1682,76],{"class":45},[39,1684,1685],{"class":41,"line":847},[39,1686,70],{"emptyLinePlaceholder":69},[39,1688,1689],{"class":41,"line":853},[39,1690,1691],{"class":681},"  #added the win\u002Fdraw methods to check after each turn. \n",[39,1693,1694,1696],{"class":41,"line":872},[39,1695,56],{"class":45},[39,1697,740],{"class":49},[39,1699,1700,1702,1704,1706,1708,1710,1712],{"class":41,"line":889},[39,1701,745],{"class":45},[39,1703,748],{"class":62},[39,1705,751],{"class":45},[39,1707,363],{"class":132},[39,1709,756],{"class":45},[39,1711,759],{"class":62},[39,1713,762],{"class":49},[39,1715,1716,1718,1720,1722,1724,1726,1728,1730],{"class":41,"line":910},[39,1717,767],{"class":132},[39,1719,136],{"class":62},[39,1721,390],{"class":139},[39,1723,221],{"class":139},[39,1725,224],{"class":62},[39,1727,227],{"class":139},[39,1729,780],{"class":139},[39,1731,143],{"class":62},[39,1733,1734,1736,1738,1740,1742,1744,1746],{"class":41,"line":920},[39,1735,788],{"class":787},[39,1737,791],{"class":45},[39,1739,167],{"class":132},[39,1741,170],{"class":62},[39,1743,173],{"class":132},[39,1745,800],{"class":62},[39,1747,803],{"class":49},[39,1749,1750,1752,1754,1756,1758,1760,1762,1764],{"class":41,"line":926},[39,1751,1117],{"class":45},[39,1753,1025],{"class":49},[39,1755,1122],{"class":62},[39,1757,811],{"class":49},[39,1759,814],{"class":62},[39,1761,617],{"class":45},[39,1763,295],{"class":132},[39,1765,1133],{"class":62},[39,1767,1768,1770,1772,1774],{"class":41,"line":932},[39,1769,1138],{"class":132},[39,1771,136],{"class":62},[39,1773,1143],{"class":139},[39,1775,143],{"class":62},[39,1777,1778],{"class":41,"line":1287},[39,1779,1150],{"class":45},[39,1781,1782,1784,1786,1788,1790,1792,1794,1796],{"class":41,"line":1292},[39,1783,808],{"class":62},[39,1785,811],{"class":49},[39,1787,814],{"class":62},[39,1789,617],{"class":45},[39,1791,295],{"class":132},[39,1793,821],{"class":62},[39,1795,164],{"class":45},[39,1797,826],{"class":139},[39,1799,1801,1803,1805],{"class":41,"line":1800},28,[39,1802,832],{"class":62},[39,1804,835],{"class":45},[39,1806,838],{"class":132},[39,1808,1810],{"class":41,"line":1809},29,[39,1811,844],{"class":45},[39,1813,1815],{"class":41,"line":1814},30,[39,1816,850],{"class":45},[39,1818,1820,1822,1824,1826,1828,1830,1832,1834],{"class":41,"line":1819},31,[39,1821,767],{"class":132},[39,1823,136],{"class":62},[39,1825,390],{"class":139},[39,1827,221],{"class":139},[39,1829,235],{"class":62},[39,1831,227],{"class":139},[39,1833,780],{"class":139},[39,1835,143],{"class":62},[39,1837,1839,1841,1843,1845,1847,1849,1851],{"class":41,"line":1838},32,[39,1840,788],{"class":787},[39,1842,791],{"class":45},[39,1844,167],{"class":132},[39,1846,170],{"class":62},[39,1848,173],{"class":132},[39,1850,800],{"class":62},[39,1852,803],{"class":49},[39,1854,1856,1858,1860,1862,1864,1866,1868,1870],{"class":41,"line":1855},33,[39,1857,1117],{"class":45},[39,1859,1025],{"class":49},[39,1861,1122],{"class":62},[39,1863,811],{"class":49},[39,1865,814],{"class":62},[39,1867,617],{"class":45},[39,1869,295],{"class":132},[39,1871,1133],{"class":62},[39,1873,1875,1877,1879,1881],{"class":41,"line":1874},34,[39,1876,1138],{"class":132},[39,1878,136],{"class":62},[39,1880,1143],{"class":139},[39,1882,143],{"class":62},[39,1884,1886],{"class":41,"line":1885},35,[39,1887,1150],{"class":45},[39,1889,1891,1893,1895,1897,1899,1901,1903,1905],{"class":41,"line":1890},36,[39,1892,808],{"class":62},[39,1894,811],{"class":49},[39,1896,814],{"class":62},[39,1898,617],{"class":45},[39,1900,295],{"class":132},[39,1902,821],{"class":62},[39,1904,164],{"class":45},[39,1906,907],{"class":139},[39,1908,1910,1912,1914],{"class":41,"line":1909},37,[39,1911,832],{"class":62},[39,1913,835],{"class":45},[39,1915,838],{"class":132},[39,1917,1919],{"class":41,"line":1918},38,[39,1920,844],{"class":45},[39,1922,1924],{"class":41,"line":1923},39,[39,1925,935],{"class":45},[39,1927,1929],{"class":41,"line":1928},40,[39,1930,715],{"class":62},[39,1932,1934],{"class":41,"line":1933},41,[39,1935,1936],{"class":62},"    win_condition_met\n",[39,1938,1940],{"class":41,"line":1939},42,[39,1941,1942],{"class":62},"    move_limit_reached\n",[39,1944,1946],{"class":41,"line":1945},43,[39,1947,76],{"class":45},[39,1949,1951],{"class":41,"line":1950},44,[39,1952,82],{"class":45},[10,1954,1955,1956,1963],{},"So, rather than checking twice, once for player1 and once for player2 to see who's won we can shorten it down a bit and use the ",[1957,1958,1962],"a",{"href":1959,"rel":1960},"https:\u002F\u002Fapidock.com\u002Fruby\u002FArray\u002Funiq",[1961],"nofollow",".uniq"," method to grab an array of the values and see if there's only one value in it. So if it's either all x or all o it will return true. Then do a quick check with the turn counter to see who's won. Almost every problem can be solved by putting stuff into arrays, remember: Work smart, not hard.",[10,1965,1966],{},"the next thing we did was to check to see if the game ended in a draw, and that's easily done by checking the counter. So not much to explain there. We also put in an exit() at the end of each method because the game is over and you don't want the game to continue after it's over.",[10,1968,1969],{},"And that's about it, this took just over an hour to so a perfect interview-amount-of-time for a coding challenge. Here's the end result:",[29,1971,1973],{"className":593,"code":1972,"language":595,"meta":34,"style":34},"peter please select a tile:7\n\nx | o | x\n- + - + -\no | x | o\n- + - + -\nx | 8 | 9\n\nCongratulations peter you are the winner!\n",[36,1974,1975,1992,1996,2008,2020,2034,2046,2058,2062],{"__ignoreMap":34},[39,1976,1977,1980,1983,1986,1989],{"class":41,"line":42},[39,1978,1979],{"class":49},"peter",[39,1981,1982],{"class":139}," please",[39,1984,1985],{"class":139}," select",[39,1987,1988],{"class":139}," a",[39,1990,1991],{"class":139}," tile:7\n",[39,1993,1994],{"class":41,"line":53},[39,1995,70],{"emptyLinePlaceholder":69},[39,1997,1998,2000,2002,2004,2006],{"class":41,"line":66},[39,1999,948],{"class":49},[39,2001,605],{"class":45},[39,2003,953],{"class":49},[39,2005,605],{"class":45},[39,2007,958],{"class":49},[39,2009,2010,2012,2014,2016,2018],{"class":41,"line":73},[39,2011,617],{"class":49},[39,2013,620],{"class":139},[39,2015,623],{"class":139},[39,2017,620],{"class":139},[39,2019,628],{"class":139},[39,2021,2022,2024,2026,2029,2031],{"class":41,"line":79},[39,2023,975],{"class":49},[39,2025,605],{"class":45},[39,2027,2028],{"class":49}," x",[39,2030,605],{"class":45},[39,2032,2033],{"class":49}," o\n",[39,2035,2036,2038,2040,2042,2044],{"class":41,"line":121},[39,2037,617],{"class":49},[39,2039,620],{"class":139},[39,2041,623],{"class":139},[39,2043,620],{"class":139},[39,2045,628],{"class":139},[39,2047,2048,2050,2052,2054,2056],{"class":41,"line":129},[39,2049,948],{"class":49},[39,2051,605],{"class":45},[39,2053,355],{"class":49},[39,2055,605],{"class":45},[39,2057,668],{"class":49},[39,2059,2060],{"class":41,"line":146},[39,2061,70],{"emptyLinePlaceholder":69},[39,2063,2064,2067,2070,2073,2076,2079],{"class":41,"line":158},[39,2065,2066],{"class":49},"Congratulations",[39,2068,2069],{"class":139}," peter",[39,2071,2072],{"class":139}," you",[39,2074,2075],{"class":139}," are",[39,2077,2078],{"class":139}," the",[39,2080,2081],{"class":139}," winner!\n",[10,2083,2084],{},"If you were following along great, you've definitely run it by now and have had fun playing Tic Tac Toe. If not, Heres the TLDR, just copy and paste this code into a file and run it.",[29,2086,2088],{"className":31,"code":2087,"language":33,"meta":34,"style":34},"class Game\n  def initialize()\n    @turn_counter = 0\n    setup_players\n    setup_board\n    get_board\n    player_move\n  end\n\n  def setup_board\n    @board = {one: 1, two: 2, three: 3, four: 4, five: 5, six: 6, seven: 7, eight: 8, nine: 9}\n  end\n\n  def setup_players\n    puts(\"Hello and welcome to Tic Tac Toe\")\n    puts(\"Please enter the name of player 1:\")\n    @player1 = gets.chomp()\n\n    puts(\"Please enter the name of player 2:\")\n    @player2 = gets.chomp()\n\n    puts(\"welcome #{@player1} and #{@player2}. #{@player1} goes first, please select a tile\")\n  end\n\n  def get_board\n    puts(\"\\n\")\n    puts(\"#{@board[:one]} | #{@board[:two]} | #{@board[:three]}\")\n    puts(\"- + - + -\")\n    puts(\"#{@board[:four]} | #{@board[:five]} | #{@board[:six]}\")\n    puts(\"- + - + -\")\n    puts(\"#{@board[:seven]} | #{@board[:eight]} | #{@board[:nine]}\")\n    puts(\"\\n\")\n  end\n\n  def win_condition_met\n    if @board.values_at(:one,:two,:three).uniq.length == 1 ||\n      @board.values_at(:four,:five,:six).uniq.length == 1 ||\n      @board.values_at(:seven,:eight,:nine).uniq.length == 1 ||\n      @board.values_at(:one,:four,:seven).uniq.length == 1 ||\n      @board.values_at(:two,:five,:eight).uniq.length == 1 ||\n      @board.values_at(:three,:six,:nine).uniq.length == 1 ||\n      @board.values_at(:one,:five,:nine).uniq.length == 1 ||\n      @board.values_at(:three,:five,:seven).uniq.length == 1\n      @turn_counter.even? ? puts(\"Congratulations #{@player2} you are the winner!\") : puts(\"Congratulations #{@player1} you are the winner!\")\n      exit()\n    end\n  end\n\n  def move_limit_reached\n    @turn_counter >= 9 ? puts(\"Its a draw!\") && exit() : player_move\n  end\n\n  def tile_taken(tile)\n    tile.kind_of?(String)\n  end\n\n  def player_move\n    if @turn_counter \u003C 9 && @turn_counter.even?\n      print(\"#{@player1} please select a tile:\")\n      key = gets.chomp().to_i\n      if tile_taken(@board[@board.keys[key - 1]])\n        puts(\"that tile is taken, please select another\")\n      else\n        @board[@board.keys[key - 1]] = 'x'\n        @turn_counter += 1\n      end\n    else\n      print(\"#{@player2} please select a tile:\")\n      key = gets.chomp().to_i\n      if tile_taken(@board[@board.keys[key - 1]])\n        puts(\"that tile is taken, please select another\")\n      else\n        @board[@board.keys[key - 1]] = 'o'\n        @turn_counter += 1\n      end\n    end\n    get_board\n    win_condition_met\n    move_limit_reached\n  end\nend\n\nGame.new()\n\n",[36,2089,2090,2096,2104,2112,2116,2120,2124,2128,2132,2136,2142,2205,2209,2213,2219,2229,2239,2253,2257,2267,2281,2285,2320,2324,2328,2334,2348,2394,2404,2450,2460,2506,2520,2524,2528,2534,2568,2600,2632,2664,2696,2728,2760,2790,2830,2837,2842,2847,2852,2859,2885,2890,2895,2904,2917,2922,2927,2934,2951,2970,2987,3006,3017,3022,3041,3050,3055,3060,3079,3096,3115,3126,3131,3150,3159,3164,3169,3174,3179,3184,3189,3194,3199],{"__ignoreMap":34},[39,2091,2092,2094],{"class":41,"line":42},[39,2093,46],{"class":45},[39,2095,50],{"class":49},[39,2097,2098,2100,2102],{"class":41,"line":53},[39,2099,56],{"class":45},[39,2101,59],{"class":49},[39,2103,63],{"class":62},[39,2105,2106,2108,2110],{"class":41,"line":66},[39,2107,695],{"class":62},[39,2109,164],{"class":45},[39,2111,700],{"class":132},[39,2113,2114],{"class":41,"line":73},[39,2115,705],{"class":62},[39,2117,2118],{"class":41,"line":79},[39,2119,710],{"class":62},[39,2121,2122],{"class":41,"line":121},[39,2123,715],{"class":62},[39,2125,2126],{"class":41,"line":129},[39,2127,720],{"class":62},[39,2129,2130],{"class":41,"line":146},[39,2131,76],{"class":45},[39,2133,2134],{"class":41,"line":158},[39,2135,70],{"emptyLinePlaceholder":69},[39,2137,2138,2140],{"class":41,"line":178},[39,2139,56],{"class":45},[39,2141,279],{"class":49},[39,2143,2144,2146,2148,2150,2152,2154,2156,2158,2160,2162,2164,2166,2168,2170,2172,2174,2176,2178,2180,2183,2185,2187,2189,2191,2193,2195,2197,2199,2201,2203],{"class":41,"line":183},[39,2145,284],{"class":62},[39,2147,164],{"class":45},[39,2149,289],{"class":62},[39,2151,292],{"class":132},[39,2153,295],{"class":132},[39,2155,298],{"class":62},[39,2157,301],{"class":132},[39,2159,304],{"class":132},[39,2161,298],{"class":62},[39,2163,309],{"class":132},[39,2165,312],{"class":132},[39,2167,298],{"class":62},[39,2169,317],{"class":132},[39,2171,320],{"class":132},[39,2173,298],{"class":62},[39,2175,325],{"class":132},[39,2177,328],{"class":132},[39,2179,298],{"class":62},[39,2181,2182],{"class":132},"six:",[39,2184,339],{"class":132},[39,2186,298],{"class":62},[39,2188,344],{"class":132},[39,2190,347],{"class":132},[39,2192,298],{"class":62},[39,2194,352],{"class":132},[39,2196,355],{"class":132},[39,2198,298],{"class":62},[39,2200,360],{"class":132},[39,2202,363],{"class":132},[39,2204,366],{"class":62},[39,2206,2207],{"class":41,"line":195},[39,2208,76],{"class":45},[39,2210,2211],{"class":41,"line":211},[39,2212,70],{"emptyLinePlaceholder":69},[39,2214,2215,2217],{"class":41,"line":254},[39,2216,56],{"class":45},[39,2218,126],{"class":49},[39,2220,2221,2223,2225,2227],{"class":41,"line":259},[39,2222,133],{"class":132},[39,2224,136],{"class":62},[39,2226,140],{"class":139},[39,2228,143],{"class":62},[39,2230,2231,2233,2235,2237],{"class":41,"line":829},[39,2232,133],{"class":132},[39,2234,136],{"class":62},[39,2236,153],{"class":139},[39,2238,143],{"class":62},[39,2240,2241,2243,2245,2247,2249,2251],{"class":41,"line":841},[39,2242,161],{"class":62},[39,2244,164],{"class":45},[39,2246,167],{"class":132},[39,2248,170],{"class":62},[39,2250,173],{"class":132},[39,2252,63],{"class":62},[39,2254,2255],{"class":41,"line":847},[39,2256,70],{"emptyLinePlaceholder":69},[39,2258,2259,2261,2263,2265],{"class":41,"line":853},[39,2260,133],{"class":132},[39,2262,136],{"class":62},[39,2264,190],{"class":139},[39,2266,143],{"class":62},[39,2268,2269,2271,2273,2275,2277,2279],{"class":41,"line":872},[39,2270,198],{"class":62},[39,2272,164],{"class":45},[39,2274,167],{"class":132},[39,2276,170],{"class":62},[39,2278,173],{"class":132},[39,2280,63],{"class":62},[39,2282,2283],{"class":41,"line":889},[39,2284,70],{"emptyLinePlaceholder":69},[39,2286,2287,2289,2291,2293,2295,2297,2299,2301,2303,2305,2307,2309,2311,2313,2315,2318],{"class":41,"line":910},[39,2288,133],{"class":132},[39,2290,136],{"class":62},[39,2292,218],{"class":139},[39,2294,221],{"class":139},[39,2296,224],{"class":62},[39,2298,227],{"class":139},[39,2300,230],{"class":139},[39,2302,221],{"class":139},[39,2304,235],{"class":62},[39,2306,227],{"class":139},[39,2308,240],{"class":139},[39,2310,221],{"class":139},[39,2312,224],{"class":62},[39,2314,227],{"class":139},[39,2316,2317],{"class":139}," goes first, please select a tile\"",[39,2319,143],{"class":62},[39,2321,2322],{"class":41,"line":920},[39,2323,76],{"class":45},[39,2325,2326],{"class":41,"line":926},[39,2327,70],{"emptyLinePlaceholder":69},[39,2329,2330,2332],{"class":41,"line":932},[39,2331,56],{"class":45},[39,2333,381],{"class":49},[39,2335,2336,2338,2340,2342,2344,2346],{"class":41,"line":1287},[39,2337,133],{"class":132},[39,2339,136],{"class":62},[39,2341,390],{"class":139},[39,2343,393],{"class":132},[39,2345,390],{"class":139},[39,2347,143],{"class":62},[39,2349,2350,2352,2354,2356,2358,2360,2362,2364,2366,2368,2370,2372,2374,2376,2378,2380,2382,2384,2386,2388,2390,2392],{"class":41,"line":1292},[39,2351,133],{"class":132},[39,2353,136],{"class":62},[39,2355,390],{"class":139},[39,2357,221],{"class":139},[39,2359,410],{"class":62},[39,2361,413],{"class":139},[39,2363,416],{"class":132},[39,2365,419],{"class":139},[39,2367,422],{"class":139},[39,2369,221],{"class":139},[39,2371,410],{"class":62},[39,2373,413],{"class":139},[39,2375,431],{"class":132},[39,2377,419],{"class":139},[39,2379,422],{"class":139},[39,2381,221],{"class":139},[39,2383,410],{"class":62},[39,2385,413],{"class":139},[39,2387,444],{"class":132},[39,2389,419],{"class":139},[39,2391,390],{"class":139},[39,2393,143],{"class":62},[39,2395,2396,2398,2400,2402],{"class":41,"line":1800},[39,2397,133],{"class":132},[39,2399,136],{"class":62},[39,2401,459],{"class":139},[39,2403,143],{"class":62},[39,2405,2406,2408,2410,2412,2414,2416,2418,2420,2422,2424,2426,2428,2430,2432,2434,2436,2438,2440,2442,2444,2446,2448],{"class":41,"line":1809},[39,2407,133],{"class":132},[39,2409,136],{"class":62},[39,2411,390],{"class":139},[39,2413,221],{"class":139},[39,2415,410],{"class":62},[39,2417,413],{"class":139},[39,2419,478],{"class":132},[39,2421,419],{"class":139},[39,2423,422],{"class":139},[39,2425,221],{"class":139},[39,2427,410],{"class":62},[39,2429,413],{"class":139},[39,2431,491],{"class":132},[39,2433,419],{"class":139},[39,2435,422],{"class":139},[39,2437,221],{"class":139},[39,2439,410],{"class":62},[39,2441,413],{"class":139},[39,2443,504],{"class":132},[39,2445,419],{"class":139},[39,2447,390],{"class":139},[39,2449,143],{"class":62},[39,2451,2452,2454,2456,2458],{"class":41,"line":1814},[39,2453,133],{"class":132},[39,2455,136],{"class":62},[39,2457,459],{"class":139},[39,2459,143],{"class":62},[39,2461,2462,2464,2466,2468,2470,2472,2474,2476,2478,2480,2482,2484,2486,2488,2490,2492,2494,2496,2498,2500,2502,2504],{"class":41,"line":1819},[39,2463,133],{"class":132},[39,2465,136],{"class":62},[39,2467,390],{"class":139},[39,2469,221],{"class":139},[39,2471,410],{"class":62},[39,2473,413],{"class":139},[39,2475,537],{"class":132},[39,2477,419],{"class":139},[39,2479,422],{"class":139},[39,2481,221],{"class":139},[39,2483,410],{"class":62},[39,2485,413],{"class":139},[39,2487,550],{"class":132},[39,2489,419],{"class":139},[39,2491,422],{"class":139},[39,2493,221],{"class":139},[39,2495,410],{"class":62},[39,2497,413],{"class":139},[39,2499,563],{"class":132},[39,2501,419],{"class":139},[39,2503,390],{"class":139},[39,2505,143],{"class":62},[39,2507,2508,2510,2512,2514,2516,2518],{"class":41,"line":1838},[39,2509,133],{"class":132},[39,2511,136],{"class":62},[39,2513,390],{"class":139},[39,2515,393],{"class":132},[39,2517,390],{"class":139},[39,2519,143],{"class":62},[39,2521,2522],{"class":41,"line":1855},[39,2523,76],{"class":45},[39,2525,2526],{"class":41,"line":1874},[39,2527,70],{"emptyLinePlaceholder":69},[39,2529,2530,2532],{"class":41,"line":1885},[39,2531,56],{"class":45},[39,2533,1309],{"class":49},[39,2535,2536,2538,2540,2542,2544,2546,2548,2550,2552,2554,2556,2558,2560,2562,2564,2566],{"class":41,"line":1890},[39,2537,745],{"class":45},[39,2539,1316],{"class":62},[39,2541,1319],{"class":49},[39,2543,136],{"class":62},[39,2545,416],{"class":132},[39,2547,1326],{"class":62},[39,2549,431],{"class":132},[39,2551,1326],{"class":62},[39,2553,444],{"class":132},[39,2555,1335],{"class":62},[39,2557,1338],{"class":49},[39,2559,170],{"class":62},[39,2561,1343],{"class":49},[39,2563,1346],{"class":45},[39,2565,295],{"class":132},[39,2567,1351],{"class":45},[39,2569,2570,2572,2574,2576,2578,2580,2582,2584,2586,2588,2590,2592,2594,2596,2598],{"class":41,"line":1909},[39,2571,1356],{"class":62},[39,2573,1319],{"class":49},[39,2575,136],{"class":62},[39,2577,478],{"class":132},[39,2579,1326],{"class":62},[39,2581,491],{"class":132},[39,2583,1326],{"class":62},[39,2585,504],{"class":132},[39,2587,1335],{"class":62},[39,2589,1338],{"class":49},[39,2591,170],{"class":62},[39,2593,1343],{"class":49},[39,2595,1346],{"class":45},[39,2597,295],{"class":132},[39,2599,1351],{"class":45},[39,2601,2602,2604,2606,2608,2610,2612,2614,2616,2618,2620,2622,2624,2626,2628,2630],{"class":41,"line":1918},[39,2603,1356],{"class":62},[39,2605,1319],{"class":49},[39,2607,136],{"class":62},[39,2609,537],{"class":132},[39,2611,1326],{"class":62},[39,2613,550],{"class":132},[39,2615,1326],{"class":62},[39,2617,563],{"class":132},[39,2619,1335],{"class":62},[39,2621,1338],{"class":49},[39,2623,170],{"class":62},[39,2625,1343],{"class":49},[39,2627,1346],{"class":45},[39,2629,295],{"class":132},[39,2631,1351],{"class":45},[39,2633,2634,2636,2638,2640,2642,2644,2646,2648,2650,2652,2654,2656,2658,2660,2662],{"class":41,"line":1923},[39,2635,1356],{"class":62},[39,2637,1319],{"class":49},[39,2639,136],{"class":62},[39,2641,416],{"class":132},[39,2643,1326],{"class":62},[39,2645,478],{"class":132},[39,2647,1326],{"class":62},[39,2649,537],{"class":132},[39,2651,1335],{"class":62},[39,2653,1338],{"class":49},[39,2655,170],{"class":62},[39,2657,1343],{"class":49},[39,2659,1346],{"class":45},[39,2661,295],{"class":132},[39,2663,1351],{"class":45},[39,2665,2666,2668,2670,2672,2674,2676,2678,2680,2682,2684,2686,2688,2690,2692,2694],{"class":41,"line":1928},[39,2667,1356],{"class":62},[39,2669,1319],{"class":49},[39,2671,136],{"class":62},[39,2673,431],{"class":132},[39,2675,1326],{"class":62},[39,2677,491],{"class":132},[39,2679,1326],{"class":62},[39,2681,550],{"class":132},[39,2683,1335],{"class":62},[39,2685,1338],{"class":49},[39,2687,170],{"class":62},[39,2689,1343],{"class":49},[39,2691,1346],{"class":45},[39,2693,295],{"class":132},[39,2695,1351],{"class":45},[39,2697,2698,2700,2702,2704,2706,2708,2710,2712,2714,2716,2718,2720,2722,2724,2726],{"class":41,"line":1933},[39,2699,1356],{"class":62},[39,2701,1319],{"class":49},[39,2703,136],{"class":62},[39,2705,444],{"class":132},[39,2707,1326],{"class":62},[39,2709,504],{"class":132},[39,2711,1326],{"class":62},[39,2713,563],{"class":132},[39,2715,1335],{"class":62},[39,2717,1338],{"class":49},[39,2719,170],{"class":62},[39,2721,1343],{"class":49},[39,2723,1346],{"class":45},[39,2725,295],{"class":132},[39,2727,1351],{"class":45},[39,2729,2730,2732,2734,2736,2738,2740,2742,2744,2746,2748,2750,2752,2754,2756,2758],{"class":41,"line":1939},[39,2731,1356],{"class":62},[39,2733,1319],{"class":49},[39,2735,136],{"class":62},[39,2737,416],{"class":132},[39,2739,1326],{"class":62},[39,2741,491],{"class":132},[39,2743,1326],{"class":62},[39,2745,563],{"class":132},[39,2747,1335],{"class":62},[39,2749,1338],{"class":49},[39,2751,170],{"class":62},[39,2753,1343],{"class":49},[39,2755,1346],{"class":45},[39,2757,295],{"class":132},[39,2759,1351],{"class":45},[39,2761,2762,2764,2766,2768,2770,2772,2774,2776,2778,2780,2782,2784,2786,2788],{"class":41,"line":1945},[39,2763,1356],{"class":62},[39,2765,1319],{"class":49},[39,2767,136],{"class":62},[39,2769,444],{"class":132},[39,2771,1326],{"class":62},[39,2773,491],{"class":132},[39,2775,1326],{"class":62},[39,2777,537],{"class":132},[39,2779,1335],{"class":62},[39,2781,1338],{"class":49},[39,2783,170],{"class":62},[39,2785,1343],{"class":49},[39,2787,1346],{"class":45},[39,2789,838],{"class":132},[39,2791,2792,2794,2796,2798,2800,2802,2804,2806,2808,2810,2812,2814,2816,2818,2820,2822,2824,2826,2828],{"class":41,"line":1950},[39,2793,1579],{"class":62},[39,2795,1582],{"class":49},[39,2797,1585],{"class":45},[39,2799,1588],{"class":132},[39,2801,136],{"class":62},[39,2803,1593],{"class":139},[39,2805,221],{"class":139},[39,2807,235],{"class":62},[39,2809,227],{"class":139},[39,2811,1602],{"class":139},[39,2813,1605],{"class":62},[39,2815,1608],{"class":132},[39,2817,136],{"class":62},[39,2819,1593],{"class":139},[39,2821,221],{"class":139},[39,2823,224],{"class":62},[39,2825,227],{"class":139},[39,2827,1602],{"class":139},[39,2829,143],{"class":62},[39,2831,2833,2835],{"class":41,"line":2832},45,[39,2834,1627],{"class":132},[39,2836,63],{"class":62},[39,2838,2840],{"class":41,"line":2839},46,[39,2841,935],{"class":45},[39,2843,2845],{"class":41,"line":2844},47,[39,2846,76],{"class":45},[39,2848,2850],{"class":41,"line":2849},48,[39,2851,70],{"emptyLinePlaceholder":69},[39,2853,2855,2857],{"class":41,"line":2854},49,[39,2856,56],{"class":45},[39,2858,1648],{"class":49},[39,2860,2862,2864,2866,2868,2870,2872,2874,2877,2879,2881,2883],{"class":41,"line":2861},50,[39,2863,695],{"class":62},[39,2865,1655],{"class":45},[39,2867,363],{"class":132},[39,2869,1585],{"class":45},[39,2871,1588],{"class":132},[39,2873,136],{"class":62},[39,2875,2876],{"class":139},"\"Its a draw!\"",[39,2878,1669],{"class":62},[39,2880,1672],{"class":45},[39,2882,1675],{"class":132},[39,2884,1678],{"class":62},[39,2886,2888],{"class":41,"line":2887},51,[39,2889,76],{"class":45},[39,2891,2893],{"class":41,"line":2892},52,[39,2894,70],{"emptyLinePlaceholder":69},[39,2896,2898,2900,2902],{"class":41,"line":2897},53,[39,2899,56],{"class":45},[39,2901,1025],{"class":49},[39,2903,1028],{"class":62},[39,2905,2907,2909,2911,2913,2915],{"class":41,"line":2906},54,[39,2908,1033],{"class":62},[39,2910,1036],{"class":49},[39,2912,136],{"class":62},[39,2914,1041],{"class":132},[39,2916,143],{"class":62},[39,2918,2920],{"class":41,"line":2919},55,[39,2921,76],{"class":45},[39,2923,2925],{"class":41,"line":2924},56,[39,2926,70],{"emptyLinePlaceholder":69},[39,2928,2930,2932],{"class":41,"line":2929},57,[39,2931,56],{"class":45},[39,2933,740],{"class":49},[39,2935,2937,2939,2941,2943,2945,2947,2949],{"class":41,"line":2936},58,[39,2938,745],{"class":45},[39,2940,748],{"class":62},[39,2942,751],{"class":45},[39,2944,363],{"class":132},[39,2946,756],{"class":45},[39,2948,759],{"class":62},[39,2950,762],{"class":49},[39,2952,2954,2956,2958,2960,2962,2964,2966,2968],{"class":41,"line":2953},59,[39,2955,767],{"class":132},[39,2957,136],{"class":62},[39,2959,390],{"class":139},[39,2961,221],{"class":139},[39,2963,224],{"class":62},[39,2965,227],{"class":139},[39,2967,780],{"class":139},[39,2969,143],{"class":62},[39,2971,2973,2975,2977,2979,2981,2983,2985],{"class":41,"line":2972},60,[39,2974,788],{"class":787},[39,2976,791],{"class":45},[39,2978,167],{"class":132},[39,2980,170],{"class":62},[39,2982,173],{"class":132},[39,2984,800],{"class":62},[39,2986,803],{"class":49},[39,2988,2990,2992,2994,2996,2998,3000,3002,3004],{"class":41,"line":2989},61,[39,2991,1117],{"class":45},[39,2993,1025],{"class":49},[39,2995,1122],{"class":62},[39,2997,811],{"class":49},[39,2999,814],{"class":62},[39,3001,617],{"class":45},[39,3003,295],{"class":132},[39,3005,1133],{"class":62},[39,3007,3009,3011,3013,3015],{"class":41,"line":3008},62,[39,3010,1138],{"class":132},[39,3012,136],{"class":62},[39,3014,1143],{"class":139},[39,3016,143],{"class":62},[39,3018,3020],{"class":41,"line":3019},63,[39,3021,1150],{"class":45},[39,3023,3025,3027,3029,3031,3033,3035,3037,3039],{"class":41,"line":3024},64,[39,3026,808],{"class":62},[39,3028,811],{"class":49},[39,3030,814],{"class":62},[39,3032,617],{"class":45},[39,3034,295],{"class":132},[39,3036,821],{"class":62},[39,3038,164],{"class":45},[39,3040,826],{"class":139},[39,3042,3044,3046,3048],{"class":41,"line":3043},65,[39,3045,832],{"class":62},[39,3047,835],{"class":45},[39,3049,838],{"class":132},[39,3051,3053],{"class":41,"line":3052},66,[39,3054,844],{"class":45},[39,3056,3058],{"class":41,"line":3057},67,[39,3059,850],{"class":45},[39,3061,3063,3065,3067,3069,3071,3073,3075,3077],{"class":41,"line":3062},68,[39,3064,767],{"class":132},[39,3066,136],{"class":62},[39,3068,390],{"class":139},[39,3070,221],{"class":139},[39,3072,235],{"class":62},[39,3074,227],{"class":139},[39,3076,780],{"class":139},[39,3078,143],{"class":62},[39,3080,3082,3084,3086,3088,3090,3092,3094],{"class":41,"line":3081},69,[39,3083,788],{"class":787},[39,3085,791],{"class":45},[39,3087,167],{"class":132},[39,3089,170],{"class":62},[39,3091,173],{"class":132},[39,3093,800],{"class":62},[39,3095,803],{"class":49},[39,3097,3099,3101,3103,3105,3107,3109,3111,3113],{"class":41,"line":3098},70,[39,3100,1117],{"class":45},[39,3102,1025],{"class":49},[39,3104,1122],{"class":62},[39,3106,811],{"class":49},[39,3108,814],{"class":62},[39,3110,617],{"class":45},[39,3112,295],{"class":132},[39,3114,1133],{"class":62},[39,3116,3118,3120,3122,3124],{"class":41,"line":3117},71,[39,3119,1138],{"class":132},[39,3121,136],{"class":62},[39,3123,1143],{"class":139},[39,3125,143],{"class":62},[39,3127,3129],{"class":41,"line":3128},72,[39,3130,1150],{"class":45},[39,3132,3134,3136,3138,3140,3142,3144,3146,3148],{"class":41,"line":3133},73,[39,3135,808],{"class":62},[39,3137,811],{"class":49},[39,3139,814],{"class":62},[39,3141,617],{"class":45},[39,3143,295],{"class":132},[39,3145,821],{"class":62},[39,3147,164],{"class":45},[39,3149,907],{"class":139},[39,3151,3153,3155,3157],{"class":41,"line":3152},74,[39,3154,832],{"class":62},[39,3156,835],{"class":45},[39,3158,838],{"class":132},[39,3160,3162],{"class":41,"line":3161},75,[39,3163,844],{"class":45},[39,3165,3167],{"class":41,"line":3166},76,[39,3168,935],{"class":45},[39,3170,3172],{"class":41,"line":3171},77,[39,3173,715],{"class":62},[39,3175,3177],{"class":41,"line":3176},78,[39,3178,1936],{"class":62},[39,3180,3182],{"class":41,"line":3181},79,[39,3183,1942],{"class":62},[39,3185,3187],{"class":41,"line":3186},80,[39,3188,76],{"class":45},[39,3190,3192],{"class":41,"line":3191},81,[39,3193,82],{"class":45},[39,3195,3197],{"class":41,"line":3196},82,[39,3198,70],{"emptyLinePlaceholder":69},[39,3200,3202,3205,3207,3210],{"class":41,"line":3201},83,[39,3203,3204],{"class":132},"Game",[39,3206,170],{"class":62},[39,3208,3209],{"class":45},"new",[39,3211,63],{"class":62},[3213,3214,3215],"style",{},"html pre.shiki code .snl16, html code.shiki .snl16{--shiki-default:#F97583}html pre.shiki code .svObZ, html code.shiki .svObZ{--shiki-default:#B392F0}html pre.shiki code .s95oV, html code.shiki .s95oV{--shiki-default:#E1E4E8}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .sDLfK, html code.shiki .sDLfK{--shiki-default:#79B8FF}html pre.shiki code .sU2Wk, html code.shiki .sU2Wk{--shiki-default:#9ECBFF}html pre.shiki code .sAwPA, html code.shiki .sAwPA{--shiki-default:#6A737D}html pre.shiki code .s9osk, html code.shiki .s9osk{--shiki-default:#FFAB70}",{"title":34,"searchDepth":53,"depth":53,"links":3217},[],"2019-06-28 17:49","md",{},"\u002F2019\u002F06\u002F28\u002Ftic-tac-toe",{"title":5,"description":12},"2019\u002F06\u002F28\u002Ftic-tac-toe","The game of kings and coding interviews","0tmH2GLfudp9LNQcJig7PD8gDFxVRamD4f9xcYE-nIs",1791634646002]