/*
 * ej3b.pl
 *
 * Esta version realiza una recursion de arbol, que se ve en que 
 * hay *dos* llamadas a tartaglia/3 dentro de fila_tartaglia/2.
 * 
 * ejecutar en GNU Prolog mediante:
 * gprolog --entry-goal "consult('ej3b.pl')" --query-goal 'inicial'
 */

/*
 * tarta(+Fila, +Columna, ?Valor)
 */

tarta(1,1,1).

tarta(_,1,1) :- !. /* el primer numero es 1 */
tarta(X,X,1) :- !. /* el ultimo numero es 1 */

tarta(Fila, Colu, T) :-
	FilaAnterior is Fila - 1, FilaAnterior > 0,
	ColuAnterior is Colu - 1, ColuAnterior > 0,
	tarta(FilaAnterior, ColuAnterior, T1), !,
	tarta(FilaAnterior, Colu, T2), !,
	T is T1 + T2.


inicial :- tartaglia(5,L), write(L), nl, fail.

inicial :- write('fin'), nl, halt.


/*
 * tartaglia(+Fila, ?ListaFila)
 */
tartaglia(Fila, Lista) :-
	arma_lista_tartaglia(Fila, Fila, Lista).



arma_lista_tartaglia(_Fila, 0, []).

arma_lista_tartaglia(Fila, Col, [T|Ts]) :-
	tarta(Fila, Col, T),
	Col2 is Col-1, Col2 >= 0,
	arma_lista_tartaglia(Fila, Col2, Ts).


/* EOF ej3b.pl */
