计算世界完全对称日的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实现图片放大缩小功能后进行复杂排序的方法
Nov 08 Javascript
JQuery入门——用映射方式绑定不同事件应用示例
Feb 05 Javascript
jQuery学习笔记(2)--用jquery实现各种模态提示框代码及项目构架
Apr 08 Javascript
实现动画效果核心方式的js代码
Sep 27 Javascript
JavaScript实战之菜单特效
Aug 16 Javascript
AngularJS Toaster使用详解
Feb 24 Javascript
详解vue-cli项目中怎么使用mock数据
May 29 Javascript
vue权限管理系统的实现代码
Jan 17 Javascript
原生js基于canvas实现一个简单的前端截图工具代码实例
Sep 10 Javascript
vue滚动插件better-scroll使用详解
Oct 18 Javascript
微信小程序实现页面浮动导航
Jan 08 Javascript
js模拟实现百度搜索
Jun 28 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
各种战术和打法的原创者
2020/03/04 星际争霸
利用PHP实现与ASP Banner组件相似的类
2006/10/09 PHP
windows下PHP APACHE MYSQ完整配置
2007/01/02 PHP
php 面试碰到过的问题 在此做下记录
2011/06/09 PHP
mongo Table类文件 获取MongoCursor(游标)的实现方法分析
2013/07/01 PHP
PHP中多维数组的foreach遍历示例
2014/06/13 PHP
基于PHP+jQuery+MySql实现红蓝(顶踩)投票代码
2015/08/25 PHP
php编程每天必学之验证码
2016/03/03 PHP
document 和 document.all 分别什么时候用
2006/06/22 Javascript
基于JQuery框架的AJAX实例代码
2009/11/03 Javascript
jQuery 白痴级入门教程
2009/11/11 Javascript
javascript 广告后加载,加载完页面再加载广告
2010/11/25 Javascript
jquery实现多屏多图焦点图切换特效的方法
2015/05/04 Javascript
Javascript监视变量变化的方法
2015/06/09 Javascript
Angular和Vue双向数据绑定的实现原理(重点是vue的双向绑定)
2016/11/22 Javascript
微信小程序商城项目之淘宝分类入口(2)
2017/04/17 Javascript
JS实现中文汉字按拼音排序的方法
2017/10/09 Javascript
JS中实现隐藏部分姓名或者电话号码的代码
2018/07/17 Javascript
webpack+vue-cil中proxyTable处理跨域的方法
2018/07/20 Javascript
如何在项目中使用log4.js的方法步骤
2019/07/16 Javascript
在vue中利用全局路由钩子给url统一添加公共参数的例子
2019/11/01 Javascript
详解webpack的clean-webpack-plugin插件报错
2020/10/16 Javascript
python调用cmd复制文件代码分享
2013/12/27 Python
python实现比较两段文本不同之处的方法
2015/05/30 Python
Python字符串转换成浮点数函数分享
2015/07/24 Python
简单谈谈Python流程控制语句
2016/12/04 Python
python 对key为时间的dict排序方法
2018/10/17 Python
快速解决docker-py api版本不兼容的问题
2019/08/30 Python
python实现图像全景拼接
2020/03/27 Python
Python unittest装饰器实现原理及代码
2020/09/08 Python
Python WebSocket长连接心跳与短连接的示例
2020/11/24 Python
物业保安员岗位职责制度
2014/01/30 职场文书
租房协议书范本
2014/04/09 职场文书
2016学校先进集体事迹材料
2016/02/29 职场文书
nginx搭建图片服务器的过程详解(root和alias的区别)
2021/03/31 Servers
spring cloud eureka 服务启动失败的原因分析及解决方法
2022/03/17 Java/Android