计算世界完全对称日的js代码,粗糙版


Posted in Javascript onNovember 04, 2011

比如20111102
下午闲着无聊,写了一个,代码没有经过优化,
只是凭着一股子无聊劲写出来的。
如果有哪位仁兄有兴趣把代码优化一下,感谢不尽

经过计算在公元2000年到3000年,一共有36个符合条件的世界完全对称日。
见到园子里有的博客,可以在下面加“运行”,直接执行Html代码,不知道怎么整的,可有人告知一下

<!DOCTYPE HTML> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
<title>公元1000年以后的回文日</title> 
<script> 
/** 
* 将日期变为标准8位格式,如20111102 
* 将其分为四段 分别为 20 11 11 02 为世纪,年,月,日 
* 按年算法时间复杂度为O(n3),而从后四位,月日即可得到最后的结果,效率更高 
* 因为闰年2月尾数为9,超过人类漫长的历史,所以无须考虑 
*/ 
;;(function(){ 
var theDateList=[]; 
//出现回文日的世纪最大值 
var maxForCentury=30; 
//出现回文日的世纪最小值 
var minForCentury=20; 
//可能出现回文日的年数最大值,这里只粗糙处理 
var maxForYear=21; 
var maxForDay=31;//不排除闰年 
for(var i=1;i<=12;i++){ 
var stdYear,stdDay; 
var stdMonth=getStandardDate(i); 
/* 
if(getReverseDate(stdMonth)>maxForDay){ 
continue; 
} 
*/ 
maxForDay=getDate(i); 
for(var k=1;k<maxForDay;k++){ 
stdDay =getStandardDate(k); 
stdYear=getReverseDate(stdMonth+stdDay); 
if(parseInt(getReverseDate(stdDay),10)>=minForCentury 
&& parseInt(getReverseDate(stdDay),10)<maxForCentury) 
theDateList.push(stdYear+stdMonth+stdDay) 
} 
} 
theDateList.sort(); //排序 
for(var i=0;i<theDateList.length;i++){ 
console.log(theDateList[i]); 
} 
console.log('共有%d条记录',theDateList.length) 
/** 
* 根据月份算当前月天数 
* @param {int} val 月份 
* @return {int} 
*/ 
function getDate(val){ 
return val%2==0?30:31; 
} 
/** 
* 将小于10的日期值换成标准8位日期值 
* @param {int} val 月份或日期 
* @return {string} 标准格式 
*/ 
function getStandardDate(val){ 
if(val<10){ 
return '0'+val; 
} 
return val.toString(); 
} 
/** 
* 反转日期 
* @param {string} date 月份或日期的标准格式 
* @return {string} 反转后的标准格式 
*/ 
function getReverseDate(date){ 
return date.split("").reverse().join(""); 
} 
})(); 
</script> 
</head> 
<body> 
</body> 
</html>
Javascript 相关文章推荐
基于jquery的一个浮动框(扩展性比较好 )
Aug 27 Javascript
php中给js数组赋值方法
Mar 10 Javascript
Firefox下无法正常显示年份的解决方法
Sep 04 Javascript
原生JS实现响应式瀑布流布局
Apr 02 Javascript
12种JavaScript常用的MVC框架比较分析
Nov 16 Javascript
jquery中用函数来设置css样式
Dec 22 Javascript
Angular多选、全选、批量选择操作实例代码
Mar 10 Javascript
angularjs数组判断是否含有某个元素的实例
Feb 27 Javascript
JavaScript格式化json和xml的方法示例
Jan 22 Javascript
详解JavaScript自定义函数
Jul 29 Javascript
JavaScript严格模式不支持八进制的问题讲解
Nov 07 Javascript
JS实现刷新网页后之前浏览位置保持不变示例详解
Aug 14 Javascript
在标题栏显示新消息提示,很多公司项目中用到这个方法
Nov 04 #Javascript
由Javascript实现的页面日历
Nov 04 #Javascript
jQuery中jqGrid分页实现代码
Nov 04 #Javascript
一个关于jqGrid使用的小例子(行按钮)
Nov 04 #Javascript
给jqGrid数据行添加修改和删除操作链接(之一)
Nov 04 #Javascript
在网站上应该用的30个jQuery插件整理
Nov 03 #Javascript
关于URL中的特殊符号使用介绍
Nov 03 #Javascript
You might like
在命令行下运行PHP脚本[带参数]的方法
2010/01/22 PHP
应用开发中涉及到的css和php笔记分享
2011/08/02 PHP
PHP实现读取一个1G的文件大小
2013/08/24 PHP
学习php过程中的一些注意点的总结
2013/10/25 PHP
JQuery 初体验(建议学习jquery)
2009/04/25 Javascript
jQuery实现切换页面布局使用介绍
2011/10/09 Javascript
JavaScript中的apply和call函数详解
2014/07/20 Javascript
FF(火狐)浏览器无法执行window.close()解决方案
2014/11/13 Javascript
如何编写高质量JS代码
2014/12/28 Javascript
AngularJS中处理多个promise的方式
2016/02/02 Javascript
jQuery代码实现表格中点击相应行变色功能
2016/05/09 Javascript
基于JavaScript实现回到页面顶部动画代码
2016/05/24 Javascript
原生js获取元素样式的简单方法
2016/08/06 Javascript
Vue2.0中集成UEditor富文本编辑器的方法
2018/03/03 Javascript
详解easyui基于 layui.laydate日期扩展组件
2018/07/18 Javascript
js的各种数据类型判断的介绍
2019/01/19 Javascript
一篇文章让你搞懂JavaScript 原型和原型链
2020/11/23 Javascript
[53:10]完美世界DOTA2联赛决赛日 FTD vs GXR 第二场 11.08
2020/11/11 DOTA
[01:06:19]DOTA2-DPC中国联赛定级赛 LBZS vs SAG BO3第二场 1月8日
2021/03/11 DOTA
Queue 实现生产者消费者模型(实例讲解)
2017/11/13 Python
python3安装pip3(install pip3 for python 3.x)
2018/04/03 Python
用Python中的turtle模块画图两只小羊方法
2019/04/09 Python
opencv+python实现均值滤波
2020/02/19 Python
使用IPython或Spyder将省略号表示的内容完整输出
2020/04/20 Python
Python3基于plotly模块保存图片表格
2020/08/03 Python
高品质和独特的产品世界:Creations and Collections
2018/01/07 全球购物
LivingSocial爱尔兰:爱尔兰本地优惠
2018/08/10 全球购物
历史学专业求职信
2014/06/19 职场文书
领导班子四风查摆对照检查材料思想汇报
2014/10/05 职场文书
安全保证书格式
2015/02/28 职场文书
党委工作总结2015
2015/04/27 职场文书
2015秋季小学开学寄语
2015/05/27 职场文书
企业宣传稿范文
2015/07/23 职场文书
2016年领导干部正风肃纪心得体会
2015/10/09 职场文书
浅谈css实现背景颜色半透明的两种方法
2021/12/06 HTML / CSS
Redis基本数据类型List常用操作命令
2022/06/01 Redis