算法 可配置过滤时间段的有效工时算法

今天分享一下进公司以来我做的最“恶心”的项目中用到的一个算法。

故事背景

之所以说这个项目恶心,是因为从接到需求的那一刻起我就觉得做完这个项目我可能就会被全公司研发人员的唾沫星子给淹没,而且这个项目还映射着一个从华为挖过来的一个高管在公司里的起起落落。

这个项目的全称叫“工时任务填报审批系统”。

项目的功能是员工每日进行工时填报,每天完成了哪些工作内容,每个工作内容用了多少工时,然后提交到直接部门领导那里审批,部门领导也需要填写工时,填写的工时也由其直属领导进行审批。然后每月统计出所有员工的有效工时(领导审批时如果认为你填报的工作内容不值得你填写的那么多工时,还可以扣你的工时。。。......

阅读更多

python 如何遍历二维平面中指定点的对角线上的点

解决思路

上一篇文章描写的八皇后问题中,一个难点就在于如何判断棋盘上指定位置的对角线上是否已经有皇后棋子。

这个问题的实质是如何在一个有限二维平面(8*8)上遍历一个指定坐标点(x,y)的对角线上的所有点。

注:平面的坐标系,y轴横向右侧延伸(→),x轴在y轴下侧竖向下延伸(↓)

一个点的对角线有四个方向,分别是左上、右上、左下、右下

如果用坐标的变化趋势来表示这四个方向的话,这个问题就显得一目了然了:

  1. 左上:x轴坐标与y轴坐标相对于点(x,y)都在递减
  2. 右上:x轴坐标在递减,y轴坐标在递增
  3. 左下:x轴坐标在递增,y轴坐标在递减
  4. 右下:x轴坐标与y轴坐标相对于点(x,y)都在递增......

阅读更多

python 八皇后问题的解法(深度搜索)

共本文介绍如何用深度搜索的方式求解8皇后(其实也可以求解N皇后)问题的解

八皇后问题描述

在国际想起的规则中,皇后能攻击八个方向上的棋子,而且不受距离限制。

皇后的攻击方向如下图所示:

八皇后问题则是在这样的规则上,求在一个8*8的棋盘上,如何放置8个互相不会攻击的皇后。

比如下图这样放置:

8个皇后,每个都不在其他皇后的上下左右以及斜向的方向上,所以互相不能攻击。

ps:我写的这份代码其实也可以求N皇后问题的解,只需修改MAXNUM为指定N值即可

代码原理

从棋盘的第一行开始,从左到右的查看每一列,当检测到当前点可以放置皇后,则将该点置为1。

然后查找下一行可......

阅读更多

分班算法实现过程中的效果以及性能优化

之前在这篇文章:基于班级条件权重表的试探性学生分班算法(详解篇)中介绍过分班算法的理论步骤。

分班算法设计仅仅是给出了一个大致的思路。

其实算法中的很多步骤在实现过程中是可以进一步优化的。

本篇文章记录一下我在实现分班算法的过程中,进行的一些优化,主要包括以下几方面:

1. 单一条件分班时采用循环算法得到最优解
2. 可配置的权重系数计算规则
3. 增加redis锁防止重复分班
4. 引入线程池将分班过程多线程化

单一条件分班时的特殊处理

单一条件分班其实是一种特殊的分班情况,这种情况下的分班结果是有最优解的,达成最优解的分班方式就是将所有学生按照分班条件排序,然后循环分班。......

阅读更多

python 将图片转换成ascii字符画

这是一个有趣的python小程序,可以图片转换成有ascii字符组成的图画。

效果

原图:

转换后:

原图:

转换后:

原图:

转换后:

原理:

使用了python的图片处理库pillow(PIL),使用PIL读取图片的每个像素点,然后采用计算公式将R,G,B三原色的色值计算为灰度值,之后用hash算法将灰度值映射到ascii的字符上去,然后将每个像素对应的字符输出即可生成图片对应的字符图画。

代码:

ascii.py

[code lang=python]
from PIL import Image
import argparse

#命令行输入参数处理
p......

阅读更多

python github上的关于跳一跳python作弊脚本的源码分析

最近跳一跳很火,我自己也玩的不亦乐乎,但是玩了三周了都没能上过400分。

之前就听说有人在github上用python写了辅助脚本来玩跳一跳,我趁着一天在公司吃完饭回来,闲着没事就去下了一份代码,在办公室把python环境搭起来,把依赖的库下好,跑起脚本体验了一把作弊的感觉~

( github项目地址:GitHub 跳一跳python脚本 )

第一把跳了1800多分,成绩也上传了,但是发现在同事那边看不到我的成绩,过了一会再看我这边,成绩也还原了。

难道脚本已经被微信ban掉了?

上网查了跳一跳封外挂的消息以后,看到了张小龙的原话:

“对于外挂来说,其实这种对抗是无止境的,你......

阅读更多

基于班级条件权重表的试探性学生分班算法(详解篇)

由于markdown语法展示的文档样式可能不太好看,因此提供doc版下载:

点此下载:
基于班级条件权重表的试探性学生分班算法.doc

目录

1 学生分班业务分析
    1.1 需求分析
    1.2 难点分析
2 分班问题的解决思路
3 基于班级条件权重表的试探性学生分班算法
    3.1 算法步骤
    3.2 算法详解
        3......

阅读更多