Meydan okuma
Programınız 3 giriş almalıdır:
- Değişken sayısı olan pozitif bir tam sayı,
- Her bir çiftin değişkenler arasında bir eşitliği temsil ettiği bir dizi sırasız negatif olmayan tamsayı çifti ve
- Başlangıç değişkenini temsil eden pozitif bir tam sayı,
Başlangıç değişkenine geçiş olarak eşit olduğu gösterilebilen tüm değişkenleri temsil eden (başlangıç değişkeninin kendisi dahil) bir dizi negatif olmayan tamsayı döndürmelidir.
Başka bir deyişle, verilen girdiler N
, E
ve S
, bir set döndürür Q
, öyle ki:
S ∈ Q
.- Eğer
Z ∈ Q
ve(Y = Z) ∈ E
, sonraY ∈ Q
. - Eğer
Z ∈ Q
ve(Z = Y) ∈ E
, sonraY ∈ Q
.
Bu aynı zamanda bir grafik teorisi sorunu olarak da ifade edilebilir :
Yönlendirilmemiş bir grafik ve grafikte bir tepe noktası verildiğinde, bağlı bileşenindeki köşeleri listeleyin .
Özellikler
- 0 tabanlı veya 1 tabanlı dizinlemeyi kullanmayı seçebilirsiniz.
- İlk giriş, değişkenlerin sayı olarak verildiği mevcut değişken sayısını sayar. Alternatif olarak, bu girdiyi alamazsınız; bu durumda, dizinleme düzeninize bağlı olarak, bunun mevcut en yüksek değişken dizinine veya bundan bir tanesine eşit olduğu varsayılır.
- Girdinin iyi biçimlendirildiğini varsayabilirsiniz: size ilk girdi tarafından belirtilen aralığın dışında değişkenler verilmeyecektir. Örneğin,
3, [1 = 2, 2 = 0], 1
geçerli bir giriş olsa4, [1 = 719, 1 = 2, 3 = 2], -3
da değil. - Sen olamaz herhangi değişken onunla ilişkili herhangi Eşitlikler sahip olacağını varsayıyoruz. "Yalnız" olan üçüncü bir girdi verilirse (eşitliği yoktur), doğru çıktı yalnızca bu girdiyi içeren tek bir kümedir (kendisine eşit olduğu için).
- Eşitliklerin bir değişkenden kendisine bir eşitlik içermeyeceğini ve aynı eşitliğin birden çok kez verilmeyeceğini varsayabilirsiniz (bu,
1 = 2
ve gibi şeyleri içerir2 = 1
). - Verilen tüm tam sayıların dilinizin temsil edilebilir aralığı içinde olacağını varsayabilirsiniz.
- İkinci girişi istediğiniz formatta alabilirsiniz.
İşte bazı makul biçimler:
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]
- İstediğiniz herhangi bir biçimde çıktı alabilirsiniz (yani set, liste, vb.). Düzen önemsizdir.
puanlama
Bu kod golf , bu nedenle en kısa geçerli program (bayt cinsinden) kazanır.
Test Durumları (0 dizinli)
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}
Test Durumları (1 dizinli)
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}