-
如何用两个立方体表示所有日子的组合 发表于 2010年02月4日 4 条评论今天碰到一个很有趣的问题,如何用两个立体表示所有的日子(不需要年和月)。
一开始就考虑123是可能需要重复出现的,而12种组合里扣除3个以后无法表示10个数字组合,故此路不通。 而且这问题应该没这么简单吧?
花了下空间图,结果发现了一个很取巧的方法,其中一个立方体上写上456789,另外一个则是310221。通过仔细的组合,其实能够让第二个“奇怪”的立方体表示出01、02、03、10、11、12、20、21、22、30、31,其他也就不用多说了。思考的时候也考虑过把数字颠倒或者是用LED字体,通过两个立方体组合显示等,不过都没办法解决。
啊哈,当然没那么简单。不能这么的取巧,不同的数字要分步在两个立方体上。 又再考虑了下,其实3在重复组合中是个特例,仅需要30和31 。 所以,只要让3和0分开,两个立方体上都有1和2,那么就刚好可以匹配所有选择。 不过这个答案还是不对,因为无法表现01-09的所有组合。 0也是个特殊化的数字,没有00,然而需要从1-9并没有办法减少对数字的需求,所以我面对质疑还是肯定的说,如果需要表现01-09,则应该是无解的,因为10个基本数字外仅容许两个冗余,1和2已经把名额用光了。 嗯,当然,如果我们说的立体不是正六面体的话,那自然是很简单的啦,哈。
好吧,我也承认这个只是取巧,不可能采用。 回到电脑前查了一下,发现这个问题其实还是有解的,恰恰是我思考中考虑过的,通过字体来“欺诈”,呵呵,很多字体特别是LED字体中的6和9颠倒过来是一样的,可以省出一个空格,只要这个空格放上0并且和之前那个0不在同一个立方体上就可以做到了。 当然,这就不再是数学的解法了。
有些时候,完成一件事情所需要的条件我们都具备或者是不费力的拥有,却无法得出一个最优的答案。 事实上我考虑这个问题的时候一开始并没有限于数学领域,否则也不会有相邻组合的取巧做法和非正六面体组合的想法,然而得出最接近真相的方法是数学方法,于是在得到需要01-09的时候也自然的用了数学方法准确的证明此题无解。
记录下来,提醒自己不要钻进一个胡同后,蹲在胡同里考虑所有前面巷子转弯的组合就断言罗马不可达,不要忘了递归算法能解决问题最重要的办法就是算不出来就回溯,换个方法再算!
相关日志:
相关日志:
4 responses to “如何用两个立方体表示所有日子的组合”

-
再正规的帖子也需要水源的灌溉
-
Waigo 2010年02月5日 09:53
好吧,上述方法也许不够直观。
那就再想个更直观的方法吧。我们进入了一个误区,觉得非得在立方体的面上写字,一个立方体6个面,所以一共只有12个面可以用。
为什么我们不能在立方体的角上写字呢?一个立方体有8个角,这样就有16个角可用了。
所以,第一个立方体的角上写012389, 第二个立方体的角上写01234567,问题就解决了。 -
Waigo 2010年02月5日 09:18
好吧,我想了一个偏门的方案。
因为一个立方体在任何时候只有3个面展示给你看。我们将能看到的3个面都涂上0,将背面3个面都涂上1。
这样的话,1个立方体就可以摆出000, 001, 010, …..111 的图案来。
2个立方体就是6位的2进制。
其实5位的2进制就可以表示0~31了,哈哈哈~~~
-


naihe 2010年02月8日 08:55