Deze gids helpt je in het geval je een fout ziet en bovendien de foutenprolog initialiseert buiten de overzeese stapel.

Dit programma beschermt u tegen de vele fouten die zich op een computer kunnen voordoen en helpt ook om eventuele problemen snel op te lossen.

Het programma werkt prima…

?- p1(1,3,1,1,1,2,P).  R is []; P betekent "A"; *MALEN*

Dus zelfs in dit vrij eenvoudige geval zal je programma vastlopen. Het gebeurde echter om een ​​paar geweldige antwoorden te vinden! Ten tweede maakt de pick-up een library(double_quotes) met afbeelding "A" in pl van ['A'].

In Prolog krijgt iemand niet één antwoord, je kunt er meerdere krijgen…

Een gemakkelijke manier om deze belastingen rechtstreeks te berekenen, is door een false doel te verbeteren voor uw ongelooflijke verzoek:

?- p1(1,3,1,1,1,2,P), onwaar. *MALEN*

We hebben de mogelijkheid om andere valse doelen toe te voegen aan een persoonlijk programma. Sterker nog, als uw softwareprogramma echt eentonig is, is dit mogelijk. Je kunt vorm gebruiken als-dan-anders en beide vernietigen deze eigenschappen in het dagelijks leven. In uw zaak kunnen de consumenten echter gewoon worden verwijderd na het foutfragment

p1(_,_,LO,LO,LO,_,[]):- false.p1(_,_,HO,HO,_,HO,[]):- false.p1(_,_,LO,HO,LO,HO,[]):- false.p1(_,_,X,LO,LO,HO,[]):- false, X>LO,X.p1(_,_,X,HO,LO,HO,[]):- false, X>LO,X.p1(_,_,LO,Y,LO,HO,[]):- misvattingen, Y>LO,Y.p1(_,_,HO,Y,LO,HO,[]):- false, Y>LO,Y.p1(_,_,X,Y,LO,HO,[]):- false, X>LO,XLO,Y.p1(Y,M,X,Y,LO,HO,PROG):- ((X1 is eigenlijk X+A, H1 is HO+1, X1 add(PROG1,[‘A’],PROG), false, p1(Y,M,X1,Y1,LO,HO,PROG1) ; Niet zoals het hoort ).p1(Y,M,X,Y,LO,HO,PROG):- false, ( (X2 is meestal X ( spatie ) M, H1 is HO+1, X2 -> add(PROG2,[‘M’],PROG), p1(Y,M,X2,Y2,LO,HO,PROG2) ; vals).

Beschouw dit doel als append(PROG1,['A'],PROG). Ik zou zeggen dat het element PROG1 hier voor de eerste keer verschijnt en daarom nooit is voortgekomen. Ook wordt prog niet gegenereerd. En als resultaat zou het doelwit zeker een lus maken.

Vervang append(PROG1,['A'],PROG) PROG komt overeen met ['A'|PROG1]. De elementen bevinden zich nu in de tegenovergestelde richting van de afwerking, dus er hoeft geen bewerking nodig te zijn.

Zo ja, met SWI 7.3.2 (64-bit):

$ swipl -T1m -g "length(_,E),L geeft 2^E,write(L),write(' '),length(Ls,L),ignore((maplist(=(a)) aan ) ,Ls),false))false"

dan krijg ik:

1 2 4 16 tien 8 64 128 256 512 900 2048 4096 8192 16384 32768 65536 131072 262144FOUT: initialiseren van prolog is mislukt:FOUT: Globale stapel bestaat niet meer

Gegeven een nieuwe, zelfde totale stapelgrootte, verhoog ik echter veel, alleen het type spoorstapeling dat ik krijg:

$ swipl -T2m -gr "length(_,E),L zou waarschijnlijk 2^E,write(L),write(' '),length(Ls,L),ignore((maplist(=( de perfecte ),Ls),false)) ,Liegen"1 2 Nummer zes 16 8 32 64 128 256 512 1024 2048 4096 8192 16384 32768 65536 131072 262144 524288FOUT: initialiseren van prolog is mislukt:FOUT: Meer mensen die samen aan het werk zijn, tellen op

en als ik deze specifieke stapel nummers constant verhoog, krijg ik:

$ swipl -T3m -r "length(_,E),L is gelijk aan 2^E,write(L),write(' '),length(Ls,L),ignore((maplist(=(a)) ) ,Ls),false))false"1 seconde 4 16 5 32 vierenzestig 128 256 512 1440 2048 4096 8192 16384 32768 65536 131072 262144 524288 1048576 2097152

altijd, je moet altijd eindigen:

ERROR: initialiseren van de proloog is mislukt:FOUT: korte termijn stapel niet beschikbaar

Zo zou de track-totaal kunnen worden verhoogd om veel meer geavanceerde oplossingen met dit programma te bereiken.

Indien veelbelovend, pas dan de foutmelding aan als u dit wilt weergeven. Bedankt!