Hyperprogramming'ten ilham alan : N + N, N × N, N ^ N hepsi bir arada .
@MartinEnder ve @trichoplax'a kum havuzundaki yardımları için teşekkürler.
Tanımlar
Hyperquines
Bir tanımlama hyperquine düzenin n bir Quine'a benzeri tam program veya fonksiyon olarak P ye uyan için geçerli olan tüm kuralları doğru quines ek olarak, aşağıdaki yapıya sahiptir ve.
P karakteri birleşimidir ‡ oluşur grupları , n aynı karakter kopya. Ne zaman P yürütülür, çıkış karakterinin bir daha kopya güçlendirilecek aynı gruplar, birleşimidir.
Örnekler
Kaynak kodun
aabbcc
çıktısını ürettiği varsayımsal bir programlama dilindeaaabbbccc
, bu program 2. dereceden oluşan bir hiperkin oluşturur .Tanım yok değil farklı olması, farklı grupların karakterleri gerektirir.
Eğer kaynak kod
aabbcc
çıktıyıaaaabbbbcccc
verirse, program 1. sıraya göre bir hiperkindir ; kaynak kodu, altı karakter çiftinin çıktısı olan altı tek karakter grubundan oluşur.In GS2 , boş bir program baskılar
\n
ve program\n
baskılar\n\n
. Ancak, ne\n
de\n\n
onlar tüm özelliklerini karşılamak olmadığı hyperquines vardır uygun quines ; kaynak kodun hiçbir bölümü çıktının farklı bir bölümünü kodlamaz.
Aşırı zincirler
Bir tanımlama hyperquine zincir uzunluğu n bir sonlu dizisi olarak n tam programlar veya N fonksiyonları
(P 1 , ..., p , n ) o biri aşağıdaki kısıtlamalar.
P 1 ,…, P n-1'in çıktıları sırasıyla P 2 ,…, P n'dir .
P 1 ,…, P n , hiperkinlerdir.
Emirleri P 1 , ..., p , n bir formu kesin artan sekansını bitişik tamsayı.
Son olarak, bir tanımlamak sonsuz hyperquine zincir tam programları veya fonksiyonların sonsuz dizisi olarak (P 1 , P 2 , ...) gibi her bir başlangıç aralığı olduğu (P 1 , ..., p , n ) uzunlukta bir hyperquine zincirini oluşturmaktadır n .
Örnekler
Kaynak kodun
aabbcc
çıktı ürettiği varsayımsal bir programlama dilindeaaabbbccc
, sırayla çıktıyı üretenaaaabbbbcccc
çift (aabbcc
,aaabbbccc
), uzunluğu 2 olan bir hiperkin zincirini oluşturur .Unutmayınız ki
aaaabbbbcccc
- zincirdeki son hiperkinin çıktısı - belirli bir çıktı üretmek zorunda değildir; geçerli bir kaynak kod olması gerekmiyor bile.Eğer, bir önceki örnekten devam
aaaabbbbcccc
çıktı üretiraaaaabbbbbccccc
, triplet (aabbcc
,aaabbbccc
,aaaabbbbcccc
) uzunluğunda bir hyperquine zincirini oluşturmaktadır 3 .Bu model sonsuza devam ederse dizisi (
aabbcc
,aaabbbccc
,aaaabbbbcccc
, ...) sonsuz hyperquine zincirini oluşturmaktadır.Programların (çifti
abc
,aabbcc
çıkışları ile) (aabbcc
,aaaabbbbcccc
) 'dir olmayan hyperquines emir her ikisi de, çünkü bir hyperquine zincir 1 bir kesin artan sekansı oluşturmayan, böylece.Programların (çifti
aabbcc
,aaaabbbbcccc
çıkışları ile) (aaaabbbbcccc
,aaaaabbbbbccccc
) 'dir olmayan hyperquines emirleri, çünkü, bir hyperquine zincir 1 ve 4 de, bitişik bir tamsayı dizisi oluşturmayan, böylece.
kurallar
Görev
Seçtiğiniz bir programlama dilinde , önemsiz olmayan bir hiperkin zinciri, yani en az 2 hiperkinden oluşan bir zincir yazın.
Her zaman olduğu gibi, programlarınız herhangi bir biçimde herhangi bir girdi alamaz veya kendi kaynak kodlarına erişemez.
Tercümanınız örtük bir yeni satır basarsa, hiperkuinleriniz bunu hesaba katmak zorundadır .
Tüm standart boşluklar - özellikle de kuyruklarla ilgili olanlar - geçerlidir.
puanlama
En uzun hiperquine zinciri kazanır. İki veya daha fazla gönderimler eşitlik varsa, en kısa hyperquine ile başlar bunlar arasında teslim (karakterleri ölçülen ‡ kazanır). Her zamanki gibi, gönderim zamanı nihai başkasıdır.
‡ Sen kaynak kodu, çıkış, karakter sayısı ve yürütülmesi için aynı karakter kodlamasını kullanmalıdır. Örneğin, Python programı print 42
olduğu değil tercüman tek karakter olarak her bayt davranır beri, 2 karakterli UTF-32 sunulması. Tercih ettiğiniz dil karakter tabanlı değilse, tüm bireysel baytları karakter olarak kabul edin.