计算世界完全对称日的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 相关文章推荐
javascript 常用方法总结
Jun 03 Javascript
jquery实现textarea输入字符控制(仿微博输入控制字符)
Apr 26 Javascript
查看大图功能代码jquery版
Nov 05 Javascript
javascript搜索框点击文字消失失焦时文本出现
Sep 18 Javascript
JS弹出可拖拽可关闭的div层完整实例
Feb 13 Javascript
JavaScript中反正弦函数Math.asin()的使用简介
Jun 14 Javascript
使用AngularJS创建单页应用的编程指引
Jun 19 Javascript
JavaScript获取当前运行脚本文件所在目录的方法
Feb 03 Javascript
JavaScript编写的网页小游戏,很给力
Aug 18 Javascript
js+css实现打字效果
Jun 24 Javascript
jQuery基于Ajax实现读取XML数据功能示例
May 31 jQuery
Vue 实现把表单form数据 转化成json格式的数据
Oct 29 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基础知识回顾
2012/08/16 PHP
与文件上传有关的php配置参数总结
2013/06/14 PHP
CentOS 安装 PHP5.5+Redis+XDebug+Nginx+MySQL全纪录
2015/03/25 PHP
PHP使用递归方式列出当前目录下所有文件的方法
2015/06/02 PHP
详谈PHP中的密码安全性Password Hashing
2017/02/04 PHP
PHP convert_uudecode()函数讲解
2019/02/14 PHP
javascript第一课
2007/02/27 Javascript
JS和jquery获取各种屏幕的宽度和高度的代码
2013/08/02 Javascript
js函数与php函数的区别实例浅析
2015/01/12 Javascript
JS中字符串trim()使用示例
2015/05/26 Javascript
jQuery幻灯片特效代码分享--鼠标滑过按钮时切换(2)
2020/11/18 Javascript
基于jQuery实现手风琴菜单、层级菜单、置顶菜单、无缝滚动效果
2017/07/20 jQuery
bootstrap table合并行数据并居中对齐效果
2018/10/17 Javascript
js设计模式之代理模式及订阅发布模式实例详解
2019/08/15 Javascript
Vue.js组件使用props传递数据的方法
2019/10/19 Javascript
async/await让异步操作同步执行的方法详解
2019/11/01 Javascript
Vue退出登录时清空缓存的实现
2019/11/12 Javascript
解决Vue中使用keepAlive不缓存问题
2020/08/04 Javascript
JavaScript实现打字游戏
2021/02/19 Javascript
[01:15:00]LGD vs Mineski Supermajor 胜者组 BO3 第一场 6.5
2018/06/06 DOTA
[50:54]完美世界DOTA2联赛 GXR vs IO 第三场 11.07
2020/11/10 DOTA
python构建深度神经网络(DNN)
2018/03/10 Python
Python3中lambda表达式与函数式编程讲解
2019/01/14 Python
Python中捕获键盘的方式详解
2019/03/28 Python
Python CVXOPT模块安装及使用解析
2019/08/01 Python
解决django后台管理界面添加中文内容乱码问题
2019/11/15 Python
Django怎么在admin后台注册数据库表
2020/11/14 Python
python用分数表示矩阵的方法实例
2021/01/11 Python
英国奢侈品概念店:Base Blu
2019/05/16 全球购物
全球异乡人的跨境社交电商平台:Kouhigh口嗨网
2020/07/24 全球购物
商务英语毕业生自荐信范文
2013/11/08 职场文书
房屋买卖协议书范本
2014/04/10 职场文书
学习党代会心得体会
2014/09/05 职场文书
县委常委班子对照检查材料思想汇报
2014/09/28 职场文书
工程款申请报告
2015/05/15 职场文书
Minikube搭建Kubernetes集群
2022/03/31 Servers