package net.ciklum.icfpc11.parser import net.ciklum.icfpc11.domain.Card /** * * @author mym */ @Typed final class Command { final Application application final int slotNumber final Card card Command(Application application, int slotNumber, Card card) { this.application = application if (slotNumber < 0 || slotNumber > 255) { throw new IllegalArgumentException("bad slot number: $slotNumber") } this.slotNumber = slotNumber this.card = card } String toString() { StringBuilder buf = new StringBuilder() if (application == Application.LEFT) { buf.append '1' buf.append ' ' buf.append card.toString() buf.append ' ' buf.append slotNumber } else { buf.append '2' buf.append ' ' buf.append slotNumber buf.append ' ' buf.append card.toString() } buf.toString() } int hashCode() { toString().hashCode() } boolean equals(Object that) { this.toString() == that.toString() } }