Bu, @ ais523'ün cevabının daha da geliştirilmesi, sadece iki küme kümesine indirgenmesi ve ayrıca Golomb cetvel teorisine dayanan daha kompakt bir hücre yerleşimi kullanılmasıdır. ais523, bu yapı için bir derleyici hazırladı ve bu TIO oturumu , TWM sayaçlarının hata ayıklama izlemesiyle çalışan örnek bir BF programını gösteriyor.
Orijinal gibi, bu da Şelale Modeli'nde , genelliği kaybetmeyen bazı kısıtlamalarla bir programla başlar :
- Tüm sayaçlar kendi kendine sıfırlama değerine R, ; yani TWM tetikleme haritası f , tüm x için f( x , x ) = R özelliğine sahiptir .x
- Tek bir durdurma sayacı h .
- Sayaçların c sayısı , bazı asal sayı p için ( p - 1 ) / 2 .p
Golomb cetveli
Bir Golomb cetvelini gerekli özelliklere sahip kılmak için Erd –s-Turán yapısını Welch-Costas dizisinin permütasyon fonksiyonu ile birleştiriyoruz .
(Bu birleşik yapının yeni bir fikir olamayacağından eminim, ancak bu iki parçayı Wikipedia'dan bulduk ve birleştirdik.)
r , p = 2 c + 1 ilkel kökü olsun . İşlevi tanımlayın
g( k ) = 4 c k - ( ( rk- 1 ) mod ( 2 c + 1 ) ) , k = 0 , … , 2 c - 1.
- g ,mertebesindebirGolomb hükümdarıdır. Yani,farkı, her farklı sayı çifti i , j ∈ { 0 , … , 2 c - 1 } için benzersizdir.2 cg( i ) - g(j)i,j∈{0,…,2c−1}
- g(k)mod(2c) herdeğerini birkez alır.0,…,2c−1
Bant yapısı
Her bir TWM sayacı iki BF bant hücresi konumu, bir geri dönüş hücresi ve bir değer hücresi atarız :x∈{0,…,c−1}u ( x ) v ( x ) u(x) v(x)
u(x)=g(k1)<v(x)=g(k2) with u(x)≡v(x)≡x(modc)
İkinci özelliği ile iki farklı tam vardır seçim için değerler.gk1,k2
Bir geri dönüş hücresinin içeriği , sayacının henüz ziyaret edilmediği, olacağı dışında , sayaç kendini sıfırlama değerinin iki katı olarak çoğu zaman tutulur . Bir değer hücresi, karşılık gelen TWM sayacının değerinin iki katında tutulacaktır.02R
BF programının yürütülmesi (sonlu bir sayı) ile erişilebilen diğer tüm hücreler tek değerlerde tutulur, böylece her zaman sıfır olmayan olarak test edilirler. Başlatma işleminden sonra bu otomatiktir, çünkü tüm hücre ayarlamaları eşit miktarlardadır.
İstenirse, başlangıçtaki BF bant konumunun soluna hareket etmemek için tüm hücre konumları bir sabit tarafından sağa kaydırılabilir.
BF program yapısı
Let durdurulması sayacın değeri ve yedek hücreler arasındaki mesafe, ve izin sayıda yeterince büyük olması Tüm sayaçlar için . Sonra temel BF program yapısıH=v(h)−u(h)NcN+1≥v((x+1)modc)−u(x)x
başlatma ayarlamaları[
>
×(H+cN+1) [
<
×c x H]
<
×H ]
Başlatma
Başlatma fazı, karşı sadece görüntülenmiştir ve sadece bir aktif hücrenin yedek hücre olduğu gibi tüm hücreler bir durumda, başlangıç değerlerine programı ile ulaşılabilir ayarlar :u ( c - 1 )
- Değer hücreleri, karşılık gelen TWM sayacının başlangıç içeriğinin iki katı olarak başlatılır, ancak sayaç önceden azaltılır.0
- Yedek hücreler ayarlanır hücre dışında olarak ayarlandığında, .0u ( c - 1 )2 R
- Program tarafından erişilebilen diğer tüm hücreler (sonlu sayı) olarak ayarlanır .1
Ardından, programın ilkine ulaşmadan önce bant işaretçisi (her zaman sıfır olmayan bir hücre) konumuna getirilir .u ( c - 1 ) - H[
Dış halkanın başlangıcı
Dış halkanın yinelemesinin başlangıcında, teyp işaretçisi bir sayaç için veya olacaktır .u ( x ) - Hv ( x ) - Hx
Let ziyaret yanında karşı olmak.y= ( ( x + 1)modc)
hareketi , şerit işaretçisini öğesinin soluna değil getirir .>
× ( H+ c N+ 1 )≡ y( modc )v ( y)
İç döngü şimdi sıfır hücre için adımlarında sola doğru arama yapar . sayacı sıfırsa, (sıfır) değer hücresi de durur ; aksi halde geri dönüş hücresini bulur .[
<
× c ]
cyv ( y)u(y)
Hangi hücre bulunursa yeni etkin hücre olur.
Düzeltmeler
Ayar fazlı aktif hücreye kendi pozisyonunda temel bant çeşitli hücreleri ayarlar. Bu bölüm yalnızca +-><
komutlar içerir ve bu nedenle bu ayarlamalar koşulsuz gerçekleşir. Bununla birlikte, sayaçla ilişkili tüm hücreler bir Golomb cetvel deseninde olduğundan, mevcut aktif hücre için uygun olmayan herhangi bir ayarlama, tüm önemli hücreleri özleyecek ve bunun yerine bazı tuhaf hücreleri ayarlayacaktır (tuhaf tutarken).
Bu nedenle, aktif hücrenin kendi kendine ayarlaması haricinde , her bir gerekli aktif ve ayarlanmış hücre çifti için ayrı kod programa dahil edilmelidir ; bu, ayarlama yalnızca göreceli konuma dayandığından, bunlar arasında paylaşılmalıdır.
Gerekli ayarlamalar:
- Önceki sayacın son çare hücreyi ayarlayın tarafından .u(x)−2R
- Mevcut sayacın yedek hücre ayarlama göre , ancak mevcut etkin hücre ise, ve durdurmak bu yüzden.u(y)2Rv(h)
- Bir sonraki sayaç değeri hücre ayarlama tarafından (sayaç azaltma).v((y+1)modc)−2
- Aktif hücre, bir değer hücresi olduğu zaman (karşı çok sıfır ulaşmıştır), her değer hücreleri ayarlamak ile TWM tetik haritadan. kendisi ayarlanır .v(y)yv(z)2f(y,z)v(y)2R
Yukarıdaki birinci ve ikinci ayarlamalar, tüm aktif hücrelerin kendilerini , değer hücreleri ve dolayısıyla geri dönüş hücreleri için olan aynı değerle ayarlaması gerektiği için gereklidir . Bu, hem değer hem de geri dönüş dallarında geri dönmelerini sağlamak için yedek hücrelerin hazırlanmasını ve temizlenmesini gerektirir .2R0
Dış ilmeğin sonu
hareketi , ayarlama aşamasının sonunda, şerit imlecinin hareket ettirildiğini aktif hücrenin soluna doğru temsil eder.<
×HH
Tüm aktif hücreleri için diğer durdurulması sayaç değeri hücre daha bu alakasız bir cep ve bu nedenle tek ve sıfır olmayan, ve dış döngü bir yineleme için devam eder.v(h)
İçin , işaretçi yerine karşılık gelen yedek hücre yerleştirilir bunun sıfır tutmak için üzerinde bir istisna var olan, ve Program çıkar böylece nihai yoluyla ve durur.v(h)u(h)]