結果
問題 | No.228 ゆきこちゃんの 15 パズル |
ユーザー | くわい |
提出日時 | 2015-10-04 22:41:27 |
言語 | Scala(Beta) (3.4.0) |
結果 |
CE
(最新)
AC
(最初)
|
実行時間 | - |
コード長 | 1,652 bytes |
コンパイル時間 | 6,166 ms |
コンパイル使用メモリ | 237,980 KB |
最終ジャッジ日時 | 2024-11-14 19:18:14 |
合計ジャッジ時間 | 6,569 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
コンパイルエラー時のメッセージ・ソースコードは、提出者また管理者しか表示できないようにしております。(リジャッジ後のコンパイルエラーは公開されます)
ただし、clay言語の場合は開発者のデバッグのため、公開されます。
ただし、clay言語の場合は開発者のデバッグのため、公開されます。
コンパイルメッセージ
[31m[31m-- [E040] Syntax Error: Main.scala:62:32 ---------------------------------------[0m[0m [31m62 |[0m [33mdef[0m [36mmain[0m([36margs[0m: [35mArray[0m[[35mString[0m]) { [31m[31m |[0m ^[0m [31m |[0m '=' expected, but '{' found 1 error found
ソースコード
import java.util.Scanner import scala.collection.mutable.ArrayBuffer object Problem228 { def proc(board: ArrayBuffer[ArrayBuffer[Int]]): String = { val answer = ArrayBuffer( ArrayBuffer(1, 2, 3, 4), ArrayBuffer(5, 6, 7, 8), ArrayBuffer(9, 10, 11, 12), ArrayBuffer(13, 14, 15, 0) ) val directions = List((-1, 0), (1, 0), (0, -1), (0, 1)) var fromRow = board.indexWhere(_.contains(0)) var fromCol = board(fromRow).indexOf(0) var toRow = -1 var toCol = -1 while (board != answer) { var canMoveToSomePlace = false for (direction <- directions) { toRow = fromRow + direction._1 toCol = fromCol + direction._2 if (moveIfCanMove(board, fromRow, fromCol, toRow, toCol)) { fromRow = toRow fromCol = toCol canMoveToSomePlace = true } } if (!canMoveToSomePlace) { return "No" } } "Yes" } def moveIfCanMove(board: ArrayBuffer[ArrayBuffer[Int]], fromRow: Int, fromCol: Int, toRow: Int, toCol: Int): Boolean = { def inBoard(row: Int, col: Int): Boolean = { row >= 0 && row < 4 && col >= 0 && col < 4 } val canMove = inBoard(fromRow, fromCol) && inBoard(toRow, toCol) && board(toRow)(toCol) == fromRow * 4 + fromCol + 1 if(canMove){ val swap = board(fromRow)(fromCol) board(fromRow)(fromCol) = board(toRow)(toCol) board(toRow)(toCol) = swap } canMove } def main(args: Array[String]) { val sc = new Scanner(System.in) val board = ArrayBuffer.fill(4, 4)(sc.nextInt) val result = proc(board) println(result) } }