Fork me on GitHub
#clojure-italy
<
2020-07-16
>
reborg08:07:55

giorno people

Andrea Imparato09:07:32

buongiornissimo! domanda algoritmosa mattiniera per voi! immaginate di avere una mappa parecchio grande che ha come chiavi liste di stringhe e come valori liste di liste di stringhe. Ora con questa mappa per ogni chiave bisogna creare tuttue le liste formate da “percorsi” tra chiavi e liste. Praticamente scelgo una chiave e tutti i valori associati diventano le chiavi da cui ripartire fino a quando non ci sono piu’ valori associati. Ho fatto un’implementazione ricorsiva della funzione ma sono andato incontro ad un stackoverflow perche’ la mappa e’ troppo grande. Il problema e’ che la chiamata ricorsiva deve essere fatta dentro al loop dei valori della chiave e quindi non riesco ad usare recur perche’ non e’ tail recursion

reborg09:07:14

Se hai voglia posta un esempio input output. Non riesco ad interpolare la definizione di “partire” per “andare” etc.

Andrea Imparato09:07:20

eheh c’hai anche ragione

Andrea Imparato09:07:36

input: da “This is a cat.\nThis is a dog.\nThis is pizza” creo {(“This” “is” “a”) ((“dog.“) (“cat.“)), (“cat.“) (nil), (“dog.“) (nil), (“This” “is” “pizza”) (nil)}

Andrea Imparato09:07:49

il risultato dovrebbe essere

Andrea Imparato09:07:33

((“This” “is” “a”) (“dog.“) (“This” “is” “a”) (“cat.“) (“cat.“) (“dog.“) (“This” “is” “pizza”))

Andrea Imparato09:07:58

la funzione che ho fatto e’ (defn all-sentences [chain current-key sentence] (let [words (get chain current-key)] (for [w words] (if (empty words) (concat sentence current-key) (all-sentences chain w sentence)))))

Andrea Imparato09:07:44

che funziona per l’esempio ma mi va in stackoverflow se la mappa e’ grande

Andrea Imparato09:07:57

potrebbe anche essere concat il problema adesso che ci penso pero’

reborg11:07:44

mmh, perche’ non c’e’ ("pizza") tra i risultati?

Andrea Imparato19:07:19

Eh perché sono triplette di parole in un testo

reborg11:07:24

sembra un problema interessante :)