寒假回国后用着一台小破笔记本电脑(X250),只能连回宿舍的台式机玩耍一把。

Linux下有个程序叫做QQWing,可以用于生成不同难度的数独并且解开他们。 配合Vim用于解数独,diff用来判断数独结果,简直是天作之合

基本流程

  1. 用QQWing来生成一个数独,放进文本文件,完成生成步骤。
  2. 然后用Vim、NeoVim打开文件并且人工解完数独,
  3. 最后调用diff来判断前11行结果是否一致(12行之后的空间可用作草稿)。

效果如图:

  1. 运行./sudoku.sh
  2. 把它想办法解完
  3. 退出Vim (:wq) 后自动调用diff比对结果

是不是想想都有点偷税:)

代码如下,10行Bash

#!/usr/bin/env bash
qqwing --generate $@ > original.sudoku
qqwing --solve < original.sudoku > solution.sudoku
cp original.sudoku staging.sudoku
echo "↓↓↓↓↓↓Draft Area↓↓↓↓↓↓" >> staging.sudoku
nvim staging.sudoku
diff -w -B -u12 <(head -n 11 staging.sudoku) <(head -n 11 solution.sudoku)
if (($? != 0)); then
    echo "Your solution is different"
else
    echo "Your solution is correct"
fi