Z tego, co widziałem przez cały czas tutaj na PPCG, większość wpisów JavaScript dotyczących funkcji grubych strzałek jest zwykle jednym z dwóch obozów:
Proste, które mogą działać jako pojedyncze zdanie i zwracać odpowiedź od razu, jak nietoperz
x=(a,b)=>a*a+b
Bardziej złożone, które zwykle mają nawiasy klamrowe z powodu użycia pętli, w związku z czym wymagają użycia
return
instrukcji.p=b=>{m=b;for(a=1;~-m;)--m,a*=m*m;return a%b}
Biorąc powyższy przykład z kategorii 2 z koncepcją nawiasów klamrowych jako proof-of-concept ... Czy istnieje sposób na ponowne golfowanie tego kodu (lub podobnego) w taki sposób, aby wyeliminować nawiasy klamrowe, a także return
? Pytam tylko o to, ponieważ może to potencjalnie (nie powiedzieć, że tak się stanie przez cały czas) wyeliminować 8 bajtów z kodu golfisty JS. Czy są jakieś techniki, które można zastosować w tym przypadku? Próbowałem rekurencji, ale to m=b
stwierdzenie okazało się trochę mylące, ponieważ nie mogę tego potrząsnąć.
W przypadku powyższego kodu, w jaki sposób jeden golf mógłby to dodatkowo wyeliminować return
, niezależnie od tego, czy gra w golfa krócej, czy nie?
~-m
jestm-1
, więc pętla może być,for(m=b,a=1;--m;a*=m*m)a%b;
a wersja rekurencyjna może być (niesprawdzona)b=>(f=a=>--m?f(a*=m*m):a%b)(1,m=b)