ご訪問ありがとうございます。
Googleシートマスターのひろしです。
前回

【数独を作ろう 3.】GASで値の取得、フォントサイズの設定をする方法
数独を作ろう一覧 ご訪問ありがとうございます。 Googleシートマスターのひろしです。 前回 今回は、とっても価値の高い方法をお伝えします。 これを知ることであなたは、 GASで値を取得することができます。 GASでチェックボックスの値を...
今回は、とっても価値の高い方法をお伝えします。
これを知ることであなたは、
- 1から9まで揃っているかどうかを検証する方法がわかります。
- 残り1個は何?とかエラーのチェックができます。
- GASでテストの仕方がわかります。
- さらにプログラミングの考え方がわかります。
なので、サクッとマスターして
と答えてあげてください。
今回は、ちょっと難しいかもしれませんが、
GASがどうのというよりプログラミングの話です。
今回の話を落とし込むことができれば、
今後、GASに限らず別の言語でのプログラミングや
マクロの作成もちょっと仕様を理解すれば、対応できるようになります。
なので、楽しみながら御覧ください。
動画はこちら
スクリプトはこちら
const CK_ERROR = -1 // エラー
const CK_OK = 1 // 揃った
const CK_LAST = 2 // あと1つ
const CK_NORMAL = 3// 通常
//9桁のチェック
function checkNum(buf) {
let ckbuf = [, , , , , , , , ,] //チェックする数字を入れるバッファ
console.log(buf)
console.log(ckbuf)
for (i = 0; i < 9; i++) {
console.log(buf[i])
if (ckbuf[buf[i] - 1]) {
console.log("エラー")
return CK_ERROR
}
ckbuf[buf[i] - 1] = true
}
console.log(ckbuf)
let ckcnt = 0 //いくつ入っているか
let lastcnt = 0 //残っている数字
for (i = 0; i < 9; i++) {
if (ckbuf[i] == true) {
ckcnt++
}
else {
lastcnt = i + 1
console.log("入っていない ", lastcnt)
buf[9] = lastcnt
}
}
console.log("ckcnt = ", ckcnt)
if (ckcnt == 9) {
console.log("揃った")
return CK_OK
}
if (ckcnt == 8) {
console.log("あと1つ")
return CK_LAST
}
return CK_NORMAL
}
//テスト用
function testchekbuff() {
const sh = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()
let buff = sh.getRange("A1:I1").getValues()
let tempbuff = [,,,,,,,,,]
tempbuff = buff[0]
console.log(tempbuff)
let ret = checkNum(tempbuff)
console.log(tempbuff)
switch (ret) {
case CK_OK:
console.log(" 揃った")
break
case CK_LAST:
console.log("あと1つ", tempbuff[9])
break
case CK_NORMAL:
console.log(" 通常")
break
case CK_ERROR:
console.log("エラー")
break
}
}
今回は、内部ロジックだけなので外見は、
変更なしです。
testchekbuff関数のbuf の値を変更して
CK_OK,CK_LAST,CK_NORMAL,CK_ERRORが
返却されることを確認してください。
次回は、数独のパネルから9桁ずつ切り出して
行きましょう。
最後までご覧いただきありがとうございます。
つぎはこちら
準備中
コメント