# Soddisfacibilità vincoli

**URL:** <https://www.ruby-forum.com/t/soddisfacibilita-vincoli/226858>\
**Category:** IT\
**Created:** [February 23, 2013, 4:37pm UTC](https://www.ruby-forum.com/t/soddisfacibilita-vincoli/226858 "2013-02-23T16:37:20Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![marco\_m38](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/50afbb/32.png) [@marco\_m38](https://www.ruby-forum.com/u/marco_m38)\
**Post date:** [February 23, 2013, 4:37pm UTC](https://www.ruby-forum.com/t/soddisfacibilita-vincoli/226858/1 "2013-02-23T16:37:20Z")

</div>

Sto creando un DSL in Ruby che permette di definire delle variabili (e  
altre cose che non servono spiegare).

Ogni variabile puo’ avere uno o piu’ vincoli. Supponiamo che abbia due  
variabili vincolate in questo modo (tralasciando la sintassi Ruby):

int x | x \> 2 and x \< 200;  
int y | y \< x and y \> 1000;

In questo esempio, la variabile y non puo’ assumere nessun valore dato  
che non puo’ essere nello stesso istante minore di x e maggiore di 1000.  
Quindi questo tipo di “errore” verra’ notificato all’utente che potra’  
modificare il vincolo della variabile y.

Questo problema puo’ essere risolto facilmente facendo qualche controllo  
ma nel mio programma posso esserci centinaia di variabili con  
altrettanti vincoli.

Come posso far in modo che per ogni variabile, possa sapere l’insieme  
dei valori che puo’ assumere?

---

<div class="post-metadata">

**Author:** ![marco\_m38](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/50afbb/32.png) [@marco\_m38](https://www.ruby-forum.com/u/marco_m38)\
**Post date:** [February 23, 2013, 5:08pm UTC](https://www.ruby-forum.com/t/soddisfacibilita-vincoli/226858/2 "2013-02-23T17:08:46Z")

</div>

2013/2/23 lolzzz what? [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

> Come posso far in modo che per ogni variabile, possa sapere l’insieme  
> dei valori che puo’ assumere?

Mi sembra un problema di disequazioni, non di Ruby

Stai dicendo:  
x\_min = 2  
x\_max = 200  
y\_max = x\_max  
y\_min = 1000

if y\_min \> y\_max  
print “Panda sad :(”  
end

Ciao

---

<div class="post-metadata">

**Author:** ![marco\_m38](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/50afbb/32.png) [@marco\_m38](https://www.ruby-forum.com/u/marco_m38)\
**Post date:** [February 23, 2013, 5:13pm UTC](https://www.ruby-forum.com/t/soddisfacibilita-vincoli/226858/3 "2013-02-23T17:13:12Z")

</div>

Andrea F. wrote in post #1098592:

> 2013/2/23 lolzzz what? [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)
> 
> > Come posso far in modo che per ogni variabile, possa sapere l’insieme  
> > dei valori che puo’ assumere?
> 
> Mi sembra un problema di disequazioni, non di Ruby
> 
> Stai dicendo:  
> x\_min = 2  
> x\_max = 200  
> y\_max = x\_max  
> y\_min = 1000
> 
> if y\_min \> y\_max  
> print “Panda sad :(”  
> end
> 
> Ciao

Ciao Andrea e grazie per la risposta.

Si sto dicendo quello. La fai troppo semplice cosi’ 😃  
Il mio esempio era banale e ogni variabile puo’ avere molti piu’  
controlli di quelli che ho scritto io.  
Inoltre, se ho un centinaio di variabili il problema non e’ piu’ cosi’  
banale

---

<div class="post-metadata">

**Author:** ![marco\_m38](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/50afbb/32.png) [@marco\_m38](https://www.ruby-forum.com/u/marco_m38)\
**Post date:** [February 23, 2013, 5:23pm UTC](https://www.ruby-forum.com/t/soddisfacibilita-vincoli/226858/4 "2013-02-23T17:23:23Z")

</div>

2013/2/23 lolzzz what? [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

> > x\_min = 2  
> > Ciao Andrea e grazie per la risposta.
> 
> Si sto dicendo quello. La fai troppo semplice cosi’ 😃

Hai gi implementato qualcosa?  
Dove ti sei bloccato?

> Il mio esempio era banale e ogni variabile puo’ avere molti piu’  
> controlli di quelli che ho scritto io.

Inoltre, se ho un centinaio di variabili il problema non e’ piu’ cosi’

banale

> 

Non mi sembra niente che un ciclo e un array e qualche oggetto non possa  
risolvere.  
Io non riesco ad aiutarti pi di cos se non mi spieghi pi in dettaglio  
cosa ti blocca.

Ciao

---

<div class="post-metadata">

**Author:** ![marco\_m38](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/50afbb/32.png) [@marco\_m38](https://www.ruby-forum.com/u/marco_m38)\
**Post date:** [February 24, 2013, 3:19pm UTC](https://www.ruby-forum.com/t/soddisfacibilita-vincoli/226858/5 "2013-02-24T15:19:03Z")

</div>

2013/2/23 Andrea F. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

> Io non riesco ad aiutarti pi di cos se non mi spieghi pi in dettaglio  
> cosa ti blocca.

Mi correggo. Ho provato ad implementarlo. Basta una hash.  
Anche il parsing non deve essere difficile.

Ciao
