Fork me on GitHub
#clojure-italy
<
2018-04-24
>
manuel07:04:27

'giorno giovani

reborg09:04:18

Challenge del giorno: creare funzione "rotations" che prende una collection e ritorna la lista (infinita o no) di rotazioni complete ed "in avanti" di "coll". Ad es.:

(def coll [0 1 2 3])
(defn rotations [xs])
(rotations coll)
;; ((0 1 2 3) (1 2 3 0) (2 3 0 1) (3 0 1 2))
"In avanti" vuol dire che ((0 1 2 3) (3 0 1 2) (2 3 0 1) (1 2 3 0)) come risultato non va bene perche' il primo elemento di ogni lista decresce invece che salire. Idee?

reborg09:04:36

Bonus se senza vectors con solo lazy sequences

gabriele10:04:09

@reborg prima cosa che mi Γ¨ venuta in mente

(defn rotations [xs]
  (iterate (fn [[x & xs]]
             (concat xs (list x))) xs))

gabriele10:04:33

che ho vinto?

reborg10:04:50

Una birra il prossimo giro a Londra? πŸ™‚

reborg10:04:59

Questa la mia (defn rotations [xs] (partition (count xs) 1 (mapcat identity (repeat xs))))

gabriele10:04:52

(defn rotations [xs]
  (iterate (fn [[x & xs]]
             `(~@xs ~x)) xs))
non so neanche cosa implichi questa versione a livello computazionale rispetto alla mia precedente, se qualcuno me lo sapesse spiegare ricambio la birra per quando passa a milano πŸ˜„

gabriele10:04:54

@reborg la tua versione me la devo riguardare che mi confonde 😁

reborg10:04:29

dire poco e niente a livello di computazione, solo qualche gratttacapo in piu' per chi guarda πŸ™‚

bronsa12:04:45

>non so neanche cosa implichi questa versione a livello computazionale rispetto alla mia precedente, hai solo aumentato il costo, ma la complessita` rimane quella

bronsa12:04:21

e` letteralmente come se avessi scritto (seq (concat xs (list x)))

bronsa12:04:29

quindi hai solo il costo di seq in piu`, che e` negligibile

bronsa12:04:03

@gabriele.carrettoni un trucco per β€œvedere” cosa fa syntax-quote e` quello di infilarci un quote davanti:

bronsa12:04:23

'`(~@xs ~x) ;=> (clojure.core/seq (clojure.core/concat xs (clojure.core/list x)))

πŸ‘ 4
gabriele12:04:52

a πŸ” questa non la sapevo, grazie

reborg12:04:07

neanch'io bella l'e'