LINUX.ORG.RU

История изменений

Исправление wandrien, (текущая версия) :

Я еще более тупой, я не очень понял условия задачи.

Так что ли надо?

data:
["a", "b", "c", "d"]
result:
["a", "b", "ab", "c", "ac", "bc", "abc", "d", "ad", "bd", "abd", "cd", "acd", "bcd", "abcd"]
arr = ["a", "b", "c", "d"]

def enum_combinations(arr, comb = [])
    return comb if arr.empty?
    item = arr.shift
    comb2 = [item]
    comb.each {|i| comb2.push(i + item) }
    comb  = comb.concat(comb2)
    return enum_combinations(arr, comb)
end

puts "data:"
p arr

puts "result:"
p enum_combinations(arr)

Сорян, я в lua не оч. Писал на более понятном ЯП.

Исправление wandrien, :

Я еще более тупой, я не очень понял условия задачи.

Так что ли надо?

data:
["a", "b", "c", "d"]
result:
["a", "b", "ab", "c", "ac", "bc", "abc", "d", "ad", "bd", "abd", "cd", "acd", "bcd", "abcd"]
arr = ["a", "b", "c", "d"]

def enum_combinations(arr, comb = [])
    return comb if arr.empty?
    item = arr.shift
    comb2 = [item]
    comb.each {|i| comb2.push(i + item) }
    comb  = comb.concat(comb2)
    return enum_combinations(arr, comb)
end

puts "data:"
p arr

puts "result:"
p enum_combinations(arr)

Сорян, я в lua не оч. Писал на более понятном ЯП.

Исходная версия wandrien, :

Я еще более тупой, я не очень понял условия задачи.

Так что ли надо?

data:
["a", "b", "c", "d"]
result:
["a", "b", "ab", "c", "ac", "bc", "abc", "d", "ad", "bd", "abd", "cd", "acd", "bcd", "abcd"]
arr = ["a", "b", "c", "d"]

def enum_combinations(arr, comb = [])
    return comb if arr.empty?
    item = arr.shift
    if comb.empty? then
        comb = [item]
    else
        comb2 = [item]
        comb.each {|i| comb2.push(i + item) }
        comb  = comb.concat(comb2)
    end
    return enum_combinations(arr, comb)
end

puts "data:"
p arr

puts "result:"
p enum_combinations(arr)

Сорян, я в lua не оч. Писал на более понятном ЯП.