首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
宝塔
V2EX  ›  分享创造

写了个网页版数独游戏

  •  1
     
  •   mara1 · 75 天前 · 2571 次点击
    这是一个创建于 75 天前的主题,其中的信息可能已经有所发展或是发生改变。
    在线玩: https://emilytimer.github.io/sudoku/
    代码在这: https://github.com/emilytimer/sudoku

    欢迎大佬来瞅瞅
    35 回复  |  直到 2019-09-10 10:14:24 +08:00
        1
    steley   75 天前
    挺好玩的,要是支持左右上下键就好了
        2
    tuding   75 天前 via Android
    滋瓷,我手机上有个数独游戏 APP 都待了几年了
        3
    rekulas   75 天前
    加上错误检测体验更好点
        4
    caNoN2019   75 天前 via Android
    这个随机留空不能保证最终答案只有一个,而你最后验算是根据玩家的 81 个格子与你设定的 81 个格子是否完全一致。这样是不是会导致 如果玩家的答案正确,却不符合你的设定答案,你会判定为玩家错误?
        5
    caNoN2019   75 天前 via Android
    @caNoN2019 又想了下,随机留空能否保证只有唯一的正确答案,还得仔细思考下。我上面的说法不一定正确。
        6
    rekulas   75 天前
    如上所说 问题还很严重
        7
    caNoN2019   75 天前 via Android
    @caNoN2019 刚搜索了一下,生成数独的唯一解算法还是个挺好玩的事,又长见识了。
        8
    newtype0092   75 天前
    随便做了一个就不给通过。。。数独校验只有加法你是怎么算错的?
        9
    newtype0092   75 天前
    @caNoN2019 好像目前没有能批量生成唯一解的,全集空间太大,只能像挖素数一样一点点算,有一个够大的已验证样本集之后,用几种模式变换矩阵,可以把一个变型成多个。
        10
    Building   75 天前
    @caNoN2019 只要有 17 个已知数,数独的解就是唯一的,不存在第二个解。
        11
    rekulas   75 天前
    做游戏不需要考虑唯一解的问题,遍历检查就行了 1ms 都不用
        12
    digimoon   75 天前
    第 81 个空里边,值 GoogleCN 不对
        13
    xiri   75 天前 via Android
    @Building 你搞错了哦,被证明的是小于 17 个已知数的数独必定有多解,但这是充分不必要条件,并不意味着大于等于 17 个已知数的数独必定有唯一解。

    最简单的情况,已知数都集中在两行中,第一行 123456789,第二行 456789123 (这里有 18 个数了,要 17 个的话随便删掉一个就行),你自己看看有多少个解吧
        14
    caNoN2019   75 天前 via Android
    @rekulas 所以我上面的说法是,作者没有生成唯一解,但是校验却用的唯一解的检验方法
        15
    VEEX6   75 天前 via Android
    @caNoN2019 n 年前我也写过一个安卓版的,生成随机盘用的回溯法,然后随机遮掉几个,挺好玩的
        16
    zycojamie   75 天前 via Android
    适配下移动端,样式完全乱了。。
        17
    mara1   75 天前
    大家主要争论唯一解的问题,这个我写完的时候也想过,去查了下,跟 @Build 得到的结果一样,只要你写填上大于 17 个数字,就会只有 1 个答案。
    我这个难度设置最难的概率说 0.3,大概率会填上 0.3*81 = 24 个,所以,基本都会>17 个,我就当只有唯一解了(不要打我)。
    @zycojamie ,移动端不想适配了,本来想写 ios 的,但是苹果开发者要 99 美元才能开通,算了,我还是写个小程序吧。
        18
    mara1   75 天前
    @steley ,房间键是个好想法,我加上。
        19
    mara1   75 天前
    方向键
        20
    mara1   75 天前
    @rekulas , 错误检测也挺好,我也加上。
        21
    mara1   75 天前
    @rekulas ,错误检测功能已上线,欢迎体验
    具体做法:
    1. 加了个 check 按钮,当空格都填上时,检查和答案是否一样,如果不一样,把下标记下来(即 81 个空格中的顺序)
    2. 根据顺序,转换到对应的输入框,给输入框加类名,对应添加样式
        22
    november   75 天前


    我这也不知道错在哪啊。。。。
        23
    mara1   75 天前
    @november ,大佬,我大概知道你是怎么整出来的,第一把你检测出错,直接点重开了,已修复。
    我已经流汗了,感谢你。
        24
    mara1   75 天前
    @steley ,方向键加上了,吃饭去了。
        25
    steley   75 天前
    第一次玩用了 180 秒,现在 90 秒了
        26
    sinv   74 天前
    我浏览器的问题么?总是 147、258、369
        27
    mara1   74 天前
    @steley 是不是感觉良好,偷偷告诉你,我把难度调低了哈哈。
    @sinv ,不是你浏览器的锅,随机生成的,多玩几把就发现乱序了。
        28
    kiddyu   74 天前

    检查了好几遍也没发现错- -
        29
    mara1   74 天前
    @kiddyu , 是个 bug,我刚改好,您再试试?
        30
    cenx   74 天前
    前不久用 TS+React 版实现的塑料数独
    https://cenxky.github.io/sudoku-react
    代码: https://github.com/cenxky/sudoku-react
        31
    mara1   74 天前
    @cenx , 你的生成思路可否简单讲一下,看看我的还有没有优化的地方
        32
    cenx   73 天前
    @mara1 其实我生成的也不是标准的数独,还是有多个解,先生成 17 个随机分布在格子上,然后解出来,接下来挖洞,随机挖 41 ~ 64 个洞,完成。参考代码: https://github.com/cenxky/sudoku-react/blob/master/src/lib/sudoku.ts#L15
        33
    caNoN2019   73 天前 via Android
    @mara1 “只要你写填上大于 17 个数字,就会只有 1 个答案” 真的吗?
        34
    mara1   73 天前
    @cenx ,为什么要用框架啊哈哈
    @caNoN2019 不确定,我也是 google 出来的
        35
    cenx   73 天前
    @caNoN2019 明显是假的

    @mara1 你说 antd? 随手拿的撸 UI 的而已
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   4064 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 31ms · UTC 07:15 · PVG 15:15 · LAX 23:15 · JFK 02:15
    ♥ Do have faith in what you're doing.