科目B対策

これといった目的のない、ただトレースさせたいだけのプログラムも出題されますが、

何を目的としたアルゴリズムか分かれば時短で解けるものもあります。

 

A. 交換処理

配列内の値を交換することが多いので、配列を反転する方法を例に挙げます。

Google Colab⑩参照

%%js
const array = [1,2,3,4,5,6,7,8,9];

let arr = [...array];    ・・・・①

function swap(array, idx1, idx2){
  let tmp;
  tmp = array[idx1];
  array[idx1] = array[idx2];
array[idx2] = tmp;     ・・・・②
  return array;
}

function reverse(array){
  for(let i=0; i<array.length/2; i++){
    swap(array,i, array.length-i-1);
  }
  return array;
}

reverse(arr);

console.log(arr);

②の部分が交換処理です。

JavaScriptでは①で配列のコピーが簡単にできますが、これもアルゴリズムで理解してみます。

B. 配列のコピー

%%js
let array = [1,2,3,4,5,6,7,8,9];

let arr =[];

function copyArray(newArray, originalArray){
  for (let i=0; i<9; i++){
    newArray[i] = originalArray[i];
  }
  return newArray;
}

copyArray(arr, array);


console.log(arr);

 

C. 配列に空きスペースを作る

配列array = [1,2,3,4,5,6,7,8,9]の3と4の間に0を入れたい場合どうするかを考える。

%%js
//3と4の間に0をいれる
const data = [1,2,3,4,5,6,7,8,9];

let arr = [...data];

let i = 8;

while(i >= 3){
  arr[i+1] = arr[i];
  i = i-1;
}

arr[3] = 0;

console.log(arr);

令和2年免除問9(過去問道場)の科目AのTANGO問題参照。

D. 最大値を求める

google colabolatory⑥ JavaScriptでアルゴリズム(最大値を求める) - JavaScriptからReactまで (hatenablog.com)

 

%%js
const a = 3;
const b = 4;
const c = 1;

let max = a;
if(max < b){
  max = b;
}else if(max < c){
  max = c;
}

console.log(max);

 

E. 1からnまでの総和を求める

google colabolatory⑦ JavaScriptでアルゴリズム(1~nまでの総和を求める) - JavaScriptからReactまで (hatenablog.com)

F.  最大公約数を求める

google colabolatory⑫ 最大公約数を求めるアルゴリズム - JavaScriptからReactまで (hatenablog.com)

 

G. nの階乗を求める

google colabolatory⑧ JavaScriptでアルゴリズム(nの階乗を求める) - JavaScriptからReactまで (hatenablog.com)

 

H. 線形探索

Google Colaboratory ⑭ 線形探索 - JavaScriptからReactまで (hatenablog.com)

 

I.  バブルソート

google colabolatory⑪ JavaScriptでアルゴリズム([ソート編①]バブルソート) - JavaScriptからReactまで (hatenablog.com)

 

J.  2分探索   (作成中)

K.  クイックソート  (作成中)

→J、K(あるいはそれ以外のソートやサーチも)は 下記参照。

JavaScriptでサーチ・ソートアルゴリズムを学ぶ (zenn.dev)

 

L. 配列を反転する

google colabolatory⑩ JavaScriptでアルゴリズム(配列の要素を反転する) - JavaScriptからReactまで (hatenablog.com)

 

M. 配列をシャッフルする

google colabolatory⑨ JavaScriptでアルゴリズム(配列の要素をシャッフルする) - JavaScriptからReactまで (hatenablog.com)

 

L.  異なるn個の整数が要素である配列から、異なる3個取り出し、その3個の要素からなる配列を返す   (作成中)

 

 

 

 

オブジェクト指向Javaでやってみようとしましたが、配列がJavaでは固定長で、代わりに、ArrayListを使用しなければならないためやめました。

Javascriptでもクラスという概念はありますが、プログラム全体としてはオブジェクトだけの指向ではありませんが、オブジェクト指向縛りでコーディングすることは可能です。型がないですが、Visual Studio Codeだと、暗にクラスがあります。こうなると、ほとんど Typescriptですが、、、、

EclipseというIDE統合開発環境)をインストールしてやってみます。

 

リスト×オブジェクト指向の問題は難問です。