Motivasi
Dalam tantangan ini, tugas Anda adalah mengalikan dua string, ini secara alami memperkenalkan cara untuk mengambil akar kuadrat dari string.
Bagaimana cara kerjanya?
Diberikan string (misalnya pub) hal pertama yang perlu Anda lakukan, adalah menentukan kode ASCII untuk setiap karakter:
"pub" -> [112, 117, 98]
Selanjutnya Anda memetakan kode-kode ini ke kisaran [0..94]dengan mengurangi 32setiap nilai:
[112, 117, 98] -> [80, 85, 66]
Sekarang Anda perlu menemukan untuk setiap nilai modulo root-nya 95(mis. 40*40 % 95 = 80, Anda juga bisa memilih 55):
[80, 85, 66] -> [40, 35, 16]
Dan akhirnya Anda akan memetakannya kembali ke rentang [32..126]dan mengubahnya kembali menjadi string:
[40, 35, 16] -> [72, 67, 48] -> "HC0"
Memang "HC0" ⊗ "HC0" = "pub"Anda bisa memverifikasi dengan solusi dari tantangan lain di sini .
Yang akrab dengan aritmatika modular mungkin memperhatikan bahwa modulo root kuadrat 95tidak selalu ada, misalnya tidak ada root untuk 2. Dalam kasus seperti itu, akar kuadrat dari suatu string tidak didefinisikan dan program / fungsi Anda mungkin crash, loop tanpa batas dll.
Untuk kenyamanan Anda, inilah daftar karakter yang memiliki akar kuadrat (yang pertama adalah spasi):
!$%&)+03489:>CDGLMQVW]`bjlpqu
Aturan
- Anda akan menulis sebuah program / fungsi yang mengambil string (atau daftar karakter) sebagai argumen dan mengembalikan setiap akar kuadrat jika ada
- Anda dapat berasumsi bahwa input selalu memiliki akar kuadrat
- Input dapat terdiri dari string kosong
- Input akan berada dalam kisaran yang dapat dicetak (
[32..126]) - Outputnya dicetak ke konsol atau Anda mengembalikan string jika akar kuadrat ada
- Jika akar kuadrat tidak ada, perilaku program / fungsi Anda dibiarkan tidak terdefinisi
- Jika Anda memilih untuk mencetak root ke konsol, baris baru atau spasi putih tidak apa-apa
Uji kasus
Perhatikan bahwa ini bukan satu-satunya solusi:
'' -> ''
'pub' -> 'HC0'
'pull!' -> 'HC33!'
'M>>M' -> '>MM>'
'49' -> '4%'
'64' -> undefined
'Hello, World!' -> undefined
0-94(itu kisaran yang dapat dicetak), itu salah ketik - maaf tentang itu.