Cortando uma folha de papel

Suponha que você tenha uma folha de papel medindo 8x10. Você quer cortá-la exatamente ao meio mantendo sua forma retangular. Você pode fazer isso de duas maneiras. Pode cortá-la ao meio preservando sua dimensão longa de 10.

Chamaremos isso de corte longo:

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

Ou você pode cortá-la ao meio preservando sua dimensão curta. Este é um corte curto:

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

Se a forma for um quadrado, então um corte longo e um corte curto serão a mesma coisa:

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

Para este desafio, você receberá dois argumentos. O primeiro é uma string contendo os cortes que serão feitos em uma folha de papel, em sequência, do primeiro ao último. Um corte longo é designado por "L" e um corte curto por "S".

O segundo argumento são as dimensões do papel depois que todos os cortes forem feitos.

Você deve criar uma função que encontre as dimensões originais da folha de papel antes que qualquer corte tenha sido feito. Pode haver mais de uma resposta possível, então retorne suas respostas como um array. Se não for possível chegar às dimensões finais com os cortes indicados, retorne um array vazio.

Exemplos

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]]

Observações

Ordene sua resposta com a dimensão menor em ordem crescente.