sendmory.pl

来自「PRl教学程序 PRl教学程序 PRl教学程序」· PL 代码 · 共 45 行

PL
45
字号
/********************************************************************
    Constraint-based Graphical Programming in B-Prolog
    %
    solve the SEND+MORE=MONEY puzzle
*********************************************************************/
go:-
    Vars=[S,E,N,D,M,O,R,Y],
    Vars in 0..9,
    alldifferent(Vars),
    S#\=0,
    M#\=0,
    1000*S+100*E+10*N+D+1000*M+100*O+10*R+E#=10000*M+1000*O+100*N+10*E+Y,
    labeling(Vars),
    % show solution
    createLabels([(Ds,S),(De,E),(Dn,N),(Dd,D),
		  (Em,M),(Eo,O),(Er,R),(Ee,E),
		  (Ym,M),(Yo,O),(Yn,N),(Ye,E),(Yy,Y)]),

    % constraint
    cgLabel(Plus), Plus^text #= '+',
    cgRectangle(Rect),
    cgLine(Line), Line^y1 #= Line^y2, Line^y1 #= Rect^centerY, Line^x1 #= Rect^x, Line^x2 #= Rect^rightX,

    cgGrid([[_,Ds,De,Dn,Dd],
	    [Plus,Em,Eo,Er,Ee],
	    [Rect, Rect, Rect, Rect,Rect],
	    [Ym,Yo,Yn,Ye,Yy]]),

    %
    cgStartRecord(sendmory),
    cgShow([Ds,De,Dn,Dd,
	    Plus,Em,Eo,Er,Ee,
	    Line,
	    Ym,Yo,Yn,Ye,Yy]),
    cgStopRecord.

createLabels([]).
createLabels([(Label,Text)|Ls]):-
    cgLabel(Label),Label^text #= Text,
    Label^fontSize #= 20,
    Label^fontStyle #= 'BOLD',
    createLabels(Ls).


⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?