Inspirado en este desafío (¡gracias @cairdcoinheringaahing por el título!), Su tarea es tomar dos cadenas ASCII imprimibles y multiplicarlas por elementos con las siguientes reglas.
¿Como funciona?
Dadas dos cadenas (por ejemplo, split
y isbn
) primero, truncará la más larga para que tengan la misma longitud y luego determine sus códigos ASCII :
split -> spli -> [115, 112, 108, 105]
isbn -> isbn -> [105, 115, 98, 110]
El siguiente paso será asignarlos al rango [0..94]
restando 32
cada código:
[115, 112, 108, 105] -> [83, 80, 76, 73]
[105, 115, 98, 110] -> [73, 83, 66, 78]
Ahora los multiplicará por módulo en cuanto a elementos 95
(para permanecer en el rango de impresión):
[83, 80, 76, 73] ⊗ [73, 83, 66, 78] -> [74, 85, 76, 89]
Agregar 32
para volver al rango [32..126]
:
[74, 85, 76, 89] -> [106, 117, 108, 121]
Y el paso final es asignarlos de nuevo a los caracteres ASCII:
[106, 117, 108, 121] -> "july"
Reglas
- Escribirás un programa / función que implemente los pasos descritos en dos cadenas e imprima o devuelva la cadena resultante
- El formato de entrada es flexible: puede tomar dos cadenas, una tupla de cadenas, una lista de cadenas, etc.
- La entrada puede consistir en una o dos cadenas vacías
- La entrada será caracteres en el rango imprimible (
[32..126]
) - El resultado se imprime en la consola o devuelve una cadena
- La salida puede tener espacios en blanco al final
Casos de prueba
"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 : Las citas son solo para facilitar la lectura, en el sexto caso de prueba que utilicé en '
lugar de "
.
abc, def -> [['a', 'b', 'c'], ['d', 'e', 'f']]