Un diagramma Young è una disposizione di caselle in righe giustificate a sinistra e colonne giustificate in alto. Per ogni casella, tutti gli spazi sopra di essa e alla sua sinistra sono occupati.
XXXXX
XXX
XXX
X
La lunghezza del gancio di una scatola è il numero di scatole alla sua destra nella sua riga e sotto di essa nella sua colonna, contando anche se stessa una volta. Ad esempio, la seconda casella ha una lunghezza del gancio di 6:
X****
X*X
X*X
X
Ecco tutte le lunghezze dei ganci:
86521
532
421
1
Il tuo obiettivo è calcolare il prodotto delle lunghezze del gancio, qui 8*6*5*2*1*5*3*2*4*2*1*1 = 115200
.
(Leggi la formula della lunghezza del gancio se sei interessato al motivo per cui questa espressione è importante.)
Input: una raccolta di dimensioni di riga come numeri come [5,3,3,1]
o come simbolo unario ripetuto come [[1,1,1,1,1], [1,1,1], [1,1,1], [1]]
o "XXXXX XXX XXX X"
. Puoi aspettarti che l'elenco sia ordinato in ordine crescente o decrescente, come desideri. L'elenco sarà non vuoto e conterrà solo numeri interi positivi.
Output: il prodotto delle lunghezze del gancio, che è un numero intero positivo. Non preoccuparti di overflow o runtime di numeri interi.
Non sono consentiti built-in specifici per diagrammi Young o partizioni intere.
Casi test:
[1] 1
[2] 2
[1, 1] 2
[5] 120
[2, 1] 3
[5, 4, 3, 2, 1] 4465125
[5, 3, 3, 1] 115200
[10, 5] 798336000
{ee::+W%}_q~%z%:+:*
(19 byte) Formato di input:[[1][1 1 1][1 1 1][1 1 1 1 1]]