import java.util.*;
import java.lang.StringBuilder;
import util.*;
import bots.*;

public class VisualAlgoKiller {

  public static void main(String[] args) {
    P.nl();
    // document style length 30 chars
    P.l("==============================");
    P.l(" Welcome to VisualAlgoKiller! ");
    P.l("==============================");
    P.l("====                      ====");
    P.l("=        by: FSociety        =");
    P.nl();
    // greeter

    int choice = P.getChoice(
        "  Select your topic type  ",
          "Linked List",
          "Recursion",
          "Sorting",
          "Hash Table");
    int choice2 = 1;
    // request topic

    String requestMsg =
        "Select your question type ";
    switch(choice) {
      case 1:
      choice2 = P.getChoice(requestMsg,
          "Queue",
          "Singly Sum",
          "Stack");
      break;
      case 2:
      choice2 = P.getChoice(requestMsg,
          "TestFunction 1 param ",
          "TestFunction 2 param",
          "doSomethingCool");
      break;
      case 3:
      choice2 = P.getChoice(requestMsg,
          "How many X; this __ sort",
          "Sequence",
          "Quicksort");
      break;
      case 4:
      choice2 = P.getChoice(requestMsg,
          "Suppose... Yes/No",
          "Suppose... table sequence",
          "Consider... m=12");
      break;
    }
    // request question

    P.l("==============================");
    SolverWrapper.solver[choice - 1][choice2 - 1].solve();
    // execute solver based on user's choice
  }
}

@@ -445,16 +445,56 @@
 reeter%0A%0A
+    boolean repeat = false;%0A    do %7B%0A%0A  
     int 
@@ -515,16 +515,18 @@
 Choice(%0A
+  
         
@@ -565,16 +565,18 @@
         
+  
 %22Linked 
@@ -592,16 +592,18 @@
         
+  
 %22Recursi
@@ -617,16 +617,18 @@
         
+ 
+ 
 %22Sorting
@@ -630,16 +630,18 @@
 rting%22,%0A
+  
         
@@ -653,24 +653,26 @@
 sh Table%22);%0A
+  
     int choi
@@ -680,24 +680,26 @@
 e2 = 1;%0A    
+  
 // request t
@@ -704,16 +704,18 @@
  topic%0A%0A
+  
     Stri
@@ -738,16 +738,18 @@
         
+  
 %22Select 
@@ -774,16 +774,18 @@
  %22;%0A    
+  
 switch(c
@@ -803,16 +803,18 @@
     
+ 
+ 
 case 1:%0A
     
@@ -809,16 +809,18 @@
 case 1:%0A
+  
       ch
@@ -861,16 +861,18 @@
         
+ 
+ 
 %22Queue%22,
@@ -868,24 +868,26 @@
    %22Queue%22,%0A
+  
           %22S
@@ -894,24 +894,26 @@
 ingly Sum%22,%0A
+  
           %22S
@@ -918,39 +918,43 @@
 %22Stack%22);%0A      
+  
 break;%0A
+  
       case 2:%0A  
@@ -949,32 +949,34 @@
   case 2:%0A      
+  
 choice2 = P.getC
@@ -995,32 +995,34 @@
 tMsg,%0A          
+  
 %22TestFunction 1 
@@ -1032,32 +1032,34 @@
 am %22,%0A          
+ 
+ 
 %22TestFunction 2 
@@ -1076,16 +1076,18 @@
         
+  
 %22doSomet
@@ -1094,24 +1094,26 @@
 hingCool%22);%0A
+  
       break;
@@ -1123,16 +1123,18 @@
     
+  
 case 3:%0A
     
@@ -1129,16 +1129,18 @@
 case 3:%0A
+  
       ch
@@ -1181,16 +1181,18 @@
         
+ 
+ 
 %22How man
@@ -1221,16 +1221,18 @@
         
+  
 %22Sequenc
@@ -1245,16 +1245,18 @@
         
+ 
+ 
 %22Quickso
@@ -1263,31 +1263,35 @@
 rt%22);%0A      
+  
 break;%0A
+  
       case 4
@@ -1294,24 +1294,26 @@
 se 4:%0A      
+  
 choice2 = P.
@@ -1326,32 +1326,34 @@
 ice(requestMsg,%0A
+  
           %22Suppo
@@ -1369,32 +1369,34 @@
 /No%22,%0A          
+  
 %22Suppose... tabl
@@ -1418,16 +1418,18 @@
         
+  
 %22Conside
@@ -1443,24 +1443,26 @@
 12%22);%0A      
+ 
+ 
 break;%0A    %7D
@@ -1464,14 +1464,18 @@
     
+  
 %7D%0A    
+ 
+ 
 // r
@@ -1491,16 +1491,18 @@
 estion%0A%0A
+  
     P.l(
@@ -1532,24 +1532,26 @@
 ========%22);%0A
+  
     SolverWr
@@ -1601,16 +1601,18 @@
 ();%0A    
+  
 // execu
@@ -1643,15 +1643,192 @@
 s choice
+%0A%0A      P.bl();%0A      P.l(%22Solve another question? %5By/n%5D%22);%0A      repeat == P.getStrLine().equalsIgnoreCase(%22y%22);%0A      P.l(%22==============================%22);%0A    %7Dwhile(repeat)
 %0A  %7D%0A%7D%0A

make program repeat till user wishes to terminate