将Python代码转换为Oz

2024-04-29 23:18:07 发布

您现在位置:Python中文网/ 问答频道 /正文

有人能帮我把这段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。 以下是该代码的试运行:

^{pr2}$

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

Tags: 代码returnifcount子集removeendsum