Son zamanlarda grafik teorisini, özellikle hiperküpleri okudum ve üzerlerine yollar inşa etmenin ilginç yollarını düşündüm. İşte ortaya koyduğum şey.
Bildiğiniz gibi, köşelerden oluşan 1
ve 0
köşeler olarak oluşan tüm n-tupl'leri alarak ve tek bir basamakta farklılık gösterirlerse, n-boyutlu bir hiperküp inşa edebilirsiniz . Bu ikili basamakları bir tamsayı olarak yorumluyorsanız, güzel şekilde numaralandırılmış köşeleri olan bir grafik elde edersiniz. Örneğin n=3
:
Diyelim ki bu hiperküpte bir yürüyüş yapmak ve tepe noktasından başlamak istiyorsunuz 0
. Şimdi, bir sonraki ziyaret etmek istediğiniz tepe noktasını nasıl belirliyorsunuz? Geldiğim kural a
, bulunduğunuz tepe noktasının sayısını almak, mod(a,n)
s bitini (sıfır tabanlı indeksleme) çevirmek ve ortaya çıkan tepe noktasına gitmek. Resmi olarak bu kural özyineli olarak şu şekilde tanımlanabilir:
a[m+1] = xor(a[m], 2^mod(a[m],n)).
Bu kurala uyarak, daima küp üzerinde kalacak ve kenarlar boyunca seyahat edeceksiniz. Ortaya çıkan yol şöyle görünür
Gördüğünüz gibi, bir daire içinde yürüyeceksiniz! Aslında, tüm boyutlarda ve tüm başlangıç noktalarında yolunuz bir döngüye dönüşür. Örneğin için n=14
ve a[0]=0
böyle görünüyor
Hevesli ambler için, planlanan rotasının uzunluğu oldukça önemli bir bilgidir. Bu nedenle, işiniz hiper küp boyutunu n
bir başlangıç tepe noktası a[0]
olarak girdi olarak alan ve sonuçtaki döngüdeki köşe sayısını çıkaran bir işlev veya program yazmaktır .
Test senaryoları
n a[0] Output
-----------------
3 0 6
14 0 50
5 6 8
17 3 346
kurallar
- Standart boşluklar yasaktır
- Çıkış / Giriş herhangi bir uygun biçimde olabilir
a[0]
Geçerli bir tepe noktası olduğunu varsayabilirsiniz .
puanlama
Bayt cinsinden en kısa kod kazanır.
Bu konuyla ilgili başka bilgileriniz varsa, memnuniyetle dinleyebilirim!
a[m]
Hiperküpte olsaydı da a[m+1]
olacak. Ve a[0]
geçerli bir tepe noktası olduğunu varsaydığınız gibi , herhangi bir hiper küpü önemsemenize gerek yoktur ve sadece kuralı takip edersiniz.
a[m+1] = xor(a[m], 2^mod(a[m],n))
köşelerin bir hiper küpüne ait olması önemli değildir, değil mi?