楼主: nyfor

[精华] 最小源代码擂台

[复制链接]
论坛徽章:
18
生肖徽章2007版:虎
日期:2008-04-11 18:37:24奥运会纪念徽章:击剑
日期:2008-07-03 11:38:17迷宫蛋
日期:2011-05-10 13:03:40茶鸡蛋
日期:2011-05-10 13:05:16蜘蛛蛋
日期:2011-05-10 13:07:01灰彻蛋
日期:2012-12-10 11:47:16鲜花蛋
日期:2013-07-07 10:07:20
341#
发表于 2008-5-26 09:57 | 只看该作者
原帖由 nyfor 于 2008-5-26 09:52 发表

呵呵, 把你的算月方法代替我的, 能够缩短到 333 字节呢
你的算月的天数方法太巧妙了.



, 你的思路也不错

使用道具 举报

回复
论坛徽章:
5
奥运会纪念徽章:摔跤
日期:2008-07-02 08:48:392009日食纪念
日期:2009-07-22 09:30:00优秀写手
日期:2013-12-18 09:29:11SQL数据库编程大师
日期:2016-01-13 10:30:43SQL大赛参与纪念
日期:2016-01-13 10:32:19
342#
发表于 2008-5-26 09:57 | 只看该作者
你俩把隐式转换去掉,给个代码,我帮你们跑一下
看能不能跑过yangtingkun的代码

使用道具 举报

回复
论坛徽章:
69
生肖徽章2007版:羊
日期:2008-11-14 14:42:19复活蛋
日期:2011-08-06 08:59:05ITPUB十周年纪念徽章
日期:2011-11-01 16:19:412012新春纪念徽章
日期:2012-01-04 11:49:542012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:20版主4段
日期:2012-05-15 15:24:11
343#
 楼主| 发表于 2008-5-26 09:58 | 只看该作者
