因此,我必须编写一个bash脚本来检查9×9“sudoku”解决方案是否有效,但简化的是我不必将其划分为3×3,而只是检查行和列是否包含任何重复的数字,以及有效数字仅为1-9 ..

这是我的想法,但无法让它工作:

#!/bin/bash

error="false"

count=0

#this would be for columns

#for i in 1 2 3 4 5 6 7 8 9

#do

#cat sudoku.txt | awk -F "" '{ print $'$i'}' | uniq -c | awk '$1 > 1 { count++ } END { print count }'

#done

#and this would be for rows

for i in 1 2 3 4 5 6 7 8 9

do

cat sudoku.txt | awk '{ print FNR=$'$i'}' | uniq -c |

awk '$1 > 1 { count++ } END { print count }' |

awk ' count > 0 { $error="true" } END { print $i }' |

awk '{ if ($error = "true") print "Wrong data!"; else print "Correct data!"; } '

done

最佳答案

$awk '

function check(num) {

return num != 45 ? 1 : 0;

}

{

row = 0;

for (i = 1; i <= 9; i++) {

row += $i;

col[i] += $i;

}

if (check(row) > 0) {

errors[++error_len] = sprintf("error in line %s: %s", FNR, $0);

}

}

END {

for (i = 1; i <= 9; i++) {

if (check(row) > 0) {

errors[++error_len] = sprintf("error in column %s: %s", i, col[i]);

}

}

if (error_len) {

for (i = 0; i <= error_len; i++) {

print(errors[i]);

}

}

else {

print("all good");

}

}

' sudoku

error in line 4: 6 7 1 4 8 2 6 9 3

$cat sudoku

8 1 2 9 7 4 3 6 5

9 3 4 6 5 1 7 8 2

7 6 5 8 2 3 9 4 1

6 7 1 4 8 2 6 9 3

2 8 9 3 6 5 4 1 7

6 4 3 7 1 9 2 5 8

1 9 6 5 3 7 8 2 4

3 2 8 1 4 6 5 7 9

4 5 7 2 9 8 1 3 6

Linux数独代码,linux – Bash简化数独相关推荐

  1. linux缓存代码,Linux使用的缓存

    Linux使用的缓存 6.7.1 Linux使用的缓存 不管在硬件设计还是软件设计中,高速缓存是获得高性能的常用手段.Linux 使用了多种和内存管理相关的高速缓存. 1. 缓冲区高速缓存: 缓冲区高 ...

  2. linux 定时器 代码,linux C++ 定时器代码

    linux C++ 定时器代码:#include #include #include using namespace std; /* union sigval { int sival_int; //i ...

  3. linux mtp 代码,Linux MTP 的故事

    Linux下面有许许多多糟糕的故事,输入法算是其中之一,不过今天我们要讲的是另外一个故事. 这个故事本质上和KDE关系不大,不过也算让我纠结了许久了. 首先来介绍一下MTP,MTP是Media Tra ...

  4. linux ntpdate代码,Linux ntpdate命令详解

    ntpdate命令用于同步更新互联网时间,或者NTP服务器时间 NTP服务器[Network Time Protocol(NTP)]是用来使计算机时间同步化的一种协议,它可以使计算机对其服务器或时钟源 ...

  5. copy文件的Linux程序代码,Linux下C语言实现CopyFile

    Linux下C语言实现文件拷贝 /* Function:copy file from file1 to file2 How to execute: ./copyfile file1 file2   ( ...

  6. linux samba代码,Linux下Samba服务器源码安装及配置

    获取samba源代码 你可以通过执行svn命令svn co svn://svnanon.samba.org/samba/trunk samba.获取最新的samba源文件,也可以直接从http://s ...

  7. linux 文件系统 代码,Linux文件系统介绍

    本篇博文介绍一下Linux系统的文件系统, 由于Linux标准委员会制定了一个文件系统标准FHS, 文件系统层级标准, 规定Linux发行版应该创建哪些目录存储特定类型的文件. 根目录记为 / 一级目 ...

  8. 初学linux系统代码,linux初学者-系统日志(二)(示例代码)

    先前在(一)中介绍到在不同主机间日志同步的方法,在一台主机上可以看到另一台主机的日志.这里会介绍系统日志方面的一些其他内容. 1.日志的采集格式 在日志的采集中,由图可以看出,这样的排列或者显示方式会 ...

  9. linux ps 代码,Linux ps命令详解(示例代码)

    ps命令是Process Status的缩写, 用来列出系统中当前运行的那些进程. ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想要动态的显示进程信息,就可以使用to ...

  10. linux cat代码,linux cat命令(示例代码)

    1.cat命令功能 cat命令的用途是连接文件或标准输入并打印.这个命令常用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示,它常与重定向符号配合使用 2.cat命令格式 ca ...

最新文章

  1. c#书写规范之---注释
  2. 定时备份FTP+Mysql到云服务器
  3. C语言关于signal()函数
  4. 国内常用的学习flutter地址
  5. iis php 假死 nginx,网站假死 重启NGINX无效 必须重启PHP 原因分析
  6. 转:centos8开启防火墙端口
  7. 搜狐视频如何开启青少年模式
  8. html5虚拟摇杆,[Unity插件] 虚拟摇杆EasyTouch
  9. f分布表完整图_如何用Excel制作频率(频数)分布表(图)?
  10. docker-将ab测试工具打包镜像
  11. 20170919_C++面试问题记录
  12. python处理excel函数库_Python 操作 Excel 的函数库
  13. 数据恢复技术与LVM数据恢复方法
  14. 利用多线程爬点dianying回家慢慢看【python爬虫入门进阶】(05)
  15. Ubuntu设置开机自启动
  16. 微信小程序开发系列(五)——小程序中存储emoji表情符
  17. 解决vs2019中vsvim无法使用ctrl+[的问题
  18. 我的功放和你们用的功放芯片的SD_MUTE脚电平不一样_该如何处理
  19. openwrt上的asterisk的VOIP系统的建立
  20. matlab butter stop,Matlab butter函数设计滤波器

热门文章

  1. python语言支持函数式编程_python 函数式编程学习笔记
  2. 鸿蒙系统卸载App,强力卸载手机软件
  3. mysql 章节作业题
  4. React Suspense lazy
  5. excel表格横向纵向变换_excel2016如何把纵向的数据变为横向
  6. EPP-常见问题总结
  7. QT笔记- 如何判断窗口小部件是否自动出现(或隐藏)了滑条?
  8. 计算机思维在绘画方面的应用,运用电脑绘画培养学生创新思维能力
  9. 【说明】最近文章可在掘金查看
  10. win8计算机显示在桌面快捷方式,win10、win8.1系统桌面快捷方式图标显示异常怎么办-系统操作与应用 -亦是美网络...