神戸プログラミングアカデミーのブログ

「未経験から」「スキルアップ」「起業を目指す」無料で学べる神戸のプログラミング学校&学習コミュニティ

指定されたインデックスが先頭になるようにして返す関数を作成せよ

配列を指定されたインデックスが先頭になるようにして返す関数rotate(arr, index)を作成せよ

docs.ruby-lang.org

  • 作成する関数の第1引数は絞り込み前の配列、第2引数は先頭にするインデックスとする
  • コマンドライン引数の1つ目をインデックス、それ以降を配列とする
const index = Number(process.argv[2])
const args = process.argv.slice(3)

rotate(args, index)

実行コマンド

node main.js 2 34 27 94 12 30 14 25
[ 94, 12, 30, 14, 25, 34, 27 ]
node main.js -2 34 27 94 12 30 14 25
[ 14, 25, 34, 27, 94, 12, 30 ]

解答例

function rotate(arr, index) {
  const ret = []
  for (let i = 0; i < arr.length; i++) {
    ret.push(arr[(i + index + arr.length) % arr.length])
  }
  return ret
}

const index = Number(process.argv[2])
const args = process.argv.slice(3)

console.log(rotate(args, index))