2个版本

0.1.1 2022年4月20日
0.1.0 2022年4月20日

#8 in #│

MIT/Apache

29KB
396 行(不包括注释)

binairo


关于


binairo规则

据我所知,目标是在一个NxN的二次方格中用1和0填充,使得

  • 每行和每列中的1和0数量相等,并且
  • 没有单元格中的数字与左右单元格或上下单元格相同。

命令

binairo 将读取两个参数。第一个是必需的

  • binairo<输入-文件-名称> <要打印的解决方案数量>

'input-file-name' 应该是定义起始板的文件(参见 ./examples 目录)

'要打印的解决方案数量' 默认为1


示例

编译

$ cargo build --release
   Compiling binairo v0.1.0 (/home/davezwieback/rust_src/binairo)
    Finished release [optimized] target(s) in 1.12s

并搜索示例中的第一个解决方案

$ ./target/release/binairo ./examples/6x6.cfg
  Will read input file: ./examples/6x6.cfg
  Starting for:
  ╔═══════════════════════╗
   . │ 1 │ . │ . │ . │ . ║
  ║───┼───┼───┼───┼───┼───║
   . │ . │ . │ . │ . │ 1 ║
  ║───┼───┼───┼───┼───┼───║
   . │ . │ . │ 0 │ . │ . ║
  ║───┼───┼───┼───┼───┼───║
   0 │ . │ . │ 0 │ . │ . ║
  ║───┼───┼───┼───┼───┼───║
   . │ . │ . │ . │ 1 │ . ║
  ║───┼───┼───┼───┼───┼───║
   . │ 1 │ 1 │ . │ 1 │ . ║
  ╚═══════════════════════╝

  Found 1 Solution(s):

  ╔═══════════════════════╗
   0 │ 1 │ 0 │ 1 │ 0 │ 1 ║
  ║───┼───┼───┼───┼───┼───║
   1 │ 0 │ 0 │ 1 │ 0 │ 1 ║
  ║───┼───┼───┼───┼───┼───║
   1 │ 0 │ 1 │ 0 │ 1 │ 0 ║
  ║───┼───┼───┼───┼───┼───║
   0 │ 1 │ 1 │ 0 │ 0 │ 1 ║
  ║───┼───┼───┼───┼───┼───║
   1 │ 0 │ 0 │ 1 │ 1 │ 0 ║
  ║───┼───┼───┼───┼───┼───║
   0 │ 1 │ 1 │ 0 │ 1 │ 0 ║
  ╚═══════════════════════╝

  Time: 0.000047579 sec

搜索示例中的前5个解决方案(实际上只有3个)

