import static java.lang.Math.floorMod; import static java.lang.Math.min; import static java.util.stream.Collectors.toMap; import java.util.AbstractMap.SimpleEntry; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.stream.Stream; public class ComputerZero { private static final int MEM = 32; private static final int NOP = 0; private static final int LDA = 1; private static final int STA = 2; private static final int ADD = 3; private static final int SUB = 4; private static final int BRZ = 5; private static final int JMP = 6; private static final int STP = 7; private static final Map OPCODES = Stream.of( new SimpleEntry<>("NOP", NOP), new SimpleEntry<>("LDA", LDA), new SimpleEntry<>("STA", STA), new SimpleEntry<>("ADD", ADD), new SimpleEntry<>("SUB", SUB), new SimpleEntry<>("BRZ", BRZ), new SimpleEntry<>("JMP", JMP), new SimpleEntry<>("STP", STP)) .collect(toMap(SimpleEntry::getKey, SimpleEntry::getValue)); private static final Pattern RE_INSTRUCTION = Pattern.compile( "\\s*" + "(?:(?