Dodos , 76 bytes
f f r 2
2
r
r d
f s t f
d
dip f s t
f
t
dot f
dot
s
s dip
f
dab
Pruébalo en línea!
Explicación:
f
es un alias para dab
(cola).
s
es la resta, como se explica en la wiki: (x, y) → (0, y − x) cuando x ≤ y .
t
mapas (a, b, c ...) a (b + c + ..., a + b + c + ...) .
f s t
mapas (a, b, c ...) a a . Esta es nuestra función de "cabeza".
d
sumerge solo la cabeza de su argumento: (a, b, c…) → (| a − 1 |, b, c…)
r
Es la lógica de repetición principal. Mapeamos (a, b) a (* r (| a − 1 |, b), b) .
Por ejemplo, r (4, 7) evaluará como
r(4, 7)
= r(3, 7), 7
= r(2, 7), 7, 7
= r(1, 7), 7, 7, 7
= r(0, 7), 7, 7, 7, 7
→ This would call r(1, 7), but (1, 7) ≥ (0, 7), so surrender!
= 0, 7, 7, 7, 7, 7.
Finalmente, definimos 2
qué mapas n → (n, n) , y definimos main
como f f r 2
, computar r (n, n) y cortar los primeros dos elementos.
built-in
.*
bien el operador de Python ? ¿Cuál es un ejemplo de un incorporado que no está bien?