この Python コードの一部を Oz 言語に翻訳するのを手伝ってくれませんか?
def rep_subset_conditional(S, tset, index, t, count):
for i in xrange(index, len(S)):
tset += [S[i]]
tsum = sum(tset)
if tsum == t:
print tset
count += 1
tset.remove(S[i])
return count
elif tsum > t:
tset.remove(S[i])
return count
else:
count=rep_subset_conditional(S, tset, i, t, count)
tset.remove(S[i])
return count
このコードは、合計が t に等しい特定のセットのすべてのサブセット (要素の繰り返しを含む) を単純に数えて出力します。以下は、このコードの試行実行です。
>>> rep_subset_conditional([1, 5, 10, 25, 50], [], 0, 10, 0)
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
[1, 1, 1, 1, 1, 5]
[5, 5]
[10]
4
t
ここでは 10
S
がサブセットでし[1, 5, 10, 25, 50]
た。このプログラムを Oz に変換したいと思います。しかし、私はそれを正しく行うことができません。助けてください!これは私が試したすべてです:
declare Rep T1 T2 Sum
fun {Rep L S MainList AuxList C}
case L of nil then C
[] H|T then
{Browse H|AuxList}
if {Sum H|AuxList} == S then
T1={Rep MainList S MainList H|AuxList C+1}
{Rep T S MainList AuxList T1}
else
if {Sum H|AuxList} < S then
T2 = {Rep MainList S MainList AuxList C}
{Rep T S MainList AuxList T2}
end
end
end
end
fun {Sum L}
case L of nil then 0
[] H|T then
H + {Sum T}
end
end