> Input
> Input
>> 1²
>> (3]
>> 1%L
>> L=2
>> Each 5 4
>> Each 6 7
>> L⋅R
>> Each 9 4 8
> {0}
>> {10}
>> 12∖11
>> Output 13
Cobalah online!
Mengembalikan set semua solusi yang mungkin, dan set kosong (mis ∅) ketika tidak ada solusi.
Bagaimana itu bekerja
Tidak mengherankan, ia bekerja hampir identik dengan sebagian besar jawaban lain: ia menghasilkan daftar angka dan memeriksa masing-masing untuk modulus terbalik dengan argumen.
Jika Anda terbiasa dengan bagaimana struktur program Whispers bekerja, jangan ragu untuk beralih ke garis horizontal. Jika tidak: pada dasarnya, Whispers bekerja pada sistem referensi baris demi baris, mulai dari baris terakhir. Setiap baris digolongkan sebagai salah satu dari dua opsi. Entah itu adalah garis nilad , atau itu adalah garis operator .
Garis Nilad dimulai dengan >
, seperti > Input
atau > {0}
dan mengembalikan nilai tepat yang diwakili pada garis itu yaitu > {0}
mengembalikan set{ 0 }. > Input
mengembalikan baris STDIN berikutnya, dievaluasi jika mungkin.
Jalur operator dimulai dengan >>
, seperti >> 1²
atau >> (3]
dan menunjukkan menjalankan operator pada satu atau beberapa nilai. Di sini, angka-angka yang digunakan tidak mereferensikan angka-angka eksplisit itu, melainkan mereka merujuk nilai pada baris itu. Sebagai contoh, ²
adalah perintah kuadrat (n → n2), jadi >> 1²
tidak mengembalikan nilai12, alih-alih mengembalikan kuadrat dari baris 1 , yang, dalam hal ini, adalah input pertama.
Biasanya, garis operator hanya berfungsi menggunakan angka sebagai referensi, namun Anda mungkin telah memperhatikan garis >> L=2
dan >> L⋅R
. Kedua nilai ini, L
dan R
, digunakan bersama dengan Each
pernyataan. Each
pernyataan bekerja dengan mengambil dua atau tiga argumen, lagi sebagai referensi numerik. Argumen pertama (misalnya 5
) adalah referensi ke garis operator yang digunakan fungsi, dan sisanya dari argumen adalah array. Kami kemudian mengulangi fungsi di atas array, di mana L
dan R
di fungsi mewakili elemen saat ini (s) dalam array yang diulangi. Sebagai contoh:
Membiarkan A = [ 1 , 2 , 3 , 4 ], B = [ 4 , 3 , 2 , 1 ] dan f( x , y) = x + y. Dengan asumsi kita menjalankan kode berikut:
> [1, 2, 3, 4]
> [4, 3, 2, 1]
>> L+R
>> Each 3 1 2
Kami kemudian mendapatkan demonstrasi tentang bagaimana Each
pernyataan bekerja. Pertama, ketika bekerja dengan dua array, kita ritsleting mereka untuk membentukC= [ ( 1 , 4 ) , ( 2 , 3 ) , ( 3 , 2 ) , ( 4 , 1 ) ] lalu petakan f( x , y) atas setiap pasangan, membentuk susunan terakhir kami D = [ f( 1 , 4 ) , f( 2 , 3 ) , f( 3 , 2 ) , f( 4 , 1 ) ] = [ 5 , 5 , 5 , 5 ]
Cobalah online!
Cara kerja kode ini
Bekerja berlawanan secara intuitif dengan cara Whispers bekerja, kita mulai dari dua baris pertama:
> Input
> Input
Ini mengumpulkan dua input kami, katakanlah x dan y, dan menyimpannya masing-masing di jalur 1 dan 2 . Kami kemudian menyimpanx2pada baris 3 dan buat rentangA : = [ 1 . . . x2]pada saluran 4 . Selanjutnya, kita lompat ke bagian
>> 1%L
>> L=2
>> Each 5 4
>> Each 6 7
Hal pertama dilaksanakan di sini adalah garis 7 , >> Each 5 4
yang iterates baris 5 melewati garis 4 . Ini menghasilkan arrayB : = [ i%x|i ∈ A ]dimana Sebuah%bdidefinisikan sebagai modulus dariSebuah dan b.
Kami kemudian mengeksekusi baris 8 , >> Each 6 7
yang iterates baris 6 lebihB, menghasilkan sebuah array C: = [ ( i%x ) = y|i ∈ A ].
Untuk input x = 5 , y= 2, kita punya A = [ 1 , 2 , 3 , . . . , 23 , 24 , 25 ], B = [ 0 , 1 , 2 , 1 , 0 , 5 , 5 , . . . , 5 , 5 ] dan C= [ 0 , 0 , 1 , 0 , 0 , . . . , 0 , 0 ]
Kami kemudian melompat ke bawah
>> L⋅R
>> Each 9 4 8
yang merupakan contoh kita dari Each
pernyataan diad . Di sini, fungsi kami adalah garis 9 yaitu >> L⋅R
dan dua array kami adalahSEBUAH dan C. Kami mengalikan setiap elemen dalamSEBUAH dengan elemen yang sesuai di C, yang menghasilkan array, E, di mana setiap elemen bekerja dari hubungan berikut:
Esaya= { 0SEBUAHsayaCsaya= 0Csaya= 1
Kami kemudian berakhir dengan array yang terdiri dari 0dan moduli kebalikan dari x dan y. Untuk menghapus0s, kami mengonversi array ini ke set ( >> {10}
), lalu mengambil perbedaan set antara set ini dan{ 0 }, menghasilkan, lalu mengeluarkan, hasil akhir kami.