数独是一种益智解谜游戏。初始状态,在 $9\times 9$ 的盘面上,零星分布着一些 1 -- 9 的整数。规则要求玩家在初始状态的基础上,填入 1 -- 9 的数字,使得 $9\times 9$ 的盘面上,每个横行、纵列、$3\times 3$ 宫都有完整且不重复的 1 -- 9 组合。
现在的问题是,给定一个数独答案,如何用代码验证这个答案的正确性。本文使用 C++ 来实现该目标。
这是一篇简短的记录。
C++ 标准模板库的 std::string
很好很强大,但是并没有提供判断一个字符串是否以另一个字符串开始/结束的接口。这里为 std::basic_string<charT>
提供这两个接口。
对字符串的操作一直被认为是程序员的基本功之一。对于一个英文的字符串来说,最简单的操作,就是进行大小写转换了。这不是什么难事,但这里我们讨论的是 C++ 风格的写法。
在数学中,集合是最基本的概念之一。编程时,我们不可避免地会涉及到集合及其相关操作。在 C++ 中,标准模板库(STL)提供了 std::set
/std::unordered_set
两种传统意义上的集合(除此之外,还有 std::multiset
和 std::unordered_multiset
)。其中,std::set
(和 std::multiset
)定义在头文件 set
当中,从 C++98 起就有支持;而 std::unordered_set
(和 std::unordered_multiset
)则定义在头文件 unordered_set
当中,从 C++11 开始支持。
此篇我们讨论如何在 C++ 中进行集合的交集和并集操作。
这是一篇简短的记录。
某台服务器某账号的 crontab
任务被清空,原因不明。同时,该服务器上的 crontab
任务备份未开启。故思考如何恢复 crontab
任务。
经查,CentOS 系统的 crontab
任务的日志,打印在 /var/log/cron
之中。考虑过滤日志:
1 | cat /var/log/cron* | grep CMD | awk -F'CMD' '{print $2}' | awk -F'[(|)]' '{print $2}' | sort -u |
由此得到系统记录过的 crontab
执行命令,过滤其他账号的命令后即可追回目标账号的 crontab
任务。
此外,考虑备份 crontab
;脚本如下:
1 | #!/usr/bin/env bash |