Jelajahi Sumber

Solve day 07

Jonatan Gezelius 4 tahun lalu
induk
melakukan
d3f2d93d73
4 mengubah file dengan 99 tambahan dan 0 penghapusan
  1. 47 0
      07/a.py
  2. 51 0
      07/b.py
  3. 1 0
      07/example.txt
  4. 0 0
      07/infile.txt

+ 47 - 0
07/a.py

@@ -0,0 +1,47 @@
+import os, argparse, math
+import numpy as np
+
+
+def solve_task(filename):
+    data = np.genfromtxt(filename, delimiter=',', dtype='int')
+
+    sorted_data = np.sort(data)
+    
+    median = None
+    if len(sorted_data) % 2:
+        median = sorted_data[len(sorted_data)//2]
+    else:
+        median = (sorted_data[len(sorted_data)//2] + sorted_data[len(sorted_data)//2+1])/2
+
+    median = np.median(data)
+
+    print("The median is: " + str(median))
+    
+    bins = {}
+
+    for k in sorted_data:
+        if k not in bins:
+            bins[k] = 1
+        else:
+            bins[k] += 1
+
+    fuel = 0
+    for k, v in bins.items():
+        fuel += abs(k-median)*v
+        
+    print("Fuel: " + str(fuel))
+
+    os.system("pause")
+
+def parse_arguments():
+    parser = argparse.ArgumentParser(description="Script that solves the case",epilog="Have a nice day!")
+    parser.add_argument('filename', nargs='?', default="example.txt", help='Input file')
+    args = parser.parse_args()
+    return args
+
+def main():
+    args = parse_arguments()
+    solve_task(args.filename)
+
+if __name__ == "__main__":
+    main()

+ 51 - 0
07/b.py

@@ -0,0 +1,51 @@
+import os, argparse, math
+import numpy as np
+
+
+def solve_task(filename):
+    data = np.genfromtxt(filename, delimiter=',', dtype='int')
+
+    sorted_data = np.sort(data)
+    
+    rms = np.sqrt(np.mean(data**2))
+    mean = np.mean(data)
+    
+    print("The rms is: " + str(rms))
+    print("The mean is: " + str(mean))
+    
+    bins = {}
+
+    for k in sorted_data:
+        if k not in bins:
+            bins[k] = 1
+        else:
+            bins[k] += 1
+
+    #target = np.floor(rms)
+    target = np.floor(mean)
+    
+    print("Target: " + str(target))
+    
+    fuel = 0
+    for k, v in bins.items():
+        distance = abs(k-target)
+        consumption = ((distance*distance+distance)/2)
+        #print("Movement from " + str(k) + " consumes " + str(consumption) + " for a total of " + str(consumption*v))
+        fuel += consumption*v
+        
+    print("Fuel: " + str(fuel))
+
+    os.system("pause")
+
+def parse_arguments():
+    parser = argparse.ArgumentParser(description="Script that solves the case",epilog="Have a nice day!")
+    parser.add_argument('filename', nargs='?', default="example.txt", help='Input file')
+    args = parser.parse_args()
+    return args
+
+def main():
+    args = parse_arguments()
+    solve_task(args.filename)
+
+if __name__ == "__main__":
+    main()

+ 1 - 0
07/example.txt

@@ -0,0 +1 @@
+16,1,2,0,4,2,7,1,2,14

File diff ditekan karena terlalu besar
+ 0 - 0
07/infile.txt


Beberapa file tidak ditampilkan karena terlalu banyak file yang berubah dalam diff ini