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 splite 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 32ogni 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 32per 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']]