Inspiriert von dieser Herausforderung (danke an @cairdcoinheringaahing für den Titel!) Besteht Ihre Aufgabe darin, zwei druckbare ASCII-Zeichenfolgen zu nehmen und sie mit den folgenden Regeln elementweise zu multiplizieren.
Wie funktioniert es?
Bei zwei gegebenen Zeichenfolgen (zum Beispiel split
und isbn
) kürzen Sie zuerst die längere Zeichenfolge so, dass sie die gleiche Länge hat, und bestimmen dann ihren ASCII-Code :
split -> spli -> [115, 112, 108, 105]
isbn -> isbn -> [105, 115, 98, 110]
Der nächste Schritt besteht darin, sie [0..94]
durch Subtrahieren 32
jedes Codes dem Bereich zuzuordnen :
[115, 112, 108, 105] -> [83, 80, 76, 73]
[105, 115, 98, 110] -> [73, 83, 66, 78]
Jetzt multiplizieren Sie sie elementweise modulo 95
(um im druckbaren Bereich zu bleiben):
[83, 80, 76, 73] ⊗ [73, 83, 66, 78] -> [74, 85, 76, 89]
Hinzufügen 32
, um zum Bereich zurückzukehren [32..126]
:
[74, 85, 76, 89] -> [106, 117, 108, 121]
Und der letzte Schritt ist, sie wieder ASCII-Zeichen zuzuordnen:
[106, 117, 108, 121] -> "july"
Regeln
- Sie schreiben ein Programm / eine Funktion, die die beschriebenen Schritte in zwei Zeichenfolgen implementiert und die resultierende Zeichenfolge entweder ausgibt oder zurückgibt
- Das Eingabeformat ist flexibel: Sie können zwei Zeichenfolgen, ein Tupel von Zeichenfolgen, eine Liste von Zeichenfolgen usw. verwenden.
- Die Eingabe kann aus einer oder zwei leeren Zeichenfolgen bestehen
- Die Eingabe erfolgt in Zeichen im druckbaren Bereich (
[32..126]
) - Die Ausgabe wird entweder auf die Konsole gedruckt oder Sie geben eine Zeichenfolge zurück
- Die Ausgabe darf abschließende Leerzeichen enthalten
Testfälle
"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>"
Hinweis : Die Zitate sind nur zur besseren Lesbarkeit, ich im 6. Testfall verwendet '
statt "
.
abc, def -> [['a', 'b', 'c'], ['d', 'e', 'f']]