Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

problemi di logica [ultimo]

Problemi curiosi e quiz vari.

Moderatore: Foto Utentecarlomariamanenti

0
voti

[21] Re: problemi di logica [ultimo]

Messaggioda Foto UtenteBerello » 2 nov 2010, 13:47

Un attimo, un attimo... Io non ci sto capendo più niente!!!

Si è parlato di "Incompletezza dell'enunciato", ma vedo che è anche stata apportata qualche modifica alle condizioni già presenti...
Prendo la prima condizione, che dice:
A non accetta alcun incarico se E non è P.

Mentre nel testo iniziale questa condizione era:
A non accetta alcun incarico se E è P.


A quale delle 2 devo affidarmi?
Forse sarebbe meglio riscrivere il testo del problema da capo, a scanso di equivoci! :mrgreen:
Avatar utente
Foto UtenteBerello
110 1 3 7
Expert EY
Expert EY
 
Messaggi: 449
Iscritto il: 3 mar 2009, 23:53
Località: Roma

0
voti

[22] Re: problemi di logica [ultimo]

Messaggioda Foto Utenteangus » 2 nov 2010, 14:01

Berello hai ragione! quel NON che non c'era... cambia tutto.
ora vado a pranzo, poi rivedo le condizioni con calma e ripoto i risultati
in /dev/null no one can hear you scream
Avatar utente
Foto Utenteangus
8.485 4 6 9
G.Master EY
G.Master EY
 
Messaggi: 4172
Iscritto il: 20 giu 2008, 17:25

0
voti

[23] Re: problemi di logica [ultimo]

Messaggioda Foto Utentec1b8 » 2 nov 2010, 14:58

Nemmeno io avevo visto quel 'non' aggiunto alla prima condizione, mi ero limitato alla modifica evidenziata in grassetto.

Quindi le condizioni cambiano:
La prima:
1) A=E_p

La secondo:
2) B=(B_i<C_i)\overline{F}

La terza:
3) C=(\overline{E}+\overline{F})\overline{F_p} * \overline{B_s}

La quarta:
4) D=\overline{CE}+(D_i>C_i)(D_i>E_i)

La quinta:
5) E=\overline{E_v}
6) E_s=\overline{D}
7) E=\overline{A}+AF

La sesta:
8) F_p=1
9) F=C_p

Da cui:
C=Presidente
B=Vicepresidente
E=Segretario

Ma non sono sicuro che sia l'unica possibile.
Fabio
Avatar utente
Foto Utentec1b8
3.595 3 8 13
G.Master EY
G.Master EY
 
Messaggi: 1770
Iscritto il: 15 gen 2009, 15:23

0
voti

[24] Re: problemi di logica [ultimo]

Messaggioda Foto Utenteg.schgor » 2 nov 2010, 15:38

