Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
22
Task/Box-the-compass/Scala/box-the-compass.scala
Normal file
22
Task/Box-the-compass/Scala/box-the-compass.scala
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
object BoxingTheCompass extends App {
|
||||
val cardinal = List("north", "east", "south", "west")
|
||||
val pointDesc = List("1", "1 by 2", "1-C", "C by 1", "C", "C by 2", "2-C", "2 by 1")
|
||||
|
||||
val pointDeg: Int => Double = i => {
|
||||
val fswitch: Int => Int = i => i match {case 1 => 1; case 2 => -1; case _ => 0}
|
||||
i*11.25+fswitch(i%3)*5.62
|
||||
}
|
||||
|
||||
val deg2ind: Double => Int = deg => (deg*32/360+.5).toInt%32+1
|
||||
|
||||
val pointName: Int => String = ind => {
|
||||
val i = ind - 1
|
||||
val str1 = cardinal(i%32/8)
|
||||
val str2 = cardinal((i%32/8+1)%4)
|
||||
val strC = if ((str1 == "north") || (str1 == "south")) str1+str2 else str2+str1
|
||||
pointDesc(i%32%8).replace("1", str1).replace("2", str2).replace("C", strC).capitalize
|
||||
}
|
||||
|
||||
(0 to 32).map(i=>Triple(pointDeg(i),deg2ind(pointDeg(i)),pointName(deg2ind(pointDeg(i)))))
|
||||
.map{t=>(printf("%s\t%18s\t%s°\n",t._2,t._3,t._1))}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue