Menu

  • Home
  • Archives
  • Tags
  • RSS
January 11, 2016

daily programming simple list stuff

Since I'm warming up to Clojure this year, why not get started with the "dailyprogrammer" subreddit again?

So here's a (noobish) solution to this problem:


(ns dailyprog.core

  (:gen-class)

  (:require [clojure.string :as str]))



(defn input->float

  [input]

  (map #(Float/parseFloat %) (str/split input #" ")))



(defn difference

  "Given a list of prices, a price in the list and its index, return the best price to sell it at"

  [lst index buy-price]

  (let [max-sell-price (apply max (drop index lst))]

    {:buy-price buy-price

    :sell-price max-sell-price

    :difference (- max-sell-price buy-price)}))



(defn difference-vector

  [lst]

  (map-indexed (partial difference lst) lst))



(defn -main

  [& args]

  (println(->> (slurp (first args))

                input->float

                difference-vector

                (apply max-key :difference))))



and it runs like this:


> lein run /tmp/challenge-input

{:buy-price 8.03, :sell-price 10.02, :difference 1.9900007247924805}


Tags: old-post

« monthly programming summary january 2016 clojure from the ground up »

Copyright © 2020 Agam Brahma

Powered by Cryogen