Bu zorluktan esinlenerek (teşekkürler @cairdcoinheringaahing!), Göreviniz yazdırılabilir iki ASCII dizisi alıp bunları aşağıdaki kurallara göre elemanlar ile çarpmak.
O nasıl çalışır?
İki dize verildiğinde (örneğin split
ve isbn
) ilk önce, uzun olanı, eşit uzunlukta olacak şekilde kısaltın ve daha sonra ASCII kodlarını belirleyin :
split -> spli -> [115, 112, 108, 105]
isbn -> isbn -> [105, 115, 98, 110]
Bir sonraki adım , her bir kodun [0..94]
çıkarılmasıyla onları aralıkla eşleştirmek olacaktır 32
:
[115, 112, 108, 105] -> [83, 80, 76, 73]
[105, 115, 98, 110] -> [73, 83, 66, 78]
Şimdi element-wise modulo ile çarpacaksınız 95
(yazdırılabilir aralıkta kalmak için):
[83, 80, 76, 73] ⊗ [73, 83, 66, 78] -> [74, 85, 76, 89]
32
Aralığa geri dönmek için ekle [32..126]
:
[74, 85, 76, 89] -> [106, 117, 108, 121]
Ve son adım, onları tekrar ASCII karakterleriyle eşlemektir:
[106, 117, 108, 121] -> "july"
kurallar
- Tanımlanan adımları iki dizede uygulayan ve elde edilen dizgeyi basan ya da döndüren bir program / işlev yazacaksınız
- Giriş formatı esnektir: iki dizge, bir dizge dizisi, dizelerin listesi vb.
- Giriş bir veya iki boş dizeden oluşabilir
- Giriş, yazdırılabilir aralıktaki karakterler olacaktır (
[32..126]
) - Çıktı konsola yazdırılır veya bir dize döndürürsünüz
- Çıktı izleyen beyaz boşluklara sahip olabilir
Test durumları
"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>"
Not : tırnak kullandım 6 deney durumunda, sadece okunabilirlik içindir '
yerine "
.
abc, def -> [['a', 'b', 'c'], ['d', 'e', 'f']]