计算世界完全对称日的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 相关文章推荐
Js 时间函数getYear()的使用问题探讨
Apr 01 Javascript
jquery阻止后续事件只执行第一个事件
Jul 24 Javascript
DOM基础教程之使用DOM
Jan 19 Javascript
JS实现控制表格行内容垂直对齐的方法
Mar 30 Javascript
jQuery插件支持同一页面被多次调用
Feb 14 Javascript
JS去掉字符串前后空格、阻止表单提交的实现代码
Jun 08 Javascript
vue中Element-ui 输入银行账号每四位加一个空格的实现代码
Sep 14 Javascript
10行代码实现微信小程序滑动tab切换
Dec 28 Javascript
vue.js表单验证插件(vee-validate)的使用教程详解
May 23 Javascript
JavaScript内置对象math,global功能与用法实例分析
Jun 10 Javascript
微信小程序渲染性能调优小结
Jul 30 Javascript
开发一个封装iframe的vue组件
Mar 29 Vue.js
在标题栏显示新消息提示,很多公司项目中用到这个方法
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中static关键字原理的学习研究分析
2011/07/18 PHP
PHP取整数函数常用的四种方法小结
2012/07/05 PHP
JSON在PHP中的应用介绍
2012/09/08 PHP
处理(php-cgi.exe - FastCGI 进程超过了配置的请求超时时限)的问题
2013/07/03 PHP
Windows2003下php5.4安装配置教程(IIS)
2016/06/30 PHP
由prototype_1.3.1进入javascript殿堂-类的初探
2006/11/06 Javascript
js检测浏览器版本、核心、是否移动端示例
2014/04/24 Javascript
js实现支持手机滑动切换的轮播图片效果实例
2015/04/29 Javascript
ANGULARJS中使用JQUERY分页控件
2015/09/16 Javascript
详解javascript遍历方式
2015/11/11 Javascript
浅谈js的url解析函数封装
2016/06/28 Javascript
jQuery插件Validation快速完成表单验证的方式
2016/07/28 Javascript
关于页面刷新vuex数据消失问题解决方案
2017/07/03 Javascript
浅谈vue-router 路由传参的方法
2017/12/27 Javascript
微信小程序项目实践之九宫格实现及item跳转功能
2018/07/19 Javascript
layui之table checkbox初始化时选中对应选项的方法
2019/09/02 Javascript
[02:40]2014DOTA2 国际邀请赛中国区预选赛 四大豪门抵达华西村
2014/05/23 DOTA
python高并发异步服务器核心库forkcore使用方法
2013/11/26 Python
python笔记:mysql、redis操作方法
2017/06/28 Python
python爬虫之自动登录与验证码识别
2020/06/15 Python
Python函数装饰器实现方法详解
2018/12/22 Python
kafka-python 获取topic lag值方式
2019/12/23 Python
基于python连接oracle导并出数据文件
2020/04/28 Python
python os模块常用的29种方法使用详解
2020/06/02 Python
Html5 new XMLHttpRequest()监听附件上传进度
2021/01/14 HTML / CSS
Bugatchi官方网站:男士服装在线
2019/04/10 全球购物
LightInTheBox法国站:中国跨境电商
2020/03/05 全球购物
女大学生自我鉴定
2013/12/09 职场文书
教师党员思想汇报
2014/01/06 职场文书
党建工作先进材料
2014/05/02 职场文书
学习十八大标语
2014/10/09 职场文书
小区保洁员岗位职责
2015/04/10 职场文书
2015年业务工作总结范文
2015/04/10 职场文书
基层医务人员三严三实心得体会
2016/01/05 职场文书
CSS font-variation 可变字体的魅力(实例详解)
2022/03/03 HTML / CSS
java如何实现获取客户端ip地址的示例代码
2022/04/07 Java/Android