Skip to content

Instantly share code, notes, and snippets.

(ns rxjava-datomic.query
(:require [datomic.api :as d])
(:use [clojure.repl :only [pst]])
(:import [rx Observable]
datomic.Peer))
(defn query [qry & inputs]
(Observable/toObservable
(Peer/q qry (object-array inputs))))
(defn- optimal-plan-ordered [bids]
(let [optimal-plan-after (fn [flight]
(let [earliest (+ (:DEPART flight) (:DUREE flight))
after (drop-while #(< (:DEPART %) earliest) bids)]
(if (empty? after) {:gain 0 :path '()} (optimal-plan-ordered after))))
current-plan (fn [flight]
(let [{:keys [gain path]} (optimal-plan-after flight)]
{:gain (+ (:PRIX flight) gain) :path (conj path (:VOL flight))}))]
(reduce #(if (> (:gain %2) (:gain %1)) %2 %1) (map current-plan bids))))