3x3 Bağlı Bileşenler


9

Meydan okuma

Aşağıdaki ASCII grafiğinde gösterildiği gibi 3x3 kral ızgarasını düşünün:

A--B--C
|\/|\/|
|/\|/\|
D--E--F
|\/|\/|
|/\|/\|
G--H--I

Girdi olarak, düğümlerin etiketlenmesini temsil eden bir uzunluk-9 tamsayı listesi verilir. Örneğin, girdi [0,1,1,2,1,0,5,5,1]aşağıdaki etiketlemeyi temsil eder:

0--1--1
|\/|\/|
|/\|/\|
2--1--0
|\/|\/|
|/\|/\|
5--5--1

Çıktınız, girdideki bağlı düğüm kümelerini oluşturan tamsayılar kümesidir. Daha açık olarak, nyalnızca etiketli düğüm kümesi nbağlıysa , çıkış girişten bir tamsayı içermelidir . Bu örnekte, [1,2,5]iki 0s bağlı olmadığından kabul edilebilir bir çıkış olacaktır . En düşük bayt sayısı kazanır.

Ayrıntılı kurallar

  • Giriş listenizdeki düğümler için sabit bir sipariş seçebilirsiniz ve bunu cevabınızda belirtmelisiniz. EFBDHCAGI sırasına göre, yukarıdaki etiketleme olarak verilecektir [1,0,1,2,5,1,0,5,1].
  • Tam bir program veya bir işlev yazabilirsiniz. İkinci durumda, diliniz bunları destekliyorsa çıktı bir tamsayılar kümesi olabilir.
  • Çıktı listesi kopyalar içerebilir, ancak uzunluğu 9'u geçmemelidir.
  • Standart boşluklara izin verilmez.

Test senaryoları

Bunların ızgaraya hizalanmış tek haneli sayıları vardır; seçtiğiniz siparişe göre ayarlayın.

011
210 => 1 2 5
551

010
202 => 0 2
221

110
123 => 0 2 3
221

111
111 => 1
111

111
141 => 1 4
111

Yanıtlar:


4

J, 54 bayt

#~3 :'0<*/,+/ .*/^:8~y#|:y#,/,"1/({0&,:)3 3$#:13'"1@e.

Listeyi sırayla alan bir işlev ABCDEFGHI.


N sırasının bir grafiğinin bir bitişiklik matrisi A verildiğinde , grafik yalnızca ( A + I ) n girişlerinin tümü sıfır değilse , burada I , n × n kimlik matrisiyse bağlanır .

3 × 3 kral ızgarasının (sırayla) (sabit) bitişik artı artı kimlik matrisiyle başlıyoruz ABCDEFGHI:

1 1 0 1 1 0 0 0 0
1 1 1 1 1 1 0 0 0
0 1 1 0 1 1 0 0 0
1 1 0 1 1 0 1 1 0
1 1 1 1 1 1 1 1 1
0 1 1 0 1 1 0 1 1
0 0 0 1 1 0 1 1 0
0 0 0 1 1 1 1 1 1
0 0 0 0 1 1 0 1 1

. Her etiket için l, etiket düğümlerine karşılık gelen satırları ve sütunları seçiyoruz l. Bu bize, letiketli düğümlerin alt grafiğinin bitişik artı artı kimlik matrisini verir . Daha sonra bu matrisi, yukarıda açıklandığı gibi alt grafiğin bağlı olup olmadığını test etmek için kullanırız.

Yukarıdaki matrisi,

    0 0 0
Z = 0 0 0
    0 0 0

ve

    1 1 0
O = 1 1 1
    0 1 1

, daha sonra matris 3 × 3 blok matrisi olarak görülebilir

O O Z
O O O
Z O O

ile aynı desene sahip O! 3 × 3 blokta Odesen tekrarlanarak üretilir 1 1 0 1.


Bu inanılmaz bir çözüm! Gez, bitişik matrisler muhtemelen bunu yapmanın en kısa yoludur, özellikle J gibi bir dilde
Zgarb

3

CJam, 56 67 bayt

q~4/~\@{a1$2<-\(+}%)_)-{_(+{\(a@-\}}A?%+:+[$_(d+1$)c\+@]zLf|2f>:+|`

Sipariş: CIGABFHDE.

Örnek girdi:

[1 1 5 0 1 0 5 2 1]

Çıktı:

[1 2 5]

Öncelikle köşelerde, yanlardaki bağlı sayılarla aynı olan sayıları kaldırır. Ardından, kenarlardaki sayıları, sonraki kenarlardaki sayılarla aynı şekilde kaldırır. Son olarak, iki veya daha fazla kez oluşan tüm sayıları kaldırır ve merkez numarasını ekler.


2

CJam, 90 bayt

Bu, burada açıklanan yinelemeli bir sel dolgusuna dayanmaktadır ve çok golf edilebilir!

q~:Q{:IQ3/S*Sca5*+:T;G,G*{:AT=1$={[WXZ5 4_~_)_)]Af+Tf=AT='#a+&,g{TA'#t:T;}*}*}%;aT\/,3<},p

Aşağıdaki gibi girişi gerektirir ABCDEFGH:

[0 1 1 2 1 0 5 5 1]

ve çıkış bağlı düğümlerdir:

[1 1 2 1 5 5 1]

Kısa açıklama

  • İlk olarak, her etiket için giriş dizisi üzerinde yineleme.
  • Her yinelemede, bağlantısız düğümleri bulmak için taşkın dolgu gerçekleştiriyorum.
  • Bağlantısı kesilmiş düğümlerin sayısı 1'den fazlaysa, o etiketin bağlantısı kesilir.
    • 1 çünkü bir etiket giriş dizisinde de sadece 1 tekrar içerebilir.
  • Sonra bağlantısız etiketleri filtreleyip diziyi yazdırıyorum.

Takip etmek için tam açıklama

Buradan çevrimiçi deneyin

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.