计算世界完全对称日的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 相关文章推荐
zeroclipboard复制到剪切板的flash
Aug 04 Javascript
js 图片随机不定向浮动的实现代码
Jul 02 Javascript
Jquery实现图片预加载与延时加载的方法
Dec 22 Javascript
jQuery使用元素属性attr赋值详解
Feb 27 Javascript
程序员必知35个jQuery 代码片段
Nov 05 Javascript
学习使用AngularJS文件上传控件
Feb 16 Javascript
jQuery文字提示与图片提示效果实现方法
Jul 04 Javascript
基于d3.js实现实时刷新的折线图
Aug 03 Javascript
jQuery操作DOM_动力节点Java学院整理
Jul 04 jQuery
js数组去重的N种方法(小结)
Jun 07 Javascript
手挽手带你学React之React-router4.x的使用
Feb 14 Javascript
深入分析jQuery.one() 函数
Jun 03 jQuery
在标题栏显示新消息提示,很多公司项目中用到这个方法
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
最小化数据传输――在客户端存储数据
2006/10/09 PHP
社区(php&amp;&amp;mysql)三
2006/10/09 PHP
关于url地址传参数时字符串有回车造成页面脚本赋值失败的解决方法
2013/06/28 PHP
5种PHP创建数组的实例代码分享
2014/01/17 PHP
PHP简单选择排序算法实例
2015/01/26 PHP
Joomla语言翻译类Jtext用法分析
2016/05/05 PHP
laravel中的错误与日志用法详解
2016/07/26 PHP
PHP5.4起内置web服务器使用方法
2016/08/09 PHP
Packer 3.0 JS压缩及混淆工具 下载
2007/05/03 Javascript
javascript:void(0)是什么意思示例介绍
2013/11/17 Javascript
Javascript检查图片大小不要让大图片撑破页面
2014/11/04 Javascript
jQuery实现点击后标记当前菜单位置(背景高亮菜单)效果
2015/08/22 Javascript
Prototype框架详解
2015/11/25 Javascript
详解javascript的变量与标识符
2016/01/04 Javascript
jQuery插件扩展实例【添加回调函数】
2016/11/26 Javascript
websocket+node.js实现实时聊天系统问题咨询
2017/05/17 Javascript
JS实现点击下拉菜单把选择的内容同步到input输入框内的实例
2018/01/23 Javascript
基于Vue2x实现响应式自适应轮播组件插件VueSliderShow功能
2018/05/16 Javascript
VUE DEMO之模拟登录个人中心页面之间数据传值实例
2019/10/31 Javascript
Vue中父子组件的值传递与方法传递
2020/09/28 Javascript
Tornado服务器中绑定域名、虚拟主机的方法
2014/08/22 Python
Python中多线程的创建及基本调用方法
2016/07/08 Python
Unicode和Python的中文处理
2017/03/19 Python
对python字典元素的添加与修改方法详解
2018/07/06 Python
Python类的继承super相关原理解析
2020/10/22 Python
BeautifulSoup获取指定class样式的div的实现
2020/12/07 Python
python和opencv构建运动检测器的实现
2021/03/03 Python
HTML5新增的Css选择器、伪类介绍
2013/08/07 HTML / CSS
员工培训邀请函
2014/02/02 职场文书
迎新生欢迎词2015
2015/07/16 职场文书
导游词之南迦巴瓦峰
2019/11/19 职场文书
python文件名批量重命名脚本实例代码
2021/04/22 Python
Vue过滤器(filter)实现及应用场景详解
2021/06/15 Vue.js
Python面向对象编程之类的概念
2021/11/01 Python
船舶调度指挥系统——助力智慧海事
2022/02/18 无线电
Java Spring读取和存储详细操作
2022/08/05 Java/Android