«前の日記(2015-07-05) 最新 次の日記(2015-07-12)» 編集

ɥozɐʞıɥ


2015-07-06 まだまだこれから [長年日記]

_ [Clojure] CodeIQチャレンジ

Clojureで試してみましたが2問目の5000行は返ってきません。mklstとcountmatch両方遅いのは判っているのですがうまく出来ませんでした。twitterで励ましていただいたのですがまだまだこれから試してみたいのです。threadを分けても考えましたが時間切れでした。まぁ問題のデータも持っているのでこれからじっくり隙を見てやってみます。

(use 'clojure.java.io)

(def lst (with-open [rdr (reader *in*)]

(doall

(concat () (line-seq rdr)))))

(def lst (map #(Integer/parseInt %) lst))

(def m (first lst))

(def lst (nthnext lst 2))

(defn mklst[m lst]

(map #(- m %)

(reverse

(drop-last

(reduce #(conj %1 (+ (last %1) %2) )

(list (first lst)) (next lst) )))))

(defn countmatch[m lst]

(reduce

#(if

(some #{(second %2)}

(nthnext lst (+ 2 (first %2))))

(inc %1) %1)

0

(partition 2 (interleave (range) (mklst m lst)))))

(println (loop [r 0 l lst]

(if (= 1 (count l)) r

(recur (+ r (countmatch m l)) (next l)))))



2002|09|10|11|12|
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|
«前の日記(2015-07-05) 最新 次の日記(2015-07-12)» 編集