sign(mod(y, 16 - 4 * instr(y / h, '.'))
这一部分代码, 打死我也想不出来的, 到现在我都没有理解

使用道具 举报

回复
论坛徽章:
5
奥运会纪念徽章:摔跤
日期:2008-07-02 08:48:392009日食纪念
日期:2009-07-22 09:30:00优秀写手
日期:2013-12-18 09:29:11SQL数据库编程大师
日期:2016-01-13 10:30:43SQL大赛参与纪念
日期:2016-01-13 10:32:19
344#
发表于 2008-5-26 10:01 | 只看该作者
原帖由 nyfor 于 2008-5-26 09:58 发表
sign(mod(y, 16 - 4 * instr(y / h, '.'))
这一部分代码, 打死我也想不出来的, 到现在我都没有理解


取小数部分,×h就是余数了
具体是啥,等待BT的点解

使用道具 举报

回复
论坛徽章:
18
生肖徽章2007版:虎
日期:2008-04-11 18:37:24奥运会纪念徽章:击剑
日期:2008-07-03 11:38:17迷宫蛋
日期:2011-05-10 13:03:40茶鸡蛋
日期:2011-05-10 13:05:16蜘蛛蛋
日期:2011-05-10 13:07:01灰彻蛋
日期:2012-12-10 11:47:16鲜花蛋
日期:2013-07-07 10:07:20
345#
发表于 2008-5-26 10:06 | 只看该作者
原帖由 nyfor 于 2008-5-26 09:58 发表
sign(mod(y, 16 - 4 * instr(y / h, '.'))
这一部分代码, 打死我也想不出来的, 到现在我都没有理解




判断闰年: 非百年看后两位能否被4整除, 百年看前两位能否被4整除,  再往前推, 百年能被100整除, 又 100 = 4 * 25, 故闰百年必能被16整除, 年/100, 能整除的无小数点, 是百年, 不能整除的有小数点, 凑巧小数点的位置为3, 综合以上, 故, 非百年 MOD 4 , 百年 MOD 16, 能整除的都是闰年. 这也就是为什么用 INSTR(Y/H,'.') 而不用 SIGN(MOD(Y, H)) 的原因, 虽然它们的长度是一样, 但 12 * {0, 1} 和 4 * {0, 3} 相比, 多了一个Byte

使用道具 举报

回复
论坛徽章:
18
生肖徽章2007版:虎
日期:2008-04-11 18:37:24奥运会纪念徽章:击剑
日期:2008-07-03 11:38:17迷宫蛋
日期:2011-05-10 13:03:40茶鸡蛋
日期:2011-05-10 13:05:16蜘蛛蛋
日期:2011-05-10 13:07:01灰彻蛋
日期:2012-12-10 11:47:16鲜花蛋
日期:2013-07-07 10:07:20
346#
发表于 2008-5-26 10:07 | 只看该作者
其实这个我也推了好久想到的,  天外飞仙

使用道具 举报

回复
论坛徽章:
5
奥运会纪念徽章:摔跤
日期:2008-07-02 08:48:392009日食纪念
日期:2009-07-22 09:30:00优秀写手
日期:2013-12-18 09:29:11SQL数据库编程大师
日期:2016-01-13 10:30:43SQL大赛参与纪念
日期:2016-01-13 10:32:19
347#
发表于 2008-5-26 10:08 | 只看该作者
原帖由 于 2008-5-26 09:57 发表
你俩把隐式转换去掉,给个代码,我帮你们跑一下
看能不能跑过yangtingkun的代码


对效率不感兴趣么?

使用道具 举报

回复
论坛徽章:
69
生肖徽章2007版:羊
日期:2008-11-14 14:42:19复活蛋
日期:2011-08-06 08:59:05ITPUB十周年纪念徽章
日期:2011-11-01 16:19:412012新春纪念徽章
日期:2012-01-04 11:49:542012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:20版主4段
日期:2012-05-15 15:24:11
348#
 楼主| 发表于 2008-5-26 10:10 | 只看该作者
原帖由 DragonBill 于 2008-5-26 10:06 发表




判断闰年: 非百年看后两位能否被4整除, 百年看前两位能否被4整除,  再往前推, 百年能被100整除, 又 100 = 4 * 25, 故闰百年必能被16整除, 年/100, 能整除的无小数点, 是百年, 不能整除的有小数点, 凑巧小数点的位置为3, 综合以上, 故, 非百年 MOD 4 , 百年 MOD 16, 能整除的都是闰年. 这也就是为什么用 INSTR(Y/H,'.') 而不用 SIGN(MOD(Y, H)) 的原因, 虽然它们的长度是一样, 但 12 * {0, 1} 和 4 * {0, 3} 相比, 多了一个Byte

其实这个我也推了好久想到的,  天外飞仙

谢谢, 终于弄懂了, 太强了.  

使用道具 举报

回复
论坛徽章:
69
生肖徽章2007版:羊
日期:2008-11-14 14:42:19复活蛋
日期:2011-08-06 08:59:05ITPUB十周年纪念徽章
日期:2011-11-01 16:19:412012新春纪念徽章
日期:2012-01-04 11:49:542012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:20版主4段
日期:2012-05-15 15:24:11
349#
 楼主| 发表于 2008-5-26 10:12 | 只看该作者
原帖由 于 2008-5-26 10:08 发表


对效率不感兴趣么?

是的, 不感兴趣 源于本题的目标是代码最小.

使用道具 举报

回复
论坛徽章:
18
生肖徽章2007版:虎
日期:2008-04-11 18:37:24奥运会纪念徽章:击剑
日期:2008-07-03 11:38:17迷宫蛋
日期:2011-05-10 13:03:40茶鸡蛋
日期:2011-05-10 13:05:16蜘蛛蛋
日期:2011-05-10 13:07:01灰彻蛋
日期:2012-12-10 11:47:16鲜花蛋
日期:2013-07-07 10:07:20
350#
发表于 2008-5-26 10:14 | 只看该作者
呵呵, 并不是对效率不感兴趣, 老杨的那个确实不赖, 一个MOD搞定, 不过我认为: 时间差别在10秒之内并不影响效率, 只有两者时间差太大(10s以上), 从User的角度来看, 他才感受到速度的影响

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表