From da386589432800da7f905c8365365d1e5e6faad0 Mon Sep 17 00:00:00 2001 From: Stefan Tudose Date: Fri, 28 Aug 2020 23:49:09 +0200 Subject: [PATCH] ignore order on task pairing checks --- epi_judge_java/epi/TaskPairing.java | 41 ++++++++++++++++++- epi_judge_java_solutions/epi/TaskPairing.java | 40 +++++++++++++++++- 2 files changed, 79 insertions(+), 2 deletions(-) diff --git a/epi_judge_java/epi/TaskPairing.java b/epi_judge_java/epi/TaskPairing.java index 7e70548dd..2f871b8a6 100644 --- a/epi_judge_java/epi/TaskPairing.java +++ b/epi_judge_java/epi/TaskPairing.java @@ -2,8 +2,11 @@ import epi.test_framework.EpiTest; import epi.test_framework.EpiUserType; import epi.test_framework.GenericTest; +import epi.test_framework.EpiTestComparator; import java.util.List; +import java.util.Comparator; + public class TaskPairing { @EpiUserType(ctorParams = {Integer.class, Integer.class}) @@ -27,7 +30,8 @@ public boolean equals(Object o) { PairedTasks that = (PairedTasks)o; - return task1.equals(that.task1) && task2.equals(that.task2); + return task1.equals(that.task1) && task2.equals(that.task2) || + task1.equals(that.task2) && task2.equals(that.task1); } @Override @@ -36,6 +40,31 @@ public String toString() { } } + private static class PairedTasksComparator implements Comparator { + @Override + public int compare(PairedTasks p1, PairedTasks p2) { + if (p1 == null) { + return p2 == null ? 0 : -1; + } + + if (p1.equals(p2)) { + return 0; + } + + Integer minP1 = Math.min(p1.task1, p1.task2); + Integer minP2 = Math.min(p2.task1, p2.task2); + int minCompare = minP1.compareTo(minP2); + + if (minCompare != 0) { + return minCompare; + } else { + Integer maxP1 = Math.max(p1.task1, p1.task2); + Integer maxP2 = Math.max(p2.task1, p2.task2); + return maxP1.compareTo(maxP2); + } + } + } + @EpiTest(testDataFile = "task_pairing.tsv") public static List @@ -44,6 +73,16 @@ public String toString() { return null; } + @EpiTestComparator + public static boolean comp(List expected, List result) { + if (result == null) { + return false; + } + result.sort(new PairedTasksComparator()); + expected.sort(new PairedTasksComparator()); + return expected.equals(result); + } + public static void main(String[] args) { System.exit( GenericTest diff --git a/epi_judge_java_solutions/epi/TaskPairing.java b/epi_judge_java_solutions/epi/TaskPairing.java index 4bbbff6dc..5918c461a 100644 --- a/epi_judge_java_solutions/epi/TaskPairing.java +++ b/epi_judge_java_solutions/epi/TaskPairing.java @@ -3,9 +3,11 @@ import epi.test_framework.EpiTest; import epi.test_framework.EpiUserType; import epi.test_framework.GenericTest; +import epi.test_framework.EpiTestComparator; import java.util.ArrayList; import java.util.Collections; +import java.util.Comparator; import java.util.List; public class TaskPairing { @@ -31,7 +33,8 @@ public boolean equals(Object o) { PairedTasks that = (PairedTasks)o; - return task1.equals(that.task1) && task2.equals(that.task2); + return task1.equals(that.task1) && task2.equals(that.task2) || + task1.equals(that.task2) && task2.equals(that.task1); } @Override @@ -40,6 +43,31 @@ public String toString() { } } + private static class PairedTasksComparator implements Comparator { + @Override + public int compare(PairedTasks p1, PairedTasks p2) { + if (p1 == null) { + return p2 == null ? 0 : -1; + } + + if (p1.equals(p2)) { + return 0; + } + + Integer minP1 = Math.min(p1.task1, p1.task2); + Integer minP2 = Math.min(p2.task1, p2.task2); + int minCompare = minP1.compareTo(minP2); + + if (minCompare != 0) { + return minCompare; + } else { + Integer maxP1 = Math.max(p1.task1, p1.task2); + Integer maxP2 = Math.max(p2.task1, p2.task2); + return maxP1.compareTo(maxP2); + } + } + } + @EpiTest(testDataFile = "task_pairing.tsv") public static List @@ -54,6 +82,16 @@ public String toString() { return optimumAssignments; } + @EpiTestComparator + public static boolean comp(List expected, List result) { + if (result == null) { + return false; + } + result.sort(new PairedTasksComparator()); + expected.sort(new PairedTasksComparator()); + return expected.equals(result); + } + public static void main(String[] args) { System.exit( GenericTest