UP

Function go


Definition

    ∇ go;State;View;Cmd;P
[1]  ⍝
[2]  ⍝⍝ the main program
[3]  ⍝
[4]  ⍝ we need fgetc() from the FILE-IO native function to get user-keystrokes
[5]  ⍝
[6]  →('F'=↑'lib_file_io.so' ⎕FX 'FILE_IO')/1+↑⎕LC ◊ '⋆⋆⋆ ⎕FX FILE_IO failed' ◊ →0
[7]  State←27 3⍴'-' ◊ ⊣{ ((face ⍵) ⌷ State) ←'YOBRGW'[⍵] } ¨⍳6
[8]  ∆Initial_State←State  ⍝ the unscrambled state
[9]  ∆3D←1                 ⍝ initial view: 3D
[10] ∆TCNT←0               ⍝ turn counter
[11] LOOP: ∆3D show_cube State
[12] LP1:  Cmd←⎕UCS FILE_IO[9] 0  ⍝ FIO∆fgetc
[13] →(Cmd∈'UuDdLlRrFfBb')/MOVE
[14] →(Cmd='Hh?Qq P',⎕UCS 10)/HELP HELP HELP 0 0 LP1 PRO STAT
[15] →(Cmd='03MmpSs')/CLR V3D Q1 Q6 PROE SETUP SETUP
[16] 'Invalid command:' Cmd                                            ◊ →LP1
[17] HELP: ⊣{⎕←⍵}¨∆HELP                                                      ◊ →LP1
[18] STAT: print_level State                                                 ◊ →LP1
[19] PRO:  'Proposal:',P←propose_moves State                                 ◊ →LP1
[20] MOVE: 'Turn: ', Cmd ◊ State←State turn Cmd                              ◊ →LOOP
[21] CLR:  'Clear' ◊ State←∆Initial_State ◊ ∆TCNT←0                          ◊ →LOOP
[22] V3D:  ∆3D←∼∆3D                                                          ◊ →LOOP
[23] Q6:   '6 random turns' P←'UuDdLlRrFfBb'[?6⍴12]
[24] State←State do_moves P ◊ ∆TCNT←0                                  ◊ →LOOP
[25] Q1:   '1 random turn'  P←'UuDdLlRrFfBb'[?,12]
[26] State←State do_moves P ◊ ∆TCNT←0                                  ◊ →LOOP
[27] PROE: 'Proposal:', P←propose_moves State ◊ State←State do_moves ∈P      ◊ →LOOP
[28] SETUP: State←State setup_cube Cmd='S'                                   ◊ →LOOP
    ∇

Call Graph (defined functions called from function go)

Caller Graph (defined functions calling function go)