< Zpět na seznam úloh

A7 Rekurzivní seznam

var names = ["seznam"]
var mainFunction = "delky"
var datasets = [
  {argv: [[5, 6, 7]], out: 3},
  {argv: [[[1, 2], [3]]], out: [2, 1]},
  {argv: [[]], out: 0},
  {argv: [[[4, 4, 4, 4], [], [8, 9]]], out: [4, 0, 2]},
  {argv: [[[[1, 2], [3]], [4, 5, 6]]], out: [[2, 1], 3]},
  {argv: [[[[1]], [[2, 3], [4, 5, 6]], [7, 8]]], out: [[1], [2, 3], 2]},
  {argv: [[[[[1, 2, 3]]]]], out: [[[3]]]},
]

Vaším úkolem je napsat funkci delky(seznam), která dostane seznam seznamů, vnořených libovolně hluboko. Každý seznam obsahuje buď jen seznamy, nebo jen čísla. Funkce má vrátit stejně vnořený seznam, ve kterém je každý seznam čísel nahrazený svou délkou.

Například delky([[[1, 2], [3]], [4, 5, 6]]) vrátí [[2, 1], 3]: seznam [1, 2] má délku 2, [3] délku 1 a [4, 5, 6] délku 3. Pokud funkce dostane rovnou seznam čísel, vrátí jeho délku, takže delky([5, 6, 7]) vrátí 3.

Nápověda: Seznam může obsahovat další seznamy, viz vnořené seznamy.

def delky(seznam):
  return len(seznam)