Cortar una hoja de papel

Supón que tienes una hoja de papel de 8x10. Quieres cortarla exactamente por la mitad manteniendo su forma rectangular. Puedes hacerlo de dos maneras. Puedes cortarla por la mitad conservando su dimensión larga de 10.

A esto lo llamaremos un corte largo:

[8, 10] ➞ long cut ➞ [4, 10]

O puedes cortarla por la mitad conservando su dimensión corta. Este es un corte corto:

[8, 10] ➞ short cut ➞ [5, 8]

Si la forma resulta ser un cuadrado, entonces un corte largo y un corte corto son lo mismo:

[12, 12] ➞ long cut ➞ [6, 12]
[12, 12] ➞ short cut ➞ [6, 12]

Para este desafío, se te dan dos argumentos. El primero es una cadena que contiene los cortes que se harán a una hoja de papel en secuencia, del primero al último. Un corte largo se designa con "L" y un corte corto con "S".

El segundo argumento son las dimensiones del papel después de realizar todos los cortes.

Debes idear una función que encuentre las dimensiones originales de la hoja de papel antes de realizar cualquier corte. Puede haber más de una respuesta posible, así que devuelve tus respuestas como un arreglo. Si no es posible llegar a las dimensiones finales con los cortes indicados, devuelve un arreglo vacío.

Ejemplos

cuttingPaper("S", [3, 7]) ➞ [[3, 14]]

cuttingPaper("L", [5, 7]) ➞ []

cuttingPaper("S", [5, 7]) ➞ [[5, 14], [7, 10]]

cuttingPaper("SSLS", [3, 4]) ➞ [[6, 32], [8, 24], [12, 16]]

cuttingPaper("LSSLSL", [7, 53]) ➞ [[56, 424]]

cuttingPaper("LSSSSS", [1, 2]) ➞ [[2, 64], [4, 32], [8, 16]]

Notas

Ordena tu respuesta con la dimensión menor en orden ascendente.