main_solution5/bf.scala
changeset 478 191cd1de93f1
parent 430 274c865b3878
equal deleted inserted replaced
477:a4e1f63157d8 478:191cd1de93f1
    94       case '>' => (pc + 1, mp + 1, mem)
    94       case '>' => (pc + 1, mp + 1, mem)
    95       case '<' => (pc + 1, mp - 1, mem)
    95       case '<' => (pc + 1, mp - 1, mem)
    96       case '+' => (pc + 1, mp, write(mem, mp, sread(mem, mp) + 1))
    96       case '+' => (pc + 1, mp, write(mem, mp, sread(mem, mp) + 1))
    97       case '-' => (pc + 1, mp, write(mem, mp, sread(mem, mp) - 1))
    97       case '-' => (pc + 1, mp, write(mem, mp, sread(mem, mp) - 1))
    98       case '.' => { print(sread(mem, mp).toChar); (pc + 1, mp, mem) }
    98       case '.' => { print(sread(mem, mp).toChar); (pc + 1, mp, mem) }
    99       case '['  => 
    99       case '['  => if (sread(mem, mp) == 0) (jumpRight(prog, pc + 1, 0), mp, mem) else (pc + 1, mp, mem) 
   100 	      if (sread(mem, mp) == 0) (jumpRight(prog, pc + 1, 0), mp, mem) else (pc + 1, mp, mem) 
   100       case ']'  => if (sread(mem, mp) != 0) (jumpLeft(prog, pc - 1, 0), mp, mem) else (pc + 1, mp, mem) 
   101       case ']'  => 
       
   102 	      if (sread(mem, mp) != 0) (jumpLeft(prog, pc - 1, 0), mp, mem) else (pc + 1, mp, mem) 
       
   103  
       
   104       case _ => (pc + 1, mp, mem)
   101       case _ => (pc + 1, mp, mem)
   105     }		     
   102     }		     
   106     compute(prog, new_pc, new_mp, new_mem)	
   103     compute(prog, new_pc, new_mp, new_mem)	
   107   }
   104   }
   108   else mem
   105   else mem