forked from dylansun/leetcode-cn-scala
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathNo874.scala
54 lines (51 loc) · 1.35 KB
/
No874.scala
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
/**
* Created by lilisun on 1/12/19.
*/
object No874 {
def robotSim(commands: Array[Int], obstacles: Array[Array[Int]]): Int = {
val dx = Array(0, 1, 0, -1)
val dy = Array(1, 0,-1, 0)
var x = 0; var y =0; var di = 0; var ans = 0
val obst = scala.collection.mutable.Set[(Int, Int)]()
for(i <- 0 to obstacles.length -1 ) obst.add((obstacles(i)(0), obstacles(i)(1)))
for(cmd <- commands){
cmd match {
case -1 => di = ((di + 1) % 4)
case -2 => di = ((di - 1 + 4) % 4)
case _ => {
println(cmd)
for(step <- 0 to cmd - 1){
val next = ((x + dx(di), y + dy(di)))
println(obst.contains(next))
if( !obst.contains((x + dx(di), y + dy(di)))){
x = x + dx(di)
y = y + dy(di)
ans = ans max (x*x+y*y)
}
}
}
}
}
return ans
}
def main(args: Array[String]): Unit = {
val commands = Array(-2,8,3,7,-1)
val obstacles = Array(
Array(-4,-1),
Array(1,-1),
Array(1,4),
Array(5,0),
Array(4,5),
Array(-2,-1),
Array(2,-5),
Array(5,1),
Array(-3,-1),Array(5,-3))
val dx = Array(0, 1, 0, -1)
val dy = Array(1, 0,-1, 0)
println(dx(1))
var di = 0
di = (di - 5) % 4
println(di)
robotSim(commands, obstacles)
}
}