Archive for septiembre 2019

ejercicio de prolog de monkey and banana

% adaptado de Bratko, I. (1986) "Prolog: Programming for Artificial Intelligene". Addison-Wesley.

% estado inicial: el mono está en la puerta, 
% Mono está en el piso, 
% Box está en la ventana, 
% El mono no tiene plátano.
%

% estructura de prólogo: structName (val1, val2, ...)

% de estado (ubicación del mono en la habitación, mono en la caja / en el piso, ubicación de la caja, tiene / no tiene banana)


% acciones legales

do (estado (medio, bandeja de entrada, medio, no tiene),% agarrar plátano
    agarrar,
    estado (medio, onbox, medio, has)). 

do (estado (L, en el piso, L, plátano),% cuadro de ascenso
    subida,
    estado (L, onbox, L, Banana)).

do (estado (L1, onfloor, L1, Banana),% cuadro de inserción de L1 a L2
    empujar (L1, L2),  
    estado (L2, onfloor, L2, Banana)).

do (estado (L1, en el piso, caja, plátano),% de caminata de L1 a L2
    caminar (L1, L2),
    estado (L2, piso, caja, plátano)).


% canget (Estado): el mono puede obtener plátano en estado

canget (estado (_, _, _, has)). % Mono ya lo tiene, estado objetivo

canget (State1): -% no estado de objetivo, hacer un trabajo para conseguirlo
      hacer (Estado1, Acción, Estado2),% hacer algo (agarrar, trepar, empujar, caminar) 
      canget (Estado2). % canget from State2

% obtener plan = lista de acciones 

canget (estado (_, _, _, has), []). % Mono ya lo tiene, estado objetivo

canget (State1, Plan): -% no estado de objetivo, hacer un trabajo para conseguirlo
      hacer (Estado1, Acción, Estado2),% hacer algo (agarrar, trepar, empujar, caminar) 
      canget (State2, PartialPlan),% canget from State2
      agregar (Acción, Plan parcial, Plan). % agregar acción al plan

agregar (X, L, [X | L]).

%? - canget (estado (atdoor, onfloor, atwindow, hasnot), Plan).
% Plan = [caminar (puerta, ventana), empujar (ventana, centro), subir, agarrar] 
% Si

%? - canget (estado (atwindow, onbox, atwindow, hasnot), Plan).
% No

%? - canget (estado (Monkey, onfloor, atwindow, hasnot), Plan).
% Monkey = atwindow
% Plan = [empujar (en la ventana, centro), subir, agarrar] 
% Si

- Copyright © Android Arm WorkStation - Blogger Templates - Powered by Blogger - Designed by Johanes Djogan -