- ベストアンサー
Perlで60進数を作りたい
Perlで月盤の60進数を作って頂きたいんです。 西暦2008年12月=1 西暦2009年1月=2 西暦2009年2月=3 ・・・ 西暦2013年11月=60 アルゴリズムを教えてください。 宜しくお願い致します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
2008年12月が1になって2013年11月が60になるようにすればいいんですか? Perlはやったことないので、考え方だけ書きます。 (質問の意味を間違って解釈していたらすみません) 基準となる年月(2008/12)を用意します。(以下A) 比較対象の年月を用意します。(以下B) それぞれの年, 月をYear, Monthとします。 BのYearからAのYearを引いた値をDYear BのMonthからAのMonthを引いた値をDMonth とします。 DYearは年ですから、月に直すために×12をする必要があります。 また、基準年月の値が0ではなく、1なので+1する必要があります。 DYear * 12 + DMonth + 1 これで値が算出できると思います。 60毎に区切る必要があれば割ったり余りを出してください。 基準年月を2008/12 対象年月を2013/11 として計算してみます。 2013 - 2008 = 5 (DYear) 11 - 12 = -1 (DMonth) 5 * 12 + (-1) + 1 = 60 >Perlで月盤の60進数を作って頂きたいんです。 プログラムの質問で作ってくださいとかありえません。 自分で作りましょう。
その他の回答 (2)
- ssk38
- ベストアンサー率44% (22/49)
60進数 上の桁はあるの?60分で1時間みたいな。 基準は2008/12が1なの?
- kmee
- ベストアンサー率55% (1857/3366)
sub get_getsuban { return ($_[0]*12+$_[1]+12) % 60 + 1 ; } $year = 2008 ; $month = 12 ; printf "%d\n", get_getsuban($year, $month) ; http://okwave.jp/qa/q6601898.html の#2のRubyのプログラムを、ほぼそのままPerlに書き直しただけです。