Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on May 8th, 2012  |  syntax: Java  |  size: 1.35 KB  |  hits: 15  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. public class Brainfuck
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 execute("++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.,.");
  6.         }
  7.  
  8.         public static int[] execute(String cmdString)
  9.         {
  10.                 int p = 0;
  11.                 int[] intArray = new int[30000];
  12.                 char[] cmd = cmdString.toCharArray();
  13.  
  14.                 Scanner sf = new Scanner(System.in);
  15.                 Stack<Integer> callback = new Stack<Integer>();
  16.  
  17.                 long skips = 0;
  18.                 for (int cmdPointer = 0; cmdPointer < cmd.length; cmdPointer++)
  19.                 {
  20.  
  21.                         if (skips > 0)
  22.                         {
  23.                                 if (cmd[cmdPointer] == ']')
  24.                                         skips--;
  25.                                 else if (cmd[cmdPointer] == '[')
  26.                                         skips++;
  27.                         }
  28.                         else
  29.                                 switch (cmd[cmdPointer])
  30.                                 {
  31.                                         case '>':
  32.                                                 ++p;
  33.                                                 break;
  34.                                         case '<':
  35.                                                 --p;
  36.                                                 break;
  37.                                         case '+':
  38.                                                 ++intArray[p];
  39.                                                 break;
  40.                                         case '-':
  41.                                                 --intArray[p];
  42.                                                 break;
  43.                                         case '.':
  44.                                                 System.out.print((char) intArray[p]);
  45.                                                 break;
  46.                                         case ',':
  47.                                                 intArray[p] = sf.next().charAt(0);
  48.                                                 break;
  49.                                         case '[':
  50.                                                 if (intArray[p] != 0)
  51.                                                         callback.push(cmdPointer);
  52.                                                 else
  53.                                                         skips++;
  54.                                                 break;
  55.                                         case ']':
  56.                                                 if (!callback.isEmpty())
  57.                                                         cmdPointer = callback.pop() - 1;
  58.                                                 else
  59.                                                         System.err.println("callback stack is empty.");
  60.                                                 break;
  61.  
  62.                                 }
  63.                 }
  64.  
  65.                 return intArray;
  66.         }
  67. }