# About javascript looping logic

Let car = [‘c’,‘a’,‘r’];

Expected result: [‘c’,‘ca’,‘cr’,‘car’,‘a’,‘ar’,‘r’]

How to solve this by forloop in js?

Thanks in advance

What have you tried so far?

Gonna be honest, the answer to this using `for` is somewhat eluding me… at least, in the expected result order.

Solved . . .

3 Likes

Somehow Virgil comes to mind on looking at that.

“Beware of Greeks bearing gifts.” - Virgil.

2 Likes

I have just used split to seperate it and concat

I want to know if it’s possible using forloop

Amusing.

I can get to a point where it would give [“c”,“a”,“r”,“ca”,“cr”, “ar”,“car”] in a relatively non-specific `for` formation, but not in the order that was given.

Essentially, OP would be hardcoding a recursive operation though, which is the better solution.

Order is not an issue

Less ‘if’ statements now . . . . .

OP, is there an actual problem you are trying to solve by doing this?

2 Likes

Well then this should do the trick…

``````function powerset ([head, ...tail]) {
if (!head) {
return []
}

if (!tail.length) {
return [head]
}

const tailResults = powerset(tail)

return [head, ...tailResults, ...tailResults.map(
result => head + result)]
}

console.log(powerset(['c', 'a', 'r'])) // ['c', 'a', 'r', 'ar', 'ca',  'cr', 'car']
``````

BTW does anyone know the technical term for this?

Edit: Thx @rpkamp! `:-)`

That will be combinations. The other one commonly seen is permutations.

[Edit: Cunningham’s Law to the rescue once again!
“the best way to get the right answer on the internet is not to ask a question; it’s to post the wrong answer.”]

1 Like

It’s the Power set of the set (“c”, “a”, “r”)

3 Likes

strictly speaking if it was a power set it would also contain `""`, (a power set contains 2^n elements, so an input set of size 3 should have a power set of size 8) but thats a quibble.

1 Like

This topic was automatically closed 91 days after the last reply. New replies are no longer allowed.