Clojurians
#clojure-italy
<
2017-08-15
>

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

nilrecurring05:08:13

Io sto usando Spacemacs anche per Haskell, ed è bellissimo, l’integrazione è anche migliore di Clojure.

nilrecurring05:08:37

Quindi penso di essere vicino al mitico “ambiente unico che funziona” :smile:

nilrecurring05:08:54

Ovviamente per java devo ancora aprire IntelliJ, ma non si può avere tutto

reborg13:08:48

Data la seguente struttura dati contenente un stato del gioco del tris, qual e' secondo voi il modo piu' elegante di verificare se :x o :o ha vinto?

(def game [[nil :o   :x] 
           [nil :x   :o] 
           [:x  nil nil]])

reborg14:08:42

Non sono particolarmente contento:

(defn row [game x] (map #((game x) %) [0 1 2]))
(defn column [game y] (map #((game %) y) [0 1 2]))
(defn diag1 [game] (map (fn [[x y]] ((game x) y)) [[0 0] [1 1] [2 2]]))
(defn diag2 [game] (map (fn [[x y]] ((game x) y)) [[0 2] [1 1] [2 0]]))
(defn all [game] (concat (map (partial row game) [0 1 2]) (map (partial column game) [0 1 2]) [(diag1 game) (diag2 game)]))
(defn win? [s triplets] (some true? (map (partial apply = s) triplets)))

(win? :x (all game))
true

(win? :o (all game))
nil

richiardiandrea14:08:14

beh non male dai, volevo suggerire lo stesso, mi piacciono i diag

reborg14:08:37

si puo' fare... ma sembra cosi' tanto codice...

reborg14:08:22

Posso eliminare row/column con (defn all [game] (concat game (apply map vector game) [(diag1 game) (diag2 game)]))