Mercurial > hg > Members > nobuyasu > scala
annotate chapter10/Spiral.scala @ 0:b316eec6fa7a draft default tip
add sample files
author | Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 08 Jan 2013 16:41:46 +0900 |
parents | |
children |
rev | line source |
---|---|
0
b316eec6fa7a
add sample files
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
1 import Element.elem |
b316eec6fa7a
add sample files
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
2 |
b316eec6fa7a
add sample files
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
3 object Spiral { |
b316eec6fa7a
add sample files
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
4 val space = elem(" ") |
b316eec6fa7a
add sample files
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
5 val corner = elem("+") |
b316eec6fa7a
add sample files
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
6 def spiral(nEdges: Int, direction: Int): Element = { |
b316eec6fa7a
add sample files
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
7 if (nEdges == 1) |
b316eec6fa7a
add sample files
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
8 elem("+") |
b316eec6fa7a
add sample files
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
9 else { |
b316eec6fa7a
add sample files
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
10 val sp = spiral(nEdges - 1, (direction + 3) % 4) |
b316eec6fa7a
add sample files
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
11 def verticalBar = elem('|', 1, sp.height) |
b316eec6fa7a
add sample files
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
12 def horizontalBar = elem('-', sp.width, 1) |
b316eec6fa7a
add sample files
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
13 if (direction == 0) |
b316eec6fa7a
add sample files
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
14 (corner beside horizontalBar) above (sp beside space) |
b316eec6fa7a
add sample files
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
15 else if (direction == 1) |
b316eec6fa7a
add sample files
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
16 (sp above space) beside (corner above verticalBar) |
b316eec6fa7a
add sample files
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
17 else if (direction == 2) |
b316eec6fa7a
add sample files
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
18 (space beside sp) above (horizontalBar beside corner) |
b316eec6fa7a
add sample files
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
19 else |
b316eec6fa7a
add sample files
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
20 (verticalBar above corner) beside (space above sp) |
b316eec6fa7a
add sample files
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
21 } |
b316eec6fa7a
add sample files
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
22 } |
b316eec6fa7a
add sample files
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
23 def main(args: Array[String]) { |
b316eec6fa7a
add sample files
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
24 val nSides = args(0).toInt |
b316eec6fa7a
add sample files
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
25 println(spiral(nSides, 0)) |
b316eec6fa7a
add sample files
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
26 } |
b316eec6fa7a
add sample files
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
27 } |