Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Note 'ttt f.'
- ((4 19$'computer victoriousspoils to the humancat''s game unfinished ') {~ (1 i.~ ([: ; 1 1 1 e.L:_1 (8 3$0 3 6 1 4 7 2 5 8 6 4 2 0 1 2 3 4 5 6 7 8 0 4 8) e.L:_1 [: <@I. 'XO' (="0 1) 9&{.) , 'abcdefghiXjX'&(1 -.@:e. =&:(9&{.)) , 'q' = 10&{)`(11&{ = 'XO' #~ [: ; 1 1 1 e.L:_1 (8 3$0 3 6 1 4 7 2 5 8 6 4 2 0 1 2 3 4 5 6 7 8 0 4 8) e.L:_1 [: <@I. 'XO' (="0 1) 9&{.)@.(1 e. [: ; 1 1 1 e.L:_1 (8 3$0 3 6 1 4 7 2 5 8 6 4 2 0 1 2 3 4 5 6 7 8 0 4 8) e.L:_1 [: <@I. 'XO' (="0 1) 9&{.))@:((9}~ ('XO' {~ 'X' = 9&{))@:(([ (0 0 $ 1!:2&2)) ([: (];.0~ (1 1 ,: _2 + $)) [: ": 3 3 $ [: ;/ 9&{.))@:(0&(turn@]`((i. choice)@])`]})^:(-.@:('q' = 10&{)))@:([ (0 0 $ 1!:2&2))@:(10}~ ({~ ?@#)@:('XO' -.~ 9&{.)`([: 32.&(23 b.)&.:(a.&i.) [: {. 'z' ,~ 1!:1@1:)@.(9&{ = 11&{))^:(0 = 4 > 1 i.~ ([: ; 1 1 1 e.L:_1 (8 3$0 3 6 1 4 7 2 5 8 6 4 2 0 1 2 3 4 5 6 7 8 0 4 8) e.L:_1 [: <@I. 'XO' (="0 1) 9&{.) , 'abcdefghiXjX'&(1 -.@:e. =&:(9&{.)) , 'q' = 10&{)^:_)@:((([ (0 0 $ 1!:2&2)) ([: (];.0~ (1 1 ,: _2 + $)) [: ": 3 3 $ [: ;/ 9&{.))@:('abcdefghiXjX' 11}~ 'OX' {~ 'x' = [: 32.&(23 b.)&.:(a.&i.) [: {. 'x' ,~ [: , ":))
- )
- ttt=: report@:play@:setup NB. the game use: ttt X or ttt O
- NB. define non-verbs
- Until=: 2 :'u^:(0=v)^:_'
- If=: ^:
- CONFIGURATION=: 'abcdefghiXjX'
- 'TURN CHOICE HUMAN'=: (i. 3) + CONFIGURATION i.'X'
- board=: TURN&{.
- turn=: TURN&{ NB. whose turn it is
- choice=: CHOICE&{ NB. choice
- human=:HUMAN&{ NB. human mark, X or O
- 'X O'=: 'xo'
- diagonal=: (<0 1)&|:
- WINNER=: ((|:,diagonal@:|.),(,diagonal))i.,~3 NB. indexes of winning combinations
- RESPONSE=: ];._2'computer victorious;spoils to the human;cat''s game;unfinished;'
- debug=: [ echo
- setup=: display@:(CONFIGURATION HUMAN}~ 'OX' {~ 'x' = [: lc [: {. 'x' ,~ [: , ":)
- display=: debug ([: trim [: ": 3 3 $ [: ;/ board)
- trim=: ];.0~ (1 1 ,: _2 + $)
- lc=: (2^5)&bit_or&.:(a.&i.) NB. sufficient lower case
- bit_or=: 2b10111 b.
- play=: next@:display@:move@:debug@:choose Until done
- next=: TURN}~ 'XO'{~'X'=turn
- move=: 0&(turn@]`((i. choice)@])`]})If(-.@:quit)
- choose=: CHOICE}~ ai`kbd@.(turn = human)
- kbd=: ([: lc [: {. 'z' ,~ 1!:1@1:)
- ai=: ({~ ?@#)@:('XO'-.~board)
- done=: 4 > outcome
- outcome=: 1 i.~ victor , cats , quit
- victor=: [: ; 1 1 1 e.L:_1 WINNER e.L:_1 [: <@I. 'XO' ="0 1 board
- cats=: CONFIGURATION&(1 -.@:e. =&:board)
- quit=: 'q' = choice
- report=: RESPONSE {~ outcome`(human = 'XO' #~ victor)@.(1 e.victor)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement