persona( mujer, maria) .
persona( mujer, sofia) .
persona( varon, jaime) .
persona( varon, juan) .
%articulo(vestido).
%articulo(sombrero).
%articulo(zapatos).
costo( sombrero, 200 ) .
costo( zapato, 200 ) .
costo( vestido, 100 ) .
%stockSombrero([mujer,varon],[2,1]). %2 sobreros de mujer y 1 de varon.
stockVestido( [ xs, m, l, xl] , [ 3 , 30 , 10 , 5 ] ) .
%tallas de vestidos con las respectivas cantidades en la tienda
stockZapato( varon, [ 40 , 41 , 42 ] , [ 20 , 0 , 10 ] ) .
%tallas de zapatos con las respectivas cantidades en la tienda
stockZapato( mujer, [ 36 , 37 , 38 ] , [ 5 , 2 , 14 ] ) .
%tallas de zapatos con las respectivas cantidades en la tienda
%gusta(jaime,zapatos).
%gusta(maria,vestido).
%gusta(maria,sombrero).
%
interesa( jaime, zapatos) .
interesa( jaime, sombrero) .
interesa( X, Y) :- ( persona( mujer, X) , costo( Y, Z) , Z< 200 ) .
talla( xs) .
talla( l) .
talla( m) .
talla( xl) .
imprimirStock
:- stockVestido
( _
, [ Xs
, M
, L
, Xl
] ) , write ( "talla xs hay
: "
) ,
sumarLista( [ ] , 0 ) .
sumarLista
( [ X
| XS
] , R
) :- sumarLista
( XS
, Z
) , R
is X
+ Z
.
contarStockZapatos( R) :- stockZapato( varon, _, L1) , stockZapato( mujer, _, L2) ,
sumarLista
( L1
, R1
) , sumarLista
( L2
, R2
) , R
is R1
+ R2
.
dec
( A
, B
) :- B
is ( A
- 1 ) . %??? por que incrementa uno? descontarVestido
( T
) :- T
= xs
, stockVestido
( _
, [ A
, B
, C
, D
] ) , A
> 0 , write ( "para la prueba
: "
) , write ( A
) , retract ( stockVestido
( _
, _
) ) , dec
( A
, R
) , asserta ( stockVestido
( [ xs
, m
, l
, xl
] , [ R
, B
, C
, D
] ) ) ; T
= m
, stockVestido
( _
, [ A
, B
, C
, D
] ) , B
> 0 , retract ( stockVestido
( _
, _
) ) , dec
( B
, R
) , asserta ( stockVestido
( [ xs
, m
, l
, xl
] , [ A
, R
, C
, D
] ) ) ; T
= l
, stockVestido
( _
, [ A
, B
, C
, D
] ) , C
> 0 , retract ( stockVestido
( _
, _
) ) , dec
( C
, R
) , asserta ( stockVestido
( [ xs
, m
, l
, xl
] , [ A
, B
, R
, D
] ) ) ; T
= xl
, stockVestido
( _
, [ A
, B
, C
, D
] ) , D
> 0 , retract ( stockVestido
( _
, _
) ) , dec
( D
, R
) , asserta ( stockVestido
( [ xs
, m
, l
, xl
] , [ A
, B
, C
, R
] ) ) ; writeln( "No quedan mas stocks de esa talla, no se realizó la compra") , menu.
descontar
( Valor
, Porcentaje
, R
) :- R
is ( Valor
* Porcentaje
) / 100 .
verificarSiSeDescuenta( P, T) :- persona( varon, P) , T = xs.
% Persona, Articulo, Talla
comprarVestido
( P
, T
) :- costo
( vestido
, X
) , verificarSiSeDescuenta
( P
, T
) - > descontar
( X
, 20 , R
) , descontarVestido
( T
) , write ( "Se a comprado el vestido con exito con un descuento del
20 %, Costo : "), writeln(R), menu;writeln("Se a comprado el vestido con exito"), descontarVestido(T), menu.
switch
( 1 ) :- nl , imprimirStock
, menu
. switch
( 2 ) :- contarStockZapatos
( R
) , write ( "en la tienda hay
: "
) , write ( R
) , write ( " Zapatos tanto de hombres como de mujeres"
) , nl , menu
( ) . switch( 3 ) :- writeln( "1 . - jaime le interesa sombrero costo 200 ") ,
writeln( "2 . - jaime le intersa vestido costo 100 ") ,
writeln( "3 . - sofia le intersa sombrero costo = 200 ") ,
writeln
( "
4 . - sofia le intersa vestido costo
= 100 "
) , read ( Y
) , opcion2
( Y
) .
switch( 4 ) :- writeln( "quien compra vestido, escribe el nombre") ,
writeln( "jaime") ,
writeln( "maria") ,
writeln( "sofia") ,
writeln
( "juan"
) , read ( P
) , persona
( _
, P
) , write ( "nombre
: "
) , write ( P
) , nl , seleccionarTalla
( P
) ; writeln
( "error
, escriba una persona existente"
) , switch( 4 ) .
switch( _) :- writeln( "fin del programa") .
seleccionarTalla( P) :- writeln( "Elige Talla : escribe la talla") ,
writeln( "xs") ,
writeln( "m") ,
writeln( "l") ,
writeln
( "xl"
) , read ( T
) , talla
( T
) , write ( "Talla
: "
) , writeln( "error, talla no existente, vuelva a escribir una talla valida") ,
seleccionarTalla( P) .
opcion2( X) :- ( X == 1 , ( interesa( jaime, sombrero) - > writeln( "si") ; writeln( "no") ) , menu) ;
( X == 2 , ( interesa( jaime, vestido) - > writeln( "si") ; writeln( "no") ) , menu) ;
( X == 3 , ( interesa( sofia, sombrero) - > writeln( "Si") ; writeln( "no") ) , menu) ;
( X == 4 , ( interesa( sofia, vestido) - > writeln( "Si") ; writeln( "no") ) , menu) ;
writeln( "error, elija una opcion valida") , switch( 3 ) .
menu :- writeln( "Seleccione uno de los siguientes datospara salir escriba 5 u otro numero o letra") ,
writeln( "1 . - ver Stock de vestidos") ,
writeln( "2 . - Contar stock Zapato") ,
writeln( "3 . - A persona le interesa... ") ,
writeln
( "
4 . - Comprar Vestido"
) , read ( X
) , switch
( X
) .
menu.
cGVyc29uYShtdWplciwgbWFyaWEpLgpwZXJzb25hKG11amVyLCBzb2ZpYSkuCnBlcnNvbmEodmFyb24sIGphaW1lKS4KcGVyc29uYSh2YXJvbiwganVhbikuCgolYXJ0aWN1bG8odmVzdGlkbykuCiVhcnRpY3Vsbyhzb21icmVybykuCiVhcnRpY3Vsbyh6YXBhdG9zKS4KCmNvc3RvKHNvbWJyZXJvLDIwMCkuCmNvc3RvKHphcGF0bywyMDApLgpjb3N0byh2ZXN0aWRvLDEwMCkuCgolc3RvY2tTb21icmVybyhbbXVqZXIsdmFyb25dLFsyLDFdKS4gJTIgc29icmVyb3MgZGUgbXVqZXIgeSAxIGRlIHZhcm9uLgo6LSBkeW5hbWljKHN0b2NrVmVzdGlkby8yKS4Kc3RvY2tWZXN0aWRvKFt4cywgbSwgbCwgeGxdLFszLDMwLDEwLDVdKS4KJXRhbGxhcyBkZSB2ZXN0aWRvcyBjb24gbGFzIHJlc3BlY3RpdmFzIGNhbnRpZGFkZXMgZW4gbGEgdGllbmRhCgpzdG9ja1phcGF0byh2YXJvbiwgWzQwLCA0MSwgNDJdLFsyMCwwLDEwXSkuCiV0YWxsYXMgZGUgemFwYXRvcyBjb24gbGFzIHJlc3BlY3RpdmFzIGNhbnRpZGFkZXMgZW4gbGEgdGllbmRhCgpzdG9ja1phcGF0byhtdWplciwgWzM2LCAzNywgMzhdLFs1LDIsMTRdKS4KJXRhbGxhcyBkZSB6YXBhdG9zIGNvbiBsYXMgcmVzcGVjdGl2YXMgY2FudGlkYWRlcyBlbiBsYSB0aWVuZGEKCiVndXN0YShqYWltZSx6YXBhdG9zKS4KJWd1c3RhKG1hcmlhLHZlc3RpZG8pLgolZ3VzdGEobWFyaWEsc29tYnJlcm8pLgolCmludGVyZXNhKGphaW1lLCB6YXBhdG9zKS4KaW50ZXJlc2EoamFpbWUsIHNvbWJyZXJvKS4KaW50ZXJlc2EoWCxZKTotIChwZXJzb25hKG11amVyLFgpLGNvc3RvKFksWiksWjwyMDApLgoKdGFsbGEoeHMpLgp0YWxsYShsKS4KdGFsbGEobSkuCnRhbGxhKHhsKS4KCmltcHJpbWlyU3RvY2sgOi0gc3RvY2tWZXN0aWRvKF8sIFtYcyxNLEwsWGxdKSx3cml0ZSgidGFsbGEgeHMgaGF5IDogIiksCiAgICAgICAgICAgICAgICAgd3JpdGUoWHMpLHdyaXRlKCIsIHRhbGxhIG0gaGF5IDogIiksd3JpdGUoTSksd3JpdGUoIiwgdGFsbGEgbCBoYXkgOiAiKSwKICAgICAgICAgICAgICAgICB3cml0ZShMKSx3cml0ZSgiLCB0YWxsYSB4bCBoYXkgIiksd3JpdGUoWGwpLG5sLgoKc3VtYXJMaXN0YShbXSwwKS4Kc3VtYXJMaXN0YShbWHxYU10sIFIpOi0gc3VtYXJMaXN0YShYUyxaKSwgUiBpcyBYK1ouCgpjb250YXJTdG9ja1phcGF0b3MoUik6LSBzdG9ja1phcGF0byh2YXJvbixfLEwxKSwgc3RvY2taYXBhdG8obXVqZXIsXyxMMiksIAogICAgICAgICAgICAgICAgICAgICAgICBzdW1hckxpc3RhKEwxLCBSMSksIHN1bWFyTGlzdGEoTDIsUjIpLCBSIGlzIFIxK1IyLgoKZGVjKEEsQik6LSBCIGlzIChBLTEpLiAlPz8/IHBvciBxdWUgaW5jcmVtZW50YSB1bm8/CmRlc2NvbnRhclZlc3RpZG8oVCk6LSBUID0geHMgLHN0b2NrVmVzdGlkbyhfLFtBLEIsQyxEXSkgLEE+MCx3cml0ZSgicGFyYSBsYSBwcnVlYmEgOiAiKSx3cml0ZShBKSxyZXRyYWN0KHN0b2NrVmVzdGlkbyhfLF8pKSxkZWMoQSwgUiksYXNzZXJ0YShzdG9ja1Zlc3RpZG8oW3hzLG0sbCx4bF0sW1IsQixDLERdKSk7CiAgICAgICAgICAgICAgICAgICAgICBUID0gbSAsc3RvY2tWZXN0aWRvKF8sW0EsQixDLERdKSAsQj4wLHJldHJhY3Qoc3RvY2tWZXN0aWRvKF8sXykpLGRlYyhCLCBSKSxhc3NlcnRhKHN0b2NrVmVzdGlkbyhbeHMsbSxsLHhsXSxbQSxSLEMsRF0pKTsKICAgICAgICAgICAgICAgICAgICAgIFQgPSBsICxzdG9ja1Zlc3RpZG8oXyxbQSxCLEMsRF0pICxDPjAscmV0cmFjdChzdG9ja1Zlc3RpZG8oXyxfKSksZGVjKEMsIFIpLGFzc2VydGEoc3RvY2tWZXN0aWRvKFt4cyxtLGwseGxdLFtBLEIsUixEXSkpOwogICAgICAgICAgICAgICAgICAgICAgVCA9IHhsICxzdG9ja1Zlc3RpZG8oXyxbQSxCLEMsRF0pICxEPjAscmV0cmFjdChzdG9ja1Zlc3RpZG8oXyxfKSksZGVjKEQsIFIpLGFzc2VydGEoc3RvY2tWZXN0aWRvKFt4cyxtLGwseGxdLFtBLEIsQyxSXSkpOwogICAgICAgICAgICAgICAgICAgICAgd3JpdGVsbigiTm8gcXVlZGFuIG1hcyBzdG9ja3MgZGUgZXNhIHRhbGxhLCBubyBzZSByZWFsaXrDsyBsYSBjb21wcmEiKSxtZW51LgoKZGVzY29udGFyKFZhbG9yLCBQb3JjZW50YWplLCBSKTotIFIgaXMgKFZhbG9yKlBvcmNlbnRhamUpLzEwMC4KCnZlcmlmaWNhclNpU2VEZXNjdWVudGEoUCxUKTotIHBlcnNvbmEodmFyb24sUCksIFQgPSB4cy4KJSAgICAgICAgICBQZXJzb25hLCBBcnRpY3VsbywgVGFsbGEKY29tcHJhclZlc3RpZG8oUCxUKTotIGNvc3RvKHZlc3RpZG8sWCksIHZlcmlmaWNhclNpU2VEZXNjdWVudGEoUCxUKSAtPiBkZXNjb250YXIoWCwyMCxSKSxkZXNjb250YXJWZXN0aWRvKFQpLHdyaXRlKCJTZSBhIGNvbXByYWRvIGVsIHZlc3RpZG8gY29uIGV4aXRvIGNvbiB1biBkZXNjdWVudG8gZGVsIDIwJSwgQ29zdG8gOiAiKSwgd3JpdGVsbihSKSwgbWVudTt3cml0ZWxuKCJTZSBhIGNvbXByYWRvIGVsIHZlc3RpZG8gY29uIGV4aXRvIiksIGRlc2NvbnRhclZlc3RpZG8oVCksIG1lbnUuCgpzd2l0Y2goMSk6LSBubCxpbXByaW1pclN0b2NrLCBtZW51Lgpzd2l0Y2goMik6LSBjb250YXJTdG9ja1phcGF0b3MoUiksIHdyaXRlKCJlbiBsYSB0aWVuZGEgaGF5IDoiKSwKICAgICAgICAgICB3cml0ZShSKSx3cml0ZSgiIFphcGF0b3MgdGFudG8gZGUgaG9tYnJlcyBjb21vIGRlIG11amVyZXMiKSxubCwgbWVudSgpLgpzd2l0Y2goMyk6LSB3cml0ZWxuKCIxLi0gamFpbWUgbGUgaW50ZXJlc2Egc29tYnJlcm8gY29zdG8gMjAwIiksCiAgICAgICAgICAgIHdyaXRlbG4oIjIuLSBqYWltZSBsZSBpbnRlcnNhIHZlc3RpZG8gY29zdG8gMTAwIiksCiAgICAgICAgICAgIHdyaXRlbG4oIjMuLSBzb2ZpYSBsZSBpbnRlcnNhIHNvbWJyZXJvIGNvc3RvID0gMjAwIiksCiAgICAgICAgICAgIHdyaXRlbG4oIjQuLSBzb2ZpYSBsZSBpbnRlcnNhIHZlc3RpZG8gY29zdG8gPSAxMDAiKSxyZWFkKFkpLG9wY2lvbjIoWSkuCgpzd2l0Y2goNCk6LSB3cml0ZWxuKCJxdWllbiBjb21wcmEgdmVzdGlkbywgZXNjcmliZSBlbCBub21icmUiKSwKICAgICAgICAgICAgd3JpdGVsbigiamFpbWUiKSwKICAgICAgICAgICAgd3JpdGVsbigibWFyaWEiKSwKICAgICAgICAgICAgd3JpdGVsbigic29maWEiKSwKICAgICAgICAgICAgd3JpdGVsbigianVhbiIpLHJlYWQoUCkscGVyc29uYShfLFApLHdyaXRlKCJub21icmUgOiAiKSwKICAgICAgICAgICAgd3JpdGUoUCkgLG5sLHNlbGVjY2lvbmFyVGFsbGEoUCk7d3JpdGVsbigiZXJyb3IsIGVzY3JpYmEgdW5hIHBlcnNvbmEgZXhpc3RlbnRlIiksIAogICAgICAgICAgICBzd2l0Y2goNCkuCgpzd2l0Y2goXyk6LSB3cml0ZWxuKCJmaW4gZGVsIHByb2dyYW1hIikuCgpzZWxlY2Npb25hclRhbGxhKFApOi13cml0ZWxuKCJFbGlnZSBUYWxsYSA6IGVzY3JpYmUgbGEgdGFsbGEiKSwKICAgICAgICAgICAgICAgICAgICB3cml0ZWxuKCJ4cyIpLAogICAgICAgICAgICAgICAgICAgIHdyaXRlbG4oIm0iKSwKICAgICAgICAgICAgICAgICAgICB3cml0ZWxuKCJsIiksCiAgICAgICAgICAgICAgICAgICAgd3JpdGVsbigieGwiKSwgcmVhZChUKSx0YWxsYShUKSx3cml0ZSgiVGFsbGEgOiAiKSwgCiAgICAgICAgICAgICAgICAgICAgd3JpdGUoVCksIG5sLCBjb21wcmFyVmVzdGlkbyhQLFQpOyAKICAgICAgICAgICAgICAgICAgICB3cml0ZWxuKCJlcnJvciwgdGFsbGEgbm8gZXhpc3RlbnRlLCB2dWVsdmEgYSBlc2NyaWJpciB1bmEgdGFsbGEgdmFsaWRhIiksIAogICAgICAgICAgICAgICAgICAgIHNlbGVjY2lvbmFyVGFsbGEoUCkuCgpvcGNpb24yKFgpOi0gKFggPT0gMSwoaW50ZXJlc2EoamFpbWUsIHNvbWJyZXJvKS0+IHdyaXRlbG4oInNpIik7IHdyaXRlbG4oIm5vIikpLG1lbnUpOwogICAgICAgICAgICAgKFggPT0gMiwoaW50ZXJlc2EoamFpbWUsIHZlc3RpZG8pLT4gd3JpdGVsbigic2kiKTsgd3JpdGVsbigibm8iKSksIG1lbnUpOwogICAgICAgICAgICAgKFggPT0gMywoaW50ZXJlc2Eoc29maWEsIHNvbWJyZXJvKS0+d3JpdGVsbigiU2kiKTsgd3JpdGVsbigibm8iKSksIG1lbnUpOwogICAgICAgICAgICAgKFggPT0gNCwoaW50ZXJlc2Eoc29maWEsIHZlc3RpZG8pLT53cml0ZWxuKCJTaSIpOyB3cml0ZWxuKCJubyIpKSwgbWVudSk7CiAgICAgICAgICAgICB3cml0ZWxuKCJlcnJvciwgZWxpamEgdW5hIG9wY2lvbiB2YWxpZGEiKSxzd2l0Y2goMykuCgptZW51IDotIHdyaXRlbG4oIlNlbGVjY2lvbmUgdW5vIGRlIGxvcyBzaWd1aWVudGVzIGRhdG9zcGFyYSBzYWxpciBlc2NyaWJhIDUgdSBvdHJvIG51bWVybyBvIGxldHJhIiksCiAgICAgICAgICB3cml0ZWxuKCIxLi0gdmVyIFN0b2NrIGRlIHZlc3RpZG9zIiksCiAgICAgICAgICB3cml0ZWxuKCIyLi0gQ29udGFyIHN0b2NrIFphcGF0byIpLAogICAgICAgICAgd3JpdGVsbigiMy4tIEEgcGVyc29uYSBsZSBpbnRlcmVzYS4uLiIpLAogICAgICAgICAgd3JpdGVsbigiNC4tIENvbXByYXIgVmVzdGlkbyIpLHJlYWQoWCksc3dpdGNoKFgpLgoKbWVudS4=