以下は全てコメントを除外したバイト数
- 初期状態(152バイト)
function euclideanAlgorithm(a,b){ // aがbで割り切れる場合、最大公約数である let c = a%b; if(c === 0){ return b; }else{ // 割り切れない場合、bと剰余を引数に再度自分自身を呼び出す return euclideanAlgorithm(b, c); } }
- アロー関数にする(150バイト)
euclideanAlgorithm = (a, b) => { // aがbで割り切れる場合、最大公約数である let c = a%b; if(c === 0){ return b; }else{ // 割り切れない場合、bと剰余を引数に再度自分自身を呼び出す return euclideanAlgorithm(b,c); } }
- 関数名を1文字にする(117バイト)
f = (a, b) => { // aがbで割り切れる場合、最大公約数である let c = a%b; if(c === 0){ return b; }else{ // 割り切れない場合、bと剰余を引数に再度自分自身を呼び出す return f(b, c); } }
- 一時変数cを削除する(103バイト)
f = (a, b) => { // aがbで割り切れる場合、最大公約数である if(a%b === 0){ return b; }else{ // 割り切れない場合、bと剰余を引数に再度自分自身を呼び出す return f(b, a%b); } }
- 先にreturnしているのでelseを削除する(70バイト)
f = (a, b) => { // aがbで割り切れる場合、最大公約数である if(a%b === 0) return b; // 割り切れない場合、bと剰余を引数に再度自分自身を呼び出す return f(b, a%b); }
- 0はfalse、0以外の数字はtrueと判定される事を利用して条件文を置き換える(67バイト)
f = (a, b) => { // 余り0のとき真偽値を判定させてTrue if(!(a%b)) return b; // 割り切れない場合、bと剰余を引数に再度自分自身を呼び出す return f(b, a%b); }
- 三項演算子でreturn文をまとめる(54バイト)
f = (a, b) => { // 余り0のとき真偽値を判定させてTrue // 割り切れない場合、bと剰余を引数に再度自分自身を呼び出す return !(a%b) ? b : f(b, a%b); }
- 不要な文字を削除(34バイト)
f=(a,b)=>{return!(a%b)?b:f(b,a%b)}
===[2021/01/16 追記]以下コメントで頂いたもの===
より短くなる方法をコメントで頂きました!ありがとうございます!
- 波括弧とreturnを削除(26バイト)
f=(a,b)=>!(a%b)?b:f(b,a%b)
- 条件式を反転させ
!()
を削除(23バイト)
f=(a,b)=>a%b?f(b,a%b):b