###前提・実現したいこと
AOJ(Aizu Online Judge)にて挿入ソートの問題をScalaにて解いています。
以下が問題の詳細となります。
http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ALDS1_1_A&lang=jp
ローカル上では入力例に対して正しい出力ができているように見えるのですが、
AOJにて同じソースを提出するとRunTime Errorとなってしまいます。
詳細なエラーログが出力されないため問題の特定にとても苦しんでいます。
競技プログラミング自体初心者のため、初歩的なエラーかもしれませんが、問題の原因をご教授いただければと思います。
不足している情報などあれば、追加いたします。
よろしくお願いいたします。
###発生している問題・エラーメッセージ
入力例
6 5 2 4 6 1 3
出力例
5 2 4 6 1 3 2 5 4 6 1 3 2 4 5 6 1 3 2 4 5 6 1 3 1 2 4 5 6 3 1 2 3 4 5 6
ローカルで実施した場合、以下のような出力になっています。
$ scalac InsertionSort.scala $ scala InsertionSort 6 5 2 4 6 1 3 2 5 4 6 1 3 2 4 5 6 1 3 2 4 5 6 1 3 1 2 4 5 6 3 1 2 3 4 5 6
###該当のソースコード
scala
1object InsertionSort { 2 def main(args: Array[String]): Unit = { 3 val scanner = new java.util.Scanner(System.in) 4 val size = scanner.nextInt() 5 var arr = Array.empty[Int] 6 7 for(i <- (0 until size)) { 8 arr = arr :+ scanner.next().toInt // 配列の末尾に要素を追加する場合は:+を使う 9 } 10 11 insertionSort(arr,size) 12 13 scanner.close() 14 } 15 16 def insertionSort(a: Array[Int], n: Int) = { 17 var arr = a 18 for(i <- (0 until n)) { 19 var v = a(i) 20 var j = i - 1 21 22 while (j >= 0 && a(j) > v) { 23 arr(j + 1) = arr(j) 24 j -= 1 25 } 26 arr(j+1) = v 27 if(i > 0) { 28 trace(arr, n) 29 } 30 } 31 } 32 33 // 配列をスペース区切りで出力する 34 def trace(a: Array[Int], n: Int): Unit = { 35 for (i <- (0 until n)) { 36 print(a(i)) 37 print(" ") 38 } 39 print("\n") 40 } 41}
###補足情報(言語/FW/ツール等のバージョンなど)
ローカルのScalaのバージョン 2.12.4
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。