Created
July 29, 2018 00:33
-
-
Save hereismari/14821c6c757fc66d8ab193c02092e6f8 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
% funcao auxiliar que corta uma palavra adequadamente para flexiona-la | |
reduzir(VERBO, VERBO_REDUZIDO, N) :- | |
% tamanho do verbo eh TAM_VERBO | |
string_length(VERBO, TAM_VERBO), | |
% devemos retirar as ultimas N letras do verbo | |
FIM_VERBO is TAM_VERBO-N, | |
% o resultado eh guardado em VERBO_REDUZIDO | |
sub_atom(VERBO, 0, FIM_VERBO, _, VERBO_REDUZIDO). | |
% EU | |
flexionar('eu', VERBO, VERBO_FLEXIONADO) :- | |
% sao removidas as ultimas duas letras do verbo | |
reduzir(VERBO, VERBO_REDUZIDO, 2), | |
% adicionamos 'o' ao final de VERBO_REDUZIDO e resultado guardado em VERBO_FLEXIONADO | |
atom_concat(VERBO_REDUZIDO, 'o', VERBO_FLEXIONADO). | |
% TU | |
flexionar('tu', VERBO, VERBO_FLEXIONADO) :- | |
% flexao de ele concatenada com 's' | |
flexionar('ele', VERBO, VERBO_REDUZIDO), atom_concat(VERBO_REDUZIDO, 's', VERBO_FLEXIONADO). | |
% ELE | |
flexionar('ele', VERBO, VERBO_FLEXIONADO) :- | |
% basta remover a ultima letra do verbo | |
reduzir(VERBO, VERBO_FLEXIONADO, 1). | |
% NOS | |
flexionar('nós', VERBO, VERBO_FLEXIONADO) :- | |
% flexao de ele contanada com 'mos' | |
flexionar('ele', VERBO, VERBO_REDUZIDO), | |
atom_concat(VERBO_REDUZIDO, 'mos', VERBO_FLEXIONADO). | |
% VOS | |
flexionar('vós', VERBO, VERBO_FLEXIONADO) :- | |
% flexao de ele contanada com 'is' | |
flexionar('ele', VERBO, VERBO_REDUZIDO), | |
atom_concat(VERBO_REDUZIDO, 'is', VERBO_FLEXIONADO). | |
% ELES | |
flexionar('eles', VERBO, VERBO_FLEXIONADO) :- | |
% flexao de ele contanada com 'm' | |
flexionar('ele', VERBO, VERBO_REDUZIDO), | |
atom_concat(VERBO_REDUZIDO, 'm', VERBO_FLEXIONADO). | |
% Flexiona o verbo para todas as pessoas | |
flexionar(VERBO, FLEXOES) :- | |
findall([PESSOA|VERBO_FLEXIONADO], flexionar(PESSOA, VERBO, VERBO_FLEXIONADO), FLEXOES). |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment