GASとPythonで、paiza レベルアップ問題集 配列メニュー を解いてみた2

このコーナーでは、学習コンテンツpaizaのレベルアップ問題集の中から気になった問題をPythonとGASの両方で解いてみます。

paizaでの回答はPythonで行いましたが、この記事ではPythonのコードと共に、同じ問題を現在学習中のGASだったらどう解くのか、スプレッドシートでバインドして作ってみました。

問題文URL:何番目にある? 3 (paizaランク D 相当)

まず、Pythonで解いてみます。

配列の中にNという数が左から何番目にあるのか調べます。
配列の要素数はMです。
それらが標準入力1行に与えられます。

要素数M個の配列をaとします。aが標準入力2行目に与えられます。

Nが配列aの左から何番目なのか調べます。

この問題の具体例は、

入力例1
3 5
1 2 3 4 5

出力例1
3

なので、N=3,M=5、配列aは1,2,3,4,5となります。

手順として、
1.NとMを読み込む
2.配列を読み込む
3.Nは配列aの左から何番目に登場するのか調べる

と、なります。

コードを見てみましょう。

手順1:調べる数Nと配列の要素数を読み込む
N,M=map(int,input().rstrip().split(‘ ‘))

手順2:配列aを読み込む
a=list(map(int,input().rstrip().split(‘ ‘)))

配列をきちんと読み込めたか出力して、確認後はコメントアウトしています。
#print(a)

手順3:Nは配列aの左から何番目に登場するのか調べる
print(a.index(N)+1)

配列名.index(順番を調べる要素)で、Nが左から何番目にあるのか求めています。
1を加えているのは、配列の先頭が0から始まるからです。

全コードはこのようになります。

N,M=map(int,input().rstrip().split(‘ ‘))
a=list(map(int,input().rstrip().split(‘ ‘)))
#print(a)
print(a.index(N)+1)

では、同じ問題をGASで解いてみます。

まず、スプレッドシートにこの様に配置しました。

配列の何番目なのか調べる数NをB1、配列の個数MをB2、配列をB4からF4までM個分=この場合5個
Nが配列aの何番目にあるのかをB6に表示させます。

手順はこのようになります。
1:配列の左から何番目にあるのか調べる数Nを読み込む
2:配列の要素数Mを読み込む
3:配列aを読み込む
4:Nが配列aの左から何番目に登場するのか求めて結果を表示する

手順1,2:N,Mを読み込む
const sheet=SpreadsheetApp.getActiveSheet();
let N=sheet.getRange(1,2).getValue();
let M=sheet.getRange(2,2).getValue();

手順3:配列aを読み込む
let a=sheet.getRange(4,2,1,M).getValues();

B4から1行分、M列分取得しています。

console.log(a);
で、配列が読み込めたかどうかログに表示しました。

手順4:Nが配列aの左から何番目に登場するのか求めて結果を表示する
console.log(a[0].indexOf(N)+1);
sheet.getRange(6,2).setValue(a[0].indexOf(N)+1);

a[0]はスプレッドシート上で二次元配列となっていてその1行目であるa[0]の中で、
Nが左から何番目にあるのか求めて、配列の先頭が0で始まるので1を加えています。

そのログ表示とシートのB6に表示されるコードです。

全コードはこの様になります。

function inWhatNumber(){
const sheet=SpreadsheetApp.getActiveSheet();
let N=sheet.getRange(1,2).getValue();
let M=sheet.getRange(2,2).getValue();
let a=sheet.getRange(4,2,1,M).getValues();
console.log(a);
console.log(a[0].indexOf(N)+1);
sheet.getRange(6,2).setValue(a[0].indexOf(N)+1);
}

実行結果です。

お疲れ様でした。

ブレイクタイムフォトはこちらになります。

スカイツリー

参考文献です。

GAS自作サンプル集に戻る
Python自作サンプル集に戻る
息抜きに、写真で癒し(=^x^=)

基本情報技術者試験
自己紹介

投稿者: nekosiestr

プログラミング学習中のロスジェネ(就職氷河期世代)の発達障害者です。 宜しくお願いします。 趣味で写真を撮っています。 プログラミングは、GAS/HTML/CSS/JavaScript/jQuery/PHP、 発達障害は、自閉症スペクトラムASD/ADHD、その他双極性障害やHSP(5人に1人の繊細さん)などの生きづらさを抱えておりますが、それでも楽しく生きて行きたいです!! 写真は、以前はコンパクトデジカメ、現在は、OLYMPUSミラーレス一眼を使っています。