Execute SNUSP/Java: Difference between revisions

minor changes
m (Forgot to change some things over to the enum)
(minor changes)
Line 54:
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Random;
 
public class CodePtr{
static final String instChars= "><.,/\\+-#@$%!?";//valid chars
static final Random rand = new Random();
ArrayList<String> code;//code array
Direction dir;//current direction
Line 67 ⟶ 69:
BufferedReader input= new BufferedReader(new InputStreamReader(System.in));
 
public CodePtr(final ArrayList<String> code, final Point place){
this.code= code;
dir= Direction.RIGHT;
Line 78 ⟶ 80:
}
 
public CodePtr(final Point place, final Direction dir){
//This constructor is left over from attempts at '&'
this.dir= dir;
Line 90 ⟶ 92:
}
 
private boolean execute(final char inst){
//ignore char and keep going
if(!instChars.contains("" + inst)) return true;
Line 100 ⟶ 102:
try{
int in;
while((in= input.read()) == 10'\n' || in == 13'\r');//skip return chars
mem.set(memPtr, (char)in);
}catch(final IOException e){
Line 110 ⟶ 112:
break;
case '?'://conditional skip
if(mem.get(memPtr) == '\0') place= moveCP();
break;
case '>'://move pointer right
Line 127 ⟶ 129:
case '/'://mirror
switch(dir){
case Direction.RIGHT:
dir= Direction.UP;
break;
case Direction.DOWN:
dir= Direction.LEFT;
break;
case Direction.LEFT:
dir= Direction.DOWN;
break;
case Direction.UP:
dir= Direction.RIGHT;
break;
Line 144 ⟶ 146:
case '\\'://mirror
switch(dir){
case Direction.RIGHT:
dir= Direction.DOWN;
break;
case Direction.DOWN:
dir= Direction.RIGHT;
break;
case Direction.LEFT:
dir= Direction.UP;
break;
case Direction.UP:
dir= Direction.LEFT;
break;
Line 167 ⟶ 169:
case '#'://pop
if(dStack.size() > 0){
final Direction oldDir= dStack.pop();
final Point oldPlace= pStack.pop();
place= oldPlace;
dir= oldDir;
Line 181 ⟶ 183:
break;
case '%':
mem.set(memPtr, (char)(Mathrand.random() * nextInt(mem.get(memPtr) + 1)));
break;
default:
Line 191 ⟶ 193:
final Point retVal= new Point(place);
switch(dir){
case Direction.RIGHT:
retVal.x++;
break;
case Direction.DOWN:
retVal.y++;
break;
case Direction.LEFT:
retVal.x--;
break;
case Direction.UP:
retVal.y--;
break;
Anonymous user