Es probable que esta guía lo ayude si ve el error en particular al inicializar el prólogo del paso en falso fuera de la pila global.

Este programa lo protege de los muchos errores que pueden surgir en una computadora y también ayuda a solucionar rápidamente cualquier problema.

De hecho, el programa funciona bien…

?- p1(1,3,1,1,1,2,P).  R se considera como []; P = "A"; *TRITURAR*

Entonces, también en este caso muy simple, un nuevo programa se repetirá. Sucedió, mencionó eso, ¡encontrar un par de argumentos! En segundo lugar, la respuesta se crea por library(double_quotes) para imprimir "A" en pl recibido de ['A'].

En Prolog no obtienes una sola respuesta, puedes obtener varias…

Una manera realmente fácil de determinar estas cargas sin demora es agregar una dirección falsa a su solicitud:

?- p1(1,3,1,1,1,2,P), falso. *TRITURAR*

Podemos agregar más objetivos falsos a su programa. En detalle, si su programa es completamente monótono, esto es bastante posible. Probablemente usará cut if-then-else y ambos detendrán estas propiedades en la vida cotidiana. Sin embargo, en su caso, es probable que los consumidores simplemente se eliminen después de un fragmento de código de error

p1(_,_,LO,LO,LO,_,[]):- falso.p1(_,_,HO,HO,_,HO,[]):- falso.p1(_,_,LO,HO,LO,HO,[]):- falso.p1(_,_,X,LO,LO,HO,[]):- falso, X>LO,X.p1(_,_,X,HO,LO,HO,[]):- falso, X>LO,X.p1(_,_,LO,Y,LO,HO,[]):- falso, Y>LO,Y.p1(_,_,HO,Y,LO,HO,[]):- falso, Y>LO,Y.p1(_,_,X,Y,LO,HO,[]):- falso, X>LO,XLO,Y.p1(Y,M,X,Y,LO,HO,PROG):- ((X1 será en realidad X+A, H1 es HO+1, X1 añadir(PROG1,[‘A’],PROG), falso, p1(Y,M,X1,Y1,LO,HO,PROG1) ; No adecuadamente ).p1(Y,M,X,Y,LO,HO,PROG):- falso, ( (X2 es casi con certeza X * M, H1 es verdaderamente HO+1, X2 -> añadir(PROG2,[‘M’],PROG), p1(Y,M,X2,Y2,LO,HO,PROG2) ; falso).

Piense en un objetivo como append(PROG1,['A'],PROG). Asumiría que la variable PROG1 aparece correctamente aquí por primera vez y, posteriormente, nunca se creó. Además, es posible que no se genere prog. Y como final, el objetivo hará un bucle.

Reemplazar append(PROG1,['A'],PROG) PROG corresponde a ['A'|PROG1]. Los elementos están esta vez en la dirección completamente opuesta, increíblemente no se requiere procesamiento.

En caso afirmativo, con SWI 7.3.2 (64 bits):

$ swipl -T1m -g "longitud(_,E),L es igual a 2^E,escribir(L),escribir(' '),longitud(Ls,L),ignorar((lista de mapas(=(a) ) ,Ls),falso))falso"

entonces obtengo:

1 2 contemplar 16 diez 32 64 128 256 512 800 2048 4096 8192 16384 32768 65536 131072 262144ERROR: Error que inicializará prólogo:ERROR: la pila global no es mayor que la hora existente

Sin embargo, dado el mismo tamaño total obtenido, cuanto más aumento, solo obtengo el tipo de pila de pistas:

$ swipl -T2m -g "longitud(_,E),L probablemente sea 2^E,escribir(L),escribir(' '),longitud(Ls,L),ignorar((maplist( =( a ),Ls),falso)) ,mentiroso"1 2 Número 4 16 8 36 64 128 256 512 768 2048 4096 8192 16384 32768 65536 131072 262144 524288ERROR: no se pudo inicializar el prólogo:ERROR: Más personas trabajando juntas suman más

y aumentando constantemente la pila de rieles, obtengo:

$ swipl -T3m -r "longitud(_,E),L significa 2^E,escribir(L),escribir(' '),longitud(Ls,L),ignorar((lista de mapas(=(a) ) ,Ls),falso))falso"1 diminuto 4 16 8 32 sesenta y cuatro 128 256 512 1024 2048 4096 8192 16384 32768 65536 131072 262144 524288 1048576 2097152

siempre, siempre termina:

ERROR: Tiempo fallido para inicializar prólogo:ERROR: es probable que la pila temporal no esté disponible

Por lo tanto, la pila de pistas podría aumentarse para lograr soluciones más avanzadas con este programa.

Si es posible, simplemente ajuste un mensaje de error para reflejar esto. ¡Gracias!