Added Java solutions from Anton
[ou-summer-of-code-2017.git] / anton / SummerOfCode / src / summerofcode / Day1.java
diff --git a/anton/SummerOfCode/src/summerofcode/Day1.java b/anton/SummerOfCode/src/summerofcode/Day1.java
new file mode 100644 (file)
index 0000000..68bd847
--- /dev/null
@@ -0,0 +1,78 @@
+/*\r
+ * Day 1 parts 1 and 2\r
+ */\r
+package summerofcode;\r
+\r
+import java.io.FileReader;\r
+import java.util.HashMap;\r
+import java.util.Map;\r
+import java.util.Scanner;\r
+\r
+/**\r
+ *\r
+ * @author Anton Dil\r
+ */\r
+public class Day1\r
+{\r
+   private final static Map<String,Double> scores = new HashMap<>();\r
+   \r
+   static\r
+   {\r
+      scores.put("Almaty", 2.0);\r
+      scores.put("Brorfelde", 0.9);\r
+      scores.put("Estacada", 0.4);\r
+      scores.put("Jayuya", 0.6);\r
+      scores.put("Karlukovo", 2.2);\r
+      scores.put("Morgantown", 2.9);\r
+      scores.put("Nordkapp", 1.5);\r
+      scores.put("Nullarbor", 2.2);\r
+      scores.put("Puente-Laguna-Garzonkuala-Penyu", 0.4);\r
+      scores.put("Uzupis", 0.9);\r
+   }\r
+   \r
+   public static void main(String[] args) throws Exception\r
+   { \r
+      Scanner sc = new Scanner(new FileReader("01-holidays.txt"));  \r
+      \r
+      String id, loc, bestId = "";\r
+      double value, score;\r
+      double bestValue = 0;      \r
+      int price, days;      \r
+      int afford = 0;\r
+      \r
+      while(sc.hasNext())\r
+      {\r
+         id = sc.next();         \r
+         price = sc.nextInt();         \r
+         loc = sc.next();        \r
+         days = sc.nextInt(); \r
+         \r
+         if(scores.get(loc) != null)\r
+         {\r
+            score = scores.get(loc);\r
+         }\r
+         else\r
+         {\r
+            score = 1.0;\r
+         }\r
+      \r
+         //only consider holidays we can afford        \r
+         if(price <= 1200)\r
+         {                     \r
+            value = score * days/price;   \r
+         \r
+            System.out.printf("%s %d %s %d value %.5f %n", id, price, loc, days, value);\r
+            afford++;\r
+            \r
+            if(value > bestValue)\r
+            {\r
+               bestValue = value;\r
+               bestId = id;\r
+            }\r
+         }\r
+      }      \r
+\r
+      System.out.println("Affordable " + afford);\r
+      System.out.printf("Best value is id %s with value %f%n", bestId, bestValue);\r
+   }\r
+}\r