Commit 2f3980f4 authored by Vladislav Kiselev's avatar Vladislav Kiselev

Баги

parent 93ff4528
This diff is collapsed.
This diff is collapsed.
...@@ -149,6 +149,10 @@ public class Main { ...@@ -149,6 +149,10 @@ public class Main {
debug(Testing::solveTaskWithPartialCargoOp, DEFAULT_TIME_LIMIT_S); debug(Testing::solveTaskWithPartialCargoOp, DEFAULT_TIME_LIMIT_S);
break; break;
} }
case "debug greedy" : {
debug(Testing::solveTaskWithGreedyConstraints, DEFAULT_TIME_LIMIT_S);
break;
}
case "debug read-write" : { case "debug read-write" : {
debugReadWrite(); debugReadWrite();
break; break;
...@@ -289,6 +293,7 @@ public class Main { ...@@ -289,6 +293,7 @@ public class Main {
} }
int arrayFirstDim = ((int) task.getPlanningInterval()) + 2; int arrayFirstDim = ((int) task.getPlanningInterval()) + 2;
int arraySecondDim = 0;
if (line.charAt(pos) == '{') { if (line.charAt(pos) == '{') {
pos++; pos++;
...@@ -296,7 +301,14 @@ public class Main { ...@@ -296,7 +301,14 @@ public class Main {
while (line.charAt(nextPos) != '}') { while (line.charAt(nextPos) != '}') {
nextPos++; nextPos++;
} }
arrayFirstDim = Integer.valueOf(line.substring(pos, nextPos).trim()); String []dimensions = line.substring(pos, nextPos).trim().split(" ");
if (dimensions.length > 0) {
arrayFirstDim = Integer.valueOf(dimensions[0].trim());
}
if (dimensions.length > 1) {
arraySecondDim = Integer.valueOf(dimensions[1].trim());
}
pos = nextPos + 1; pos = nextPos + 1;
while (line.charAt(pos) != '[') { while (line.charAt(pos) != '[') {
pos++; pos++;
...@@ -330,7 +342,7 @@ public class Main { ...@@ -330,7 +342,7 @@ public class Main {
maxLength = Math.max(maxLength, val.length()); maxLength = Math.max(maxLength, val.length());
} }
if ((arrayFirstDim != 0) && (elements.size() % arrayFirstDim == 0)) { if ((arrayFirstDim != 0) && (elements.size() % arrayFirstDim == 0) && ((arraySecondDim == 0) || (elements.size() % (arrayFirstDim * arraySecondDim) != 0))) {
writer.write(name + " :\n"); writer.write(name + " :\n");
for (int i = 0; i < elements.size(); i += arrayFirstDim) { for (int i = 0; i < elements.size(); i += arrayFirstDim) {
writer.write(" "); writer.write(" ");
...@@ -344,6 +356,23 @@ public class Main { ...@@ -344,6 +356,23 @@ public class Main {
writer.write("\n"); writer.write("\n");
} }
writer.write("\n"); writer.write("\n");
} else if ((arrayFirstDim != 0) && (arraySecondDim != 0) && (elements.size() % (arrayFirstDim * arraySecondDim) == 0)) {
writer.write(name + " :\n");
for (int i = 0; i < elements.size(); i += arrayFirstDim * arraySecondDim) {
for (int j = 0; j < arrayFirstDim; j++) {
writer.write(" ");
for (int k = 0; k < arraySecondDim; k++) {
String val = elements.get(i + j * arraySecondDim + k);
for (int l = val.length(); l < maxLength; l++) {
writer.write(" ");
}
writer.write(val + " ");
}
writer.write("\n");
}
writer.write("\n");
}
writer.write("\n");
} }
} }
......
...@@ -52,6 +52,15 @@ public class Testing { ...@@ -52,6 +52,15 @@ public class Testing {
timeLimitS); timeLimitS);
} }
public static String solveTaskWithGreedyConstraints(TaskCase task, int timeLimitS) {
return solveTask(
task,
"conversion_2_greedy.mzn",
ConversionUtil::portToMiniZincGreedy,
ConversionUtil::resolveMiniZincResults,
timeLimitS);
}
public static String solveTask_2_0(TaskCase task, int timeLimitS) { public static String solveTask_2_0(TaskCase task, int timeLimitS) {
return solveTask( return solveTask(
task, task,
......
...@@ -292,7 +292,7 @@ Final Storage State ...@@ -292,7 +292,7 @@ Final Storage State
10002; 38; 4500 10002; 38; 4500
Task Properties Task Properties
100.0; 0 20.0; 0
Solution Solution
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment