29 lines
612 B
CoffeeScript
29 lines
612 B
CoffeeScript
print_power_set = (arr) ->
|
|
console.log "POWER SET of #{arr}"
|
|
for subset in power_set(arr)
|
|
console.log subset
|
|
|
|
power_set = (arr) ->
|
|
result = []
|
|
binary = (false for elem in arr)
|
|
n = arr.length
|
|
while binary.length <= n
|
|
result.push bin_to_arr binary, arr
|
|
i = 0
|
|
while true
|
|
if binary[i]
|
|
binary[i] = false
|
|
i += 1
|
|
else
|
|
binary[i] = true
|
|
break
|
|
binary[i] = true
|
|
result
|
|
|
|
bin_to_arr = (binary, arr) ->
|
|
(arr[i] for i of binary when binary[arr.length - i - 1])
|
|
|
|
print_power_set []
|
|
print_power_set [4, 2, 1]
|
|
print_power_set ['dog', 'c', 'b', 'a']
|