计算世界完全对称日的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实现预览待上传的本地图片
Mar 15 Javascript
jQuery 行级解析读取XML文件(附源码)
Oct 12 Javascript
理解Javascript_09_Function与Object
Oct 16 Javascript
JS模拟面向对象全解(二、类型与赋值)
Jul 13 Javascript
单击浏览器右上角的X关闭窗口弹出提示的小例子
Jun 12 Javascript
JS通过相同的name进行表格求和代码
Aug 18 Javascript
javascript 判断字符串是否包含某字符串及indexOf使用示例
Oct 18 Javascript
jquery单选框radio绑定click事件实现方法
Jan 14 Javascript
jQuery实现复选框的全选和反选
Feb 02 Javascript
Bootstrap 网格系统布局详解
Mar 19 Javascript
js 数组详细操作方法及解析合集
Jun 01 Javascript
JavaScript实现五子棋小游戏
Oct 26 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
smarty+adodb+部分自定义类的php开发模式
2006/12/31 PHP
php异常:Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE  eval()'d code error
2011/05/19 PHP
CI(CodeIgniter)框架配置
2014/06/10 PHP
php字符串操作针对负值的判断分析
2016/07/28 PHP
laravel 5.1下php artisan migrate的使用注意事项总结
2017/06/07 PHP
php 提交表单 关闭layer弹窗iframe的实例讲解
2018/08/20 PHP
Yii使用DbTarget实现日志功能的示例代码
2020/07/21 PHP
jQuery AnythingSlider滑动效果插件
2010/02/07 Javascript
javascript中的parseInt和parseFloat区别
2013/07/12 Javascript
JS实现点击链接取消跳转效果的方法
2014/01/24 Javascript
基于javascript实现九九乘法表
2016/03/27 Javascript
PassWord输入框代码分享
2016/06/07 Javascript
jquery中的常见问题及快速解决方法小结
2016/06/14 Javascript
javaScript 事件绑定、事件冒泡、事件捕获和事件执行顺序整理总结
2016/10/10 Javascript
js实现动态改变radio状态的方法
2018/02/28 Javascript
利用vue和element-ui设置表格内容分页的实例
2018/03/02 Javascript
JS代码检查工具ESLint介绍与使用方法
2020/02/04 Javascript
[01:04:31]DOTA2-DPC中国联赛定级赛 iG vs Magma BO3第二场 1月8日
2021/03/11 DOTA
初学Python实用技巧两则
2014/08/29 Python
基于python时间处理方法(详解)
2017/08/14 Python
Python生成器定义与简单用法实例分析
2018/04/30 Python
python selenium自动化测试框架搭建的方法步骤
2020/06/14 Python
浅析Python 抽象工厂模式的优缺点
2020/07/13 Python
简述 Python 的类和对象
2020/08/21 Python
浅析Python 中的 WSGI 接口和 WSGI 服务的运行
2020/12/09 Python
使用canvas绘制超炫时钟
2014/12/17 HTML / CSS
台湾三立电视电商平台:电电购
2019/09/09 全球购物
办理退休介绍信
2014/01/09 职场文书
索桥的故事教学反思
2014/02/06 职场文书
课前三分钟演讲稿
2014/04/24 职场文书
中学生学雷锋演讲稿
2014/04/26 职场文书
2014年教学管理工作总结
2014/12/02 职场文书
入党现实表现材料
2014/12/23 职场文书
2015年秋季小学开学典礼主持词
2015/07/16 职场文书
大学生入党自我鉴定范文
2019/06/21 职场文书
奶茶店的创业计划书该怎么写?
2019/07/15 职场文书