Talk:Your stack may be eaten
Jump to navigation
Jump to search
Implementation
Implementation in java
import java.util.Scanner; import java.util.ArrayList; public class YourStackMayBeEaten { public static void main(String[] args) { Scanner scan = new Scanner(System.in); ArrayList<Character> stack = new ArrayList<>(); ArrayList<Character> code = new ArrayList<>(); String[] line = scan.nextLine().split("!"); for (int i = 0; i < line[0].length(); i++) code.add(line[0].charAt(i)); for (int i = line[1].length(); i > 0; i--) stack.add(line[1].charAt(i)); int pos = 0; int pointer = 0; while (!stack.isEmpty()) { switch (code.get(pos)) { case 'v': stack.add(stack.get(pointer)); break; case '^': stack.remove(pointer); break; case '$': stack.remove(stack.size()); if (pointer >= stack.size()) pointer = stack.size() - 1; break; case ':': stack.add(pointer, stack.get(pointer)); pointer++; break; case '/': { Character arg1 = stack.get(pointer); Character arg2 = stack.get(pointer - 1); stack.set(pointer, arg2); stack.set(pointer - 1, arg1) break; } case '{': pointer++; if (pointer == stack.size()) pointer--; break; case '}': pointer--; if (pointer == -1) pointer++; break; case '_': if (pointer == 0) { stack.add(0, scan.nextLine().charAt(1)); pointer++; } else stack.add(pointer - 1, scan.nextLine().charAt(1)); break; case '@': System.out.print(stack.get(pointer)); stack.remove(pointer); break; case '[': { int length = stack.size(); for (int i = 0; i < length; i++) { stack.add(stack.get(i)); } } } pos++; code.add(stack.get(stack.size())); stack.remove(stack.size()); } } }
BoundedBeans (talk) 02:40, 12 July 2022 (UTC)