$ ./target/release/binairo ./examples/10x10.cfg 5
  Will read input file: ./examples/10x10.cfg
  Starting for:
  ╔═══════════════════════════════════════╗
   . │ . │ . │ . │ . │ . │ 1 │ 0 │ . │ . ║
  ║───┼───┼───┼───┼───┼───┼───┼───┼───┼───║
   . │ 0 │ . │ . │ . │ . │ . │ . │ . │ . ║
  ║───┼───┼───┼───┼───┼───┼───┼───┼───┼───║
   . │ . │ 1 │ . │ . │ 1 │ . │ 1 │ . │ . ║
  ║───┼───┼───┼───┼───┼───┼───┼───┼───┼───║
   . │ 0 │ 1 │ 0 │ . │ 0 │ . │ . │ . │ 1 ║
  ║───┼───┼───┼───┼───┼───┼───┼───┼───┼───║
   . │ 0 │ . │ . │ . │ . │ 0 │ . │ 1 │ . ║
  ║───┼───┼───┼───┼───┼───┼───┼───┼───┼───║
   . │ . │ . │ . │ 0 │ . │ . │ 1 │ 1 │ . ║
  ║───┼───┼───┼───┼───┼───┼───┼───┼───┼───║
   . │ . │ 0 │ . │ . │ . │ . │ . │ . │ . ║
  ║───┼───┼───┼───┼───┼───┼───┼───┼───┼───║
   . │ . │ . │ . │ 0 │ 1 │ . │ . │ . │ . ║
  ║───┼───┼───┼───┼───┼───┼───┼───┼───┼───║
   1 │ 1 │ . │ 0 │ . │ 1 │ . │ . │ . │ . ║
  ║───┼───┼───┼───┼───┼───┼───┼───┼───┼───║
   1 │ . │ . │ . │ 1 │ . │ . │ . │ . │ 0 ║
  ╚═══════════════════════════════════════╝

  Found 3 Solution(s):

  ╔═══════════════════════════════════════╗
   0 │ 0 │ 1 │ 1 │ 0 │ 0 │ 1 │ 0 │ 1 │ 1 ║
  ║───┼───┼───┼───┼───┼───┼───┼───┼───┼───║
   1 │ 0 │ 0 │ 1 │ 0 │ 0 │ 1 │ 0 │ 1 │ 1 ║
  ║───┼───┼───┼───┼───┼───┼───┼───┼───┼───║
   0 │ 1 │ 1 │ 0 │ 1 │ 1 │ 0 │ 1 │ 0 │ 0 ║
  ║───┼───┼───┼───┼───┼───┼───┼───┼───┼───║
   0 │ 0 │ 1 │ 0 │ 1 │ 0 │ 1 │ 1 │ 0 │ 1 ║
  ║───┼───┼───┼───┼───┼───┼───┼───┼───┼───║
   1 │ 0 │ 0 │ 1 │ 0 │ 1 │ 0 │ 0 │ 1 │ 1 ║
  ║───┼───┼───┼───┼───┼───┼───┼───┼───┼───║
   0 │ 1 │ 1 │ 0 │ 0 │ 1 │ 0 │ 1 │ 1 │ 0 ║
  ║───┼───┼───┼───┼───┼───┼───┼───┼───┼───║
   1 │ 1 │ 0 │ 0 │ 1 │ 0 │ 1 │ 1 │ 0 │ 0 ║
  ║───┼───┼───┼───┼───┼───┼───┼───┼───┼───║
   0 │ 0 │ 1 │ 1 │ 0 │ 1 │ 1 │ 0 │ 0 │ 1 ║
  ║───┼───┼───┼───┼───┼───┼───┼───┼───┼───║
   1 │ 1 │ 0 │ 0 │ 1 │ 1 │ 0 │ 0 │ 1 │ 0 ║
  ║───┼───┼───┼───┼───┼───┼───┼───┼───┼───║
   1 │ 1 │ 0 │ 1 │ 1 │ 0 │ 0 │ 1 │ 0 │ 0 ║
  ╚═══════════════════════════════════════╝


  ╔═══════════════════════════════════════╗
   0 │ 0 │ 1 │ 1 │ 0 │ 0 │ 1 │ 0 │ 1 │ 1 ║
  ║───┼───┼───┼───┼───┼───┼───┼───┼───┼───║
   1 │ 0 │ 0 │ 1 │ 1 │ 0 │ 1 │ 0 │ 0 │ 1 ║
  ║───┼───┼───┼───┼───┼───┼───┼───┼───┼───║
   0 │ 1 │ 1 │ 0 │ 0 │ 1 │ 0 │ 1 │ 1 │ 0 ║
  ║───┼───┼───┼───┼───┼───┼───┼───┼───┼───║
   0 │ 0 │ 1 │ 0 │ 1 │ 0 │ 1 │ 1 │ 0 │ 1 ║
  ║───┼───┼───┼───┼───┼───┼───┼───┼───┼───║
   1 │ 0 │ 0 │ 1 │ 0 │ 1 │ 0 │ 0 │ 1 │ 1 ║
  ║───┼───┼───┼───┼───┼───┼───┼───┼───┼───║
   0 │ 1 │ 1 │ 0 │ 0 │ 1 │ 0 │ 1 │ 1 │ 0 ║
  ║───┼───┼───┼───┼───┼───┼───┼───┼───┼───║
   1 │ 1 │ 0 │ 0 │ 1 │ 0 │ 1 │ 1 │ 0 │ 0 ║
  ║───┼───┼───┼───┼───┼───┼───┼───┼───┼───║
   0 │ 0 │ 1 │ 1 │ 0 │ 1 │ 1 │ 0 │ 0 │ 1 ║
  ║───┼───┼───┼───┼───┼───┼───┼───┼───┼───║
   1 │ 1 │ 0 │ 0 │ 1 │ 1 │ 0 │ 0 │ 1 │ 0 ║
  ║───┼───┼───┼───┼───┼───┼───┼───┼───┼───║
   1 │ 1 │ 0 │ 1 │ 1 │ 0 │ 0 │ 1 │ 0 │ 0 ║
  ╚═══════════════════════════════════════╝


  ╔═══════════════════════════════════════╗
   0 │ 1 │ 1 │ 0 │ 1 │ 0 │ 1 │ 0 │ 0 │ 1 ║
  ║───┼───┼───┼───┼───┼───┼───┼───┼───┼───║
   1 │ 0 │ 0 │ 1 │ 0 │ 0 │ 1 │ 0 │ 1 │ 1 ║
  ║───┼───┼───┼───┼───┼───┼───┼───┼───┼───║
   0 │ 1 │ 1 │ 0 │ 0 │ 1 │ 0 │ 1 │ 1 │ 0 ║
  ║───┼───┼───┼───┼───┼───┼───┼───┼───┼───║
   0 │ 0 │ 1 │ 0 │ 1 │ 0 │ 1 │ 1 │ 0 │ 1 ║
  ║───┼───┼───┼───┼───┼───┼───┼───┼───┼───║
   1 │ 0 │ 0 │ 1 │ 0 │ 1 │ 0 │ 0 │ 1 │ 1 ║
  ║───┼───┼───┼───┼───┼───┼───┼───┼───┼───║
   0 │ 1 │ 1 │ 0 │ 0 │ 1 │ 0 │ 1 │ 1 │ 0 ║
  ║───┼───┼───┼───┼───┼───┼───┼───┼───┼───║
   1 │ 0 │ 0 │ 1 │ 1 │ 0 │ 1 │ 1 │ 0 │ 0 ║
  ║───┼───┼───┼───┼───┼───┼───┼───┼───┼───║
   0 │ 0 │ 1 │ 1 │ 0 │ 1 │ 1 │ 0 │ 0 │ 1 ║
  ║───┼───┼───┼───┼───┼───┼───┼───┼───┼───║
   1 │ 1 │ 0 │ 0 │ 1 │ 1 │ 0 │ 0 │ 1 │ 0 ║
  ║───┼───┼───┼───┼───┼───┼───┼───┼───┼───║
   1 │ 1 │ 0 │ 1 │ 1 │ 0 │ 0 │ 1 │ 0 │ 0 ║
  ╚═══════════════════════════════════════╝

  Time: 0.000597198 sec

问候

也要感谢所有参与rust、cargo、atom或任何crate开发的人。我真的很享受从中受益于这项伟大的工作。

没有运行时依赖