Berikut ini adalah tantangan array dua dimensi yang relatif sederhana.
Bayangkan medan perang 625 kaki prajurit. Anda memerintahkan pasukan aneh , tapi sayangnya kekuatan pasukan genap membanjiri Anda. Syukurlah, prajurit Anda memiliki kekuatan rahasia: Jika kekuatan setiap pasukan aneh dan sekutu aneh di sekitar mereka dapat dibagi oleh nomor kekuatan rahasia, mereka melepaskan serangan pamungkas mereka dan menang! Anda harus menghormati setiap prajurit yang menang.
Aturan
Diberikan array integer 25 x 25 di mana setiap elemen berisi produk posisi x dan y ditambah 1, kembalikan koordinat setiap elemen aneh "pemenang" yang memenuhi kriteria berikut:
Jumlah nilai elemen dan elemen ganjil yang berdekatan (atas, bawah, kiri, dan kanan) dapat dibagi dengan input (nomor kekuatan rahasia). Itu harus memiliki elemen yang berdekatan di keempat sisinya dan tidak di tepi.
Pengajuan dapat berupa fungsi atau program lengkap yang membutuhkan input tunggal. Output bisa dalam urutan apa pun.
Susunan 25 x 25 kami, medan perang, terlihat seperti ini:
1, 1, 1, 1,...
1, 2, 3, 4,...
1, 3, 5, 7,...
1, 4, 7, 10,...
etc.
Contoh
Berikut adalah contoh 3 x 3:
43, 57, 71
46, 61, 76
49, 65, 81
Untuk menentukan apakah suatu elemen (61, di tengah) menang, kami menjumlahkan nilainya dan elemen ganjil yang berdekatan.
61 + 57 + 65 = 183
Jika total dapat dibagi oleh input, posisi elemen x dan y dicetak. Jika input kami adalah 3, karena 183 dapat dibagi dengan 3, "1, 1" dicetak.
Keluaran
Jika input (angka kekuatan rahasia) adalah 37, elemen yang dikembalikan (prajurit yang menang harus dipuji) harus:
2, 18
3, 12
4, 9
5, 22
6, 6
8, 23
9, 4
10, 11
11, 10
12, 3
18, 2
22, 5
23, 8
Jika inputnya 191, elemen yang dikembalikan harus:
10, 19
19, 10
Masukan 3:
1, 2
1, 4
1, 6
1, 8
1, 10
1, 12
1, 14
1, 16
1, 18
1, 20
1, 22
2, 1
2, 3
2, 4
2, 5
2, 7
2, 9
2, 10
2, 11
2, 13
2, 15
2, 16
2, 17
2, 19
2, 21
2, 22
2, 23
3, 2
3, 4
3, 6
3, 8
3, 10
3, 12
3, 14
3, 16
3, 18
3, 20
3, 22
4, 1
4, 2
4, 3
4, 5
4, 7
4, 8
4, 9
4, 11
4, 13
4, 14
4, 15
4, 17
4, 19
4, 20
4, 21
4, 23
5, 2
5, 4
5, 6
5, 8
5, 10
5, 12
5, 14
5, 16
5, 18
5, 20
5, 22
6, 1
6, 3
6, 5
6, 7
6, 9
6, 11
6, 13
6, 15
6, 17
6, 19
6, 21
6, 23
7, 2
7, 4
7, 6
7, 8
7, 10
7, 12
7, 14
7, 16
7, 18
7, 20
7, 22
8, 1
8, 3
8, 4
8, 5
8, 7
8, 9
8, 10
8, 11
8, 13
8, 15
8, 16
8, 17
8, 19
8, 21
8, 22
8, 23
9, 2
9, 4
9, 6
9, 8
9, 10
9, 12
9, 14
9, 16
9, 18
9, 20
9, 22
10, 1
10, 2
10, 3
10, 5
10, 7
10, 8
10, 9
10, 11
10, 13
10, 14
10, 15
10, 17
10, 19
10, 20
10, 21
10, 23
11, 2
11, 4
11, 6
11, 8
11, 10
11, 12
11, 14
11, 16
11, 18
11, 20
11, 22
12, 1
12, 3
12, 5
12, 7
12, 9
12, 11
12, 13
12, 15
12, 17
12, 19
12, 21
12, 23
13, 2
13, 4
13, 6
13, 8
13, 10
13, 12
13, 14
13, 16
13, 18
13, 20
13, 22
14, 1
14, 3
14, 4
14, 5
14, 7
14, 9
14, 10
14, 11
14, 13
14, 15
14, 16
14, 17
14, 19
14, 21
14, 22
14, 23
15, 2
15, 4
15, 6
15, 8
15, 10
15, 12
15, 14
15, 16
15, 18
15, 20
15, 22
16, 1
16, 2
16, 3
16, 5
16, 7
16, 8
16, 9
16, 11
16, 13
16, 14
16, 15
16, 17
16, 19
16, 20
16, 21
16, 23
17, 2
17, 4
17, 6
17, 8
17, 10
17, 12
17, 14
17, 16
17, 18
17, 20
17, 22
18, 1
18, 3
18, 5
18, 7
18, 9
18, 11
18, 13
18, 15
18, 17
18, 19
18, 21
18, 23
19, 2
19, 4
19, 6
19, 8
19, 10
19, 12
19, 14
19, 16
19, 18
19, 20
19, 22
20, 1
20, 3
20, 4
20, 5
20, 7
20, 9
20, 10
20, 11
20, 13
20, 15
20, 16
20, 17
20, 19
20, 21
20, 22
20, 23
21, 2
21, 4
21, 6
21, 8
21, 10
21, 12
21, 14
21, 16
21, 18
21, 20
21, 22
22, 1
22, 2
22, 3
22, 5
22, 7
22, 8
22, 9
22, 11
22, 13
22, 14
22, 15
22, 17
22, 19
22, 20
22, 21
22, 23
23, 2
23, 4
23, 6
23, 8
23, 10
23, 12
23, 14
23, 16
23, 18
23, 20
23, 22
Masukan 5:
1, 4
1, 14
2, 2
2, 4
2, 6
2, 7
2, 8
2, 10
2, 12
2, 14
2, 16
2, 17
2, 18
2, 20
2, 22
3, 8
3, 18
4, 1
4, 2
4, 4
4, 6
4, 8
4, 10
4, 11
4, 12
4, 14
4, 16
4, 18
4, 20
4, 21
4, 22
6, 2
6, 4
6, 6
6, 8
6, 9
6, 10
6, 12
6, 14
6, 16
6, 18
6, 19
6, 20
6, 22
7, 2
7, 12
7, 22
8, 2
8, 3
8, 4
8, 6
8, 8
8, 10
8, 12
8, 13
8, 14
8, 16
8, 18
8, 20
8, 22
8, 23
9, 6
9, 16
10, 2
10, 4
10, 6
10, 8
10, 10
10, 12
10, 14
10, 16
10, 18
10, 20
10, 22
11, 4
11, 14
12, 2
12, 4
12, 6
12, 7
12, 8
12, 10
12, 12
12, 14
12, 16
12, 17
12, 18
12, 20
12, 22
13, 8
13, 18
14, 1
14, 2
14, 4
14, 6
14, 8
14, 10
14, 11
14, 12
14, 14
14, 16
14, 18
14, 20
14, 21
14, 22
16, 2
16, 4
16, 6
16, 8
16, 9
16, 10
16, 12
16, 14
16, 16
16, 18
16, 19
16, 20
16, 22
17, 2
17, 12
17, 22
18, 2
18, 3
18, 4
18, 6
18, 8
18, 10
18, 12
18, 13
18, 14
18, 16
18, 18
18, 20
18, 22
18, 23
19, 6
19, 16
20, 2
20, 4
20, 6
20, 8
20, 10
20, 12
20, 14
20, 16
20, 18
20, 20
20, 22
21, 4
21, 14
22, 2
22, 4
22, 6
22, 7
22, 8
22, 10
22, 12
22, 14
22, 16
22, 17
22, 18
22, 20
22, 22
23, 8
23, 18
Ini adalah kode-golf , kode byte-hitung terendah tanpa menggunakan celah standar adalah pemenangnya.
Karena ini adalah pengiriman pertama saya, saran apa pun sangat dihargai. Terima kasih!
sumber
Jawaban:
JavaScript (ES6),
83 81 8076 byteCobalah online!
Bagaimana?
Berkomentar
sumber
C # (Visual C # Interactive Compiler) ,
97939190 byteDisimpan 6 byte berkat @Kevin Cruijssen!
Cobalah online!
sumber
int i=0; ... int j=0;
bisaint i=0,j; ... j=0;
dan<1&
bisa+
untuk -4 byte.+
satu bagus, terima kasih((i+j)%2>0?3:5)
dengan(5-(i+j)%2*2)
Stax , 25 byte
Jalankan dan debug itu
Ini sebagian besar hanya kekuatan kasar, dengan satu pengamatan yang sedikit pintar. Semua pasukan aneh memiliki 2 atau 4 tetangga aneh. Dan jumlah total ini ditambah solder asli adalah di mana
3p
atau di5p
manap
kekuatan prajurit. Koefisien (3 atau 5) dapat ditentukan oleh digcd(2, x, y) * 2 + 1)
manax
dany
merupakan koordinat prajurit.sumber
Python 2 , 83 byte
Cobalah online!
Terima kasih kepada Arnauld karena telah menghemat satu byte.
sumber
JavaScript (SpiderMonkey) , 69 byte
Cobalah online!
sumber
Jelly , 22 byte
Cobalah online!
Program lengkap yang mengambil argumen tunggal, nomor kekuatan rahasia, dan secara implisit mencetak daftar
[x, y]
pasangan. Menggunakan pengamatan yang dilakukan orang lain tentang kelipatan 3 dan 5.sumber
Bahasa Wolfram (Mathematica) ,
6058 byteCobalah online!
Melihat sekeliling setelah memposting dan menyadari bahwa saya benar-benar perlu menghidupkan otak saya ...
sumber