计算世界完全对称日的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 相关文章推荐
HTML中Select不用Disabled实现ReadOnly的效果
Apr 07 Javascript
js模拟类继承小例子
Jul 17 Javascript
javascript循环变量注册dom事件 之强大的闭包
Sep 08 Javascript
js获得地址栏?问号后参数的方法
Aug 08 Javascript
javascript倒计时效果实现
Nov 12 Javascript
原生javascript实现分享到朋友圈功能 支持ios和android
May 11 Javascript
浅谈js中的三种继承方式及其优缺点
Aug 10 Javascript
js实现String.Fomat的实例代码
Sep 02 Javascript
AngularJS  双向数据绑定详解简单实例
Oct 20 Javascript
微信小程序实现聊天对话(文本、图片)功能
Jul 06 Javascript
简单学习5种处理Vue.js异常的方法
Jun 17 Javascript
vue实现路由不变的情况下,刷新页面操作示例
Feb 02 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
【动漫杂谈】关于《请在T台上微笑》
2020/03/03 日漫
山进SANGEAN ATS-909X电路分析
2021/03/02 无线电
php实现jQuery扩展函数
2009/10/30 PHP
php查询相似度最高的字符串的方法
2015/03/12 PHP
php可变长参数处理函数详解
2017/02/22 PHP
Thinkphp5行为使用方法汇总
2017/12/21 PHP
URL编码转换,escape() encodeURI() encodeURIComponent()
2006/12/27 Javascript
JavaScript中this关键字使用方法详解
2007/03/08 Javascript
EXT中xtype的含义分析
2010/01/07 Javascript
JavaScript中判断整数的多种方法总结
2014/11/08 Javascript
jQuery对于显示和隐藏等常用状态的判断方法
2014/12/13 Javascript
JavaScript中的setUTCDate()方法使用详解
2015/06/11 Javascript
Angularjs 实现分页功能及示例代码
2016/09/14 Javascript
vue组件实例解析
2017/01/10 Javascript
Bootstrap笔记之缩略图、警告框实例详解
2017/03/09 Javascript
自定义PC微信扫码登录样式写法
2017/12/12 Javascript
react router4+redux实现路由权限控制的方法
2018/05/03 Javascript
angular4应用中输入的最小值和最大值的方法
2019/05/17 Javascript
VueQuillEditor富文本上传图片(非base64)
2020/06/03 Javascript
vue 导航锚点_点击平滑滚动,导航栏对应变化详解
2020/08/10 Javascript
对Python 语音识别框架详解
2018/12/24 Python
对python列表里的字典元素去重方法详解
2019/01/21 Python
Python基本socket通信控制操作示例
2019/01/30 Python
Python实现时间序列可视化的方法
2019/08/06 Python
移动Web—CSS为Retina屏幕替换更高质量的图片
2012/12/24 HTML / CSS
使用CSS3来代替JS实现交互
2017/08/10 HTML / CSS
利用指针变量实现队列的入队操作
2012/04/07 面试题
下面关于"联合"的题目的输出是什么
2013/08/06 面试题
服务之星获奖感言
2014/01/21 职场文书
初级会计求职信范文
2014/02/15 职场文书
运动会跳远加油稿
2014/02/20 职场文书
幼儿园中班教师寄语
2014/04/03 职场文书
2014年党的群众路线教育实践活动整改措施(个人版)
2014/09/25 职场文书
nginx实现发布静态资源的方法
2021/03/31 Servers
JavaScript实例 ODO List分析
2022/01/22 Javascript
JS前端轻量fabric.js系列之画布初始化
2022/08/05 Javascript