(defn grep-n [n pred coll]
(->> coll
(map-indexed (fn [i x] (clojure.lang.MapEntry. i x)))
(partition (-> n (* 2) inc) 1)
(filter #(-> % (nth n) val pred))
(apply concat)
distinct
(map val)))
(->> (range 1000)
(grep-n 3 #{1 2 998 999})
print)
KGRlZm4gZ3JlcC1uIFtuIHByZWQgY29sbF0KICAoLT4+IGNvbGwKICAgICAgIChtYXAtaW5kZXhlZCAoZm4gW2kgeF0gKGNsb2p1cmUubGFuZy5NYXBFbnRyeS4gaSB4KSkpCiAgICAgICAocGFydGl0aW9uICgtPiBuICgqIDIpIGluYykgMSkKICAgICAgIChmaWx0ZXIgIygtPiAlIChudGggbikgdmFsIHByZWQpKQogICAgICAgKGFwcGx5IGNvbmNhdCkKICAgICAgIGRpc3RpbmN0CiAgICAgICAobWFwIHZhbCkpKQoKKC0+PiAocmFuZ2UgMTAwMCkKICAgICAoZ3JlcC1uIDMgI3sxIDIgOTk4IDk5OX0pCiAgICAgcHJpbnQp