Bu zorlukta, göreviniz bir dizi yönergeden yönlendirilmemiş bir grafik oluşturmaktır. Her negatif olmayan tam sayı için bir yönerge vardır ve her biri belirli bir grafiği yeni bir grafiğe dönüştürür.
- Yönerge
0
: Bağlantısı kesilmiş yeni bir düğüm ekleyin. - Yönerge
1
: Yeni bir düğüm ekleyin ve mevcut tüm düğümlere bağlayın. - Yönerge
m > 1
: Derecesi (komşu sayısı) ile bölünebilen tüm düğümleri kaldırınm
.0
Herkes tarafından bölünebileceğini unutmayınm
, bu nedenle bağlantısı kesilen düğümler her zaman kaldırılır.
Yönergeler, boş grafikle başlayarak soldan sağa doğru tek tek uygulanır. Örneğin, dizi [0,1,0,1,0,1,3]
harika ASCII sanatı kullanılarak açıklandığı gibi işlenir. Boş grafikle başlıyoruz ve şu şekilde belirtildiği gibi tek bir köşe ekliyoruz 0
:
a
Ardından, başka bir tepe noktası ekleyin ve şu şekilde gösterildiği gibi ilkine bağlayın 1
:
a--b
Yönettiği gibi, daha sonra başka bir bağlantısız köşe ve bağlı tek ekleyebilir 0
ve 1
:
a--b c
\ \ /
`--d
Yönettiği ülke olarak buna bir kez daha tekrarlamak 0
ve 1
:
,--f--e
/ /|\
a--b | c
\ \|/
`--d
Son olarak, derece-3 köşelerini kaldırıyoruz a
ve b
şu şekilde 3
:
f--e
|\
| c
|/
d
Bu, dizi tarafından tanımlanan grafiktir [0,1,0,1,0,1,3]
.
Giriş
Bir dizi yönergeyi temsil eden negatif olmayan tam sayıların bir listesi.
Çıktı
Grafikteki dizi tarafından tanımlanan düğüm sayısı.
Test senaryoları
[] -> 0
[5] -> 0
[0,0,0,11] -> 0
[0,1,0,1,0,1,3] -> 4
[0,0,0,1,1,1] -> 6
[0,0,1,1,0,0,1,1,2,5,7,0,1] -> 6
[0,0,1,1,1,1,5,1,4,3,1,0,0,0,1,2] -> 6
[0,0,1,1,0,0,1,1,5,2,3,0,0,1,1,0,0,1,1,3,4,0,0,1,1,2,1,1] -> 8
[0,0,1,1,0,0,1,1,2,5,7,0,1,1,1,1,1,0,1,1,1,1,1,1,1,1,8] -> 14
Ayrıntılı kurallar
Bir işlev veya tam bir program yazabilirsiniz. En kısa bayt sayısı kazanır. Standart boşluklara izin verilmez. Lütfen cevabınızda algoritmanızı açıklayınız.
Bir hafta oldu, bu yüzden en kısa cevabı kabul ettim. Daha kısa bir süre sonra gelirse, seçimimi güncelleyeceğim. Şerefli bir söz Peter Taylor'ın kazanan da dahil olmak üzere başkalarının dayandığı cevabına gidiyor .