计算世界完全对称日的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 相关文章推荐
Extjs在exlipse中设置自动提示的方法
Apr 07 Javascript
js获取 type=radio 值的方法
May 09 Javascript
基于Javascript实现二级联动菜单效果
Mar 04 Javascript
javascript断点调试心得分享
Apr 23 Javascript
JS框架之vue.js(深入三:组件1)
Sep 29 Javascript
第一次接触Bootstrap框架
Oct 24 Javascript
js实现随机抽选效果、随机抽选红色球效果
Jan 13 Javascript
详解vue项目优化之按需加载组件-使用webpack require.ensure
Jun 13 Javascript
vue.js 上传图片实例代码
Jun 22 Javascript
Bootstrap Table 删除和批量删除
Sep 22 Javascript
vue弹窗组件使用方法
Apr 28 Javascript
原生js通过一行代码实现简易轮播图
Jun 05 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实现webservice实例
2014/11/06 PHP
Laravel模板引擎Blade中section的一些标签的区别介绍
2015/02/10 PHP
限制textbox或textarea输入字符长度的JS代码
2013/10/16 Javascript
jQuery获得页面元素的绝对/相对位置即绝对X,Y坐标
2014/03/06 Javascript
Javascript 多物体运动的实现
2014/12/24 Javascript
Javascript中的arguments与重载介绍
2015/03/15 Javascript
jquery无限级联下拉菜单简单实例演示
2015/11/23 Javascript
Wireshark基本介绍和学习TCP三次握手
2016/08/15 Javascript
响应式表格之固定表头的简单实现
2016/08/26 Javascript
Three.js快速入门教程
2016/09/09 Javascript
jQuery 控制文本框自动缩小字体填充
2017/06/16 jQuery
js中json对象和字符串的理解及相互转化操作实现方法
2017/09/22 Javascript
详解vue-router传参的两种方式
2018/09/10 Javascript
angular 用Observable实现异步调用的方法
2018/12/27 Javascript
vue 弹窗时 监听手机返回键关闭弹窗功能(页面不跳转)
2019/05/10 Javascript
Vue-cli3.x + axios 跨域方案踩坑指北
2019/07/04 Javascript
微信小程序的开发范式BeautyWe.js入门详解
2019/07/10 Javascript
vue中h5端打开app(判断是安卓还是苹果)
2021/02/26 Vue.js
Python ORM框架SQLAlchemy学习笔记之数据查询实例
2014/06/10 Python
python获取当前日期和时间的方法
2015/04/30 Python
pandas apply 函数 实现多进程的示例讲解
2018/04/20 Python
使用Python进行防病毒免杀解析
2019/12/13 Python
关于Python解包知识点总结
2020/05/05 Python
Python实现查找数据库最接近的数据
2020/06/08 Python
使用Django的JsonResponse返回数据的实现
2021/01/15 Python
纯CSS打造(无图像无js)的非常流行的讲话(语音)气泡效果
2012/12/28 HTML / CSS
HTML5中Localstorage的使用教程
2015/07/09 HTML / CSS
介绍一下游标
2012/01/10 面试题
EJB实例的生命周期
2016/10/28 面试题
机电一体化专业毕业生自荐信
2014/06/19 职场文书
写字楼租赁意向书
2014/07/30 职场文书
文明单位汇报材料
2014/12/24 职场文书
初中班主任工作总结2015
2015/05/13 职场文书
贫困生证明范文
2015/06/16 职场文书
主婚人致辞精选
2015/07/28 职场文书
教你如何使用Python实现二叉树结构及三种遍历
2021/06/18 Python