Tag: 程序设计

随机数独游戏的算法设计 (Sudoku)

给定一个数独(Sudoku), 我们可以使用深度优先搜索算法(DFS), 迭代加深搜索算法(IDS)或广度优先搜索算法(BFS)来寻找可能的解. 反过来, 如果我们要设计一个算法来生成有效的数独, 我们需要澄清以下问题: 生成的数独(Sudoku)必须有可解状态吗? 是的 生成的数独(Sudoku)有多个解吗? 我们可以假设返回的Suduoku只有1个唯一解 生成的数独(Sudoku)的找解难度? 我们可以为此设置一个参数: 简单, 中等或困难 一共有6.671×10^21个有效的数独状态, 如果我们忽略旋转, 镜像状态等重复的状态, 这个数字就降到了5.4×10^9个状态. 我们可以随机生成一个由数字1-9填充的矩阵, 并检查它是否是有效的数独, 但这非常低效, 因为生成的矩阵极有可能不是有效的数独. 设计一个随机数独的算法 为了设计一个有效的算法, 生成一个随机的有效数独, 我们可以采用以下算法: 使用回溯(深度优先搜索)算法来生成一个具有随机性的有效完整数独. 例如, 我们可以随机选择数字, …

Python创建x.509标准密钥代码示例

用苹果公钥创建一个x.509标准的公钥怎么做? 要创建一个X.509标准的公钥, 首先需要获取苹果公钥. 可以从苹果开发者网站上获取苹果公钥, 然后使用OpenSSL工具将其转换为X.509标准的公钥. 具体步骤如下: 从苹果开发者网站上下载苹果公钥, 并将其保存为.pem格式的文件. 使用OpenSSL工具将.pem格式的文件转换为X.509标准的公钥, 命令如下: openssl x509 -in apple.pem -out apple.cer -outform DER 将转换后的X.509标准的公钥保存为.cer格式的文件. Python创建x.509标准密钥代码示例 以下是使用Python创建X.509标准密钥的示例代码: from cryptography.hazmat.backends import default_backend from cryptography.hazmat.primitives import serialization …

通过BASH脚本显示树莓PI的温度和频率

我们很容易可以通过以下BASH脚本来显示当前树莓PI的温度和频率. #pi@raspberrypi:~ $ cat ./cpu_freq.sh #!/bin/bash temp=`head -n 1 /sys/class/thermal/thermal_zone0/temp | xargs -I{} awk "BEGIN {printf \"%.2f\n\", {}/1000}"` echo $((`cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq`/1000)) MHz, $temp degrees 然后, 我们可以每3秒来显示这个信息: # 每3秒显示 while …

在竞赛中通过向标准输出stdout打印数据来调试leetcode程序

leetcode 网页的代码编辑器很好用, 有一个远程调试 Debugger 的功能, 只不过这个功能是需要付费才能使用的. 而且这个调试功能在比赛中是无法使用的. 其实我们只需要在代码里向 stdout 打印(变量), 运行代码就能在网页中看到值了 – 这样一来就可以很方便的调试程序了. 当您手边没有IDE时, 这是一种调试代码的好方法-有时我在iPad上参加每周的竞赛, 而我没有IDE, 也无法使用内置的leetcode调试器- 在这种情况下, 打印到标准输出是调试打印变量的唯一实用方法. 在此之前, 我只能更改代码并将变量作为调试技术返回-这种方式效率很低. 英文: Using the stdout to debug print the …

模拟算法解决小时候的疑问: 空瓶子换啤酒问题

记得小时候一直在琢磨的问题, 拿空酒瓶(也有可能是可乐)换酒瓶, 最后面一共可以喝几瓶. 今天在 leetcode 看到了这题, 1518. 这题是简单题, 我们通过模拟就能解决. 需要的定义的变量就是总喝的瓶数, 还有就是当前空瓶数. 只要空瓶子够换新酒瓶, 我们就不停的循环这个过程. 需要注意的是新的空瓶数得把原来不够换的那部分也加上. 比如3个空瓶可以换一个新瓶, 现在有5个空瓶, 只够换1个, 然后新的空瓶就是(5-3+1=3)还够换1瓶. 不啰嗦了, 以下就是 Python代码. class Solution: def numWaterBottles(self, numBottles: int, numExchange: int) …

Microbit 游戏编程: 贪心算法也无法让贪吃蛇永生

上一次, 我们介绍了在Microbit上编写最简单的贪吃蛇游戏(Microbit 游戏编程: 不会吃胖的贪食蛇 (自带人工智能)), 不过只是个原形, 因为那只蛇并不会长胖, 有网友说更像是一个男孩爱上一个女孩疯狂的爱情故事. 这一次, 我们将对游戏的关键部分进行修改, 不过考虑到整个 Microbit 的屏幕才25个像素点, 我们加个限制让蛇在长度为10的时候停止生长, 这样的话, 只要你玩得好, 游戏能一直进行下去. 贪吃蛇的身体 由于蛇的身体不再是单个game.LedSprite对象, 我们将需要将蛇的身体块存储在数组中. 我们可以定义一个initSnake函数, 该函数需要传进一组蛇身体坐标并创建相应的精灵数组. function initSnake(arr: Array<number>) { let result = …