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: Una lista de valores para las secciones (por ejemplo, { 3, 6, 8, 11, 15, 19, 22 }, la lista ya está ordenada).

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

  • Objetivo: La puntuación objetivo.

Devuelve una lista vacía si no se encuentra ninguna solución; de lo contrario, una lista 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).