JavaScript, 62 61 37 bayt
Yardımınız için @ Doᴡɴɢᴏᴀᴛ'a teşekkürler!
Orijinal [37 bayt]:
f=_=>'f='+'_'.repeat((10+f).length)+f
Çocuk [74 bayt]:
f=______________________________________=>'f='+'_'.repeat((10+f).length)+f
Torun [148 bayt]:
f=________________________________________________________________________________________________________________=>'f='+'_'.repeat((10+f).length)+f
Alternatif (konsola yazdırma ve tam program olarak):
Orijinal [61 bayt]:
f=_=>console.log(`f=${'_'.repeat((0+f).length+5)+f};f()`);f()
Çocuk [122 bayt]:
f=______________________________________________________________=>console.log(`f=${'_'.repeat((0+f).length+5)+f};f()`);f()
Torun [244 bayt]:
f=________________________________________________________________________________________________________________________________________________________________________________________=>console.log(`f=${'_'.repeat((0+f).length+5)+f};f()`);f()
Nasıl çalışır!
1. f=_=>
f işlevini tanımlayınconsole.log(...)
2. ;f()
f işlevini çalıştırın.
3. (f işlevinde)
notlar
console.log
bunun yerine gereklidir, alert
çünkü alert
gerçekten uzun dizelerle iyi oynamıyor gibi görünüyor (en azından benim makine / tarayıcı yapılandırmamda)
_
Var da f stringification dahil olmasını sağlamak için, fonksiyon f (kullanılmayan) parametrenin adı sokulur.
- İkinciden
console.log
ilk çözümün ( kurtulmaktan başka ) kurtulması dışında : dizeye dökmek 10
yerine işleve eklenmesi 0
onu bir bayt daha uzun yapar, sonradan uzunluğa 1 ekleme ihtiyacını ortadan kaldırarak bir bayt tasarrufu sağlar.