今天不聊戰爭,今天來講講 CodeGolf 。
CodeGolf (程式高爾夫)是一種程式競賽,但有別於一般的演算法比賽,他題目通常比較簡單,而且題目要求的也不是程式執行的「效率」,而是程式碼的字數越少越好,沒錯,你沒有聽錯,這個比的是誰的字數最少,就像高爾夫追求最少桿數一樣。
所以要打Code Golf會需要學習各種語言的神秘語法糖,這樣才可以節省字數,比如前篇提到的while(1){}
跟for(;;){}
,使用for就可以省下一個字。
或者比如在C,全域int變數宣告時的「int」是可省略的,直接打變數名稱就會進行宣告,所以我可以這樣寫:
a;
main(){
a = 3;
printf("%d\n",a);
}
聽完有沒有覺得躍躍欲試啊,可以上這個網站來體驗看看,這邊我順便分享Prime Number這題我用C寫的程式碼,總共是72字,排第90名,歡迎研究看看然後試著再幫我縮減喔!
main(n,a,i){for(;++n<98;a=a?printf("%d\n",n):1)for(i=1;++i<n;a*=n%i>0);}