计算世界完全对称日的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实现GridView单选效果自动设置交替行、选中行、鼠标移动行背景色
May 27 Javascript
jquery lazyload延迟加载技术的实现原理分析
Jan 24 Javascript
Jquery选中或取消radio示例
Sep 29 Javascript
javascript实现动态导入js与css等静态资源文件的方法
Jul 25 Javascript
Grunt入门教程(自动任务运行器)
Aug 06 Javascript
js实现三张图(文)片一起切换的banner焦点图
Aug 25 Javascript
基于js实现微信发送好友如何分享到朋友圈、微博
Nov 30 Javascript
JavaScript常用判断写法大全(推荐)
May 30 Javascript
一个超简单的jQuery回调函数例子(分享)
Aug 08 Javascript
微信小程序 教程之条件渲染
Oct 18 Javascript
基于ES6作用域和解构赋值详解
Nov 03 Javascript
通过实例学习React中事件节流防抖
Jun 17 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 判断变量类型实现代码
2009/10/23 PHP
php+js iframe实现上传头像界面无跳转
2014/04/29 PHP
PHP循环输出指定目录下的所有文件和文件夹路径例子(简单实用)
2014/05/10 PHP
PHP采用自定义函数实现遍历目录下所有文件的方法
2014/08/19 PHP
基于jquery创建的一个图片、视频缓冲的效果样式插件
2012/08/28 Javascript
当鼠标移动时出现特效的JQuery代码
2013/11/08 Javascript
JavaScript实现简单的时钟实例代码
2013/11/23 Javascript
jquery提交form表单时禁止重复提交的方法
2014/02/13 Javascript
JQuery判断radio是否选中并获取选中值的示例代码
2014/10/17 Javascript
JavaScript检测弹出窗口是否已经关闭的方法
2015/03/24 Javascript
js实现汉字排序的方法
2015/07/23 Javascript
Backbone View 之间通信的三种方式
2016/08/09 Javascript
基于vue开发的在线付费课程应用过程
2018/01/25 Javascript
jQuery与vue实现拖动验证码功能
2018/01/30 jQuery
React如何避免重渲染
2018/04/10 Javascript
webpack打包nodejs项目的方法
2018/09/26 NodeJs
微信小程序顶部导航栏可滑动并选中放大
2019/12/05 Javascript
JS实现点星星消除小游戏
2020/03/24 Javascript
[01:02]DOTA2上海特锦赛SHOWOPEN
2016/03/25 DOTA
Python fileinput模块使用实例
2015/06/03 Python
python读取和保存视频文件
2018/04/16 Python
Python调用服务接口的实例
2019/01/03 Python
Python的log日志功能及设置方法
2019/07/11 Python
在 Python 中使用 MQTT的方法
2020/08/18 Python
泰国网上购物:Shopee泰国
2018/09/14 全球购物
豪华复古化妆:Besame Cosmetics
2019/09/06 全球购物
文明餐桌行动实施方案
2014/02/19 职场文书
员工入职担保书范文
2014/04/01 职场文书
羽毛球比赛策划方案
2014/06/13 职场文书
2014年“四风”问题个人整改措施
2014/09/17 职场文书
邀请书模板
2015/02/02 职场文书
万能检讨书开头与结尾怎么写
2015/02/17 职场文书
环保宣传语大全
2015/07/13 职场文书
《家庭教育》读后感3篇
2019/12/18 职场文书
MongoDB误操作后使用oplog恢复数据
2022/04/11 MongoDB
解决Python保存文件名太长OSError: [Errno 36] File name too long
2022/05/11 Python