ised: 72 46 karakter
Bu neredeyse mükemmel bir uyum ... tam olarak matematik golf için kastedilen görünen bir "dil" var: ised . Onun karışık sözdizimi çok kısa bir kod (adlandırılmış değişken yok, sadece tamsayı bellek yuvaları ve çok yönlü çok yönlü tek karakter operatörleri) yapar. Bir integral kullanarak gama fonksiyonunu tanımlayarak 80 görünüşte rastgele karakterler elde ettim.
@4{:.1*@+{@3[.,.1,99]^x:*exp-$3}:}@6{:@{$4::@5avg${0,1}>$2}$5:}@0,0@1,99;$6:::.
Burada, $ 4 bellek yuvası faktörsal bir işlevdir, 6 $ bellek bölme işlevini ve $ 2 bellek yuvasının giriş olarak ayarlanması beklenir (bu kodu girmeden önce verilir). 0 $ ve 1 $ arasındaki slotlar bisection sınırlarıdır. Çağrı örneği (yukarıdaki kodun dosyada olduğunu varsayarak inversefactorial.ised
)
bash> ised '@2{556}' --f inversefactorial.ised
556
5.86118
Tabii ki, yerleşik yerleşik kullanabilirsiniz! operatör, bu durumda en fazla 45 karakter
@6{:@{{@5avg${0,1}}!>$2}$5:}@0,0@1,99;$6:::.
Dikkatli, operatör önceliği bazen gariptir.
Düzenleme: fonksiyonları kaydetmek yerine satır içi yapmayı hatırladım. 72 karakterli Mathematica'yı bitirin!
@0,0@1,99;{:@{{:.1*@+{@3[.,.1,99]^x:*exp-$3}:}::@5avg${0,1}>$2}$5:}:::.
Ve kullanma! Yerleşik 41 olsun.
Bir yıl gecikmeli güncelleme:
Bunun çok verimsiz olduğunu anladım. 60 karaktere kadar golf oynadı:
@0#@1,99;{:@{.1*@3[.,.1,99]^@5avg${0,1}@:exp-$3>$2}$5:}:::.
Utf-8 kullanılırsa (Mathematica da yapar), 57'ye ulaşırız:
@0#@1,99;{:@{.1*@3[.,.1,99]^@5avg${0,1}·exp-$3>$2}$5:}∙.
Biraz farklı bir yeniden yazma işlemi 46'ya kadar azaltabilir (veya eğer yerleşik kullanıyorsanız 27):
{:x_S{.5@3[.,.1,99]^avgx·exp-$3*.1<$2}:}∙∓99_0
Son iki karakter, cevabın iki kez yazdırılmasıyla sorununuzu çözmeniz durumunda kaldırılabilir.