-1

Prologで次のタスクがあります。

次の積が成り立つように、数字への文字の割り当て (各文字が異なる数字へ) を見つけます。

EAU * EAU = オーシャン

このコードが次のような場合:

:- use_module(library(clpfd)).

ocean(L) :-
   L = [O,C,E,A,N],
   L2 = [U|L],
   all_different(L2),
   L2 ins 0..9,
   EAU #= E*100 + A*10 + U,
   OCEAN #= O*10000 + C * 1000 + E*100 + A*10 + N,
   EAU * EAU #= OCEAN,
   labeling([], L2).

誰かが次のことを説明してもらえますか:

L2 ins 0..9 の意味は何ですか (これらの数値の間の範囲はなぜですか?)

*10000 + C * 1000 + E*100、E*100 + A*10 + U などの特定の数字を文字に掛けることの意味は何ですか?

提供されたガイダンスについて、事前に感謝します。

4

1 に答える 1

1

「0..9」は、0、1、2、3、4、5、6、7、8、または 9 の 1 桁を意味します。

EAU #= E*100 + A*10 + U数字「EAU」が数字「E」、「A」、「U」で構成されていることを示すためのものです。たとえば、数値が 735 の場合 = 7*100 + 3*10 + 5 です。

「OCEAN」も同様に 5 桁の数字です。

また、提供されたプログラムの制約は不完全に見えます。また、通常、「0123」のように先頭にゼロが付いた数字は使用しないため、すべての数字の最初の桁は 0 より大きいことに注意してください。

于 2014-05-27T01:30:58.670 に答える