Data update
This commit is contained in:
parent
ed705008a8
commit
0df55f9f24
2196 changed files with 32999 additions and 3075 deletions
40
Task/Doomsday-rule/Scala/doomsday-rule.scala
Normal file
40
Task/Doomsday-rule/Scala/doomsday-rule.scala
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
object Doom extends App {
|
||||
val dates = Array(
|
||||
new Date(1800, 1, 6),
|
||||
new Date(1875, 3, 29),
|
||||
new Date(1915, 12, 7),
|
||||
new Date(1970, 12, 23),
|
||||
new Date(2043, 5, 14),
|
||||
new Date(2077, 2, 12),
|
||||
new Date(2101, 4, 2)
|
||||
)
|
||||
|
||||
dates.foreach(d => println(s"${d.format}: ${d.weekday}"))
|
||||
}
|
||||
|
||||
class Date(val year: Int, val month: Int, val day: Int) {
|
||||
import Date._
|
||||
|
||||
def isLeapYear: Boolean = year % 4 == 0 && (year % 100 != 0 || year % 400 == 0)
|
||||
|
||||
def format: String = f"$month%02d/$day%02d/$year%04d"
|
||||
|
||||
def weekday: String = {
|
||||
val c = year / 100
|
||||
val r = year % 100
|
||||
val s = r / 12
|
||||
val t = r % 12
|
||||
|
||||
val cAnchor = (5 * (c % 4) + 2) % 7
|
||||
val doom = (s + t + t / 4 + cAnchor) % 7
|
||||
val anchor = if (isLeapYear) leapdoom(month - 1) else normdoom(month - 1)
|
||||
|
||||
weekdays((doom + day - anchor + 7) % 7)
|
||||
}
|
||||
}
|
||||
|
||||
object Date {
|
||||
private val leapdoom = Array(4, 1, 7, 4, 2, 6, 4, 1, 5, 3, 7, 5)
|
||||
private val normdoom = Array(3, 7, 7, 4, 2, 6, 4, 1, 5, 3, 7, 5)
|
||||
val weekdays = Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday")
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue