diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/.idea/ccc-2023.iml b/.idea/ccc-2023.iml new file mode 100644 index 0000000..d6ebd48 --- /dev/null +++ b/.idea/ccc-2023.iml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/jpa-buddy.xml b/.idea/jpa-buddy.xml new file mode 100644 index 0000000..966d5f5 --- /dev/null +++ b/.idea/jpa-buddy.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..d79bd4e --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,9 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..b01907a --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/CloudflightCodingContest/.gitignore b/CloudflightCodingContest/.gitignore new file mode 100644 index 0000000..5ff6309 --- /dev/null +++ b/CloudflightCodingContest/.gitignore @@ -0,0 +1,38 @@ +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### IntelliJ IDEA ### +.idea/modules.xml +.idea/jarRepositories.xml +.idea/compiler.xml +.idea/libraries/ +*.iws +*.iml +*.ipr + +### Eclipse ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ + +### Mac OS ### +.DS_Store \ No newline at end of file diff --git a/CloudflightCodingContest/.idea/.gitignore b/CloudflightCodingContest/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/CloudflightCodingContest/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/CloudflightCodingContest/.idea/encodings.xml b/CloudflightCodingContest/.idea/encodings.xml new file mode 100644 index 0000000..aa00ffa --- /dev/null +++ b/CloudflightCodingContest/.idea/encodings.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/CloudflightCodingContest/.idea/jpa-buddy.xml b/CloudflightCodingContest/.idea/jpa-buddy.xml new file mode 100644 index 0000000..966d5f5 --- /dev/null +++ b/CloudflightCodingContest/.idea/jpa-buddy.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/CloudflightCodingContest/.idea/misc.xml b/CloudflightCodingContest/.idea/misc.xml new file mode 100644 index 0000000..111cb59 --- /dev/null +++ b/CloudflightCodingContest/.idea/misc.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/CloudflightCodingContest/.idea/uiDesigner.xml b/CloudflightCodingContest/.idea/uiDesigner.xml new file mode 100644 index 0000000..2b63946 --- /dev/null +++ b/CloudflightCodingContest/.idea/uiDesigner.xml @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/CloudflightCodingContest/.idea/vcs.xml b/CloudflightCodingContest/.idea/vcs.xml new file mode 100644 index 0000000..6c0b863 --- /dev/null +++ b/CloudflightCodingContest/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/CloudflightCodingContest/files/level1/chat_gpt_prompt_for_level1.txt b/CloudflightCodingContest/files/level1/chat_gpt_prompt_for_level1.txt new file mode 100644 index 0000000..4041bcc --- /dev/null +++ b/CloudflightCodingContest/files/level1/chat_gpt_prompt_for_level1.txt @@ -0,0 +1,180 @@ +we want a java code for the following coding challenge: a road is divided into segments numbered from 1 to n +‐ within each segment, at any moment there can be at +most one car +‐ a car can change segments at every full second +‐ a segment can be entered only when during the past +second there was no car in it +‐ if it is not possible for a car to proceed it waits +‐ all segment changes occur simultanously +‐ each car has to perform a trip which consists of entering +the road at a given start segment, subsequently moving +from one segment to the next, and leaving the road at a +given end segment +‐ the arrival time of a car is when it finishes its trip +‐ all trips within a test case will have different start +segments Calculate the arrival times of a number of cars, which perform +trips on one simple road. +- all trips start at time=1 +Input: +Note: lines are separated by newline (\n) +number road segments (n) +number of cars (m) +startsegment,endsegment for car 1 +… +startsegment,endsegment for car m +Example input +100 +5 +3,99 +40,75 +20,99 +28,76 +1,100 +Example output +98,37,81,50,101 +1 < n < 1000 +1 < m < 1000 +1 <= startsegment < endsegment <= n +Result: +arrival times of the cars, separated by comma, in the order of +the input + +Lets assume we already have the following data structures: + +package at.salento; + +public class Car { + private int startSegment; + private int endSegment; + + private int arrivalTime; + private int order; + + private int earliestStartTime; // introduced in level 2 + + private int delay; + + private boolean entered = false; + + private boolean toRemove = false; // not used at the moment + + public Car() { + this.startSegment = 0; + this.endSegment = 0; + this.arrivalTime = 0; + this.order = 0; + this.delay = 0; + } + + public Car(int start, int end, int duraction) { + this.startSegment = start; + this.endSegment = end; + this.arrivalTime = duraction; + this.order = 0; + this.delay = 0; + } + + public Car(int start, int end, int duration, int order) { + this.startSegment = start; + this.endSegment = end; + this.arrivalTime = duration; + this.order = order; + this.delay = 0; + } + + public int getStartSegment() { + return startSegment; + } + + public void setStartSegment(int startSegment) { + this.startSegment = startSegment; + } + + public int getEndSegment() { + return endSegment; + } + + public void setEndSegment(int endSegment) { + this.endSegment = endSegment; + } + + public int getOrder() { + return order; + } + + public void setOrder(int order) { + this.order = order; + } + + public int getArrivalTime() { + return arrivalTime; + } + + public void setArrivalTime(int arrivalTime) { + this.arrivalTime = arrivalTime; + } + + public void increaseArrivalTime() { + this.arrivalTime++; + } + + public int getDelay() { + return delay; + } + + public void increaseDelay() { + this.delay++; + } + + public void setDelay(int delay) { + this.delay = delay; + } + + public int getTotalArrivalTime() { + return this.arrivalTime + this.delay; + } + + public boolean isEntered() { + return entered; + } + + public void setEntered(boolean entered) { + this.entered = entered; + } + + public boolean isToRemove() { + return toRemove; + } + + public void setToRemove(boolean toRemove) { + this.toRemove = toRemove; + } + + public int getEarliestStartTime() { + return earliestStartTime; + } + + public void setEarliestStartTime(int earliestStartTime) { + this.earliestStartTime = earliestStartTime; + } + + @Override + public String toString() { + String viz = ""; + for (int i = 0; i< startSegment; i++) viz += " "; + viz += "|"; + for (int i = startSegment +1; i < endSegment; i++) viz += "-"; + viz += "|"; + // for (int i=) + return String.format(" Car(start: %02d", startSegment) + + String.format(", end: %02d", endSegment) + + String.format(", arr.t.: %02d", arrivalTime) + + String.format(", delay: %02d", delay) + + String.format(", est: %02d", earliestStartTime) + + String.format(", tot.arr.t: %02d", getTotalArrivalTime()) + + String.format(", order: %02d", order) + + ") " + "\n"; + } +} + +and we have filled an private ArrayList cars; in a class Level1ComputationCGT. we now need a method that performs the required calculation \ No newline at end of file diff --git a/CloudflightCodingContest/files/level1/level1.pdf b/CloudflightCodingContest/files/level1/level1.pdf new file mode 100644 index 0000000..607f987 Binary files /dev/null and b/CloudflightCodingContest/files/level1/level1.pdf differ diff --git a/CloudflightCodingContest/files/level1/level1_0.in b/CloudflightCodingContest/files/level1/level1_0.in new file mode 100644 index 0000000..c390228 --- /dev/null +++ b/CloudflightCodingContest/files/level1/level1_0.in @@ -0,0 +1,7 @@ +100 +5 +3,99 +40,75 +20,99 +28,76 +1,100 \ No newline at end of file diff --git a/CloudflightCodingContest/files/level1/level1_0.out b/CloudflightCodingContest/files/level1/level1_0.out new file mode 100644 index 0000000..1444285 --- /dev/null +++ b/CloudflightCodingContest/files/level1/level1_0.out @@ -0,0 +1 @@ +98,37,81,50,101 diff --git a/CloudflightCodingContest/files/level1/level1_0.sol b/CloudflightCodingContest/files/level1/level1_0.sol new file mode 100644 index 0000000..d51ea16 --- /dev/null +++ b/CloudflightCodingContest/files/level1/level1_0.sol @@ -0,0 +1 @@ +98,37,81,50,101 \ No newline at end of file diff --git a/CloudflightCodingContest/files/level1/level1_1.in b/CloudflightCodingContest/files/level1/level1_1.in new file mode 100644 index 0000000..d83b2b9 --- /dev/null +++ b/CloudflightCodingContest/files/level1/level1_1.in @@ -0,0 +1,12 @@ +40 +10 +24,30 +17,20 +30,37 +16,32 +8,10 +6,33 +22,31 +2,6 +20,32 +4,33 diff --git a/CloudflightCodingContest/files/level1/level1_1.out b/CloudflightCodingContest/files/level1/level1_1.out new file mode 100644 index 0000000..3766eed --- /dev/null +++ b/CloudflightCodingContest/files/level1/level1_1.out @@ -0,0 +1 @@ +8,5,9,19,4,29,11,6,14,31 diff --git a/CloudflightCodingContest/files/level1/level1_1.sol b/CloudflightCodingContest/files/level1/level1_1.sol new file mode 100644 index 0000000..3766eed --- /dev/null +++ b/CloudflightCodingContest/files/level1/level1_1.sol @@ -0,0 +1 @@ +8,5,9,19,4,29,11,6,14,31 diff --git a/CloudflightCodingContest/files/level1/level1_2.in b/CloudflightCodingContest/files/level1/level1_2.in new file mode 100644 index 0000000..d41b8a0 --- /dev/null +++ b/CloudflightCodingContest/files/level1/level1_2.in @@ -0,0 +1,27 @@ +80 +25 +68,72 +42,60 +63,67 +51,62 +54,72 +3,44 +61,62 +35,68 +24,42 +64,73 +22,51 +19,25 +33,55 +52,74 +31,43 +2,6 +15,49 +32,40 +34,65 +21,42 +28,61 +14,35 +37,57 +47,49 +45,70 diff --git a/CloudflightCodingContest/files/level1/level1_2.out b/CloudflightCodingContest/files/level1/level1_2.out new file mode 100644 index 0000000..f43971c --- /dev/null +++ b/CloudflightCodingContest/files/level1/level1_2.out @@ -0,0 +1 @@ +6,20,7,14,20,43,3,35,21,11,32,9,26,24,18,7,36,13,34,25,38,24,22,4,27 diff --git a/CloudflightCodingContest/files/level1/level1_2.sol b/CloudflightCodingContest/files/level1/level1_2.sol new file mode 100644 index 0000000..f43971c --- /dev/null +++ b/CloudflightCodingContest/files/level1/level1_2.sol @@ -0,0 +1 @@ +6,20,7,14,20,43,3,35,21,11,32,9,26,24,18,7,36,13,34,25,38,24,22,4,27 diff --git a/CloudflightCodingContest/files/level1/level1_3.in b/CloudflightCodingContest/files/level1/level1_3.in new file mode 100644 index 0000000..b3956f9 --- /dev/null +++ b/CloudflightCodingContest/files/level1/level1_3.in @@ -0,0 +1,42 @@ +80 +40 +25,46 +31,33 +2,34 +58,71 +40,54 +1,42 +33,38 +29,66 +21,64 +48,80 +67,80 +39,77 +24,60 +41,58 +34,52 +4,76 +52,58 +30,59 +44,62 +64,69 +36,39 +19,62 +60,62 +70,74 +14,55 +7,25 +37,75 +20,72 +35,61 +13,17 +47,75 +57,62 +61,69 +45,66 +23,24 +42,57 +54,61 +10,76 +27,69 +49,50 diff --git a/CloudflightCodingContest/files/level1/level1_3.out b/CloudflightCodingContest/files/level1/level1_3.out new file mode 100644 index 0000000..e9f973d --- /dev/null +++ b/CloudflightCodingContest/files/level1/level1_3.out @@ -0,0 +1 @@ +31,8,37,16,21,47,15,47,53,35,15,46,47,23,27,77,9,38,23,7,10,55,5,6,50,24,46,63,34,7,32,9,10,25,5,20,10,73,52,3 diff --git a/CloudflightCodingContest/files/level1/level1_3.sol b/CloudflightCodingContest/files/level1/level1_3.sol new file mode 100644 index 0000000..e9f973d --- /dev/null +++ b/CloudflightCodingContest/files/level1/level1_3.sol @@ -0,0 +1 @@ +31,8,37,16,21,47,15,47,53,35,15,46,47,23,27,77,9,38,23,7,10,55,5,6,50,24,46,63,34,7,32,9,10,25,5,20,10,73,52,3 diff --git a/CloudflightCodingContest/files/level1/level1_4.in b/CloudflightCodingContest/files/level1/level1_4.in new file mode 100644 index 0000000..dfcc9f0 --- /dev/null +++ b/CloudflightCodingContest/files/level1/level1_4.in @@ -0,0 +1,62 @@ +100 +60 +21,57 +3,95 +11,97 +80,81 +75,82 +57,91 +85,90 +54,71 +13,64 +43,93 +60,93 +51,75 +22,91 +81,84 +83,100 +87,91 +55,65 +63,78 +89,100 +68,89 +49,71 +50,83 +15,19 +31,98 +16,19 +42,43 +34,94 +70,90 +76,97 +66,80 +36,62 +79,98 +19,68 +77,84 +27,97 +35,80 +29,71 +6,59 +65,85 +53,98 +74,99 +23,96 +52,57 +7,24 +8,48 +56,93 +30,95 +62,89 +38,51 +14,23 +37,80 +24,66 +82,97 +32,82 +71,85 +78,96 +47,94 +59,85 +5,60 +61,97 diff --git a/CloudflightCodingContest/files/level1/level1_4.out b/CloudflightCodingContest/files/level1/level1_4.out new file mode 100644 index 0000000..4ae210a --- /dev/null +++ b/CloudflightCodingContest/files/level1/level1_4.out @@ -0,0 +1 @@ +60,112,106,6,17,50,7,36,71,70,48,44,92,7,19,6,28,27,13,32,44,54,7,87,5,4,79,31,30,25,43,25,73,15,92,63,64,72,32,65,36,95,18,24,59,54,86,40,24,13,59,63,18,69,24,25,69,42,75,50 diff --git a/CloudflightCodingContest/files/level1/level1_4.sol b/CloudflightCodingContest/files/level1/level1_4.sol new file mode 100644 index 0000000..4ae210a --- /dev/null +++ b/CloudflightCodingContest/files/level1/level1_4.sol @@ -0,0 +1 @@ +60,112,106,6,17,50,7,36,71,70,48,44,92,7,19,6,28,27,13,32,44,54,7,87,5,4,79,31,30,25,43,25,73,15,92,63,64,72,32,65,36,95,18,24,59,54,86,40,24,13,59,63,18,69,24,25,69,42,75,50 diff --git a/CloudflightCodingContest/files/level1/level1_5.in b/CloudflightCodingContest/files/level1/level1_5.in new file mode 100644 index 0000000..7b3cae1 --- /dev/null +++ b/CloudflightCodingContest/files/level1/level1_5.in @@ -0,0 +1,112 @@ +300 +110 +177,217 +133,226 +188,196 +169,292 +286,290 +174,272 +102,133 +181,206 +289,299 +254,270 +124,281 +5,208 +11,89 +250,289 +43,288 +100,259 +139,265 +189,283 +213,238 +48,166 +108,290 +268,274 +89,101 +115,188 +157,260 +61,185 +247,260 +261,288 +178,270 +193,282 +167,253 +217,278 +32,33 +62,198 +22,189 +67,245 +121,139 +228,238 +105,146 +226,265 +190,284 +2,38 +76,227 +207,219 +129,201 +218,281 +140,227 +58,232 +10,155 +101,130 +37,49 +65,156 +202,211 +227,285 +70,175 +85,116 +203,272 +97,190 +201,300 +233,294 +183,191 +198,246 +196,203 +110,223 +26,288 +12,73 +256,259 +163,252 +63,168 +130,238 +145,241 +164,250 +20,71 +265,299 +134,171 +282,297 +92,226 +223,281 +280,299 +236,287 +135,272 +104,199 +77,273 +66,97 +170,220 +24,140 +238,294 +162,291 +239,279 +144,202 +161,282 +231,294 +149,187 +235,246 +123,150 +150,182 +246,274 +3,59 +159,222 +277,295 +224,250 +229,290 +52,216 +151,264 +180,263 +53,271 +96,225 +109,300 +84,99 +285,298 diff --git a/CloudflightCodingContest/files/level1/level1_5.out b/CloudflightCodingContest/files/level1/level1_5.out new file mode 100644 index 0000000..1820711 --- /dev/null +++ b/CloudflightCodingContest/files/level1/level1_5.out @@ -0,0 +1 @@ +44,97,12,126,6,101,35,27,12,18,159,205,81,41,247,165,129,97,29,120,186,8,15,75,108,130,15,29,95,91,89,67,3,141,169,180,21,15,44,46,96,39,154,14,76,68,89,179,149,34,14,95,12,64,107,33,71,98,103,65,10,51,10,115,264,63,5,92,109,111,98,88,53,36,40,17,138,66,21,54,139,99,198,34,52,118,59,133,42,61,126,67,42,15,30,35,31,58,68,20,33,65,167,115,86,220,135,194,18,16 diff --git a/CloudflightCodingContest/files/level1/level1_5.sol b/CloudflightCodingContest/files/level1/level1_5.sol new file mode 100644 index 0000000..1820711 --- /dev/null +++ b/CloudflightCodingContest/files/level1/level1_5.sol @@ -0,0 +1 @@ +44,97,12,126,6,101,35,27,12,18,159,205,81,41,247,165,129,97,29,120,186,8,15,75,108,130,15,29,95,91,89,67,3,141,169,180,21,15,44,46,96,39,154,14,76,68,89,179,149,34,14,95,12,64,107,33,71,98,103,65,10,51,10,115,264,63,5,92,109,111,98,88,53,36,40,17,138,66,21,54,139,99,198,34,52,118,59,133,42,61,126,67,42,15,30,35,31,58,68,20,33,65,167,115,86,220,135,194,18,16 diff --git a/CloudflightCodingContest/files/level1/level1_6.in b/CloudflightCodingContest/files/level1/level1_6.in new file mode 100644 index 0000000..5f2a274 --- /dev/null +++ b/CloudflightCodingContest/files/level1/level1_6.in @@ -0,0 +1,242 @@ +400 +240 +66,266 +30,70 +119,395 +240,308 +343,382 +34,237 +107,261 +355,377 +114,374 +286,396 +235,247 +139,393 +173,183 +208,231 +362,376 +302,358 +309,375 +312,389 +278,322 +304,316 +29,201 +89,133 +258,383 +353,361 +284,316 +55,393 +338,366 +198,246 +62,350 +120,147 +201,292 +187,197 +46,315 +106,371 +252,350 +259,391 +231,304 +169,287 +121,170 +244,250 +155,216 +385,392 +13,216 +151,337 +168,242 +103,204 +219,231 +154,158 +144,209 +247,320 +64,382 +146,147 +251,277 +366,375 +157,245 +189,224 +225,226 +379,400 +80,279 +83,353 +202,365 +137,275 +288,325 +306,350 +93,178 +297,332 +265,331 +104,258 +205,241 +63,363 +97,112 +77,342 +218,300 +290,338 +294,342 +26,27 +175,295 +206,285 +197,311 +14,99 +248,371 +33,329 +260,320 +273,350 +156,230 +267,304 +152,345 +31,208 +185,224 +72,311 +79,149 +181,203 +367,396 +45,317 +20,23 +371,382 +300,377 +327,383 +41,99 +384,392 +227,264 +230,239 +95,252 +373,399 +377,393 +233,305 +241,338 +191,390 +303,332 +324,358 +69,373 +133,134 +222,320 +145,232 +263,329 +17,59 +129,216 +19,283 +125,219 +136,281 +194,304 +162,299 +108,170 +24,103 +345,390 +166,174 +128,151 +211,215 +364,375 +212,354 +261,299 +50,120 +40,290 +61,171 +289,361 +49,333 +356,378 +193,303 +282,338 +344,399 +178,283 +224,327 +11,369 +42,162 +70,145 +274,389 +322,331 +266,344 +387,399 +102,252 +301,374 +188,324 +48,288 +298,346 +262,285 +134,266 +269,352 +254,268 +253,347 +47,171 +358,382 +341,346 +349,354 +271,399 +183,324 +370,393 +57,325 +332,397 +74,247 +53,76 +27,358 +335,356 +239,271 +109,252 +58,390 +6,105 +3,40 +174,356 +234,385 +200,310 +87,286 +352,387 +71,261 +342,400 +94,148 +52,302 +186,227 +36,129 +51,188 +389,390 +92,214 +337,391 +307,310 +238,336 +196,391 +375,386 +143,174 +213,352 +105,274 +2,393 +323,345 +161,336 +4,393 +116,267 +236,337 +293,320 +54,222 +390,400 +59,323 +365,384 +299,394 +32,209 +130,150 +138,201 +348,384 +292,327 +277,362 +215,220 +23,185 +223,248 +276,400 +142,363 +209,398 +28,186 +321,362 +207,371 +229,354 +177,364 +369,378 +123,156 +1,170 +199,374 +314,333 +115,234 +250,331 +272,359 +99,284 +243,339 +68,269 +117,270 diff --git a/CloudflightCodingContest/files/level1/level1_6.out b/CloudflightCodingContest/files/level1/level1_6.out new file mode 100644 index 0000000..c91e39a --- /dev/null +++ b/CloudflightCodingContest/files/level1/level1_6.out @@ -0,0 +1 @@ +216,70,285,91,45,231,165,28,272,123,26,269,25,37,21,61,68,79,55,15,203,59,148,14,45,359,33,71,306,35,111,26,297,277,119,154,99,139,57,12,80,10,233,205,96,116,27,9,81,97,334,3,48,14,105,58,3,23,211,283,182,155,50,47,100,45,84,168,53,317,26,278,105,59,57,11,143,100,138,114,146,325,81,91,92,53,211,208,64,251,83,42,33,301,5,13,84,58,87,12,63,23,170,28,18,98,119,225,33,36,319,4,123,102,84,72,102,295,107,163,135,155,72,111,49,12,31,8,18,163,58,94,280,129,84,309,27,136,69,60,127,128,388,148,89,128,13,95,15,166,79,161,266,57,42,150,99,26,114,151,29,11,8,144,166,26,289,70,185,41,364,27,56,152,352,126,60,206,176,131,214,42,203,65,68,272,65,121,160,4,138,60,5,123,220,13,43,159,182,418,25,194,416,161,126,37,190,12,283,25,103,207,26,79,41,46,97,9,195,44,137,237,209,190,46,184,151,210,13,40,197,197,21,130,104,102,200,118,217,162 diff --git a/CloudflightCodingContest/files/level1/level1_6.sol b/CloudflightCodingContest/files/level1/level1_6.sol new file mode 100644 index 0000000..c91e39a --- /dev/null +++ b/CloudflightCodingContest/files/level1/level1_6.sol @@ -0,0 +1 @@ +216,70,285,91,45,231,165,28,272,123,26,269,25,37,21,61,68,79,55,15,203,59,148,14,45,359,33,71,306,35,111,26,297,277,119,154,99,139,57,12,80,10,233,205,96,116,27,9,81,97,334,3,48,14,105,58,3,23,211,283,182,155,50,47,100,45,84,168,53,317,26,278,105,59,57,11,143,100,138,114,146,325,81,91,92,53,211,208,64,251,83,42,33,301,5,13,84,58,87,12,63,23,170,28,18,98,119,225,33,36,319,4,123,102,84,72,102,295,107,163,135,155,72,111,49,12,31,8,18,163,58,94,280,129,84,309,27,136,69,60,127,128,388,148,89,128,13,95,15,166,79,161,266,57,42,150,99,26,114,151,29,11,8,144,166,26,289,70,185,41,364,27,56,152,352,126,60,206,176,131,214,42,203,65,68,272,65,121,160,4,138,60,5,123,220,13,43,159,182,418,25,194,416,161,126,37,190,12,283,25,103,207,26,79,41,46,97,9,195,44,137,237,209,190,46,184,151,210,13,40,197,197,21,130,104,102,200,118,217,162 diff --git a/CloudflightCodingContest/files/level2/level2.pdf b/CloudflightCodingContest/files/level2/level2.pdf new file mode 100644 index 0000000..8e439b3 Binary files /dev/null and b/CloudflightCodingContest/files/level2/level2.pdf differ diff --git a/CloudflightCodingContest/files/level2/level2_0.in b/CloudflightCodingContest/files/level2/level2_0.in new file mode 100644 index 0000000..03617f4 --- /dev/null +++ b/CloudflightCodingContest/files/level2/level2_0.in @@ -0,0 +1,12 @@ +40 +10 +11,13,28 +30,37,62 +4,24,102 +6,33,138 +27,30,154 +20,32,170 +11,19,196 +2,20,209 +18,21,239 +23,24,273 \ No newline at end of file diff --git a/CloudflightCodingContest/files/level2/level2_0.out b/CloudflightCodingContest/files/level2/level2_0.out new file mode 100644 index 0000000..4450706 --- /dev/null +++ b/CloudflightCodingContest/files/level2/level2_0.out @@ -0,0 +1 @@ +31,70,123,166,158,183,205,228,243,275 diff --git a/CloudflightCodingContest/files/level2/level2_0.sol b/CloudflightCodingContest/files/level2/level2_0.sol new file mode 100644 index 0000000..4450706 --- /dev/null +++ b/CloudflightCodingContest/files/level2/level2_0.sol @@ -0,0 +1 @@ +31,70,123,166,158,183,205,228,243,275 diff --git a/CloudflightCodingContest/files/level2/level2_1.in b/CloudflightCodingContest/files/level2/level2_1.in new file mode 100644 index 0000000..a0cecc8 --- /dev/null +++ b/CloudflightCodingContest/files/level2/level2_1.in @@ -0,0 +1,12 @@ +40 +10 +11,13,54 +30,37,15 +4,24,11 +6,33,12 +27,30,47 +20,32,12 +8,30,44 +12,33,42 +5,33,28 +22,29,29 diff --git a/CloudflightCodingContest/files/level2/level2_1.out b/CloudflightCodingContest/files/level2/level2_1.out new file mode 100644 index 0000000..fd9d8fd --- /dev/null +++ b/CloudflightCodingContest/files/level2/level2_1.out @@ -0,0 +1 @@ +57,23,33,40,51,25,67,64,57,40 diff --git a/CloudflightCodingContest/files/level2/level2_1.sol b/CloudflightCodingContest/files/level2/level2_1.sol new file mode 100644 index 0000000..fd9d8fd --- /dev/null +++ b/CloudflightCodingContest/files/level2/level2_1.sol @@ -0,0 +1 @@ +57,23,33,40,51,25,67,64,57,40 diff --git a/CloudflightCodingContest/files/level2/level2_2.in b/CloudflightCodingContest/files/level2/level2_2.in new file mode 100644 index 0000000..a61dd75 --- /dev/null +++ b/CloudflightCodingContest/files/level2/level2_2.in @@ -0,0 +1,27 @@ +80 +25 +61,62,41 +68,78,30 +64,73,9 +37,68,52 +33,55,28 +31,43,7 +66,67,32 +19,40,34 +34,65,44 +32,68,26 +22,74,14 +13,41,4 +47,49,39 +25,70,20 +58,60,21 +21,30,29 +1,42,54 +29,66,38 +42,78,21 +67,80,25 +48,52,29 +24,60,49 +40,44,41 +52,58,3 +39,76,5 diff --git a/CloudflightCodingContest/files/level2/level2_2.out b/CloudflightCodingContest/files/level2/level2_2.out new file mode 100644 index 0000000..7ce7799 --- /dev/null +++ b/CloudflightCodingContest/files/level2/level2_2.out @@ -0,0 +1 @@ +44,41,19,84,56,20,36,58,78,67,69,33,42,67,24,39,96,77,58,39,34,86,47,10,43 diff --git a/CloudflightCodingContest/files/level2/level2_3.in b/CloudflightCodingContest/files/level2/level2_3.in new file mode 100644 index 0000000..b9f982d --- /dev/null +++ b/CloudflightCodingContest/files/level2/level2_3.in @@ -0,0 +1,42 @@ +80 +40 +50,51,4 +12,52,19 +19,62,47 +62,74,10 +60,80,4 +23,44,4 +17,47,32 +20,72,10 +58,63,34 +13,17,36 +48,66,22 +70,77,28 +61,69,49 +39,47,27 +11,65,21 +25,42,5 +4,27,40 +21,39,27 +10,76,53 +14,29,7 +9,72,11 +41,46,18 +55,62,6 +45,70,27 +65,78,29 +3,10,46 +43,48,40 +42,71,45 +63,80,1 +36,63,47 +2,4,10 +49,66,20 +34,43,35 +6,21,52 +67,70,37 +68,78,5 +26,71,45 +40,51,41 +16,42,21 +37,57,39 diff --git a/CloudflightCodingContest/files/level2/level2_3.out b/CloudflightCodingContest/files/level2/level2_3.out new file mode 100644 index 0000000..b8772af --- /dev/null +++ b/CloudflightCodingContest/files/level2/level2_3.out @@ -0,0 +1 @@ +6,60,91,23,25,27,65,63,40,41,41,36,58,36,79,23,64,49,122,23,76,24,14,54,43,54,46,81,20,79,13,38,45,69,41,16,91,63,48,79 diff --git a/CloudflightCodingContest/files/level2/level2_4.in b/CloudflightCodingContest/files/level2/level2_4.in new file mode 100644 index 0000000..9b6fc6d --- /dev/null +++ b/CloudflightCodingContest/files/level2/level2_4.in @@ -0,0 +1,62 @@ +100 +60 +41,100,37 +29,71,5 +1,93,41 +43,94,30 +44,92,43 +85,93,26 +21,76,40 +80,87,3 +8,48,28 +9,83,36 +3,34,5 +36,62,26 +38,51,22 +89,96,26 +37,80,17 +24,36,54 +22,44,34 +32,82,46 +83,89,2 +64,72,51 +78,96,5 +82,100,27 +60,72,28 +25,45,39 +61,97,45 +58,94,12 +46,76,19 +62,93,54 +28,67,46 +14,50,21 +45,83,9 +7,22,31 +63,84,14 +69,87,45 +49,86,45 +53,88,54 +48,66,28 +39,84,43 +23,41,35 +81,91,48 +74,91,37 +52,53,55 +2,40,48 +57,85,22 +68,77,31 +26,65,26 +54,55,55 +66,70,42 +87,95,17 +72,86,19 +70,77,17 +40,75,8 +90,91,14 +77,85,47 +15,17,50 +50,85,22 +65,81,19 +67,82,8 +33,38,41 +86,97,46 diff --git a/CloudflightCodingContest/files/level2/level2_4.out b/CloudflightCodingContest/files/level2/level2_4.out new file mode 100644 index 0000000..9541b0c --- /dev/null +++ b/CloudflightCodingContest/files/level2/level2_4.out @@ -0,0 +1 @@ +100,55,134,88,96,35,99,11,73,111,37,60,36,35,66,67,57,99,9,62,24,46,46,64,89,49,56,89,88,58,51,47,36,65,88,94,54,95,56,61,57,62,87,57,41,73,58,52,26,36,25,47,16,59,53,61,38,24,48,58 diff --git a/CloudflightCodingContest/files/level2/level2_5.in b/CloudflightCodingContest/files/level2/level2_5.in new file mode 100644 index 0000000..3d9827b --- /dev/null +++ b/CloudflightCodingContest/files/level2/level2_5.in @@ -0,0 +1,112 @@ +300 +110 +110,223,15 +192,250,11 +2,216,50 +163,252,25 +25,180,18 +254,291,18 +46,60,25 +20,71,22 +67,256,12 +14,164,15 +203,246,2 +92,226,23 +43,208,18 +236,287,54 +57,112,55 +77,273,54 +17,248,31 +170,220,42 +144,176,9 +162,291,24 +250,259,41 +244,247,35 +10,241,27 +85,294,23 +235,246,23 +69,124,43 +246,274,7 +208,299,53 +159,222,37 +3,13,47 +229,290,2 +189,260,51 +151,264,21 +133,250,35 +96,225,46 +84,99,44 +265,291,8 +13,73,50 +150,269,37 +78,247,35 +211,243,55 +215,252,31 +56,300,34 +97,196,40 +99,199,14 +182,296,2 +66,297,52 +138,254,15 +256,283,44 +89,244,13 +277,283,3 +238,282,48 +155,273,26 +8,170,13 +184,200,32 +181,287,52 +119,268,7 +276,277,19 +218,293,42 +101,239,15 +126,175,9 +274,280,32 +275,282,30 +279,289,43 +129,231,41 +263,270,52 +135,169,9 +261,295,52 +33,292,17 +42,182,12 +11,287,44 +29,98,31 +113,121,27 +16,117,5 +280,299,14 +148,176,48 +191,262,52 +217,227,55 +123,274,48 +86,245,37 +1,272,21 +87,237,25 +241,268,42 +50,298,7 +76,113,44 +95,146,50 +24,231,38 +41,240,38 +154,278,18 +193,226,20 +30,185,6 +72,140,42 +28,149,32 +213,262,36 +102,287,18 +136,160,49 +253,277,46 +223,245,12 +140,277,44 +286,292,17 +137,272,55 +290,299,37 +252,287,5 +117,209,48 +183,268,15 +127,269,51 +132,151,13 +243,259,24 +45,132,12 +21,23,38 diff --git a/CloudflightCodingContest/files/level2/level2_5.out b/CloudflightCodingContest/files/level2/level2_5.out new file mode 100644 index 0000000..57c2d2d --- /dev/null +++ b/CloudflightCodingContest/files/level2/level2_5.out @@ -0,0 +1 @@ +130,71,265,120,174,58,42,77,202,166,46,158,184,106,112,255,263,98,45,155,51,41,260,233,38,102,36,146,104,58,64,126,136,153,176,61,35,111,157,207,88,69,284,140,118,119,285,134,72,169,10,93,147,180,49,163,158,23,120,156,59,39,38,54,144,61,44,88,278,154,321,102,38,107,34,77,124,67,203,198,295,178,70,256,83,102,248,238,148,54,165,114,157,87,208,75,72,35,182,24,195,47,41,143,101,196,33,41,100,44 diff --git a/CloudflightCodingContest/files/level2/level2_6.in b/CloudflightCodingContest/files/level2/level2_6.in new file mode 100644 index 0000000..e107b04 --- /dev/null +++ b/CloudflightCodingContest/files/level2/level2_6.in @@ -0,0 +1,252 @@ +400 +250 +233,341,17 +19,283,30 +99,303,25 +136,281,6 +324,357,24 +93,153,42 +24,103,40 +152,245,9 +166,174,45 +81,99,28 +45,284,46 +212,354,10 +201,338,21 +40,290,30 +297,387,4 +368,370,6 +49,333,54 +356,378,9 +343,352,38 +175,399,21 +178,283,26 +245,356,54 +42,162,25 +225,234,45 +322,331,24 +266,344,33 +363,381,47 +227,388,12 +139,400,51 +234,297,13 +114,282,18 +262,285,1 +182,223,44 +269,352,27 +250,263,39 +185,252,48 +344,392,35 +246,249,53 +349,354,19 +293,392,1 +29,400,33 +57,325,33 +25,234,27 +53,76,14 +27,358,43 +216,272,10 +239,271,43 +209,289,49 +58,390,19 +145,253,21 +156,262,4 +111,114,21 +87,286,10 +191,362,23 +31,200,22 +352,387,33 +71,261,9 +342,400,4 +345,384,12 +194,274,27 +244,348,44 +80,145,3 +341,392,51 +353,366,36 +51,188,24 +23,297,4 +337,391,22 +279,390,2 +196,391,36 +36,385,45 +143,174,31 +267,282,23 +278,298,24 +323,345,25 +4,393,21 +251,289,16 +218,268,41 +70,243,1 +54,222,28 +10,257,5 +103,240,14 +299,394,54 +347,349,32 +230,318,30 +304,358,12 +140,177,18 +292,327,22 +277,362,42 +286,381,52 +59,265,35 +223,248,29 +326,375,36 +142,363,24 +20,391,41 +28,186,23 +320,387,11 +229,354,48 +302,303,7 +177,311,22 +146,239,5 +203,271,18 +373,383,23 +199,374,53 +102,202,20 +309,329,9 +77,197,54 +44,329,15 +108,141,40 +291,319,1 +272,359,37 +94,329,50 +173,360,11 +213,259,20 +243,339,16 +253,347,13 +117,270,22 +283,286,24 +60,84,4 +376,400,36 +259,302,9 +86,304,2 +132,150,6 +149,245,54 +106,229,10 +100,152,13 +7,291,11 +228,287,35 +365,388,14 +331,382,41 +66,135,34 +386,393,7 +226,260,28 +236,240,46 +126,141,23 +163,333,44 +289,369,3 +128,372,16 +242,295,16 +184,339,45 +183,248,33 +281,299,11 +200,232,14 +237,245,20 +204,356,47 +123,227,1 +82,209,1 +192,317,49 +104,312,20 +98,181,43 +338,394,1 +107,176,38 +325,373,16 +235,290,51 +195,359,22 +164,173,54 +172,272,32 +232,369,21 +125,143,13 +130,141,22 +67,260,53 +380,391,35 +287,292,30 +275,285,2 +46,316,24 +359,394,25 +336,361,42 +22,232,27 +176,380,5 +131,287,54 +328,337,4 +288,290,12 +61,286,29 +73,236,15 +141,340,35 +383,389,17 +354,387,38 +21,236,48 +314,317,13 +5,132,18 +231,296,17 +270,377,3 +361,398,4 +179,191,26 +321,346,47 +222,346,48 +305,335,54 +190,244,5 +255,347,45 +135,395,14 +110,265,26 +41,182,48 +35,337,26 +208,370,29 +220,267,44 +224,238,30 +273,293,12 +308,350,19 +310,331,4 +327,384,20 +379,396,34 +116,128,49 +9,113,46 +85,250,6 +89,162,9 +17,56,38 +301,305,50 +78,100,39 +74,102,52 +193,239,7 +360,384,55 +181,399,41 +189,194,45 +138,386,3 +167,257,12 +357,396,7 +319,323,11 +72,353,36 +32,177,9 +375,391,39 +157,363,37 +1,143,2 +252,399,23 +12,49,38 +154,294,8 +76,140,13 +186,203,29 +118,272,49 +37,323,27 +312,319,51 +14,284,21 +91,143,18 +389,394,45 +264,373,11 +265,312,6 +238,301,5 +254,318,15 +155,344,48 +171,336,34 +119,259,2 +274,323,24 +390,394,38 +137,343,25 +371,399,55 +296,358,15 +105,161,9 +112,241,25 +382,397,44 +30,371,6 +247,296,11 +68,307,8 diff --git a/CloudflightCodingContest/files/level2/level2_6.out b/CloudflightCodingContest/files/level2/level2_6.out new file mode 100644 index 0000000..c70eb19 --- /dev/null +++ b/CloudflightCodingContest/files/level2/level2_6.out @@ -0,0 +1 @@ +128,318,253,173,59,120,144,127,56,58,299,154,176,295,96,9,350,34,50,263,145,170,163,62,38,119,68,177,326,82,200,25,103,112,57,130,87,59,25,111,423,316,255,38,397,70,79,139,361,147,132,29,234,206,207,69,222,64,56,120,152,98,105,50,169,296,82,117,243,414,76,39,46,50,436,62,100,198,205,268,164,152,37,120,69,65,60,130,151,252,60,92,267,436,199,80,178,9,169,123,93,37,240,140,32,182,308,84,36,131,298,208,77,120,109,186,30,30,62,56,236,25,165,151,75,318,103,38,97,112,15,66,54,41,231,92,284,78,215,108,30,51,29,210,123,149,185,246,140,62,120,70,110,199,71,158,165,32,39,257,51,36,13,311,68,68,263,222,223,14,16,261,201,254,24,76,283,17,169,87,112,42,41,75,182,87,70,140,297,195,207,346,200,101,50,35,71,29,85,52,67,162,196,100,99,59,65,89,59,83,273,52,276,113,48,17,326,170,61,263,162,178,94,166,97,47,214,326,59,317,94,52,123,58,78,82,254,224,165,79,43,251,84,83,69,169,63,360,62,270 diff --git a/CloudflightCodingContest/files/level2/level2_notes.txt b/CloudflightCodingContest/files/level2/level2_notes.txt new file mode 100644 index 0000000..62dc074 --- /dev/null +++ b/CloudflightCodingContest/files/level2/level2_notes.txt @@ -0,0 +1,255 @@ +/home/andy/.jdks/openjdk-21/bin/java -javaagent:/snap/intellij-idea-community/456/lib/idea_rt.jar=43773:/snap/intellij-idea-community/456/bin -Dfile.encoding=UTF-8 -Dsun.stdout.encoding=UTF-8 -Dsun.stderr.encoding=UTF-8 -classpath /home/andy/IdeaProjects/CloudflightCodingContest/target/classes:/home/andy/.m2/repository/org/junit/jupiter/junit-jupiter-api/5.10.0/junit-jupiter-api-5.10.0.jar:/home/andy/.m2/repository/org/opentest4j/opentest4j/1.3.0/opentest4j-1.3.0.jar:/home/andy/.m2/repository/org/junit/platform/junit-platform-commons/1.10.0/junit-platform-commons-1.10.0.jar:/home/andy/.m2/repository/org/apiguardian/apiguardian-api/1.1.2/apiguardian-api-1.1.2.jar at.salento.Main +61,62,41 +68,78,30 +64,73,9 +37,68,52 +33,55,28 +31,43,7 +66,67,32 +19,40,34 +34,65,44 +32,68,26 +22,74,14 +13,41,4 +47,49,39 +25,70,20 +58,60,21 +21,30,29 +1,42,54 +29,66,38 +42,78,21 +67,80,25 +48,52,29 +24,60,49 +40,44,41 +52,58,3 +39,76,5 +Queue:[ Car(start: 61, end: 62, arr.t.: 00, delay: 00, est: 41, tot.arr.t: 00, order: 00) +, Car(start: 68, end: 78, arr.t.: 00, delay: 00, est: 30, tot.arr.t: 00, order: 01) +, Car(start: 64, end: 73, arr.t.: 00, delay: 00, est: 09, tot.arr.t: 00, order: 02) +, Car(start: 37, end: 68, arr.t.: 00, delay: 00, est: 52, tot.arr.t: 00, order: 03) +, Car(start: 33, end: 55, arr.t.: 00, delay: 00, est: 28, tot.arr.t: 00, order: 04) +, Car(start: 31, end: 43, arr.t.: 00, delay: 00, est: 07, tot.arr.t: 00, order: 05) +, Car(start: 66, end: 67, arr.t.: 00, delay: 00, est: 32, tot.arr.t: 00, order: 06) +, Car(start: 19, end: 40, arr.t.: 00, delay: 00, est: 34, tot.arr.t: 00, order: 07) +, Car(start: 34, end: 65, arr.t.: 00, delay: 00, est: 44, tot.arr.t: 00, order: 08) +, Car(start: 32, end: 68, arr.t.: 00, delay: 00, est: 26, tot.arr.t: 00, order: 09) +, Car(start: 22, end: 74, arr.t.: 00, delay: 00, est: 14, tot.arr.t: 00, order: 10) +, Car(start: 13, end: 41, arr.t.: 00, delay: 00, est: 04, tot.arr.t: 00, order: 11) +, Car(start: 47, end: 49, arr.t.: 00, delay: 00, est: 39, tot.arr.t: 00, order: 12) +, Car(start: 25, end: 70, arr.t.: 00, delay: 00, est: 20, tot.arr.t: 00, order: 13) +, Car(start: 58, end: 60, arr.t.: 00, delay: 00, est: 21, tot.arr.t: 00, order: 14) +, Car(start: 21, end: 30, arr.t.: 00, delay: 00, est: 29, tot.arr.t: 00, order: 15) +, Car(start: 01, end: 42, arr.t.: 00, delay: 00, est: 54, tot.arr.t: 00, order: 16) +, Car(start: 29, end: 66, arr.t.: 00, delay: 00, est: 38, tot.arr.t: 00, order: 17) +, Car(start: 42, end: 78, arr.t.: 00, delay: 00, est: 21, tot.arr.t: 00, order: 18) +, Car(start: 67, end: 80, arr.t.: 00, delay: 00, est: 25, tot.arr.t: 00, order: 19) +, Car(start: 48, end: 52, arr.t.: 00, delay: 00, est: 29, tot.arr.t: 00, order: 20) +, Car(start: 24, end: 60, arr.t.: 00, delay: 00, est: 49, tot.arr.t: 00, order: 21) +, Car(start: 40, end: 44, arr.t.: 00, delay: 00, est: 41, tot.arr.t: 00, order: 22) +, Car(start: 52, end: 58, arr.t.: 00, delay: 00, est: 03, tot.arr.t: 00, order: 23) +, Car(start: 39, end: 76, arr.t.: 00, delay: 00, est: 05, tot.arr.t: 00, order: 24) +] +sec: 1: +sec: 2: +sec: 3: (23) +sec: 4: (11) (23) +sec: 5: (11) (24) (23) +sec: 6: (11) (24) (23) +sec: 7: (11) (05) (24) (23) +sec: 8: (11) (05) (24) (23) +sec: 9: (11) (05) (24) (23) (02) +sec: 10: (11) (05) (24) (02) +sec: 11: (11) (05) (24) (02) +sec: 12: (11) (05) (24) (02) +sec: 13: (11) (05) (24) (02) +sec: 14: (11) (05) (24) (02) +sec: 15: (10) (11) (05) (24) (02) +sec: 16: (10) (11) (05) (24) (02) +sec: 17: (10) (11) (05) (24) (02) +sec: 18: (10) (11) (05) (24) (02) +sec: 19: (10) (11) (05) (24) +sec: 20: (13) (10) (11) (24) +sec: 21: (13) (10) (11) (18) (24) (14) +sec: 22: (13) (10) (11) (18) (24) (14) +sec: 23: (13) (10) (11) (18) (24) (14) +sec: 24: (13) (10) (11) (18) (24) +sec: 25: (13) (10) (11) (18) (24) (19) +sec: 26: (13) (10) (11) (18) (24) (19) +sec: 27: (13) (10) (11) (18) (24) (19) +sec: 28: (13) (10) (11) (18) (24) (19) +sec: 29: (15) (09) (13) (10) (11) (20) (18) (24) (19) +sec: 30: (15) (09) (13) (10) (11) (20) (18) (24) (01) (19) +sec: 31: (15) (09) (13) (10) (11) (20) (18) (24) (01) (19) +sec: 32: (15) (04) (09) (13) (10) (11) (20) (18) (24) (01) (19) +sec: 33: (15) (04) (09) (13) (10) (20) (18) (24) (01) (19) +sec: 34: (15) (04) (09) (13) (10) (18) (06) (24) (01) (19) +sec: 35: (07) (15) (04) (09) (13) (10) (18) (06) (24) (01) (19) +sec: 36: (07) (15) (04) (09) (13) (10) (18) (24) (01) (19) +sec: 37: (07) (15) (04) (09) (13) (10) (18) (24) (01) (19) +sec: 38: (07) (15) (04) (09) (13) (10) (18) (24) (01) +sec: 39: (07) (17) (04) (09) (13) (10) (12) (18) (24) (01) +sec: 40: (07) (17) (04) (09) (13) (10) (12) (18) (24) (01) +sec: 41: (07) (17) (22) (04) (09) (13) (10) (12) (18) (24) +sec: 42: (07) (17) (22) (04) (09) (13) (10) (00) (18) (24) +sec: 43: (07) (17) (22) (04) (09) (13) (10) (00) (18) +sec: 44: (07) (17) (22) (04) (09) (13) (10) (18) +sec: 45: (07) (17) (22) (04) (09) (13) (10) (18) +sec: 46: (07) (08) (17) (22) (04) (09) (13) (10) (18) +sec: 47: (07) (08) (17) (04) (09) (13) (10) (18) +sec: 48: (07) (08) (17) (04) (09) (13) (10) (18) +sec: 49: (21) (07) (08) (17) (04) (09) (13) (10) (18) +sec: 50: (21) (07) (08) (17) (04) (09) (13) (10) (18) +sec: 51: (21) (07) (08) (17) (04) (09) (13) (10) (18) +sec: 52: (21) (07) (03) (08) (17) (04) (09) (13) (10) (18) +sec: 53: (21) (07) (03) (08) (17) (04) (09) (13) (10) (18) +sec: 54: (16) (21) (07) (03) (08) (17) (04) (09) (13) (10) (18) +sec: 55: (16) (21) (07) (03) (08) (17) (04) (09) (13) (10) (18) +sec: 56: (16) (21) (07) (03) (08) (17) (09) (13) (10) (18) +sec: 57: (16) (21) (07) (03) (08) (17) (09) (13) (10) (18) +sec: 58: (16) (21) (03) (08) (17) (09) (13) (10) +sec: 59: (16) (21) (03) (08) (17) (09) (13) (10) +sec: 60: (16) (21) (03) (08) (17) (09) (13) (10) +sec: 61: (16) (21) (03) (08) (17) (09) (13) (10) +sec: 62: (16) (21) (03) (08) (17) (09) (13) (10) +sec: 63: (16) (21) (03) (08) (17) (09) (13) (10) +sec: 64: (16) (21) (03) (08) (17) (09) (13) (10) +sec: 65: (16) (21) (03) (08) (17) (09) (13) (10) +sec: 66: (16) (21) (03) (08) (17) (09) (13) (10) +sec: 67: (16) (21) (03) (08) (17) (10) +sec: 68: (16) (21) (03) (08) (17) (10) +sec: 69: (16) (21) (03) (08) (17) +sec: 70: (16) (21) (03) (08) (17) +sec: 71: (16) (21) (03) (08) (17) +sec: 72: (16) (21) (03) (08) (17) +sec: 73: (16) (21) (03) (08) (17) +sec: 74: (16) (21) (03) (08) (17) +sec: 75: (16) (21) (03) (08) (17) +sec: 76: (16) (21) (03) (08) (17) +sec: 77: (16) (21) (03) (08) +sec: 78: (16) (21) (03) +sec: 79: (16) (21) (03) +sec: 80: (16) (21) (03) +sec: 81: (16) (21) (03) +sec: 82: (16) (21) (03) +sec: 83: (16) (21) (03) +sec: 84: (16) (21) +sec: 85: (16) (21) +sec: 86: (16) +sec: 87: (16) +sec: 88: (16) +sec: 89: (16) +sec: 90: (16) +sec: 91: (16) +sec: 92: (16) +sec: 93: (16) +sec: 94: (16) +sec: 95: (16) +sec: 96: +Copy Cars: [ Car(start: 61, end: 62, arr.t.: 44, delay: 00, est: 41, tot.arr.t: 44, order: 00) +, Car(start: 68, end: 78, arr.t.: 41, delay: 00, est: 30, tot.arr.t: 41, order: 01) +, Car(start: 64, end: 73, arr.t.: 19, delay: 00, est: 09, tot.arr.t: 19, order: 02) +, Car(start: 37, end: 68, arr.t.: 84, delay: 00, est: 52, tot.arr.t: 84, order: 03) +, Car(start: 33, end: 55, arr.t.: 56, delay: 00, est: 28, tot.arr.t: 56, order: 04) +, Car(start: 31, end: 43, arr.t.: 20, delay: 00, est: 07, tot.arr.t: 20, order: 05) +, Car(start: 66, end: 67, arr.t.: 36, delay: 00, est: 32, tot.arr.t: 36, order: 06) +, Car(start: 19, end: 40, arr.t.: 58, delay: 00, est: 34, tot.arr.t: 58, order: 07) +, Car(start: 34, end: 65, arr.t.: 78, delay: 00, est: 44, tot.arr.t: 78, order: 08) +, Car(start: 32, end: 68, arr.t.: 67, delay: 00, est: 26, tot.arr.t: 67, order: 09) +, Car(start: 22, end: 74, arr.t.: 69, delay: 00, est: 14, tot.arr.t: 69, order: 10) +, Car(start: 13, end: 41, arr.t.: 33, delay: 00, est: 04, tot.arr.t: 33, order: 11) +, Car(start: 47, end: 49, arr.t.: 42, delay: 00, est: 39, tot.arr.t: 42, order: 12) +, Car(start: 25, end: 70, arr.t.: 67, delay: 00, est: 20, tot.arr.t: 67, order: 13) +, Car(start: 58, end: 60, arr.t.: 24, delay: 00, est: 21, tot.arr.t: 24, order: 14) +, Car(start: 21, end: 30, arr.t.: 39, delay: 00, est: 29, tot.arr.t: 39, order: 15) +, Car(start: 01, end: 42, arr.t.: 96, delay: 00, est: 54, tot.arr.t: 96, order: 16) +, Car(start: 29, end: 66, arr.t.: 77, delay: 00, est: 38, tot.arr.t: 77, order: 17) +, Car(start: 42, end: 78, arr.t.: 58, delay: 00, est: 21, tot.arr.t: 58, order: 18) +, Car(start: 67, end: 80, arr.t.: 39, delay: 00, est: 25, tot.arr.t: 39, order: 19) +, Car(start: 48, end: 52, arr.t.: 34, delay: 00, est: 29, tot.arr.t: 34, order: 20) +, Car(start: 24, end: 60, arr.t.: 86, delay: 00, est: 49, tot.arr.t: 86, order: 21) +, Car(start: 40, end: 44, arr.t.: 47, delay: 00, est: 41, tot.arr.t: 47, order: 22) +, Car(start: 52, end: 58, arr.t.: 10, delay: 00, est: 03, tot.arr.t: 10, order: 23) +, Car(start: 39, end: 76, arr.t.: 43, delay: 00, est: 05, tot.arr.t: 43, order: 24) +] +Cars in initial order:[ Car(start: 61, end: 62, arr.t.: 44, delay: 00, est: 41, tot.arr.t: 44, order: 00) +, Car(start: 68, end: 78, arr.t.: 41, delay: 00, est: 30, tot.arr.t: 41, order: 01) +, Car(start: 64, end: 73, arr.t.: 19, delay: 00, est: 09, tot.arr.t: 19, order: 02) +, Car(start: 37, end: 68, arr.t.: 84, delay: 00, est: 52, tot.arr.t: 84, order: 03) +, Car(start: 33, end: 55, arr.t.: 56, delay: 00, est: 28, tot.arr.t: 56, order: 04) +, Car(start: 31, end: 43, arr.t.: 20, delay: 00, est: 07, tot.arr.t: 20, order: 05) +, Car(start: 66, end: 67, arr.t.: 36, delay: 00, est: 32, tot.arr.t: 36, order: 06) +, Car(start: 19, end: 40, arr.t.: 58, delay: 00, est: 34, tot.arr.t: 58, order: 07) +, Car(start: 34, end: 65, arr.t.: 78, delay: 00, est: 44, tot.arr.t: 78, order: 08) +, Car(start: 32, end: 68, arr.t.: 67, delay: 00, est: 26, tot.arr.t: 67, order: 09) +, Car(start: 22, end: 74, arr.t.: 69, delay: 00, est: 14, tot.arr.t: 69, order: 10) +, Car(start: 13, end: 41, arr.t.: 33, delay: 00, est: 04, tot.arr.t: 33, order: 11) +, Car(start: 47, end: 49, arr.t.: 42, delay: 00, est: 39, tot.arr.t: 42, order: 12) +, Car(start: 25, end: 70, arr.t.: 67, delay: 00, est: 20, tot.arr.t: 67, order: 13) +, Car(start: 58, end: 60, arr.t.: 24, delay: 00, est: 21, tot.arr.t: 24, order: 14) +, Car(start: 21, end: 30, arr.t.: 39, delay: 00, est: 29, tot.arr.t: 39, order: 15) +, Car(start: 01, end: 42, arr.t.: 96, delay: 00, est: 54, tot.arr.t: 96, order: 16) +, Car(start: 29, end: 66, arr.t.: 77, delay: 00, est: 38, tot.arr.t: 77, order: 17) +, Car(start: 42, end: 78, arr.t.: 58, delay: 00, est: 21, tot.arr.t: 58, order: 18) +, Car(start: 67, end: 80, arr.t.: 39, delay: 00, est: 25, tot.arr.t: 39, order: 19) +, Car(start: 48, end: 52, arr.t.: 34, delay: 00, est: 29, tot.arr.t: 34, order: 20) +, Car(start: 24, end: 60, arr.t.: 86, delay: 00, est: 49, tot.arr.t: 86, order: 21) +, Car(start: 40, end: 44, arr.t.: 47, delay: 00, est: 41, tot.arr.t: 47, order: 22) +, Car(start: 52, end: 58, arr.t.: 10, delay: 00, est: 03, tot.arr.t: 10, order: 23) +, Car(start: 39, end: 76, arr.t.: 43, delay: 00, est: 05, tot.arr.t: 43, order: 24) +] +Ordered due to start segment: [ Car(start: 01, end: 42, arr.t.: 96, delay: 00, est: 54, tot.arr.t: 96, order: 16) +, Car(start: 13, end: 41, arr.t.: 33, delay: 00, est: 04, tot.arr.t: 33, order: 11) +, Car(start: 19, end: 40, arr.t.: 58, delay: 00, est: 34, tot.arr.t: 58, order: 07) +, Car(start: 21, end: 30, arr.t.: 39, delay: 00, est: 29, tot.arr.t: 39, order: 15) +, Car(start: 22, end: 74, arr.t.: 69, delay: 00, est: 14, tot.arr.t: 69, order: 10) +, Car(start: 24, end: 60, arr.t.: 86, delay: 00, est: 49, tot.arr.t: 86, order: 21) +, Car(start: 25, end: 70, arr.t.: 67, delay: 00, est: 20, tot.arr.t: 67, order: 13) +, Car(start: 29, end: 66, arr.t.: 77, delay: 00, est: 38, tot.arr.t: 77, order: 17) +, Car(start: 31, end: 43, arr.t.: 20, delay: 00, est: 07, tot.arr.t: 20, order: 05) +, Car(start: 32, end: 68, arr.t.: 67, delay: 00, est: 26, tot.arr.t: 67, order: 09) +, Car(start: 33, end: 55, arr.t.: 56, delay: 00, est: 28, tot.arr.t: 56, order: 04) +, Car(start: 34, end: 65, arr.t.: 78, delay: 00, est: 44, tot.arr.t: 78, order: 08) +, Car(start: 37, end: 68, arr.t.: 84, delay: 00, est: 52, tot.arr.t: 84, order: 03) +, Car(start: 39, end: 76, arr.t.: 43, delay: 00, est: 05, tot.arr.t: 43, order: 24) +, Car(start: 40, end: 44, arr.t.: 47, delay: 00, est: 41, tot.arr.t: 47, order: 22) +, Car(start: 42, end: 78, arr.t.: 58, delay: 00, est: 21, tot.arr.t: 58, order: 18) +, Car(start: 47, end: 49, arr.t.: 42, delay: 00, est: 39, tot.arr.t: 42, order: 12) +, Car(start: 48, end: 52, arr.t.: 34, delay: 00, est: 29, tot.arr.t: 34, order: 20) +, Car(start: 52, end: 58, arr.t.: 10, delay: 00, est: 03, tot.arr.t: 10, order: 23) +, Car(start: 58, end: 60, arr.t.: 24, delay: 00, est: 21, tot.arr.t: 24, order: 14) +, Car(start: 61, end: 62, arr.t.: 44, delay: 00, est: 41, tot.arr.t: 44, order: 00) +, Car(start: 64, end: 73, arr.t.: 19, delay: 00, est: 09, tot.arr.t: 19, order: 02) +, Car(start: 66, end: 67, arr.t.: 36, delay: 00, est: 32, tot.arr.t: 36, order: 06) +, Car(start: 67, end: 80, arr.t.: 39, delay: 00, est: 25, tot.arr.t: 39, order: 19) +, Car(start: 68, end: 78, arr.t.: 41, delay: 00, est: 30, tot.arr.t: 41, order: 01) +] +Ordered due to earliest start times: [ Car(start: 52, end: 58, arr.t.: 10, delay: 00, est: 03, tot.arr.t: 10, order: 23) +, Car(start: 13, end: 41, arr.t.: 33, delay: 00, est: 04, tot.arr.t: 33, order: 11) +, Car(start: 39, end: 76, arr.t.: 43, delay: 00, est: 05, tot.arr.t: 43, order: 24) +, Car(start: 31, end: 43, arr.t.: 20, delay: 00, est: 07, tot.arr.t: 20, order: 05) +, Car(start: 64, end: 73, arr.t.: 19, delay: 00, est: 09, tot.arr.t: 19, order: 02) +, Car(start: 22, end: 74, arr.t.: 69, delay: 00, est: 14, tot.arr.t: 69, order: 10) +, Car(start: 25, end: 70, arr.t.: 67, delay: 00, est: 20, tot.arr.t: 67, order: 13) +, Car(start: 58, end: 60, arr.t.: 24, delay: 00, est: 21, tot.arr.t: 24, order: 14) +, Car(start: 42, end: 78, arr.t.: 58, delay: 00, est: 21, tot.arr.t: 58, order: 18) +, Car(start: 67, end: 80, arr.t.: 39, delay: 00, est: 25, tot.arr.t: 39, order: 19) +, Car(start: 32, end: 68, arr.t.: 67, delay: 00, est: 26, tot.arr.t: 67, order: 09) +, Car(start: 33, end: 55, arr.t.: 56, delay: 00, est: 28, tot.arr.t: 56, order: 04) +, Car(start: 21, end: 30, arr.t.: 39, delay: 00, est: 29, tot.arr.t: 39, order: 15) +, Car(start: 48, end: 52, arr.t.: 34, delay: 00, est: 29, tot.arr.t: 34, order: 20) +, Car(start: 68, end: 78, arr.t.: 41, delay: 00, est: 30, tot.arr.t: 41, order: 01) +, Car(start: 66, end: 67, arr.t.: 36, delay: 00, est: 32, tot.arr.t: 36, order: 06) +, Car(start: 19, end: 40, arr.t.: 58, delay: 00, est: 34, tot.arr.t: 58, order: 07) +, Car(start: 29, end: 66, arr.t.: 77, delay: 00, est: 38, tot.arr.t: 77, order: 17) +, Car(start: 47, end: 49, arr.t.: 42, delay: 00, est: 39, tot.arr.t: 42, order: 12) +, Car(start: 61, end: 62, arr.t.: 44, delay: 00, est: 41, tot.arr.t: 44, order: 00) +, Car(start: 40, end: 44, arr.t.: 47, delay: 00, est: 41, tot.arr.t: 47, order: 22) +, Car(start: 34, end: 65, arr.t.: 78, delay: 00, est: 44, tot.arr.t: 78, order: 08) +, Car(start: 24, end: 60, arr.t.: 86, delay: 00, est: 49, tot.arr.t: 86, order: 21) +, Car(start: 37, end: 68, arr.t.: 84, delay: 00, est: 52, tot.arr.t: 84, order: 03) +, Car(start: 01, end: 42, arr.t.: 96, delay: 00, est: 54, tot.arr.t: 96, order: 16) +] +Result: 44,41,19,84,56,20,36,58,78,67,69,33,42,67,24,39,96,77,58,39,34,86,47,10,43 + +Process finished with exit code 0 diff --git a/CloudflightCodingContest/pom.xml b/CloudflightCodingContest/pom.xml new file mode 100644 index 0000000..310659e --- /dev/null +++ b/CloudflightCodingContest/pom.xml @@ -0,0 +1,30 @@ + + + 4.0.0 + + at.salento + CloudflightCodingContest + 1.0-SNAPSHOT + + + 21 + 21 + UTF-8 + + + + org.junit.jupiter + junit-jupiter-api + 5.10.0 + + + org.junit.jupiter + junit-jupiter-params + 5.10.0 + test + + + + \ No newline at end of file diff --git a/CloudflightCodingContest/src/main/java/at/salento/Car.java b/CloudflightCodingContest/src/main/java/at/salento/Car.java new file mode 100644 index 0000000..59f2824 --- /dev/null +++ b/CloudflightCodingContest/src/main/java/at/salento/Car.java @@ -0,0 +1,135 @@ +package at.salento; + +public class Car { + private int startSegment; + private int endSegment; + + private int arrivalTime; + private int order; + + private int earliestStartTime; // introduced in level 2 + + private int delay; + + private boolean entered = false; + + private boolean toRemove = false; // not used at the moment + + public Car() { + this.startSegment = 0; + this.endSegment = 0; + this.arrivalTime = 0; + this.order = 0; + this.delay = 0; + } + + public Car(int start, int end, int duraction) { + this.startSegment = start; + this.endSegment = end; + this.arrivalTime = duraction; + this.order = 0; + this.delay = 0; + } + + public Car(int start, int end, int duration, int order) { + this.startSegment = start; + this.endSegment = end; + this.arrivalTime = duration; + this.order = order; + this.delay = 0; + } + + public int getStartSegment() { + return startSegment; + } + + public void setStartSegment(int startSegment) { + this.startSegment = startSegment; + } + + public int getEndSegment() { + return endSegment; + } + + public void setEndSegment(int endSegment) { + this.endSegment = endSegment; + } + + public int getOrder() { + return order; + } + + public void setOrder(int order) { + this.order = order; + } + + public int getArrivalTime() { + return arrivalTime; + } + + public void setArrivalTime(int arrivalTime) { + this.arrivalTime = arrivalTime; + } + + public void increaseArrivalTime() { + this.arrivalTime++; + } + + public int getDelay() { + return delay; + } + + public void increaseDelay() { + this.delay++; + } + + public void setDelay(int delay) { + this.delay = delay; + } + + public int getTotalArrivalTime() { + return this.arrivalTime + this.delay; + } + + public boolean isEntered() { + return entered; + } + + public void setEntered(boolean entered) { + this.entered = entered; + } + + public boolean isToRemove() { + return toRemove; + } + + public void setToRemove(boolean toRemove) { + this.toRemove = toRemove; + } + + public int getEarliestStartTime() { + return earliestStartTime; + } + + public void setEarliestStartTime(int earliestStartTime) { + this.earliestStartTime = earliestStartTime; + } + + @Override + public String toString() { + String viz = ""; + for (int i = 0; i< startSegment; i++) viz += " "; + viz += "|"; + for (int i = startSegment +1; i < endSegment; i++) viz += "-"; + viz += "|"; + // for (int i=) + return String.format(" Car(start: %02d", startSegment) + + String.format(", end: %02d", endSegment) + + String.format(", arr.t.: %02d", arrivalTime) + + String.format(", delay: %02d", delay) + + String.format(", est: %02d", earliestStartTime) + + String.format(", tot.arr.t: %02d", getTotalArrivalTime()) + + String.format(", order: %02d", order) + + ") " + "\n"; + } +} diff --git a/CloudflightCodingContest/src/main/java/at/salento/CccException.java b/CloudflightCodingContest/src/main/java/at/salento/CccException.java new file mode 100644 index 0000000..84e8784 --- /dev/null +++ b/CloudflightCodingContest/src/main/java/at/salento/CccException.java @@ -0,0 +1,12 @@ +package at.salento; + +public class CccException extends RuntimeException { + + public CccException(String msg, Throwable t) { + super(msg, t); + } + + public CccException(String msg) { + super(msg); + } +} diff --git a/CloudflightCodingContest/src/main/java/at/salento/ComputationBase.java b/CloudflightCodingContest/src/main/java/at/salento/ComputationBase.java new file mode 100644 index 0000000..980e5de --- /dev/null +++ b/CloudflightCodingContest/src/main/java/at/salento/ComputationBase.java @@ -0,0 +1,25 @@ +package at.salento; + +public abstract class ComputationBase { + + protected int level; + + public ComputationBase(int level) { + this.level = level; + } + + public void start(int fromLevel, int toLevel) { + String inputFilenameTemplate = "files/level" + level + "/level" + level + "_"; + String outputFilenameTemplate = "files/level" + level + "/level" + level + "_"; + + for (int i=fromLevel; i<=toLevel; i++) { + String inputFilename = inputFilenameTemplate + i + ".in"; + String outputFilename = outputFilenameTemplate + i + ".out"; + startForInstance(inputFilename,outputFilename); + } + + } + + protected abstract void startForInstance(String inputFilename, String outputFilename); + +} diff --git a/CloudflightCodingContest/src/main/java/at/salento/FileIoBase.java b/CloudflightCodingContest/src/main/java/at/salento/FileIoBase.java new file mode 100644 index 0000000..e145f63 --- /dev/null +++ b/CloudflightCodingContest/src/main/java/at/salento/FileIoBase.java @@ -0,0 +1,63 @@ +package at.salento; + +import java.io.*; +import java.util.ArrayList; + +public class FileIoBase { + + + protected String inputFileName; + protected String outputFileName; + protected ArrayList lines = new ArrayList<>(); + public ArrayList result = new ArrayList<>(); + + public FileIoBase(String inputFileName, String outputFileName) { + this.inputFileName = inputFileName; + this.outputFileName = outputFileName; + } + + public void readData() { + try (BufferedReader br = new BufferedReader(new FileReader(inputFileName))) { + String line = br.readLine(); + while (line != null) { + lines.add(line); + line = br.readLine(); + } + } catch (FileNotFoundException e) { + throw new RuntimeException(e); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + public void writeToFile() { + try (BufferedWriter bw = new BufferedWriter(new FileWriter(outputFileName))) { + for (String line : result) { + bw.write(line + "\n"); + } + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + public String getLine(int idx) { + if (lines != null) { + if (idx >= 0 && idx < lines.size()) { + return lines.get(idx); + } else { + throw new CccException("Invalid index: " + idx + " in method getLine."); + } + } else { + throw new CccException("Error: lines is null!"); + } + } + + @Override + public String toString() { + String ret = "Inputfile\n"; + for (int i=0; i cars; + private ArrayList copyCars; + + public Level1ComputationSimulation() { + super(1); + } + + protected void startForInstance(String input, String computed) { + level1Io = new Level1Io(input, computed); + level1Io.readData(); + nSegments = Integer.valueOf(level1Io.getLine(0)); + nLines = Integer.valueOf(level1Io.getLine(1)); + + prepareCars(); + simulate(); + System.out.println("Copy Cars: " + copyCars); + + List c3 = copyCars.stream() + .filter(x -> x != null) + .collect(Collectors.toList()); + + c3.sort(Comparator.comparing(Car::getOrder)); + + System.out.println("Cars in initial order:" + c3); + + ArrayList orderedStartSegmentCars = new ArrayList<>(c3); + orderedStartSegmentCars.sort(Comparator.comparing(Car::getStartSegment)); + + System.out.println("Ordered due to start segment: " + orderedStartSegmentCars); + String strResult = buildResultString(c3); + + System.out.println("Result: " + strResult); + level1Io.result.add(strResult); + level1Io.writeToFile(); + } + + private void prepareCars() { + cars = new ArrayList<>(Collections.nCopies(nSegments+1, null)); + + int order = 0; + for (int i=2; i < nLines+2; i++) { + Car c = createCarFromString(level1Io.getLine(i)); + c.setOrder(order++); + cars.set(c.getStartSegment(), c); + } + + copyCars = new ArrayList<>(cars); + + System.out.println("Cars:" + cars); + } + + + + private void simulate() { + for (int sec=1; sec < (2*nSegments+2); sec++) { + for (int i=0; i<=nSegments; i++) { + if (cars.get(i) != null) { + cars.get(i).increaseArrivalTime(); + if (i < cars.get(i).getEndSegment()) { + if (cars.get(i + 1) == null) { + cars.set(i + 1, cars.get(i)); + cars.set(i, null); + i++; + } + + } else { + cars.set(i, null); + } + } + } + } + } + + private static Car createCarFromString(String line) { + String[] tokens = line.split(","); + int start = Integer.valueOf(tokens[0]); + + int end = Integer.valueOf(tokens[1]); + // int result = end - start + 2; + return new Car(start, end, 1); + } + + private String buildResultString(List cars) { + String strResult = ""; + boolean first = true; + for (int i=0; i queue; + private ArrayList cars; + private ArrayList copyCars; + + public Level2Computation() { + super(2); + } + + protected void startForInstance(String input, String computed) { + level2Io = new Level2Io(input, computed); + level2Io.readData(); + nSegments = Integer.valueOf(level2Io.getLine(0)); + nLines = Integer.valueOf(level2Io.getLine(1)); + + prepareCars(); + simulate(); + System.out.println("Copy Cars: " + copyCars); + + List c3 = copyCars.stream() + .filter(x -> x != null) + .collect(Collectors.toList()); + + c3.sort(Comparator.comparing(Car::getOrder)); + + System.out.println("Cars in initial order:" + c3); + + ArrayList orderedStartSegmentCars = new ArrayList<>(c3); + orderedStartSegmentCars.sort(Comparator.comparing(Car::getStartSegment)); + + ArrayList orderedStartTimes = new ArrayList<>(c3); + orderedStartTimes.sort(Comparator.comparing(Car::getEarliestStartTime)); + + System.out.println("Ordered due to start segment: " + orderedStartSegmentCars); + System.out.println("Ordered due to earliest start times: " + orderedStartTimes); + String strResult = buildResultString(c3); + + System.out.println("Result: " + strResult); + level2Io.result.add(strResult); + level2Io.writeToFile(); + } + + private void prepareCars() { + cars = new ArrayList<>(Collections.nCopies(nSegments+1, null)); + queue = new ArrayList<>(); + + + int order = 0; + for (int i=2; i < nLines+2; i++) { + Car c = createCarFromString(level2Io.getLine(i)); + c.setOrder(order++); + queue.add(c); + } + copyCars = new ArrayList<>(queue); + + + System.out.println("Queue:" + queue); + } + + + + private void simulate() { + int sec = 0; + + do { + + sec++; + + + // place new cars + for (int i = 0; i < queue.size(); i++) { + Car c = queue.get(i); + int nextSeg = c.getStartSegment(); + // if (nextSeg < nSegments) nextSeg++; + int lastSeg = c.getStartSegment(); + if (lastSeg > 0) lastSeg--; + if (c.getEarliestStartTime() <= sec + && cars.get(c.getStartSegment()) == null + && cars.get(nextSeg) == null + && cars.get(lastSeg) == null + ) + { + // System.out.println("in second " + sec + " placing car " + c); + queue.remove(i); + cars.set(c.getStartSegment(), c); + c.setEntered(true); + } + } + + System.out.println("befor sim sec: " + sec + ": " + buildCarString()); + // simulate for current second + for (int i = 1; i <= nSegments; i++) { + Car c = cars.get(i); + if (c != null) { + if (!c.isEntered()) { + if (i < c.getEndSegment()) { + if (cars.get(i + 1) == null) { + cars.set(i + 1, c); + cars.set(i, null); + i++; + } + } else { + c.setToRemove(true); + c.setArrivalTime(sec); + cars.set(i, null); + } + } else { + c.setEntered(false); + } + } + } + + + System.out.println("after sim sec: " + sec + ": " + buildCarString()); + } while (!(cars.stream().filter(e -> (e != null)).count() == 0 && queue.isEmpty())); + } + + + /* + this example shows, that car (9) enters segment wrongly, as it was not empty in previous second! + sec: 28: (8) (2) (3) +sec: 29: (8) (2) (9) (3) +sec: 30: (8) (2) (9) (3) +sec: 31: (8) (2) (9) (3) + + with this bugfix 2_1 works + + */ + private static Car createCarFromString(String line) { + String[] tokens = line.split(","); + System.out.println(line); + int start = Integer.valueOf(tokens[0]); + + int end = Integer.valueOf(tokens[1]); + int startTime = Integer.valueOf(tokens[2]); + // int result = end - start + 2; + Car c = new Car(start, end, 0); + c.setEarliestStartTime(startTime); + return c; + } + + private String buildResultString(List cars) { + String strResult = ""; + boolean first = true; + for (int i=0; i