I miei complimenti, Fabio: la soluzione è esatta
(ed è l'unica).
Avevo controllato il programma (il mio precedente
era stato scritto in Basic non-strutturato e l'ho riscritto
in strutturato, ma purtroppo non ho ricontrollato
l'enunciato in italiano. E me ne scuso ancora).

Invierò il programma documentato appena possibile.
Avatar utente
Foto Utenteg.schgor
57,8k 9 12 13
G.Master EY
G.Master EY
 
Messaggi: 16971
Iscritto il: 25 ott 2005, 9:58
Località: MILANO

0
voti

[25] Re: problemi di logica [ultimo]

Messaggioda Foto Utenteangus » 2 nov 2010, 16:04

Confermo :ok:

Codice: Seleziona tutto
mac@cowboy:~$ python candidati.py
('0', '2', '3', '0', '1', '0')

da cui
B=vicepresidente
C=presidente
E=segretario

questo il codice:
Codice: Seleziona tutto
from itertools import permutations
l = '000123'
for j in set(permutations(l, len(l))):
    a=int(j[0])
    b=int(j[1])
    c=int(j[2])
    d=int(j[3])
    e=int(j[4])
    f=int(j[5])
    if ((a>0 and e<3) or (b>0 and b>c) or (b>0 and f>0) or (c>0 and e>0 and f>0) or (c>0 and f==3) or (c>0 and b==1) or (d>0 and c>0 and d<c) or (d>0 and e>0 and d<e) or (e==2) or (e==1 and d>0) or (e>0 and a>0 and f>0) or (f<3 and c<3) ):
        pass
    else:
        print j
in /dev/null no one can hear you scream
Avatar utente
Foto Utenteangus
8.485 4 6 9
G.Master EY
G.Master EY
 
Messaggi: 4172
Iscritto il: 20 giu 2008, 17:25

0
voti

[26] Re: problemi di logica [ultimo]

Messaggioda Foto Utenteg.schgor » 2 nov 2010, 16:10

Ecco il testo del mio programma in Basic.

Il programma principale che genera le 120 combinazioni:
ProbLog1.GIF
ProbLog1.GIF (3.74 KiB) Osservato 7838 volte


Poi un'unica subroutine che attribuisce i "pesi"delle cariche
(P=3,V=2,S=1, oppure 0) ai singoli candidati (A,B,C,D,E),
seguito dalle condizioni poste da ciascuno di essi:
ProbLog2.GIF
ProbLog2.GIF (9.23 KiB) Osservato 7838 volte

seguito dalla stampa delle combinazioni valide:
ProbLog3.GIF
ProbLog3.GIF (3.62 KiB) Osservato 7836 volte


E' tutto. (Complimenti anche ad angus !)
Avatar utente
Foto Utenteg.schgor
57,8k 9 12 13
G.Master EY
G.Master EY
 
Messaggi: 16971
Iscritto il: 25 ott 2005, 9:58
Località: MILANO

0
voti

[27] Re: problemi di logica [ultimo]

Messaggioda Foto Utentexyz » 2 nov 2010, 19:15

Io mi sono confuso sul termine direttivo, trovavo troppe soluzioni. Consideravo direttivo solo P e V escludendo S, invece nel testo incarico, direttivo e eletto sono sinonimi.

Nell'ultima preposizione <<F accetta il posto di P oppure un altro incarico, ma in questo caso se C è P>>, il termine incarico deve essere riferito anche nel caso in cui F non sia eletto (i vari codici proposti hanno questa interpretazione) altrimenti i 7 casi ancora validi:

S=A V=B P=E
S=B V=A P=E
S=A V=C P=E
S=C V=A P=E
S=E V=B P=C
S=C V=F P=D
S=F V=C P=D

quando il candidato C è P il candidato F non ha nessun incarico.

Questa è la mia soluzione scritta in Prolog,

Codice: Seleziona tutto
% #@ -*- Mode: Prolog -*-   vim:ts=8:syntax=prolog:

% Disposizioni di n elementi di classe k
%
% n!/(n-k)!
%
% 6!/(6-3)! = 120
%

comb_rip(_,[]).
comb_rip([X|T], [X|Comb]) :-
   comb_rip(T,Comb).
comb_rip([_|T],[X|Comb]) :-
   comb_rip(T,[X|Comb]).

perm_rip(L, R):-
   comb_rip(L, E),
   permutation(E, R).

candidati(Eletti) :-

   % tutte le permutazioni degli incarichi

   perm_rip([a,b,c,d,e,f], [Seg, Vice, Pres]),

   Eletti = [Seg, Vice, Pres],

   % A non accetta alcun incarico se E non è 'presidente'

   \+ (memberchk(a, Eletti), \+ Pres = e),

   % B non accetta alcun incarico se superiore all'incarico di C e
   % in nessun modo se F fa' parte del Direttivo

   \+ (nth0(IncB, Eletti, b), nth0(IncC, Eletti, c), IncB > IncC),
   \+ (memberchk(b, Eletti), memberchk(f, Eletti)),

   % C non accetta alcun incarico se entrambi E e F fanno parte
   % del Direttivo oppure se F è 'presidente' o se B è 'segretario'

   \+ (memberchk(c, Eletti), memberchk(e, Eletti), memberchk(f, Eletti)),
   \+ (memberchk(c, Eletti), (Pres = f ; Seg = b)),

   % D non vuol essere eletto con C o con E, con un incarico
   % inferiore dell'uno o dell'altro

   \+ (nth0(IncD, Eletti, d), nth0(IncC, Eletti, c),  IncD < IncC),
   \+ (nth0(IncD, Eletti, d), nth0(IncE, Eletti, e),  IncD < IncE),

   % E non vuole essere 'vicepresidente'
   % non vuole essere nemmeno 'segretario' se D è nel Direttivo
   % non vuole inoltre lavorare con A se F non è nel Direttivo

   \+ Vice = e,
   \+ (Seg = e, memberchk(d, Eletti)),
   \+ (memberchk(f, Eletti), memberchk(e, Eletti), memberchk(a, Eletti)),

   % F accetta il posto di 'presidente' oppure un altro incarico (qualsiasi)
   % ma in questo caso se C è 'presidente'

   (Pres = f ; Pres = c).

go :-
   findall(X, candidati(X), P),
   write(P).


Il Prolog nasce per risolvere questo tipo di problemi:

http://it.wikipedia.org/wiki/Prolog

Io uso come interprete Prolog SWI-Prolog,

http://www.swi-prolog.org/

Per eseguilo dal terminale direttamente:

Codice: Seleziona tutto
$> swipl -s candidati.pl -g go -t halt


altrimenti dalla linea di comando di SWI-Prolog:

Codice: Seleziona tutto
?- [candidati].
?- go.


si ottenine una sola soluzione:

Codice: Seleziona tutto
[[e,b,c]]
true.


Se si usa GProlog:

http://www.gprolog.org/

bisogna sostituire nel codice il predicato 'nth0' con 'nth'.
Avatar utente
Foto Utentexyz
6.864 2 4 6
G.Master EY
G.Master EY
 
Messaggi: 1778
Iscritto il: 5 dic 2009, 18:37
Località: Italy Turin

0
voti

[28] Re: problemi di logica [ultimo]

Messaggioda Foto Utenteangus » 2 nov 2010, 20:16

Bella la tua risoluzione xyx!
in effetti con questo tipo di problemi il Prolog è l'ideale! =D>
in /dev/null no one can hear you scream
Avatar utente
Foto Utenteangus
8.485 4 6 9
G.Master EY
G.Master EY
 
Messaggi: 4172
Iscritto il: 20 giu 2008, 17:25

0
voti

[29] Re: problemi di logica [ultimo]

Messaggioda Foto Utenteg.schgor » 3 nov 2010, 12:09

Trovo interessante la discussione sui migliori
metodi di soluzione, ma devo dire che questo
non era l'obbiettivo della mia proposta.

Più che la partecipazione dei vari esperti,
speravo che qualche giovane potesse scoprire
i vantaggi dell' applicazione dell'algebra booleana
e di iniziare quindi un possibile approfondimento.

Prendendo atto di questo disinteresse,
chiudo pertanto l'argomento.
Avatar utente
Foto Utenteg.schgor
57,8k 9 12 13
G.Master EY
G.Master EY
 
Messaggi: 16971
Iscritto il: 25 ott 2005, 9:58
Località: MILANO

0
voti

[30] Re: problemi di logica [ultimo]

Messaggioda Foto Utenteangus » 3 nov 2010, 13:02

g.schgor ha scritto:Prendendo atto di questo disinteresse,
chiudo pertanto l'argomento.

Noto un tono di delusione in questa frase conclusiva.. e mi dispiace.
L'argomento credo possa interessare a molti.
Il fatto che non ci sia stata moltissima partecipazione, secondo me, è dovuto al fatto che il thread non compariva tra gli argomenti recenti (ho già segnalato la cosa nel forum "problemi") e probabilmente anche da una certa tendenza generalizzata ad usare il forum come risolutore di problemi più che come opportunità di scambio.

Mi pare di capire che la tua esperienza in materia sia vasta, se non ti è passata del tutto la voglia perché non scrivi un articolo base sull'argomento da pubblicare nel tuo blog di EY?
i molti altri articoli che hai pubblicato sono, a mio giudizio, davvero interessanti.
in /dev/null no one can hear you scream
Avatar utente
Foto Utenteangus
8.485 4 6 9
G.Master EY
G.Master EY
 
Messaggi: 4172
Iscritto il: 20 giu 2008, 17:25

PrecedenteProssimo

Torna a Ah, ci sono!

Chi c’è in linea

Visitano il forum: Nessuno e 7 ospiti