计算世界完全对称日的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 相关文章推荐
Jquery实现无刷新DropDownList联动实现代码
Mar 08 Javascript
web前端开发也需要日志
Dec 09 Javascript
javascript跨域刷新实现代码
Jan 01 Javascript
Jquery EasyUI中弹出确认对话框以及加载效果示例代码
Feb 13 Javascript
js调用iframe实现打印页面内容的方法
Mar 04 Javascript
Javascript 拖拽的一些简单的应用(逐行分析代码,让你轻松了拖拽的原理)
Jan 23 Javascript
js+html5实现canvas绘制镂空字体文本的方法
Jun 05 Javascript
jQuery中extend函数详解
Jul 13 Javascript
Javascript 实现全屏滚动实例代码
Dec 31 Javascript
D3.js中强制异步文件读取同步的几种方法
Feb 06 Javascript
详解webpack-dev-server使用方法
Sep 14 Javascript
webpack4 配置 ssr 环境遇到“document is not defined”
Oct 24 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-accelerator网站加速PHP缓冲的方法
2008/07/30 PHP
PHP高级OOP技术演示
2009/08/27 PHP
php面向对象全攻略 (十五) 多态的应用
2009/09/30 PHP
php设计模式小结
2013/02/15 PHP
PHP实现四种基础排序算法的运行时间比较(推荐)
2016/08/11 PHP
laravel5.4利用163邮箱发送邮件的步骤详解
2017/09/22 PHP
php中输出json对象的值(实现方法)
2018/03/07 PHP
AutoSave/自动存储功能实现
2007/03/24 Javascript
FormValidate 表单验证功能代码更新并提供下载
2008/08/23 Javascript
JavaScript用Number方法实现string转int
2014/05/13 Javascript
Node.js实现简单聊天服务器
2014/06/20 Javascript
基于jQuery实现的QQ表情插件
2015/08/25 Javascript
ionic js 模型 $ionicModal 可以遮住用户主界面的内容框
2016/06/06 Javascript
jQuery插件扩展测试实例
2016/06/21 Javascript
关于微信上网页图片点击全屏放大效果
2016/12/19 Javascript
VUE 更好的 ajax 上传处理 axios.js实现代码
2017/05/10 Javascript
vue elementUI tree树形控件获取父节点ID的实例
2018/09/12 Javascript
[02:10]2018DOTA2亚洲邀请赛赛前采访-Liquid
2018/04/03 DOTA
Python的包管理器pip更换软件源的方法详解
2016/06/20 Python
Python实现发送与接收邮件的方法详解
2018/03/28 Python
Flask之flask-script模块使用
2018/07/26 Python
python使用多线程编写tcp客户端程序
2019/09/02 Python
python 基于dlib库的人脸检测的实现
2019/11/08 Python
python wxpython 实现界面跳转功能
2019/12/17 Python
Python 多进程原理及实现
2020/12/21 Python
丝芙兰墨西哥官网:Sephora墨西哥
2020/05/30 全球购物
使用Vue.js和MJML创建响应式电子邮件
2021/03/23 Vue.js
成人大专自我鉴定范文
2013/10/19 职场文书
创建学习型党组织实施方案
2014/03/29 职场文书
高三家长寄语
2014/04/03 职场文书
《中国梦我的梦》大学生演讲稿
2014/08/20 职场文书
怎样写离婚协议书
2014/09/10 职场文书
8g内存用python读取10文件_面试题-python 如何读取一个大于 10G 的txt文件?
2021/05/28 Python
Python内置数据结构列表与元组示例详解
2021/08/04 Python
第四次工业革命,打工人与机器人的竞争
2022/04/21 数码科技
vue-cli3.x配置全局的scss的时候报错问题及解决
2022/04/30 Vue.js