Tantangan
Program Anda harus mengambil 3 input:
- Integer positif yang merupakan jumlah variabel,
- Satu set pasangan bilangan bulat non-negatif yang tidak berurutan, di mana masing-masing pasangan mewakili kesetaraan antara variabel, dan
- Integer positif yang mewakili variabel awal,
Ini harus mengembalikan satu set bilangan bulat non-negatif yang mewakili semua variabel yang dapat ditunjukkan sama secara transitif dengan variabel awal (termasuk variabel awal itu sendiri).
Dengan kata lain, diberikan masukan N
, E
dan S
, kembali set Q
, sehingga:
S ∈ Q
.- Jika
Z ∈ Q
dan(Y = Z) ∈ E
kemudianY ∈ Q
. - Jika
Z ∈ Q
dan(Z = Y) ∈ E
kemudianY ∈ Q
.
Ini juga dapat dinyatakan sebagai masalah teori grafik :
Diberikan grafik tak berarah dan sebuah simpul dalam grafik, daftar simpul dalam komponen yang terhubung .
Spesifikasi
- Anda dapat memilih untuk menggunakan pengindeksan berbasis-0 atau berbasis-1.
- Input pertama menghitung jumlah variabel yang ada, di mana variabel diberikan sebagai angka. Atau, Anda tidak dapat mengambil input ini, dalam hal ini diasumsikan sama dengan indeks variabel tertinggi yang ada, atau satu lebih dari ini, tergantung pada skema pengindeksan Anda.
- Anda dapat mengasumsikan input terbentuk dengan baik: Anda tidak akan diberikan variabel di luar rentang yang ditentukan oleh input pertama. Misalnya,
3, [1 = 2, 2 = 0], 1
adalah input yang valid, sedangkan4, [1 = 719, 1 = 2, 3 = 2], -3
tidak. - Anda tidak dapat berasumsi bahwa variabel apa pun akan memiliki persamaan yang terkait dengannya. Jika diberi input ketiga yang "kesepian" (tidak memiliki persamaan), output yang benar adalah satu set tunggal yang hanya berisi input tersebut (karena sama dengan dirinya sendiri).
- Anda dapat mengasumsikan bahwa persamaan tidak akan mengandung kesetaraan dari variabel ke variabel itu sendiri, dan bahwa kesetaraan yang sama tidak akan diberikan beberapa kali (ini termasuk hal-hal seperti
1 = 2
dan2 = 1
). - Anda dapat mengasumsikan bahwa semua bilangan bulat yang diberikan akan berada dalam jangkauan representatif bahasa Anda.
- Anda dapat mengambil input kedua dalam format apa pun yang masuk akal.
Berikut beberapa format yang masuk akal:
0 = 2
0 = 3
1 = 0
{(0, 2), (0, 3), (1, 0)}
[0, 2, 0, 3, 1, 0]
0 2 0 3 1 0
Graph[{{0, 2}, {0, 3}, {1, 0}}]
[0 = 2, 0 = 3, 1 = 0]
- Anda dapat menampilkan dalam format apa pun yang wajar (mis. Set, daftar, dll.). Ketertiban tidak relevan.
Mencetak gol
Ini adalah kode-golf , sehingga program terpendek yang valid (dalam byte) menang.
Kasus Uji (0-diindeks)
3, [1 = 2, 2 = 0], 1 -> {0, 1, 2}
5, [0 = 2, 0 = 3, 1 = 2], 3 -> {0, 1, 2, 3}
6, [0 = 3, 1 = 3, 2 = 4, 5 = 1], 4 -> {2, 4}
6, [0 = 3, 1 = 3, 2 = 4, 5 = 1], 5 -> {0, 1, 3, 5}
5, [0 = 1, 2 = 0, 0 = 3, 4 = 0], 2 -> {0, 1, 2, 3, 4}
6, [0 = 1, 1 = 2, 2 = 3, 3 = 4, 4 = 5], 3 -> {0, 1, 2, 3, 4, 5}
4, [0 = 1, 1 = 2, 2 = 0], 3 -> {3}
5, [0 = 2, 2 = 4], 2 -> {0, 2, 4}
8, [], 7 -> {7}
Kasus Uji (1-diindeks)
3, [2 = 3, 3 = 1], 2 -> {1, 2, 3}
5, [1 = 3, 1 = 4, 2 = 3], 4 -> {1, 2, 3, 4}
6, [1 = 4, 2 = 4, 3 = 5, 6 = 2], 5 -> {3, 5}
6, [1 = 4, 2 = 4, 3 = 5, 6 = 2], 6 -> {1, 2, 4, 6}
5, [1 = 2, 3 = 1, 1 = 4, 5 = 1], 3 -> {1, 2, 3, 4, 5}
6, [1 = 2, 2 = 3, 3 = 4, 4 = 5, 5 = 6], 4 -> {1, 2, 3, 4, 5, 6}
4, [1 = 2, 2 = 3, 3 = 1], 4 -> {4}
5, [1 = 3, 3 = 5], 3 -> {1, 3, 5}
8, [], 8 -> {8}