アカウント名:
パスワード:
operator = ["+", "-", "*", "/"]answer = 0while True: try: for o1 in operator: for o2 in operator: for o3 in operator:
こういうのはPrologが得意なような?すっかり忘れたけど。
Prologの学習中なんで書いてみたけど、B-Prologに固有の述語に依存したコードしか書けなかった
main(N) :- N 0, !.main(N) :- sub(N, OP1, OP2, OP3, OP4), format('~d = 6 ~s 4 ~s 5 ~s 2 ~s 1~n', [N, OP1, OP2, OP3, OP4]), N2 is N - 1, main(N2).
sub(N, OP1, OP2, OP3, OP4) :- OPs = [OP1, OP2, OP3, OP4], OPs in ["+", "-", "*", "/"], number_codes(N, Nstr), labeling(OPs), flatten([Nstr, ".0 is float(6 ", OP1, " 4 ", OP2, " 5 ", OP3, " 2 ", OP4, " 1)"], S), parse_string(S, Term, _), Term.
main(30).で実行してみたら、割り算は15 = 6 + 4 * 5 / 2 - 1でしか使われてないけど15 = 6 * 4 - 5 * 2 + 1でもいいので割り算なくてもよさそう。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
吾輩はリファレンスである。名前はまだ無い -- perlの中の人
python (スコア:1)
operator = ["+", "-", "*", "/"]
answer = 0
while True:
try:
for o1 in operator:
for o2 in operator:
for o3 in operator:
Prolog (スコア:1)
こういうのはPrologが得意なような?
すっかり忘れたけど。
-- う~ん、バッドノウハウ?
Re:Prolog (スコア:0)
Prologの学習中なんで書いてみたけど、B-Prologに固有の述語に依存したコードしか書けなかった
main(N) :- N 0, !.
main(N) :-
sub(N, OP1, OP2, OP3, OP4),
format('~d = 6 ~s 4 ~s 5 ~s 2 ~s 1~n', [N, OP1, OP2, OP3, OP4]),
N2 is N - 1,
main(N2).
sub(N, OP1, OP2, OP3, OP4) :-
OPs = [OP1, OP2, OP3, OP4],
OPs in ["+", "-", "*", "/"],
number_codes(N, Nstr),
labeling(OPs),
flatten([Nstr, ".0 is float(6 ", OP1, " 4 ", OP2, " 5 ", OP3, " 2 ", OP4, " 1)"], S),
parse_string(S, Term, _),
Term.
main(30).
で実行してみたら、割り算は
15 = 6 + 4 * 5 / 2 - 1
でしか使われてないけど
15 = 6 * 4 - 5 * 2 + 1
でもいいので割り算なくてもよさそう。