<script>
function
sticks_break(stick_length, n, desired_length)
{
if
(n < 1)
return
0;
if
(stick_length < desired_length)
return
0;
if
(stick_length % 2 == 0)
if
(parseInt(stick_length / 2, 10) == desired_length)
return
2;
else
if
(parseInt(stick_length / 2, 10) > desired_length)
return
(sticks_break(parseInt(stick_length / 2, 10),
n - 1, desired_length));
if
(stick_length % 2 != 0)
if
(parseInt(stick_length / 2, 10) == desired_length)
return
1;
if
(parseInt(stick_length / 2, 10) + 1 == desired_length)
return
1;
if
(parseInt(stick_length/2, 10) > desired_length)
return
(Math.max(sticks_break(
parseInt(stick_length / 2, 10),
n - 1, desired_length),
sticks_break(
parseInt(stick_length / 2, 10) + 1,
n - 1, desired_length)));
return
0;
}
function
numberOfSticks(list_length, n, desired_length)
{
let count = 0;
for
(let i = 0; i < list_length.length; i++)
{
if
(desired_length == list_length[i])
count = count + 1;
else
if
(list_length[i]> desired_length)
count = count + sticks_break(list_length[i],
n, desired_length);
}
return
count;
}
let list_length = [ 1, 2, 3, 21 ];
let n = 3;
let desired_length = 3;
let count = numberOfSticks(list_length, n,
desired_length);
document.write(count);
</script>