SICP – cap. 2 – Mappare con gli alberi – 39 – esercizi

Continuo da qui, copio qui.

Exercise 2.32: We can represent a set as a list of distinct elements, and we can represent the set of all subsets of the set as a list of lists. For example, if the set is (1 2 3), then the set of all subsets is (() (3) (2) (2 3) (1) (1 3) (1 2) (1 2 3)). Complete the following definition of a procedure that generates the set of subsets of a set and give a clear explanation of why it works:

(define (subsets s)
  (if (null? s)
      (list nil)
      (let ((rest (subsets (cdr s))))
        (append rest (map <!--?? > rest)))))

Uhmmm… mica semplice come sembra. Tanto che anche Bill the Lizard rimanda alla Wiki (come faremmo senza la Wiki?), per l’algoritmo.
Non ci sono arrivato da solo, il mio tentativo, soluzione brutale, non funziona, ecco Bill:

This would be a tough problem in other languages, but it’s really terse in Scheme. dice sicp-ex 😯 Riporta poi la stessa soluzione di prima, con spiegazioni aggiuntive, da vedere.
Una spiegazione simile anche con Drewiki.

Sono troppo legato ai programmi imperativi, dal Fortran a Python, mi manca la capacità di astrarre.

:mrgreen:


Annunci
Post a comment or leave a trackback: Trackback URL.

Trackbacks

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger hanno fatto clic su Mi Piace per questo: