
算法
激荡数十年
17年专职软件研发,喜欢使用的语言有:python, c, java, go
展开
-
2021-07-01 微信大数据竞赛源码(免费colab/GPU版本)
对github中的wechat_big_data_baseline_pytorch进行了修改,主要是整合了512个embded内容描述字段,可惜错过提交截止时间,看上去AUC结果还不错。第一次独立一人完成了整个大数据竞赛,特此纪念。无embded数据预处理# -*- coding: utf-8 -*-#准备数据,跑一次就好import numpy as npimport pandas as pdfrom tqdm import tqdmfrom google.colab impor.原创 2021-07-01 09:23:34 · 598 阅读 · 1 评论 -
flutter下尝试3d建模
library flutter_rubic;import 'dart:io';import 'dart:math' as Math;import 'dart:ui';import 'package:flutter/material.dart';import 'package:flutter/services.dart' show rootBundle;import 'package...原创 2019-11-20 20:42:43 · 1462 阅读 · 0 评论 -
写在算法应用系列之前
【2007年,写此连载时,自己作序如下】在几年前,我就有些冲动,想把从源码中看到的东西记下来,这里面主要的缘由是当我接触大师们的作品时,除了钦佩之情之外,更多的便是感激。我也想把这份激动带给其它的同仁们,希望在看我余下的这些篇章的时候,也能有所收获,并从中得到快乐!以下所有文章皆结合工程中的实际代码而来,有些是我自己动手写的,更多的则是前辈高人所做,我将在引用这些代码片段的时候说明这些情况原创 2011-12-03 11:32:50 · 697 阅读 · 0 评论 -
圆周率的精确解
96年的夏天,我刚上大一下学期,那时学习的语言是fortan 77,上机是VME中型机,操作系统是Novell,教课的是颇有名气的薛学勤教授,我利用业余时间用这门语言做了两个程序,一个是类似autocad的全屏二维平面设计程序,另一个就是求一百位PI值,很不幸,在写一百位pi值的时候,被薛老师发现了,他告诫我说应该把基础打好,不要一上来就写复杂的程序,这样对自己发展不好。最后的结果是我的写完了这个原创 2011-12-03 11:39:23 · 876 阅读 · 0 评论 -
数字排列问题
需求: 求第1500个只有2,3,5因子的数 数是从小到大排列 第一个数是1,1=2^0*3^0*5^0 //execute result: //pos:1500 ==> ans:(2^17*3^8*5^0) //Calculate time est原创 2011-12-03 11:40:25 · 637 阅读 · 0 评论 -
控灯问题
需求说明:在一个正方体内,有平方个方格相邻排列,每个方格里面有一个开关,每个开关按下的时候,会翻转相邻四个格子和它自己格子灯的亮灭,已知条件为正方形的尺寸,求哪些开关按下才能保证所有区域的灯都被点亮。void CAnswer::OnPaint(){ CPaintDC dc(this); // device context for painting原创 2011-12-03 11:44:24 · 599 阅读 · 0 评论 -
华容道求解
华容道求解:void CHrdView::OnDirector(){ int x=0,toppos=2,nextpos=0,endpos=2,count,stepcount=1; int i,j,l; int canback=0,onlyone=0; char ordertemp[13]; DWORD buffer[原创 2011-12-03 11:40:52 · 1084 阅读 · 0 评论 -
分形特效
以下是2003年我在看分形算法之后写的一个关于IFS(迭代函数系)类分形实现程序,ifs是分形中最为简单的一类,用途很广。该类利用信息的自相似特性,可以描述很多自然界中存在的食物,如海岸,山脉,树木,楼宇,其数学抽象为仿射坐标变换,旋转,扭曲,平移三种效果的迭加。特别的,对于二维图像只要事先给定a,b,c,d,e,f系数,就可以确定五花八门的图像了。x(n+1) = a*x(n) + b*原创 2011-12-03 11:47:12 · 265 阅读 · 0 评论 -
水波纹特效
算法原理:从一个能量源出发,每此绘图周期中,波形向四周扩张,可以证明,扩张的过程可以简单的认为能量扩散到相邻的四个点。t2[x,y] = ((t1[x-1,y]+t1[x,y-1]+t1[x+1,y]+t1[x,y+1])/2)-t2[x,y];再考虑衰减:t2[x,y] -= (t2[x,y]>>5);之后根据每个点能量值,直接换算成像素偏移量,新一帧的图像就得到了:x2原创 2011-12-03 11:51:18 · 251 阅读 · 0 评论 -
会跳舞的小人
游戏等软件中经常会遇到能活动的人,其活动过程能够随情景变化,非常具体吸引力, 分析其实现原理,常见的有三种:一种是类 似视频,gif 动画那样的, 事先预存了每帧图像信息,更具要求快速播放指定的图像序列,形成动画,此类可以图像源来自摄像, 所以很逼真,效率也很高,无需太多的数值 运算,但扩充非常麻烦,维护代价很大,数 据过于冗余。还有一类是类似 flash 动画文 件类的,通过脚本配合界面元素发生原创 2011-12-03 12:42:32 · 3172 阅读 · 0 评论 -
无损压缩
常见的无损压缩有:香农编码,行程码压缩 编码,.霍夫曼编码,LZW编码,算术编码等。 其核心思想无非是降低数据冗余,把重复的 较长的编码用较短的编码来替换,实现整体 尺寸的下降,下面以zlib中的压缩核心代码为例加以说明: int ZEXPORT deflate (strm, flush) z_streamp strm; int flush;原创 2011-12-03 12:43:13 · 194 阅读 · 0 评论 -
有损压缩
视频,音频等多媒体文件中,丢失一定的有用信息,来实现数据的高压缩率同时恢复后 媒体质量并未发生很大变化。其很大程度依 赖于人对媒体的敏感部分,如音频局限在 200~20kHz,所以理论上这两者之外的采样 数据都可以丢弃,同时在这个频带内不同频 率,敏感程度也不同,因此出现了对数转换 (a,μ率),傅里叶变换,小波变换,将数据 按照声音频率高低排序后,提取低频成分, 剔除高频成分,数据量大大减少。另原创 2011-12-03 12:45:37 · 1199 阅读 · 0 评论 -
人脸识别
目前人脸识别的算法可以分类为: 神经网络 特征脸 基于样本学习方 支持向量机 隐马尔科夫模型 ADABOOST 算法(弱类聚合) 公认的以最后的算法最为高效,代码取自 intel opencv 库#include "AdaBoost.h" #include原创 2011-12-03 12:46:05 · 789 阅读 · 0 评论 -
经典逻辑推理
1、有5栋5种颜色的房子。 2、每一位房子主人的国籍都不同。 3、5 个人每人只喝一种饮料、只抽一个牌子的香烟、只养一种宠物。 4、没有有人有相同的宠物、抽相同的香烟、喝相同的饮料。 提示: 1、英国人住红房子。 2、瑞典人养狗。 3、丹麦人喝茶。 4、绿房子在白房子的左边 5、绿房子的主人喝咖啡。 6、抽PALL MALL烟的人养鸟。原创 2011-12-03 17:40:25 · 1009 阅读 · 0 评论 -
语音识别
Hmm算法,nuance asr关键实现 hmm为目前最流行的大规模语音识别算法,基本思想是把每个声音片段(20ms)的特征信息(如MFCC)作为每个马科夫链的观察节点,说话过程,就是这些节点之间的转移,根据已经了解到每个音节对应的节点跳转关系,可以识别出当前语言对应的最靠谱的音节(维特比算法)。//---------------------------原创 2011-12-04 00:56:32 · 1157 阅读 · 0 评论 -
搜索引擎
大规模搜索引擎,基本思路是利用网络爬虫获取所有web内容,将各种文档内容提取出来存储,同时对存储的各种文档内容建立索引,以及页面引用数等信息做保存,之后对待搜索的关键字的标志位和索引表进行布尔过滤,即可得到相关内容。但大数据的存储,快速建索引,相近内容,结果排序等还是有不少挑战的,这里面和网格运算,分布式存储等技术密不可分,具体数学原理可以参考吴军的《数学之美》。 以下代码片段选自开源搜索引擎lu原创 2011-12-04 22:17:17 · 909 阅读 · 0 评论 -
鼠标轨迹识别
用神经网学习过程让一系列鼠标轨迹和具体的含义产生关联,然后就可以进行正常工作了, 后将学习算法替换为svm, 效率更高,效果更好。以下代码使用了bpnn库,其数学原理为,事先给定一个随机系数的多层交叉累加运算过程,让已知的输入放入这个运算过程中,得到输出与预期输出直接的误差,将误差按一固定的比例分配到每层都系数上,逐渐逼近正确参数。#define fastcopy(to,from,le原创 2011-12-04 00:47:39 · 5419 阅读 · 0 评论 -
语音合成
节选自Sen Zhang博士的语言识别工具源码:字转拼音 ,得到汉字对应的拼音,再按照规则生成音节序列,之后根据音节顺次播放声音片段,并在片段边缘做平滑处理,就能接近真人发音的效果了。/*--------------------------------------------------------------Convert the Chines原创 2011-12-04 00:51:09 · 2143 阅读 · 0 评论 -
非对称加密
RSA算法是一种非对称密码算法,所谓非对称,就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密。 RSA的算法涉及三个参数,n、e1、e2。 其中,n是两个大质数p、q的积,n的二进制表示时所占用的位数,就是所谓的密钥长度。 e1和e2是一对相关的值,e1可以任意取,但要求e1与(p-1)*(q-1)互质;再选择e2,要求(e2*e1)mod((p-1)*(q-1原创 2011-12-08 22:42:19 · 146 阅读 · 0 评论 -
入侵检测
入侵检测系统首推开源项目snort,完善的匹配规则定义,灵活的插件扩充能力使其有强大的生命力,创建规则匹配的核心代码节选如下:可以看出,在分解规则的时候,就已经用多个链表,将不同的规则进行分类了,可以根据分析的场景,有选择的去使用合适的规则,实现高效。void ParseRule(char *prule, int inclevel){ char **toks; /* dbl p原创 2011-12-08 23:08:12 · 810 阅读 · 0 评论 -
加壳病毒检测
一个较为简单的自动脱壳,并进行识别执行文件是否为病毒的程序,很有参考价值/* EPOS - Heuristic Entry-point Obscuring (Virus) Scanner and Win32. CTX.Phage disinfector by Piotr Bania http://pb.specialised.info */#includ原创 2011-12-09 00:46:25 · 1118 阅读 · 1 评论 -
益智金字塔求解
#from numpy import *#import psyco#psyco.full()shapbase=[[(0,0,0),(1,0,0),(1,1,0),(1,2,0)],[(0,0,0),(1,0,0),(1,1,0),(1,2,0),(0,1,0)], [(0,0,0),(1,0,0),(1,1,0),(1,2,0),(1,3,0)], [(0,1,0),(1,0,0)原创 2011-12-29 00:09:38 · 996 阅读 · 0 评论 -
神奇画板效果模拟
import Image,ImageDraw,ImageFont,ImageTk,Tkinter,math,timeimg=Image.new('RGB',(600,600))draw = ImageDraw.Draw(img)def drawcircles(): a=90 b=35 c=0 d=190 e=300原创 2012-03-23 22:19:06 · 2143 阅读 · 0 评论 -
利用sfswin获取wav的mfcc数据
import os,structos.system("t.cmd %s"%(r"sa1.wav"))f=file("tmp.sfs", "rb")f.seek(0x790)headbuf=f.read(0x70)structsize,framesize,framecnt=struct.unpack("III", headbuf[:3*4])oneframe=structsi原创 2012-04-26 22:12:42 · 1703 阅读 · 0 评论 -
sfswin里加载timit语料库内容
用htk训练timit,得到正确率仅50%左右,需要分析原因,使用sfs,可以看出标注的位置有偏差,每个音素之间少了过渡音:path=%path%;D:\Program Files\SFS\Programdel *.sfshed -n sa1.sfsslink -f 16000 -h 1024 -t RAW -i sp sa1.wav sa1.sfsanload -f 16原创 2012-04-18 06:38:45 · 1030 阅读 · 0 评论 -
三种《谁能坚持50秒》的智能闪避算法,让电脑玩高难度游戏
import subprocess,stringimport win32ui,win32con,pythoncom,win32gui,win32process,win32apiimport time,mathimport stringfrom PIL import ImageGrab,ImageDrawimport osfrom ctypes import *x0=原创 2012-07-06 08:02:15 · 1138 阅读 · 1 评论 -
恢复sqlite数据库中使用delete命令删除的记录
恢复数据库记录源代码:import os.pathdbfilename="test.db"f=file(dbfilename, "rb")fout=file("out.db", "wb")def readpage(f,ind): f.seek(ind*0x400) return f.read(0x400)def recover(dat): lenmap={}原创 2013-07-16 20:18:27 · 9285 阅读 · 4 评论 -
修正下载时错乱文件名小工具
import glob,base64,binascii,re,locale,string,osdef utf8codechg(ch): v = chr(string.atoi(ch.group()[1:3],16))+chr(string.atoi(ch.group()[4:6],16))+chr(string.atoi(ch.group()[7:9],16)) retu原创 2013-10-16 15:42:28 · 724 阅读 · 0 评论 -
lua源码到c的简单转换
import glob,refor f in glob.glob("*.lua"): fout = file("%s.out"%f[:-4],"w+") for line in file(f): if re.match(r"^\s*$", line): fout.write(line) continue原创 2013-10-29 23:36:13 · 2192 阅读 · 0 评论 -
atmega128任意io口接入MAX5821 ADC芯片实现
//ARMADEUS+i2csw(avrlib)void i2cInit(void){ sbi( SDADDR, SDA); // set SDA as output sbi( SCLDDR, SCL); // set SCL as output I2C_SDL_HI; // set I/O state and pull-ups I2C_SCL_HI; //原创 2013-11-25 21:01:18 · 1198 阅读 · 0 评论 -
apktool反编译资源时出现CastException的一则解决方法
package brut.androlib.res.data.value;public class ResStyleValue extends ResBagValue implements ResValuesXmlSerializable {@Override public void serializeToResValuesXml(XmlSerializer serializ原创 2014-02-18 01:07:56 · 956 阅读 · 0 评论 -
修正apk里面的dex校验信息
dex前端有两重校验,如果校验值不对,会导致安装时出现INSTALL_FAILED_DEXOPT,修正如下:import hashlib,zlib,structdef fixdex(fn): with open(fn,"rb") as f: fdata=f.read() shaf=hashlib.sha1() shaf.update(fda原创 2014-04-22 02:32:14 · 1285 阅读 · 0 评论 -
扩展windows下julia语言的时间串处理函数
function datetime(s::String) datev,timev=split(s) datev=date(datev) if ismatch(r"[:|\s]",timev) m = match(r"[:|\s]",timev) hour,min,sec = split(timev,m.match) hour,min,s原创 2014-05-11 02:25:01 · 1070 阅读 · 0 评论 -
R语言金融数据分析 – 二条均线打天下 中没有给出源码的几个函数的个人实现
# 散点数据genPoint pdataldata$Value,"up","down")),Value=array(ldata$ma20)) pdata}原创 2014-08-08 14:31:22 · 3244 阅读 · 4 评论 -
史上最难数独求解,用时约5秒,回溯法,deepcopy是关键
from copy import deepcopyfrom time import clockposinfo0={(0,0):8, (2,1):3,(3,1):6, (1,2):7,(4,2):9,(6,2):2, (1,3):5,(5,3):7, (4,4):4,(5,4):5,(6,4):7, (3原创 2013-06-04 00:15:56 · 2212 阅读 · 0 评论 -
android数独游戏机器人
import os,sys,timeimport Imageimport sysposinfo0={(0,0):8, (2,1):3,(3,1):6, (1,2):7,(4,2):9,(6,2):2, (1,3):5,(5,3):7, (4,4):4,(5,4):5,(6,4):7, (3,5):1,原创 2014-08-14 15:15:24 · 993 阅读 · 0 评论 -
实现统一时间格式的函数
#-*- coding:utf-8 -*-import timedef uninformTM2(arttm, tmrul): if not arttm: return None arttm=arttm.replace(' ',' ').replace('-','-').replace(':',':').replace(' ',' ').strip() tmrultm原创 2014-10-31 17:59:27 · 1119 阅读 · 0 评论 -
批量下载宝宝吧故事集工具
#-*- coding=utf8 -*-import urllib2,os,urllibbaseurl="http://www.baobao88.com"listurl=baseurl+"/lianbo/1083.html"localdir='out'if not os.path.exists(localdir): os.mkdir(localdir) start原创 2015-01-26 21:33:41 · 1219 阅读 · 0 评论 -
netty-protobuf-rpc与protobuf-socket-rpc互通
关键所在:1,protobuf-socket-rpc使用的是短连接,发送完成后,则需要将socket上行关闭2,rpc.proto文件要统一class NettyRpcPipelineFactory implements ChannelPipelineFactory { public ChannelPipeline getPipeline() throws Exception {原创 2013-12-20 08:56:43 · 2041 阅读 · 0 评论 -
片段音乐歌词生成工具
代码很简单,不再解释了,在mac机上实测通过import webfrom web import formimport tempfileimport urllib2import subprocessimport os,re,timedef make_text(string): return stringurls = ('/', 'tutorial', '/downlo原创 2015-08-27 11:41:51 · 621 阅读 · 0 评论