Final queue count now adjustable.
[jars.git] / run-mars.scm
index 30b9e5c..04aa81e 100644 (file)
@@ -20,7 +20,7 @@
                     (cdr progs-left)
                     (cdr colors-left)))))))
 
-(define (mars-runner files iters core-size visualization)
+(define (mars-runner files iters core-size visualization min-queue-count)
   (print "Iters: " iters ", core size: " core-size)
   (let* ((progs (map
                  (lambda (fname)
                    (let* ((colors '("red" "blue" "green" "magenta" "cyan"))
                           (color-map (make-color-map progs colors))
                           (vis (make-vis 640 480 core-size color-map)))
-                     (make-core 8000 (lambda (i n)
-                                       (vis 'update-owner i n))))
-                   (make-core 8000)))
-         (queues (run-mars core (install-progs core progs) iters)))
-    (for-each (lambda (q)
-                (print)
-                (print "Final queue for " (queue-owner q) ":")
-                (dump-queue q core))
-              queues)
+                     (make-core core-size (lambda (i n)
+                                            (vis 'update-owner i n))))
+                   (make-core core-size)))
+         (queues (run-mars core (install-progs core progs) iters min-queue-count)))
+    (dump-queues queues core)
     (when visualization
       (print* "Press enter to finish...")
       (read-line))))
          "       run-mars [-c|--core size]\n"
          "                [-i|--iterations iters]\n"
          "                [-n|--no-visualization]\n"
+         "                [-m|--min-queue-count]\n"
          "                warrior1.red [warrior2.red [...]]"))
 
 (define (main)
   (let loop ((args (cdr (argv)))
              (iters 10000)
              (core-size 8000)
-             (visualization #t))
+             (visualization #t)
+             (min-queue-count 2))
     (match args
       ((or () ((or "-h" "--help")))
        (print-usage))
       (((or "-i" "--iterations") istr rest ...)
-       (loop rest (string->number istr) core-size visualization))
+       (loop rest (string->number istr) core-size visualization min-queue-count))
       (((or "-c" "--core-size") cstr rest ...)
-       (loop rest iters (string->number cstr) visualization))
+       (loop rest iters (string->number cstr) visualization min-queue-count))
       (((or "-n" "--no-visualization") rest ...)
-       (loop rest iters core-size #f))
+       (loop rest iters core-size #f min-queue-count))
+      (((or "-m" "--min-queue-count") mstr rest ...)
+       (loop rest iters core-size visualization (string->number mstr)))
       ((files ...)
-       (mars-runner files iters core-size visualization)))))
+       (mars-runner files iters core-size visualization min-queue-count)))))
 
 (main)