Clojurians
#clojure-italy
<
2018-03-14
>

This page is not created by, affiliated with, or supported by Slack Technologies, Inc.

reborg09:03:19

!buongiorno

reborg11:03:43

Non e' che qualcuno di voi ha un file che si chiama "ClojureSequences733.flv" o permutazione di clojure/sequences con altra estensione video in qualche vecchio backup? Era parte dell'archivio su bliptv anni fa, ma sembra si siano perse le tracce in rete

mdallastella11:03:37

Vi sottopongo un quesito

mdallastella11:03:16

Abbiamo una struttura dati "ad albero" così composta:

{:a {:name "A" :children [:b :c]}
 :b {:name "B" :children [:d]}
 :c {:name "C" :children nil}
 :d {:name "D" :children nil}}

mdallastella11:03:59

Dobbiamo trasformarla in un menù così composto:

0  A
1    B
2      D
1    C

reborg16:03:00

Ho dato un occhio. Se sai la "root" quando parti si puo' fare con:

reborg16:03:14

(defn walk [root]
(letfn [(formatter [s n name] (str s n (apply str (repeat (inc n) " ")) name "\n"))
(step [s depth {:keys [name children]}]
(let [s (formatter s depth name)]
(if (vector? children)
(reduce #(step %1 (inc depth) %2) s (map data children))
s)))]
(step "" 0 root)))

(println (walk (:a data)))

mdallastella20:03:06

Grazie @reborg, ci guardo asap

manuel08:03:55

funziona, grande @reborg! E quel (map data children) è il colpo di classe che mi mancava.

reborg08:03:08

ottimo @ mi fa piacere che sia utile!

manuel11:03:25

@reborg nope, sorry

andrea.crotti12:03:06

qualche consiglio su come risolvere il problema del seating arrangement con Clojure? devo solo fare un algoritmo che riempia un po' di tavoli da 10 persone, partendo da magari una 50ina di gruppi di varia dimensione (ma < 10)

andrea.crotti12:03:43

massimizzando l'ultlizzo dei tavoli e un altro po' di constraints, non e' troppo diverso da un knapsack problem forse (a parte i constraints aggiuntivi)

andrea.crotti12:03:09

penso che core-logic sia una buona scelta ma devo capire adesso come modellarlo

bronsa12:03:21

core.logic e` ideale

andrea.crotti12:03:20

ma se mi serve qualcos altro rispetto ai vari appendo/conjo etc e' normale che me li devo scrivere io?

andrea.crotti12:03:46

o forse se lo modello nel modo giusto in teoria ho gia' tutti i blocchetti fondamentali fatti?

bronsa12:03:09

certo e` normale dover scrivere dei goal aggiuntigi se servono

andrea.crotti12:03:59

eh ok chiedo perche' in test.check per esempio di solito non serve, ma core.logic non e' la stessa cosa effettivamente

andrea.crotti12:03:39

ok faccio qualche tentativo, qualche risorsa suggerita? ho visto https://github.com/clojure/core.logic/wiki/A-Core.logic-Primer ma qualche esempio un po' piu' complesso magari sarebbe utile