Ispirato da questa sfida (grazie a @cairdcoinheringaahing per il titolo!), Il tuo compito è quello di prendere due stringhe ASCII stampabili e moltiplicarle in base agli elementi con le seguenti regole.
Come funziona?
Date due stringhe (ad esempio split
e isbn
), per prima cosa, troncare la più lunga in modo che abbiano la stessa lunghezza e quindi determinare i loro codici ASCII :
split -> spli -> [115, 112, 108, 105]
isbn -> isbn -> [105, 115, 98, 110]
Il prossimo passo sarà mapparli all'intervallo [0..94]
sottraendo 32
ogni codice:
[115, 112, 108, 105] -> [83, 80, 76, 73]
[105, 115, 98, 110] -> [73, 83, 66, 78]
Ora li moltiplichi per modulo 95
(per rimanere nell'intervallo stampabile):
[83, 80, 76, 73] ⊗ [73, 83, 66, 78] -> [74, 85, 76, 89]
Aggiungi 32
per tornare all'intervallo [32..126]
:
[74, 85, 76, 89] -> [106, 117, 108, 121]
E il passaggio finale è mapparli di nuovo ai caratteri ASCII:
[106, 117, 108, 121] -> "july"
Regole
- Scriverai un programma / funzione che implementa i passaggi descritti su due stringhe e stampa o restituisce la stringa risultante
- Il formato di input è flessibile: puoi prendere due stringhe, una tupla di stringhe, un elenco di stringhe ecc.
- L'input può essere costituito da una o due stringhe vuote
- L'input sarà costituito da caratteri nell'intervallo stampabile (
[32..126]
) - L'output viene stampato sulla console o si restituisce una stringa
- L'output può contenere spazi bianchi finali
Casi test
"isbn", "split" -> "july"
"", "" -> ""
"", "I don't matter" -> ""
" ", "Me neither :(" -> " "
"but I do!", "!!!!!!!!!" -> "but I do!"
'quotes', '""""""' -> 'ck_iKg'
"wood", "hungry" -> "yarn"
"tray", "gzip" -> "jazz"
"industry", "bond" -> "drop"
"public", "toll" -> "fall"
"roll", "dublin" -> "ball"
"GX!", "GX!" -> "!!!"
"4 lll 4", "4 lll 4" -> "4 lll 4"
"M>>M", "M>>M" -> ">MM>"
Nota : le virgolette sono solo per leggibilità, nel sesto caso di test che ho usato al '
posto di "
.
abc, def -> [['a', 'b', 'c'], ['d', 'e', 'f']]