Ṅ×ịß
Çevrimiçi deneyin!
TIO bağlantısı, Esolang sayfasında gösterilen örnek İpucu programı ile işlev çağrısı yapmak için bir altbilgi ekler (M'nin "otomatik sarmalayıcı", programlar sanki rasyonel veya sabit nokta numaralarını kaldıramazlar ya da en azından ben nasıl söyleyeceğimi çözemedik, bu yüzden çalışabilmek için bu işlevi el ile tam bir program haline getirmem gerekiyor.)
Bu aslında yararlı hata ayıklama çıktısını yazdırır; program 3 bayt ile yazılamaz çünkü tam olarak üç günden oluşan bir program ayrıştırıcıda özel bir durum tetikler, bu yüzden özel durumdan kaçınmak için fazladan bir komut eklemek zorunda kaldım. Bunu Ṅ
(newline ile yazdırmak) en azından faydalı bir amaç haline getirmek.
ı
i=−1−−−√
G / Ç uygulamıyor (durma / durma dışında). G / Ç, Tip'in bir uzantısıdır (dilin kendisinin bir parçası değildir) ve Turing'in eksiksiz olması için gerekli değildir.
Açıklama / arka plan
Ṅ×ịß
Ṅ Print {the left argument} and a newline; also resolves a parser ambiguity
ị {The left argument}th element of {the right argument}, wrapping on OoB
× Multiply {the left argument} by {the chosen element}
ß Recursive call; arguments: {the product} and {the same right argument}
[1,2,3]
[1,2,3,1,2,3,1,2,3,…]
rx+sBu bir polinomdur ve birçok golf dilinin sahip olduğu “temel dönüşüm” aslında kılık değiştirmiş genel amaçlı bir polinom değerlendiricisidir. Tek yapmamız gereken, bir basamaklar listesine endekslemek, onları taban-dönüştürmek ve bitti, tamam mı?
xx
ḅ
x⊕(x⊗y)x⊗y⊕. Elbette, zincirleme davranışını istediğimiz herhangi bir şey için geçersiz kılabiliriz, ancak bu bir bayta mal olur ve bu soruya golf dili girişleri o kadar kısa oluyor ki bir bayt çok fazla.
Bu yüzden geriye baktım ve yeniden değerlendirdim. Polinom değerlendirmesi yerine kullanabileceğimiz herhangi bir işlem var mı? İdeal olarak, değişmeli olanlar, bu nedenle tartışma sırası için endişelenmek zorunda değiliz? Kısa bir süre sonra Collatz fonksiyonlarının olması gerekenden daha karmaşık olduğunu anladım.
s
Tabii ki, temel dönüşümden ( ḅ
) farklı olarak , multiplication ( ×
) değişimlidir ve bu nedenle argümanların hangi sıraya yerleştirildiği önemli değildir. Bu yüzden yazmamız gereken tek şey ×ị
, sonra programı sonsuz bir özyinelemeye yerleştirmek ß
. ve Turing tamamlanmış bir dilimiz var. Sağ?
(x⊙y)⊕(x⊗y)¹×ịß
¹
¹
Ṅ
faydalı bir hata ayıklama çıktısı ürettiği için iyi bir seçimdir.
Üç bayt mümkün mü? Bir şeyleri özümsemediğim sürece, bu özel uygulama ve uygulamalı dil seçeneği ile değil, fakat bu noktada kesinlikle bir şekilde mümkün olacak gibi görünüyor, çünkü bunu dörtte yapmanın birçok yolu ve Turing-tamamlandı. uygulayabileceğiniz dilleri
eval
benzeri çözümleri önlemek için uygulanan dilin, onu uygulamak için kullandığınız dilden farklı olması gerektiğini de tavsiye ederim .