サイトアイコン Googleスプレッドシート 完全攻略

【数独を作ろう 4.】GASで9桁のチェックを行う

数独を作ろう一覧

ご訪問ありがとうございます。

Googleシートマスターのひろしです。

前回

【数独を作ろう 3.】GASで値の取得、フォントサイズの設定をする方法
数独を作ろう一覧 ご訪問ありがとうございます。 Googleシートマスターのひろしです。 前回 今回は、とっても価値の高い方法をお伝えします。 これを知ることであなたは、 GASで値を取得することができます。 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桁ずつ切り出して
行きましょう。

 

 

最後までご覧いただきありがとうございます。

 

つぎはこちら

準備中

数独を作ろう一覧

モバイルバージョンを終了