TGDZcalc by coffeescript (44th)

关于coffeescript
安装之前,要先安装一个node.js.
安装coffeescript: npm install -g coffeescript
卸载: npm uninstall -g coffeescript
今日之最新版: 2.7.0
语法像python,用缩进表示层次, 语法上也争取像Python,具有切片,范围,推导式,字符串插值#{变量名}等特点,比js优雅. 注释也是前面加 #.
对中文字串的支持也很完美.

它是翻译成javascript来运行的.翻译之后再解释执行.
直接运行coffee脚本:coffee aaa.coffee
coffee脚本翻译成js文件: coffee -c aaa.coffee
js文件直接执行 node aaa.js
一个有意思的小语言.

点击查看coffeescript代码
#coffee script 会编译到javascript使用.
#采用缩进表达层次,类似Python的精简,切片/范围都好用,可用JS的库,中文支持好,有意思

#函数
CalcBaseYear=(y) ->
  b=0
  if y>0
    b=4
  else
    b=-57
  while b>y
    b -=60
  while b+60<=y
    b +=60
  return b

#函数  
YearToTGDZ=(y)->
  tgArr=["甲","乙","丙","丁","戊","已","庚","辛","壬","癸"]
  dzArr=["子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥"]
  if y==0
    return ""
  tmpY=y
  if tmpY>0
    tmpY -=4
  else
    tmpY -=3
  while tmpY<0
    tmpY +=60
  ti=tmpY % 10
  di=tmpY % 12    
  tg=tgArr[ti]
  dz=dzArr[di]
  return "#{tg}#{dz}"

#函数
TGDZtoYear=(tgdz,baseyear)->
  if tgdz.length==0
    return 0
  tg=tgdz.substr(0,1)
  dz=tgdz.substr(1,2)
  strTG="甲乙丙丁戊已庚辛壬癸";
  strDZ="子丑寅卯辰巳午未申酉戌亥";
  ti=strTG.indexOf(tg)
  di=strDZ.indexOf(dz)
  m=0
  if ti>=di
    m=ti-di
  else
    m=12+ti-di
  return baseyear+m*5+ti

#函数
Test=(x)->
  baseYear=CalcBaseYear(x)
  tgdz=YearToTGDZ(x)
  x2=TGDZtoYear(tgdz,baseYear)
  console.log "年份:#{x}, 干支记年:#{tgdz}, 甲子年:#{baseYear},复算为: #{x2}\n"  #会自动换行,亦可不加\n.

#调用
years=[-361,1900,1924,1937,1976,2026]
Test(y) for y in years

当然,无图无真相,也少不了运行结果展示.
Coffeescript运行效果

posted @ 2026-03-03 22:29  dingxianghuan  阅读(2)  评论(0)    收藏  举报