結果
| 問題 | No.228 ゆきこちゃんの 15 パズル |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2015-10-04 22:41:27 |
| 言語 | Scala(Beta) (3.6.2) |
| 結果 |
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)
}
}