読者です 読者をやめる 読者になる 読者になる

( ꒪⌓꒪) ゆるよろ日記

( ゚∀゚)o彡°オパーイ!オパーイ! ( ;゚皿゚)ノシΣ フィンギィィーーッ!!!

恵方を算出するScalaライブラリ

もう誰得よ?って感じですが作りました。

恵方って、4パターンしか無いんですね。

// http://ja.wikipedia.org/wiki/恵方#.E6.81.B5.E6.96.B9
object 恵方{

  import java.util.{Date,Calendar}

  def 今年の恵方 = この年の恵方は_?( Calendar.getInstance )
  
  def この年の恵方は_? ( 年:Calendar ):恵方 =  年.get( Calendar.YEAR ) % 5 match {
      case 0 => 恵方("庚の方","申と酉の中間","255°","西微南やや左","西南西やや右")
      case 1 => 恵方("丙の方","巳と午の中間","165°","南微東やや左","南南東やや右")
      case 2 => 恵方("壬の方","亥と子の中間","345°","北微西やや左","北北西やや右")
      case 3 => 恵方("丙の方","巳と午の中間","165°","南微東やや左","南南東やや右")
      case 4 => 恵方("甲の方","寅と卯の中間","75°","東微北やや左","東北東やや右")
  } 
  
  def この年の恵方は_? ( 年:Date ):恵方 = {
    val カレンダー = Calendar.getInstance
    カレンダー.setTime( 年 )
    この年の恵方は_? (  カレンダー )
  }
  
  case class 恵方(正確に:String, 十二支:String, 方位角:String, 方位32:String, 方位16:String )
}


実行結果:

scala> 恵方.今年の恵方
res0: 恵方.恵方 = 恵方(庚の方,申と酉の中間,255°,西微南やや左,西南西やや右)

scala> import java.util.Calendar
import java.util.Calendar

scala> val c = Calendar.getInstance
c: java.util.Calendar = java.util.GregorianCalendar[time=1265340075314,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Tokyo",offset=32400000,dstSavings=0,useDaylight=false,transitions=10,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2010,MONTH=1,WEEK_OF_YEAR=6,WEEK_OF_MONTH=1,DAY_OF_MONTH=5,DAY_OF_YEAR=36,DAY_OF_WEEK=...
scala> c.add( Calendar.YEAR , 1 )

scala> 恵方.この年の恵方は_?( c )
res2: 恵方.恵方 = 恵方(丙の方,巳と午の中間,165°,南微東やや左,南南東やや右)


来年の恵方は、「南南東やや右」ですよ!!