计算世界完全对称日的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 相关文章推荐
javascript Onunload与Onbeforeunload使用小结
Dec 31 Javascript
javascript 仿QQ滑动菜单效果代码
Sep 03 Javascript
jQuery计算textarea中文字数(剩余个数)的小程序
Nov 28 Javascript
用js控制组织结构图可以任意拖拽到指定位置
Jan 17 Javascript
AngularJS基础学习笔记之指令
May 10 Javascript
Javascript实现的Map集合工具类完整实例
Jul 31 Javascript
学习javascript面向对象 实例讲解面向对象选项卡
Jan 04 Javascript
BootStrap实用代码片段之一
Mar 22 Javascript
简单掌握JavaScript中const声明常量与变量的用法
May 21 Javascript
浅谈JavaScript 中有关时间对象的方法
Aug 15 Javascript
JS实现仿微信支付弹窗功能
Jun 25 Javascript
element多个表单校验的实现
May 27 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/03/23 PHP
PHP正则表达式过滤html标签属性(DEMO)
2016/05/04 PHP
php session的应用详细介绍
2017/03/22 PHP
PHP实现对文件锁进行加锁、解锁操作的方法
2017/07/04 PHP
PHP实现QQ登录的开原理和实现过程
2018/02/04 PHP
php图片裁剪函数
2018/10/31 PHP
PHP文件上传小程序 适合初学者学习!
2019/05/23 PHP
PHP7创建销毁session的实例方法
2020/02/03 PHP
javascript 动态生成私有变量访问器
2009/12/06 Javascript
JavaScript高级程序设计(第3版)学习笔记9 js函数(下)
2012/10/11 Javascript
基于jquery编写的横向自适应幻灯片切换特效的实例代码
2013/08/06 Javascript
jquery 表格排序、实时搜索表格内容(附图)
2014/05/19 Javascript
javascript实现简单查找与替换的方法
2015/07/22 Javascript
JS实现选项卡实例详解
2015/11/17 Javascript
第四章之BootStrap表单与图片
2016/04/25 Javascript
JS递归遍历对象获得Value值方法技巧
2016/06/14 Javascript
微信小程序 网络请求(post请求,get请求)
2017/01/17 Javascript
JavaScript设计模式之构造函数模式实例教程
2018/07/02 Javascript
微信小程序中this.data与this.setData的区别详解
2018/09/17 Javascript
前端js中的事件循环eventloop机制详解
2019/05/15 Javascript
解决Layui数据表格的宽高问题
2019/09/28 Javascript
JavaScript简单编程实例学习
2020/02/14 Javascript
[03:04]2018年国际邀请赛典藏宝瓶&莱恩声望物品展示 片尾有彩蛋
2018/06/04 DOTA
[03:01]完美世界DOTA2联赛PWL S2 集锦第二期
2020/12/03 DOTA
python中的sort方法使用详解
2014/07/25 Python
深入解析python中的实例方法、类方法和静态方法
2019/03/11 Python
Python中实现输入超时及如何通过变量获取变量名
2020/01/18 Python
Python smtp邮件发送模块用法教程
2020/06/15 Python
增大python字体的方法步骤
2020/07/05 Python
Python实现简单的猜单词小游戏
2020/10/28 Python
使paramiko库执行命令时在给定的时间强制退出功能的实现
2021/03/03 Python
澳大利亚儿童和婴儿产品在线商店:Lime Tree Kids
2017/10/05 全球购物
体育专业个人求职信范文
2013/12/27 职场文书
幼儿学前班评语
2014/12/29 职场文书
2015年小学教师培训工作总结
2015/07/21 职场文书
合理化建议书范文
2015/09/14 职场文书