V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
mathzhaoliang
V2EX  ›  Python

秀一个 Python 脚本生成的新作品

  •  7
     
  •   mathzhaoliang ·
    neozhaoliang · 2017-10-10 13:59:12 +08:00 · 6696 次点击
    这是一个创建于 2626 天前的主题,其中的信息可能已经有所发展或是发生改变。

    请看动态图: https://github.com/neozhaoliang/pywonderland/raw/master/img/wilson.gif

    这个图演示的是概率论中的一个随机算法,叫做 Wilson 算法,它生成一个完美迷宫(即一个生成树),而且这个迷宫是在所有完美迷宫中等概率地随机选取的,UST 这个单词的意思是 uniform spanning tree 的简写,即服从一致分布的生成树。

    生成迷宫后根据每个顶点与起点的距离对迷宫进行染色,使用的是宽度优先搜索算法。

    整个动态图是用 python 一次生成的,不调用任何外部程序和第三方模块。(字体文件没有办法,这是必须的,不过如果不嵌入文本,只生成迷宫的话则不需要此文件)。只要你安装了纯净版的 python2 或者 python3,那么不需要安装任何依赖即可运行。

    程序运行时间一般不超过半分钟,生成的动态图一般在 1M 左右,一般包含 1000 - 5000 帧。(是的你没看错,就是这么拽)

    项目之前在论坛上发过,不过这次玩了一点新花样。当然最精彩的永远在后面。下一个项目双曲蜂巢正在紧张制作中。

    49 条回复    2017-10-23 11:31:10 +08:00
    z0z
        1
    z0z  
       2017-10-10 14:30:36 +08:00
    我除了回复还能干什么
    mathzhaoliang
        2
    mathzhaoliang  
    OP
       2017-10-10 14:34:07 +08:00
    @z0z 术业有专攻啊。每个人用 python 干的事情是不一样的,我只是选了一个比较少有人玩的方向。
    lieh222
        3
    lieh222  
       2017-10-10 14:41:02 +08:00
    一脸蒙蔽的进来,一脸蒙蔽的出去
    z0z
        4
    z0z  
       2017-10-10 14:42:29 +08:00
    @mathzhaoliang 多谢安慰啊。突然想起来了,大神请移步到这里 https://www.v2ex.com/t/395736#reply3 可否点拨一下文中的那个连接实现计算极限功能的大概原理?
    BBCCBB
        5
    BBCCBB  
       2017-10-10 14:44:19 +08:00
    cool
    mathzhaoliang
        6
    mathzhaoliang  
    OP
       2017-10-10 14:50:42 +08:00
    @z0z 它那个网站只是调用了后台的一个程序(我猜他是用了 mathematica,不过也可能用的是自己写的其它程序)


    处理多项式,微分,积分这些属于符号计算的领域(记得吴文俊的机器证明吗?),符号计算有一套自己的算法来表示和研究数学对象,它与通常进行数值计算的科学计算器很不一样。比如分解多项式,它就是先在有限域上计算(有限域运算比较慢,但是不存在精度损失的问题),然后回到实数域上。插值的方法也很常用,但是不是你想的那种用法。
    xrlin
        7
    xrlin  
       2017-10-10 14:50:52 +08:00
    厉害
    ipwx
        8
    ipwx  
       2017-10-10 14:53:25 +08:00
    @z0z Python 的话,有 SimPy,有 Sage Math。
    vtwoextb
        9
    vtwoextb  
       2017-10-10 15:01:22 +08:00
    一脸蒙蔽的进来,一脸蒙蔽的出去
    SakuraSa
        10
    SakuraSa  
       2017-10-10 15:02:16 +08:00
    很 cool,不知道能不能放出源码供大家学习一下?
    z0z
        11
    z0z  
       2017-10-10 15:05:22 +08:00
    @mathzhaoliang 多谢,我按照这个思路先去查查,目前我还不能就此问题回复,因为我还不知道该说什么,我是不是暴露了我的数学还很不好.......

    @ipwx 多谢啊,这个我也去查查。
    shingle
        12
    shingle  
       2017-10-10 15:06:34 +08:00
    @SakuraSa 根据 gif 图的路径看不出来 github 项目地址么 ╮(╯_╰)╭
    CEBBCAT
        13
    CEBBCAT  
       2017-10-10 15:17:28 +08:00 via Android
    好棒!我要在我们 Minecraft 服务器用这个做多层迷宫
    dalang
        14
    dalang  
       2017-10-10 15:20:26 +08:00
    cool
    malkavia
        15
    malkavia  
       2017-10-10 15:35:02 +08:00
    github 已 star
    好厉害
    SakuraSa
        16
    SakuraSa  
       2017-10-10 15:42:33 +08:00
    @shingle 我没注意到...
    点进去居然发现是我以前 star 过的...
    mathzhaoliang
        17
    mathzhaoliang  
    OP
       2017-10-10 15:51:31 +08:00
    @CEBBCAT 这个方法比常用的 Prim, Kruskal 算法要慢,它的关键在于生成的迷宫服从一致分布。你在游戏里面用这个算法估计会很慢 。。。
    CEBBCAT
        18
    CEBBCAT  
       2017-10-10 17:17:31 +08:00
    @mathzhaoliang #17 (●'◡'●),人工识图盖迷宫
    Mcatt
        19
    Mcatt  
       2017-10-10 17:21:37 +08:00
    厉害
    liyang803
        20
    liyang803  
       2017-10-10 17:22:37 +08:00
    一脸蒙蔽的进来,一脸蒙蔽的出去
    linuxchild
        21
    linuxchild  
       2017-10-10 17:51:21 +08:00
    一脸蒙蔽的进来,一脸蒙蔽的出去
    cbiqih
        22
    cbiqih  
       2017-10-10 17:56:03 +08:00
    一脸蒙蔽的出去,再一脸蒙蔽的进来~
    ashin
        23
    ashin  
       2017-10-10 18:27:38 +08:00
    厉害
    xiaozizayang
        24
    xiaozizayang  
       2017-10-10 20:01:43 +08:00
    很早就看到大佬的项目 继续膜拜
    newworld
        25
    newworld  
       2017-10-10 20:19:51 +08:00
    已 star https://github.com/neozhaoliang
    真大佬...收下我的膝盖!哈哈哈
    ranleng
        26
    ranleng  
       2017-10-10 20:22:44 +08:00
    一脸蒙蔽的进来,一脸蒙蔽的思考,一脸蒙蔽的出去.
    (先 star 了.. 明天研究研究
    mathzhaoliang
        27
    mathzhaoliang  
    OP
       2017-10-10 21:52:06 +08:00 via Android
    @newworld
    @ranleng
    @xiaozizayang
    欢迎大家提出意见!
    Chingim
        28
    Chingim  
       2017-10-10 21:57:06 +08:00
    数学好的都是真大神
    zingl
        29
    zingl  
       2017-10-10 22:09:27 +08:00
    还以为是能生成 python 脚本的新东西
    yang2yang
        30
    yang2yang  
       2017-10-10 22:20:54 +08:00
    膜拜大佬
    Tunar
        31
    Tunar  
       2017-10-11 08:57:08 +08:00 via Android
    很 coooooool !
    lxy42
        32
    lxy42  
       2017-10-11 09:36:21 +08:00
    厉害
    zjddp
        33
    zjddp  
       2017-10-11 12:18:07 +08:00
    第 2500 star 已送上
    mathzhaoliang
        34
    mathzhaoliang  
    OP
       2017-10-11 12:29:41 +08:00
    @zjddp 哇,谢谢!!
    zhangzixu
        35
    zhangzixu  
       2017-10-11 13:55:16 +08:00
    学习学习
    sennes
        36
    sennes  
       2017-10-11 17:33:17 +08:00

    挺有趣的
    mathzhaoliang
        37
    mathzhaoliang  
    OP
       2017-10-12 08:33:52 +08:00
    @sennes 很棒!怎么做到在回复里面贴图片的?
    mathzhaoliang
        38
    mathzhaoliang  
    OP
       2017-10-12 11:14:52 +08:00
    @sennes 我知道了。你是传到新浪图库然后用 md 格式引入的。。。
    sennes
        39
    sennes  
       2017-10-12 11:24:18 +08:00
    @mathzhaoliang #36
    Hello 如果是新浪图库的话 直接贴地址就行了 不需要加 Markdown 格式
    另外我用的是一款叫 V2EX plus 的 Chrome 插件 可以直接在回复中插图的
    sennes
        40
    sennes  
       2017-10-12 11:59:33 +08:00
    @mathzhaoliang #36

    改了下颜色、调成正方形。path 和 fill 调成一样颜色。
    可以用来做头像了哈哈
    mathzhaoliang
        41
    mathzhaoliang  
    OP
       2017-10-12 14:27:20 +08:00
    @sennes 可以当头像吗?我看 V2EX 允许 GIF 格式的图片,但是上传动图作为头像会报错吧?
    sennes
        42
    sennes  
       2017-10-12 14:29:55 +08:00
    @mathzhaoliang #39 哈哈有些网站支持 gif 动图头像的。
    mathzhaoliang
        43
    mathzhaoliang  
    OP
       2017-10-13 15:58:53 +08:00
    @sennes 我在这个项目下的另一个程序 Reaction Diffusion Simulation 也可以用来生成字符动态图:

    http://wxt.sinaimg.cn/thumb300/4e130e36ly1fkgoanosrmg205k02snmt.gif?tags=%5B%5D
    mathzhaoliang
        44
    mathzhaoliang  
    OP
       2017-10-13 16:00:06 +08:00
    @sennes 那个地址不对,好像应该这样

    sennes
        45
    sennes  
       2017-10-13 18:04:41 +08:00
    @mathzhaoliang #42 好 我研究一下!
    f8281113
        46
    f8281113  
       2017-10-13 23:08:45 +08:00
    一脸蒙蔽的进来,一脸蒙蔽的出去 ^v^
    dd0754
        47
    dd0754  
       2017-10-14 00:02:06 +08:00
    一脸蒙蔽的进来,一脸蒙蔽的出去
    wisetc
        48
    wisetc  
       2017-10-15 17:42:09 +08:00
    高深
    buyaoshuohua
        49
    buyaoshuohua  
       2017-10-23 11:31:10 +08:00
    一脸蒙蔽的进来,一脸蒙蔽的出去
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3993 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 05:14 · PVG 13:14 · LAX 21:14 · JFK 00:14
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.