Lanzar una cantidad de <N> dardos Encuentra todas las combinaciones posibles para alcanzar una puntuación objetivo

Se te proporciona un tablero de dardos dividido en secciones; cada sección tiene una puntuación única. Eso significa que no habrá dos secciones con la misma puntuación.

alt text

Lanzando una determinada cantidad de dardos válidos, encuentra cuántas soluciones hay para alcanzar la puntuación objetivo. A tu función se le pasarán tres parámetros...

  • Secciones: Un arreglo de valores para las secciones (por ejemplo, [3, 6, 8, 11, 15, 19, 22], el arreglo ya está ordenado).

  • Dardos: La cantidad de dardos que se lanzarán.

  • Objetivo: La puntuación objetivo.

Devuelve un arreglo vacío si no se encuentra ninguna solución; de lo contrario, un arreglo de cadenas no duplicadas para cada solución (por ejemplo, ["3-11-18", "7-7-18", "7-11-14"]).

Ejemplos

Si hay valores duplicados, conserva únicamente el que esté ordenado de menor a mayor.

"8-19-8"

"8-8-19" <-- This is the one you would keep.

"19-8-8"

Las soluciones múltiples deben ordenarse antes de devolverlas.

["3-11-18", "7-7-18", "7-11-14"] is ok.

["7-11-14", "7-7-18", "3-11-18"] is not ok.

Notas

  • Varios dardos pueden caer en la misma sección.

  • Un dardo debe caer en una sección válida (no puede fallar).