2009-12-01 114 views
2

健身房牆上的時鐘還顯示當天的名稱和月份的一天。今天早上它顯示星期二--23。這個鍾是什麼時候買的?

當天明顯輪換通過7的週期 - 並顯示「星期二」正確。儘管如此,月份的日期可能會循環31次,並且錯誤地顯示「23」 - 今天是12月1日(即不是11月31日)。所以這個錯誤一直在緩慢增加。

假設沒有人曾經重置過時鐘,那麼當這個時鐘被全新買入時,最優雅,快速,最優化的方式是建議一些可能的日期。

(獎金積分用於顯示當時鍾將再次顯示正確的日期/數字組合)。

+3

是它的編程相關的? – mouviciel 2009-12-01 09:41:38

+0

聽起來更像是一個邏輯/智商/數學問題:P – 2009-12-01 09:43:31

+1

這是功課嗎? – Bobby 2009-12-01 09:44:08

回答

1

01-OCT-17是當時鍾將再次顯示正確的日期/數字組合。

+0

我本來可以通過一個程序來做到這一點,但決定使用一個電子表格,左側是1-31列,增加日期列,然後測試以查看日期是否匹配。 – 2009-12-01 09:46:33

+0

倒退2008年9月 – 2009-12-01 09:50:53

+0

事實上時鐘經過30是正確的1 2008年7月2008年9月在這之前它是正確的1 2003年12月至29 2004年2月 – 2009-12-01 09:52:26

0

現在= 12月1日2009年

的過去一個月= 8天(假定31天月)月減23的第一天。

搬回計數非31天一個月...

月,月,月,月,月(X3),月= 8天偏移

所以它是2008年11月之前買的?

我沒有爲它編碼一行,所以如果答案沒有問題,請原諒我。

1

星期幾(即星期二,...等)將始終正確,因此與您的問題無關。

假設非閏年,你可以建立包含在這一個月的天數12行(每月1次),減去31

  • 表揚0
  • 月-3
  • 三月0
  • 四月-1
  • 日0
  • 君-1
  • 七月0
  • 八月0
  • 月-1
  • 十月0
  • 月-1
  • 十二月0

您可以構建所顯示的日期的表,在每月的1日,由在上個月的一天中添加此列表中的相關號碼。如果數字爲負數或等於零,則將數字加上31。

即從09年12月1日(時鐘顯示的日期23)開始,您可以進入1月1日的第一天。 您可以看一下這張表,並找到12月旁邊的數字,它是0. Add 0到23,你知道在1月1日的1時鐘將顯示23。

從09年1月1日,你知道,這將在10年2月1日被顯示的日期爲23

從10年2月1日,你可以計算的價值,爲10年3月1日,它是23 +(-3)= 20

...等

所以,現在,在每個月的開始,你在這個表中獲取的值爲1,你知道,在這個月的日期將是正確的。


如果你不得不包含閏年,你需要第二個表的閏年值或2月例外。


如果您想使用此計算爲以前的日期,從。減去表中的數字,當你獲得了數量超過31,只是31。減去拿到天數。


使用這些表並考慮閏年。 時鐘正確的最後過去日期是08年9月30日(它在08年7月1日到2008年9月30日之間是正確的)

它將正確的下一個日期是即:17年10月1日,它將在17年3月30日仍然是正確的。

+1

感謝確認我的答案時鐘最後一次正確的30個正確的。 – 2009-12-01 12:27:50

+0

是的,你是在這兩方面是正確的,改裝成您提供的答案:) – BlueTrin 2009-12-01 14:58:15

0

在Excel中,您可以測試任何A2日期,看看時鐘是否是正確的在該日期,用公式=MOD(A2+19,31)+1=DAY(A2)

+0

是啊,Excel是確實做日期代數的最準確的工具! #UTTER #FAIL http://www.grokdoc.net/index.php/EOOXML_Objections_Clearinghouse#The_Gregorian_Calendar – jsbueno 2009-12-01 11:15:40

相關問題