結果

問題 No.55 正方形を描くだけの簡単なお仕事です。
ユーザー noriocnorioc
提出日時 2015-11-13 07:01:28
言語 Scala(Beta)
(3.4.0)
結果
CE  
(最新)
AC  
(最初)
実行時間 -
コード長 1,030 bytes
コンパイル時間 4,874 ms
コンパイル使用メモリ 226,692 KB
最終ジャッジ日時 2024-04-27 02:15:24
合計ジャッジ時間 5,313 ms
ジャッジサーバーID
(参考情報)
judge5 / judge4
このコードへのチャレンジ
(要ログイン)
コンパイルエラー時のメッセージ・ソースコードは、提出者また管理者しか表示できないようにしております。(リジャッジ後のコンパイルエラーは公開されます)
ただし、clay言語の場合は開発者のデバッグのため、公開されます。

コンパイルメッセージ
-- [E040] Syntax Error: Main.scala:14:35 ---------------------------------------
14 |  def calc(a: Vec, b: Vec, c: Vec) {
   |                                   ^
   |                                   '=' expected, but '{' found
-- [E040] Syntax Error: Main.scala:34:32 ---------------------------------------
34 |  def main(args: Array[String]) {
   |                                ^
   |                                '=' expected, but '{' found
2 errors found

ソースコード

diff #

import scala.math._

object Main {
  class Vec(val x: Int, val y: Int) {
    def mag(): Double = sqrt(magSq())
    def magSq(): Int = x * x + y * y
    def dot(o: Vec): Int = x * o.x + y * o.y
    def cross(o: Vec): Int = x * o.y - y * o.x

    def +(o: Vec): Vec = new Vec(x + o.x, y + o.y)
    def -(o: Vec): Vec = new Vec(x - o.x, y - o.y)
  }

  def calc(a: Vec, b: Vec, c: Vec) {
    Array(a, b, c).permutations.foreach { case Array(a, b, c) =>
      val ab = b - a
      val ac = c - a

      // ベクトル ab, ac の内積がゼロなら直交している
      if (ab.dot(ac) == 0 && ab.magSq == ac.magSq) {
        val ad = ab + ac
        val d  = ad + a
        val cd = d - c
        if (ac.magSq == cd.magSq) {
          println(s"${d.x} ${d.y}")
          return
        }
      }
    }

    println(-1) // not found
  }

  def main(args: Array[String]) {
    val sc = new java.util.Scanner(System.in)
    val x1, y1, x2, y2, x3, y3 = sc.nextInt

    calc(new Vec(x1, y1), new Vec(x2, y2), new Vec(x3, y3))
  }
}

0