[プログラマ]3進法の反転


10進数を3進数に変換し、10進数に変換する問題.
ex) n = 45
=>45を3進数に変換する場合1200
=>1200のビット数を0021に反転
=>3進数21を10進数7に変換
私の首都コード)
  • 十進数nは三進数になる.
  • nを3で割った残りの部分はアレイにシフトしない.
  • 3に分割されたnのシェアをnに再記憶する.
  • nが3未満になるまで、
  • 文を繰り返します.
    私の草
  • 複文が終了すると、現在のnは配列に移動しません.
  • の3進数からなるアレイは、10進数
  • に変換される.
  • に配列された最初の要素は1桁、2番目の要素は10桁...はい.
  • は、
  • の結果を返します.
  • マイコード)
    function solution(n) {
        let arr = [];
        let result = 0;
        
        while(n >= 3){
            arr.unshift(n % 3);
            n = parseInt(n / 3);
        };
        arr.unshift(n);
        
        for(let i = 0; i < arr.length; i++){
            result = result + arr[i]*(3**i);
        }
        return result;    
    }
    結果を確認した後、他の人の回答を見ました.
    糸を解いた人もたくさんいました.(reduce賛美)
    #新学の方法
  • Array.prototype.逆方向():並べ替え順序を反転
    正式な書類
  • Number.prototype.toString(n):番号をn進数Stringタイプに戻す
    正式な書類
  • Number.parseInt(String,基数):文字列パラメータをグループ化することで、特定の進数の整数(数値に基づく進数)を返します.
    正式な書類
    parseIntの2番目のパラメータ(option)は現在の数の整数を知ることができる
    parseInt('21', 3)//dispaly 7
    <2進数21を10進数に変換!>