以下是一些将十六进制转换为二进制的程序,我需要为<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} !^example\.com$ [NC]
RewriteRule ^ https://example.com%{REQUEST_URI} [L,NE,R=301]
</IfModule>
获取类似X = [1,1,1,1,0,0,0,0]
的结果。
所以我需要加入所有列表。有人可以告诉我该怎么做吗?
pred([f,0])
我的问题在追加。
答案 0 :(得分:0)
让我们从一些例子开始,假装我们已经有了这个谓词:
?- pred( [f, 0], X ).
X = [1,1,1,1, 0,0,0,0]. % that's what you said you want, isn't it?
?- pred( [f, 0], [1,1,1,1, 0,0,0,0] ).
yes.
?- pred( [f | [0]], [1,1,1,1 | [0,0,0,0]] ).
yes.
?- pred( [f | HEX], [A,B,C,D | BIN] ), [A,B,C,D] = [1,1,1,1], pred( HEX, BIN).
yes.
?- pred( [f | HEX], [A,B,C,D | BIN] ), hex(f, [A,B,C,D]), pred( HEX, BIN).
yes.
?- pred( [0 | HEX2], [A2,B2,C2,D2 | BIN2] ), hex(0, [A2,B2,C2,D2]), pred( HEX2, BIN2).
yes.
?- pred( [0 | HEX2], [A2,B2,C2,D2 | BIN2] ), hex(0, [A2,B2,C2,D2]),
HEX2 = [], BIN2 = [], pred( HEX2, BIN2).
yes.
是?对? (如果不清楚,请考虑身份[0] = [0 | []]
)。
这意味着它也必须是
的情况?- HEX2 = [], BIN2 = [], pred( HEX2, BIN2).
yes.
?- pred( [], []).
yes.
瞧,我们看到必须的基本情况。正确?
此外,我们实际上已经看到了递归案例必须具备的内容。而且你不需要在那里进行任何明确的append
呼叫。这样:
?- pred( [f | HEX], [A,B,C,D | BIN] ), hex(f, [A,B,C,D]), pred( HEX, BIN).
yes.
可以写成
?- pred( [F | HEX], [A,B,C,D | BIN] ), F = f, hex(F, [A,B,C,D]), pred( HEX, BIN).
yes.
但实际上,它很容易概括为
?- pred( [F | HEX], [A,B,C,D | BIN] ), hex(F, [A,B,C,D]), pred( HEX, BIN).
yes.
你有它。
请参阅? Prolog非常有趣。 Prolog很容易。 Prolog只是说出你的意思。