കലിദിനസംഖ്യയെപ്പറ്റി ഇതുവരെ എഴുതാന് കഴിഞ്ഞില്ല. താമസിയാതെ എഴുതാം.
ഏതു ദിവസത്തിന്റെയും കലിദിനസംഖ്യ കണ്ടുപിടിക്കാനും, കലിദിനസംഖ്യയില് നിന്നു തീയതി കണ്ടുപിടിക്കാനുമുള്ള ഒരു ഓണ്ലൈന് പ്രോഗ്രാം ഇവിടെ ഇട്ടിട്ടുണ്ടു്. ഇംഗ്ലീഷില് ഒരു ചെറിയ കുറിപ്പും ഇട്ടിട്ടുണ്ടു്. ദയവായി പരീക്ഷിച്ചുനോക്കുക. അഭിപ്രായങ്ങള് അറിയിക്കുക.
Santhosh | 21-Apr-06 at 11:15 pm | Permalink
ഡീഫോള്ട്ട് വാല്യു ആയ 2006 ഏപ്രില് 21 (ഇന്ന്) ശനിയാഴ്ചയാണെന്നാണല്ലോ കാണിക്കുന്നത്.
Umesh | 21-Apr-06 at 11:20 pm | Permalink
ഞാന് നോക്കിയ മൂന്നു കമ്പ്യൂട്ടറിലും Friday എന്നാണല്ലോ. കലിദിനസംഖ്യ 1865381 തന്നെയല്ലേ?
Umesh | 21-Apr-06 at 11:23 pm | Permalink
പിശകു കണ്ടുപിടിച്ചു സന്തോഷേ. ഉടനേ ശരിയാക്കാം. PHP-യില് ഞാന് ഇപ്പോഴും ഒരു ശിശുവാണേ…
നന്ദി.
Umesh | 21-Apr-06 at 11:27 pm | Permalink
ശരിയാക്കി. ഇനി നോക്കൂ.
ഒരിക്കല്ക്കൂടി നന്ദി, സന്തോഷ്.
– ഉമേഷ്
Santhosh | 21-Apr-06 at 11:32 pm | Permalink
ഇപ്പോള് ശരിയായെന്ന് തോന്നുന്നു. ഒരു കാര്യം കൂടി: കലി ദിവസത്തില് നിന്നും ഗ്രിഗോരിയനിലേക്കുള്ള കണ്വേര്ഷ്ന് പോസിറ്റീവ് സംഖ്യകളും നെഗറ്റീവ് സംഖ്യകളും അനുവദിച്ച സ്ഥിതിക്ക് 0 മാത്രമായി ഒഴിവാക്കിയതെന്തേ?
-1 = -3101 January 22 (Thursday)
1 = -3101 January 24 (Saturday)
പക്ഷേ, 0 കൊടുത്താല് ഇന്നത്തെ തീയതി കാണിക്കുന്നു, കള്ളന്.
Umesh | 21-Apr-06 at 11:43 pm | Permalink
നല്ല ടെസ്റ്റിംഗ്, സന്തോഷ്!
ആദ്യം പേജു ലോഡു ചെയ്യുമ്പോള് ഇന്നത്തെ ദിവസത്തിന്റെയും പിന്നെപ്പിന്നെ അവസാനം നോക്കിയ ദിവസത്തിന്റെയും തീയതികള് ഡീഫോള്ട്ടായി കൊടുക്കണമെന്നു വിചാരിച്ചിരുന്നു. PHP-യില് പല പണി നോക്കിയിട്ടും ആദ്യത്തെ തവണ മാത്രം ലോഡു ചെയ്യുന്ന കോഡ് എങ്ങനെ കൊടുക്കും എന്നു മനസ്സിലായില്ല. അതുകൊണ്ടു്, കലിദിനസംഖ്യ empty ആയാല് ഇന്നത്തെ തീയതി കാണിക്കാന് പറഞ്ഞു. ആദ്യം അതു് empty ആയിരിക്കുമല്ലോ.
PHP-യില് 0 ഒരു empty value ആണെന്നു് ആരറിഞ്ഞു?
Perl അറിയാവുന്നതുകൊണ്ടു് ഒരു മാര്ഗ്ഗവും കിട്ടി. 0 എന്നതിനു പകരം 00 എന്നോ “0” എന്നോ ‘0’ എന്നോ കൊടുത്തുനോക്കൂ.
Umesh | 21-Apr-06 at 11:44 pm | Permalink
ഇതു നെഗറ്റീവ് സംഖ്യകള്ക്കു ശരിയാകുമോ എന്നു ഞാന് ടെസ്റ്റു ചെയ്തിരുന്നില്ല. ആകും എന്നു കാണിച്ചു തന്നതിനു നന്ദി, സന്തോഷ്.
Santhosh | 21-Apr-06 at 11:53 pm | Permalink
ഒന്നു കൂടി: (മാനേജര് വീട്ടില് പോയി:))
1999 Dec 31 = 1863078 (Friday)
186308 = 2000 Jan 0 (Friday)
മാഷ് എന്നെ പരീക്ഷിക്കുകയാണോ?
Santhosh | 21-Apr-06 at 11:58 pm | Permalink
ചെറിയ തിരുത്ത്:
1999 Dec 31 = 1863078 (Friday)
1863078 = 2000 Jan 0 (Friday)
ഈ പ്രശ്നം എല്ലാ Dec 31-നുമുണ്ട്.
Umesh | 22-Apr-06 at 12:00 am | Permalink
നോക്കട്ടേ.
ചുമ്മാതല്ല എന്റെ കമ്പനിയുടെ സ്റ്റോക്ക് വില കുത്തനെ കീഴോട്ടു പോകുന്നതു്. എന്നെപ്പോലുള്ളവരല്ലേ പ്രോഗ്രാം എഴുതുന്നതു് 🙁
Santhosh | 22-Apr-06 at 12:03 am | Permalink
അതു തന്നെയാ എനിക്കും പറയാനുള്ളത്. ഞാന് ടെസ്റ്റിംഗിലേയ്ക്ക് മാറിയാലോ എന്നാലോചിക്കുകയാണിപ്പോള് 🙂
Umesh | 22-Apr-06 at 12:08 am | Permalink
അധിവര്ഷത്തിലാണെങ്കില് ഇതിനെക്കാള് ഭീകരപ്രശ്നങ്ങളുണ്ടു്.
1864903 = 2004 ഡിസംബര് 29
1864904 = 2004 ജനുവരി 0
1864905 = 2005 ജനുവരി 0
ശ്രീജിത്തേ, എനിക്കിത്തിരി സ്ഥലം തരുമോ…..
Santhosh | 22-Apr-06 at 12:21 am | Permalink
ഇനിയും വേണോ?
1 = -3101 January 24 (Saturday)
1.9 = -3101 January 24 (Saturday)
1.99 = -3101 January 24 (Saturday)
…
…
1.9999999999 = -3101 January 25 (Saturday)
[1 followed by 10 9s. See that the day does not change]
Shaniyan | 22-Apr-06 at 1:47 am | Permalink
ഉമേഷ്ജീ,
floor ഫങ്ക്ഷന് ഉണ്ടെങ്കില്, ഉള്ളില് വരുന്ന സംഖ്യകളെ അങ്ങ് ചവിട്ടിത്താഴ്ത്തൂ..
അതുപോലെ, ഡേറ്റ് 0 വന്നാല് ഒരു +=1 കൂടി കൊടുത്തു നോക്കൂ..
അധിവര്ഷത്തിനും ഒരു എക്സപ്ഷന് കണ്ടീഷന് ഇട്ടാല് ശരിയാവില്ലേ?
Umesh | 22-Apr-06 at 1:50 am | Permalink
ഹാവൂ, ശരിയാക്കിയെന്നു തോന്നുന്നു.
വേറേ ആണുങ്ങള് ജൂലിയന് ഡേ നമ്പറില് നിന്നു ഡേറ്റു കണ്ടുപിടിക്കാന് അല്ഗരിതം എഴുതിയിട്ടുണ്ടു്. കലിയെ ജൂലിയനാക്കി അവനെ ഉപയോഗിച്ചാല് തെറ്റാതെ ചെയ്യാമായിരുന്നു. അതു ചെയ്യാതെ സ്വന്തം “സരള”രീതി ഉണ്ടാക്കിയതാണു വടിയായതു്.
“സ്വന്തം രീതി“ തന്നെ ശരിയാക്കി. സന്തോഷ് ഒന്നു കൂടി നോക്കൂ. പ്രശ്നങ്ങളെല്ലാം തീര്ന്നിട്ടു വേണം എന്റെ അല്ഗൊരിതത്തിനെ ബ്ലോഗില് പ്രസിദ്ധീകരിക്കാന്.
അവസാനത്തെ പ്രശ്നം. കൊടുക്കുന്ന സംഖ്യയെ പൂര്ണ്ണസംഖ്യയാക്കിയിട്ടേ മറ്റു പരിപാടിയുള്ളൂ. അങ്ങനെ കളിക്കണ്ടാ.
ഇതുപോലെ ടെസ്റ്റു ചെയ്യാന് ഒരാളെ കിട്ടിയിരുന്നെങ്കില് എന്റെ കമ്പനി ഗുണം പിടിച്ചേനേ!
Umesh | 22-Apr-06 at 2:00 am | Permalink
അതത്രയും സിമ്പിളായിരുന്നില്ല ശനിയാ. സന്തോഷു കേറി നെഗറ്റീവു സംഖ്യയും ഭിന്നസംഖ്യയും കാച്ചുമെന്നു ഞാനറിഞ്ഞോ?
floor പോരാ. നെഗറ്റീവു സംഖ്യകള് വരുമ്പോള്. (int) എന്നു കാസ്റ്റു ചെയ്തു. Floating point കൊടുത്താല് അതിന്റെ integer part മാത്രമേ എടുക്കൂ എന്നു ഡൊക്യുമെന്റ് ചെയ്താല് പോരേ? 🙂
പൂജ്യത്തിന്റെ വില കണ്ടുപിടിക്കുന്ന പ്രശ്നമായിരുന്നില്ല. ഒരു 0 കൊടുക്കുന്നതും ആദ്യം ഒന്നും കൊടുക്കാതിരിക്കുന്നതും തിരിച്ചറിയാന് പറ്റാത്തതാണു്. +=1 കൊടുത്താല് ഒരു ദിവസം മുന്നോട്ടു പോകില്ലേ?
അധിവര്ഷത്തിനു മാത്രമല്ല പ്രശ്നം. സാധാരണ വര്ഷത്തിലെ ഡിസംബര് 31-നും അധിവര്ഷത്തിലെ 30-നും 31-നും പ്രശ്നമുണ്ടായിരുന്നു. 365 കൊണ്ടു ഹരിച്ചു ഹരണഫലവും ശിഷ്ടവുമെടുക്കുമ്പോള് 365-)മത്തെയും 366-)മത്തെയും ദിവസങ്ങള്ക്കു പ്രശ്നം പറ്റി. അതാണു പറ്റിയതു്.
എല്ലാം ശരിയായെന്നു തോന്നുന്നു. ദൈവത്തിനറിയാം 🙂
രാജ്നായര് | 22-Apr-06 at 6:37 am | Permalink
ഹാവൂ! ഞാന് പിറന്നിട്ടു 9111 ദിവസങ്ങള് കടന്നുപോയിരിക്കുന്നു, കലിദിനം പിച്ച്പി എന്റെ വയസ്സിനിട്ടു ബഗ്ഗൊന്നും പണിഞ്ഞില്ലെന്നു വിശ്വസിക്കട്ടെ 😉
Santhosh | 22-Apr-06 at 9:06 am | Permalink
അത്രയ്ക്കായോ!
(ഞാനീപ്പറയുന്നതൊന്നും ഫിക്സ് ചെയ്യപ്പെടാന് യോഗ്യമായ ബഗ്ഗുകളല്ല. എന്നാലും:))
-4 = -3101 January 19 (Monday)
-5 = -3101 January 18 (Sunday)
-5-ല് താഴെയുള്ള ഒരു സംഖ്യയ്ക്കും തീയതി വരുന്നില്ല.
ഉദാ:
-6 = -3101 January 17 ()
…
-100 = -3102 October 15 ()
Umesh | 22-Apr-06 at 12:44 pm | Permalink
ശരിയായിരിക്കാം പെരിങ്ങോടാ. 27-നും 28-നും ഇടയ്ക്കു വയസ്സുള്ളപ്പോഴാണു 10000 ദിവസം തികയുന്നതു്. അതു് ആഘോഷിക്കാന് മറക്കേണ്ട.
ഞാന് എന്റെ 10000-ാം “ജന്മദിനം” ആഘോഷിച്ചിരുന്നു. 1993-ലെ ദുഃഖവെള്ളിയാഴ്ചയായിരുന്നു അതു്.
അതുപോലെ ഞങ്ങളുടെ 100-ാമത്തെയും 1000-ാമത്തെയും “വിവാഹദിനങ്ങള്” (10000-ാം ദിനവും ഓര്ക്കുമെന്നു വിശ്വസിക്കുന്നു), എന്റെ മകന്റെ 100-ാമത്തെയും 1000-ാമത്തെയും “ജന്മദിനങ്ങള്” എന്നിവയും ആഘോഷിച്ചിരുന്നു. സുഹൃത്തുകളുടെയൊക്കെ 10000 തികയുന്ന ദിവസം ഗ്രീറ്റിംഗ് കാര്ഡ് അയയ്ക്കുമായിരുന്നു. ഓരോ വട്ടു്, അല്ലാതെന്തു പറയാന്!
അങ്ങനെ പെരിങ്ങോടരുടെ ജനനത്തീയതി കിട്ടി. ഗ്രഹങ്ങളൊക്കെ എവിടെയാണെന്നു നോക്കട്ടേ. അപ്പോ ഇനി കല്യാണത്തിനു് ആലോചന തുടങ്ങുകയല്ലേ?
Umesh | 22-Apr-06 at 12:52 pm | Permalink
സന്തോഷ്,
function getWeekDayFromKali($kali)
{
return ($kali + 5) % 7;
}
എന്നാണു കോഡ്. -5 നു താഴോട്ടു് PHP-യുടെ % ഓപ്പറേറ്റര് വര്ക്കു ചെയ്യില്ല എന്നു തോന്നുന്നു. (a % b യില് aയുടെ കുറഞ്ഞ വില -(b-1) ആവണം.) (എവിടെ നോക്കിയാലാണാവോ ഇതറിയുക! പുസ്തകമില്ലാതെ ഇന്റര്നെറ്റു മാത്രം നോക്കി പ്രോഗ്രം ചെയ്താല് ഇങ്ങനെയിരിക്കും!)
ഞാനേതായാലും നെഗറ്റീവ് കലിയെ ഇന്വാലിഡ് ആക്കാന് പോകുകയാണു്. (ഈ ബുദ്ധി എന്തേ നേരത്തെ തോന്നിയില്ല 🙂 )
Umesh | 22-Apr-06 at 1:18 pm | Permalink
ഇനി വല്ലതും ഉണ്ടോ എന്നു നോക്കൂ സന്തോഷേ.
Umesh | 22-Apr-06 at 1:22 pm | Permalink
PHP-യില് നെഗറ്റീവ് സംഖ്യകളുടെ MOD കാണാന് പറ്റില്ലെന്നു തോന്നുന്നു. ഏതായാലും ഞാനതു് ഒതുക്കി. നമ്മള് സോഫ്റ്റ്വെയര് എഞ്ചിനീയര്മാര്ക്കു് ഇതു വല്ലതും ഒരു പ്രശ്നമാണോ? ചെയ്യാന് പറ്റാത്തതു് ഒരു ഫീച്ചറായി ഡോക്യുമെന്റ് ചെയ്യുക. അത്രതന്നെ, അല്ലേ?
എങ്ങനെയുണ്ടു് എന്റെ പ്രോഗ്രാമിംഗ്? മൈക്രോസോാഫ്റ്റില് ഒരു ജോലിക്കപേക്ഷിക്കാന് സ്കോപ്പുണ്ടോ? 🙂
Santhosh | 23-Apr-06 at 4:52 am | Permalink
ഒരു സംശയം: 1 ജനുവരി 1 നു മുമ്പ് ഏത് ദിവസമാണ്? 0 ഡിസംബര് 31 എന്ന് ഈ പ്രോഗ്രാം പറയുന്നു. ഇത് ശരിയാണോ എന്ന് ഒന്ന് വ്യക്തമാക്കാമോ?
1132959 = 0 December 31 (Sunday)
1132960 = 1 January 1 (Monday)
Umesh | 23-Apr-06 at 6:01 am | Permalink
സന്തോഷ്,
AD ജനുവരി 1 ന്റെ തലേ ദിവസം BC ഡിസംബര് 31 ആണു്. ഈ കാലഗണനത്തില് 0 എന്നൊരു വര്ഷമില്ല.
എങ്കിലും, ജ്യോതിശ്ശാസ്ത്രജ്ഞര് നെഗറ്റീവ് സംഖ്യകളെക്കൊണ്ടു വര്ഷങ്ങളെ സൂചിപ്പിക്കുമ്പോള് കണക്കുകൂട്ടലില് പ്രശ്നമുണ്ടാകാതിരിക്കാന് മറ്റൊരു രീതിയാണുപയോഗിക്കുന്നതു്. അതനുസരിച്ചു്, BC 1-നെ 0 എന്നു വിളിക്കുന്നു. BC 2-നെ -1, BC 3 യെ -2 എന്നിങ്ങനെ. ഇതാണു് ഞാനും ഉപയോഗിച്ചതു്.
കലിവര്ഷം തുടങ്ങിയതു് 3102 BC-യിലാണു്. അതായതു് -3101ല്. തുടങ്ങിയ തീയതി ഗ്രിഗോറിയന് കലണ്ടറില് ജനുവരി 23 ആണു്. ജൂലിയന് കലണ്ടറില് ഫെബ്രുവരി 18-ഉം.
ജൂലിയന് കലണ്ടറില് എല്ലാ നാലാമത്തെ വര്ഷവും അധിവര്ഷമായിരുന്നു. ഗ്രിഗോറിയന് കലണ്ടറില് 400 കൊല്ലം കൂടുമ്പോള് 3 ദിവസങ്ങളെ (400 കൊണ്ടു നിശ്ശേഷം ഹരിക്കാന് പറ്റാത്ത നൂറ്റാണ്ടുകളെ) ഒഴിവാക്കി. പതിനാറാം നൂറ്റാണ്ടു മുതല് ഇരുപതാം നൂറ്റാണ്ടിന്റെ ആദ്യം വരെ ക്രമേണയാണു് ജൂലിയനില് നിന്നു ഗ്രിഗോറിയനിലേക്കു ലോകം നീങ്ങിയതു്. അവ തമ്മിലുള്ള വ്യത്യാസം കൊണ്ടാണു് ഇത്രയും ദിവസങ്ങളുടെ വ്യത്യാസം.
ജൂലിയന്, ഗ്രിഗോറിയന് കലണ്ടറുകളെപ്പറ്റി വിശദമായി എഴുതണമെന്നുണ്ടായിരുന്നു. പക്ഷേ, ഇന്റര്നെറ്റില് ഇഷ്ടം പോലെ വിവരം ഉള്ളതുകൊണ്ടു വേണ്ടെന്നു വെച്ചു. ഉദാഹരണമായി, wikipediaയിലെ ഈ പേജുകള് നോക്കൂ.
http://en.wikipedia.org/wiki/Julian_calendar
http://en.wikipedia.org/wiki/Gregorian_calendar
0 എന്ന വര്ഷത്തെപ്പറ്റിയും വിക്കിപീഡിയയിലുണ്ടു്.
http://en.wikipedia.org/wiki/Year_zero
ഇനി സംശയമുണ്ടെങ്കില് ചോദിക്കൂ.
രാജ് | 24-Apr-06 at 9:31 am | Permalink
ദിവസങ്ങള് എണ്ണിപ്പറഞ്ഞതിലൊരു catch ഉണ്ടേ, അതുകൊണ്ടു കല്യാണാലോചനയ്ക്കാണെങ്കില് ഒന്നുകൂടി ആലോചിച്ചു പ്രൊസീഡ് ചെയ്താല് മതി 😉
Umesh | 24-Apr-06 at 2:10 pm | Permalink
പെരിങ്ങോടരേ,
2006 ഏപ്രില് 22-ന്റെ കലിദിനസംഖ്യ 1865382. അതില്നിന്നു 9111 കുറഞ്ഞാല് 1856271. അതായതു് 1981 മെയ് 12.
ജന്മദിനം ഒരു മെയ് 11-നാണെന്നു് ദാ ഇവിടെ പറഞ്ഞിട്ടുണ്ടു്. അപ്പോള് ക്യാച്ച് എന്നു പറയുന്നതു് ഒരു ദിവസത്തെ വ്യത്യാസമാണോ?
രാജ് | 24-Apr-06 at 7:23 pm | Permalink
ഉമേഷെ നല്ല ഓര്മ്മശക്തി (എനിക്കു മെമ്മറി എക്സര്സൈസുകള് ചെയ്യേണ്ട അവസ്ഥയായി; തലേന്നാള് എന്തൊക്കെ ചെയ്തുവെന്നു ഓര്ത്തെടുക്കുവാന് തന്നെ പ്രയാസപ്പെടുന്നു, ഒരു ഓര്ഡറിലല്ല ഓര്ക്കുന്നതെങ്കില് ഉദാ: ഇന്നലെ നാലു മണിക്കു എന്തു ചെയ്തു? ഝടുതിയില് ഈ ഓര്ത്തെടുക്കല് അസംഭവ്യം തന്നെ എന്നവസ്ഥ; മൂന്നുമണിക്കു് എന്തു ചെയ്തെന്നോര്ക്കുവാന് കഴിഞ്ഞാല് ഒരു പക്ഷെ നാലിനെ പിടികിട്ടിയേക്കും)
“കടന്നുപോയിരിക്കുന്നു” എന്ന പ്രയോഗമാണു catch ആയി ഉദ്ദേശിച്ചതു് (അന്നത്തെ ദിവസം കൂട്ടിയില്ലെന്നര്ഥം) പഴേ കമന്റിലെ വെളിപ്പെടുത്തലുകള് ഓര്ത്തിരുന്നില്ല.
Umesh | 24-Apr-06 at 7:33 pm | Permalink
എന്തു ചെയ്യാന് പെരിങ്ങോടരേ, ആവശ്യമില്ലാത്ത കാര്യങ്ങള് ഓര്ത്തുവെയ്ക്കുക ഒരു സ്വഭാവമായിപ്പോയി. ആവശ്യമുള്ളവ ഒട്ടില്ല താനും. 🙁
Umesh | 24-Apr-06 at 8:52 pm | Permalink
അപ്പോള് ഞാന് പത്താം ക്ലാസ്സിലെ റിസല്റ്ററിഞ്ഞ ദിവസമാണു പെരിങ്ങോടന് ജനിച്ചതു്, അല്ലേ? ചുമ്മാതല്ല ഇത്ര ബുദ്ധി…. 🙂