diff --git a/cp-demo/executing-specs/Calendar.scala b/cp-demo/executing-specs/Calendar.scala index 857021e81eab6b2d938f19ebabf2ce90a9cd484d..061123bbaf4fb8f54b6c4a1a3d98b62b696f6018 100644 --- a/cp-demo/executing-specs/Calendar.scala +++ b/cp-demo/executing-specs/Calendar.scala @@ -1,9 +1,18 @@ import cp.Definitions._ import cp.Terms._ -object Calendar extends Application { +object Calendar extends App { - /* maybe more readable with leapDaysUntil's + final val totalDays = 10593 + final val originYear = 1980 + + val (year, day) = ((year : Int, day : Int) => totalDays == (year - originYear) * 365 + (year - 1) / 4 - (year - 1) / 100 + (year - 1) / 400 - + ((originYear - 1) / 4 - (originYear - 1) / 100 + (originYear - 1) / 400) + day && + day > 0 && day <= 366).solve + + println("Year : %d, day : %d" format (year, day)) + + /* alternate version with intermediate "leapDaysUntil" variables def yearAndDay(totalDays : Int, originYear : Int) : (Int, Int) = { val (y, d, _, _) = ((year : Int, day : Int, lduYear : Int, lduOrigin : Int) => totalDays == (year - originYear) * 365 + lduYear - lduOrigin + day && @@ -13,17 +22,7 @@ object Calendar extends Application { (y, d) } - - println(yearAndDay(10593, 1980)) */ - final val totalDays = 10593 - final val originYear = 1980 - - val (year, day) = ((year : Int, day : Int) => totalDays == (year - originYear) * 365 + (year - 1) / 4 - (year - 1) / 100 + (year - 1) / 400 - - ((originYear - 1) / 4 - (originYear - 1) / 100 + (originYear - 1) / 400) + day && - day > 0 && day <= 366).solve - - println("Year : %d, day : %d" format (year, day)) }