- 博客(122)
- 资源 (2)
- 收藏
- 关注
原创 正整数n的原根
在数论中,原根是一个无法绕开的概念。高斯在他的划时代数学神著《算术研究》中多次提到原根。2、欧拉函数值计算及欧拉函数所包含的整数集合统计。4、如果一个正整数的原根存在,计算它最小原根。都收录大量素数的最小原根,方便查阅。
2022-09-11 19:42:57 421
原创 功能日臻完善的围棋打谱软件(附源代码)
在3月份的时候,围棋打谱软件更新过一版,详见没有退缩的理由(每前进一步都很艰难,但很快乐)一文。到目前为止,软件的功能大为改善。不仅解决了打劫问题,还增加了悔棋、回放、研究等多项功能,并采用此软件操作,在B站发表了几个围棋讲解视频(神之一断——柯洁 Vs AlphaGo),感觉还是比较好的。目前点目功能也基本解决了关键算法,在此次一并公布,希望大家指点。一个人有了承诺就要兑现,这非常重要,非常重要,非常重要,重要的事说三遍。这个软件最后要达到一个什么程度,我不敢承诺,因为涉及到人工智能,心里一点底都没有。但
2022-07-12 09:56:15 783
原创 会解方程会画图的超级计算器
这个计算器功能强大,可以解方程、解不等式,判断素数,比较大小,映射,筛选,精度计算,求导,求积分,求极限,绘制图形等多项功能,操作简单。
2022-07-03 17:30:54 882
原创 你的文件安全吗?试试这款加密解密软件,提供源代码
你的文件安全吗?用这款加密解密软件试试,提供源代码网上有许多文件加密解密软件,但通常是没有公布源代码的。对于重要文件,为安全起见,最好还是用自行设计的软件进行加密解密。这款加密解密软件,是自行设计的,界面简洁,操作起来相当方便,后续提供源代码。加密前,先输入密码,再点击加密按钮。选择待加密文件,加密成功后会有文字提示。解密前,也要先输入密码,再点击解密按钮,选择待解密文件,解密成功后会有文字提示。观察源文件与加密文件内容,完全不同;观察源文件与解密文件内容,看不出有不同。采用16进制比较器进行比较
2022-06-15 10:32:30 149
原创 半小时挑战九行代码(程序试金石)
半小时挑战九行代码(程序试金石) 编写一个在1,2,3,…,n(顺序不能变,n>=3)数字之间插入+或-或什么都不插入,使得计算结果为0的程序,并输出所有的可能性。 例如n=9时,1-23-4-56-7+89=0是一种可能性。
2022-04-12 08:23:33 152
原创 2021-09-19
走马灯数142857问题:有一个六位的整数abcdef,各位数均不相同,以1至6中的任意一个数字相乘,获得的六位数的各位仍然是abcdef的组合,求这个数。解法如下:待求的数范围为100000-170000,采用遍历的方法。设置两个函数,其中一个判断六位数是否各位数均不相同,符合条件的用另外一个函数判断乘2~6是否满足还是一个由abcdef组成的六位数,符合条件的进行打印。def digit_list(n): _digit = [] m = n for _ in range(
2021-09-19 11:42:20 105
原创 一个晚上十点定时关机程序
一个晚上十点定时关机程序方法1:考虑使用批处理文件,建立一个shut.bat文件,打开记事本编辑以下内容::looptimeout 10set hour=%time:~0,2%if %hour% EQU 22 shutdown -sgoto :loop关键语句shutdown -s,即刻关机命令,hour是一个变量,接收当前时间的小时数,至于if……EQU很好理解,如果hour等于22,即达到预设的关机时间,就执行关机命令。至于goto,就是条件不满足时一直循环往复。这个程序最大的痛点是可以
2021-09-19 09:30:02 494
原创 有时候,话可以反着理解
有时候,话可以反着理解A、B、C、D、E参加竞赛,根据下列条件哪些人参加了竞赛:1、A参加时B也参加;2、B和C只有一个参加;3、C和D或都参加或都不参加。4、D和E至少有一个人参加;5、如果E参加,那么A和D都参加。data = ["A", "B", "C", "D", "E"]for a in [0, 1]: for b in [0, 1]: for c in [0, 1]: for d in [0, 1]:
2021-07-22 13:42:10 83
原创 2021-07-18
好像只有一个答案给定等式: A B C D E D F G+ D F G____________ X Y Z D E其中每个字母代表不同的数字(0-9),编程求出这些数字,并打印等式。for g in [0, 5]: for a in range(1, 10): for d in range(1, 10): for b in range(0, 10): for c in range(0, 10):
2021-07-18 18:08:18 77
原创 缺失的第一个正数
力扣答题(4)给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。示例:输入:nums = [1,2,0]输出:3来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/first-missing-positiveclass Solution(object): def firstMissingPositive(self, nums): """ :type nums: List[int]
2021-05-09 22:36:29 76
原创 2021-05-05
力扣答题(3)给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。示例:输入:nums = [-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/3sum思路:暴力破解肯定会超时,用多指针方法比较有效。1、对数组从小到大进行排序。2、分别用三个指针指
2021-05-05 16:31:04 103
原创 2021-05-04
力扣答题(2)给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。示例:输入:height = [0,1,0,2,1,0,1,3,2,1,2,1]输出:6解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。class Solution(object): def trap(self, height): """ :typ
2021-05-04 12:58:52 126
原创 2021-05-02
力扣答题(1)给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。class Solution(object): def twoSum(self, nums, target): """ :type nums: List[int] :type target: int :rtype: List[int] """ for i
2021-05-02 20:35:41 78
原创 2021-03-27
增加打劫功能其实打劫功能还是相对简单的,比那个不入气的判断要简单一些。大致的思路是:1、确定打劫的特征状态。在没有提子前,当出现打劫时,应该是黑白各有一子均无外气。2、当这种特征状态是首次出现,可以进行提劫;如果是连续重复出现,说明是违规提劫,要返回到上一个状态。其实就这么简单。那个不入气的逻辑有些曲折。例如轮黑落子,先看一下黑是否已经无外气,如果是,再判断白棋是否也无外气,如果是,说明是提白棋,不是不入气;如果不是(白棋无外气),说明黑是不入气,返回到上一个状态。有些晕哈。另外增加了一个小的功
2021-03-27 12:05:25 191 1
原创 没有退缩的理由
每前进一步都很艰难,但很快乐参考围棋软件前面那个围棋自娱程序写到提子时出了问题,找了一阵子,最后发现是一个break没有加,很是郁闷。大致是这样的,当每落下一子时,要判断这个子是否跟已在棋盘上相同颜色的子连接在一起,如果是,它可能把2块或3块最多4块原本未完全连接的棋连在一起,一旦它们完全连接,需要把几块棋合并在一起成为一个整体。问题就发生在合并的过程中,使用-1标注合并后需要删除的块,结果这个-1在特定情况下加到了最后,导致一块大棋丢失。对前面那个程序进行了修订,虽然还没有特意考虑打劫,但相信很快会
2021-03-25 22:23:04 216 1
原创 2021-03-22
围棋软件制作了一个简单的围棋自娱软件,功能还很不完善,主要是没有判断胜负和打劫功能,另外提子还有些问题,但基本框架已经完成,先放着看看,后续再改进吧。# coding=gbkimport osimport sysimport copyimport pygamefrom pygame.locals import *pygame.init()screen1 = pygame.display.set_mode((1, 1))os.environ['SDL_VIDEO_CENTERED']
2021-03-22 23:18:31 192
原创 五子棋人机对战(续)
五子棋人机对战(续)参考五子棋人机对战从tkinter改成pygame,主要是熟悉一下pygame的编程模式,具体的也没有什么好说的,就是觉得程序稍微简洁些,直接上代码吧。import osimport sysimport timeimport pygameimport win32apiimport win32conimport win32uifrom pygame.locals import *pygame.init()screen1 = pygame.display.set_
2021-02-19 23:01:28 352 1
原创 五子棋人机对战
五子棋人机对战参考:人机对战——填子游戏的攻防策略关于机器的应对策略,在前文中有所表述,不一一解释,本文进行了修缮和补强,但漏铜依然存在。增加了一个倒计时功能,测试了一下,感觉一般,还是留放在那里,表明曾经研究过,供今后完善。另外策略中增加了禁手。如果没有禁手和先手交换,理论上黑是稳赢的,但本程序还做不到这一点,看网友能否提供一个思路。from tkinter import *import tkinter as tkimport tkinter.messageboximport tkinter.
2021-02-17 13:24:13 935 1
原创 人机对战——填子游戏的攻防策略
人机对战——填子游戏的攻防策略问题:在18×18方阵中轮流在空白处放置黑白棋子,直到有一方形成横、竖、斜方向五连星获胜。参考:填子游戏把程序改成人机对战还是有些意思的。主要思路:1、人用鼠标点击落子,下棋策略靠人。2、机器的策略是:扫描个点,按防守和进攻分别给出分值,选择分值高的一方落子。3、如果分值达到或超过5分,即刻判决某一方获胜;然后分为连成无障碍的4子、连成有障碍的4子和无障碍的3子、连成两个无障碍的3子、连成一个无障碍的3子、连成二个无障碍的2子、连成一个无障碍的2子、其他七种情况,
2021-01-31 14:48:45 324 1
原创 2021-01-28
填子游戏在18×18方阵中轮流在空白处放置黑白子,直到有一方形成横、竖、斜方向五连星获胜。借鉴五子棋游戏编程思路,网上有许多,不一一赘述。直接看代码。from tkinter import *import tkinter.messageboximport numpy as np# 检查鼠标点击是否落在方格中,如果是,返回有效坐标def limit(event): global mark if mark == 0: for y in range(0, 18):
2021-01-28 23:29:07 143 1
原创 公务员经典考试题——翻币问题
公务员经典考试题——翻币问题硬币翻转问题:N(N是偶数)枚硬币均为正面朝上,每次翻转m枚硬币,要把所有的硬币翻转成反面朝上,求最短的操作序列(∗*∗代表正面,O代表反面)。这个问题有一定难度,思路大致如下:1、分别考虑以下几种情况:(1)n%m0或nm(2)m<N/2(3)m>N/2且n%m!=42、对于n%m0或nm,easy。3、对于m<N/2,重点讨论。(1)每次翻m个,直到剩余的∗*∗数量a落入到m<a<2*m之间。进入(2)。(2)a值取半数,为奇
2021-01-23 23:01:03 561 1
原创 硬币翻转
硬币翻转问题:N(N是偶数)枚硬币均为正面朝上,每次翻转N-1枚硬币,要把所有的硬币翻转成反面朝上,求最短的操作序列(*代表正面,O代表反面)。这个问题还是相当简单,如何把程序写漂亮才是重点。思路:每轮翻转,让一个硬币不翻转,其他都翻转。这个不翻转的硬币按顺序从数组中取即可。try: n = int(input("请输入硬币个数(偶数):\n")) if n % 2 != 0: print("输入错误!") exit() coin = ['*'
2021-01-17 10:31:58 572 1
原创 巧排数字
巧排数字问题:将连续整数1、2、……n(n<=12)按一定顺序排成一排,让相邻2个数之和和首尾两个数之和均为素数,输出所有排法。用递归肯定可以解决问题。def prime(n): # 判断是否素数 if n == 2: return True if n % 2 == 0: return False for i in range(3, int(n ** 0.5) + 1, 2): if n % i == 0:
2021-01-16 20:16:54 230
原创 假币之谜
假币之谜有八个硬币a,b,c,d,e,f,g,h,其中一枚是假币,从外观无法分辨,比真币或轻或重。使用天平,用最少比较次数,找出假币,并分辨出轻重。#include <iostream>using namespace std;int weight(float x, float y) { if (x == y)return 0; else if (x > y)return 1; else return 2;}int main(){ float a
2021-01-13 23:16:59 211
原创 递归运用——钱币系统问题
递归运用——钱币系统问题问题:(钱币系统问题) 某钱币系统由 k (k≤20) 种硬币组成,币值依次为 a[1]、 a[2]、……、a[k], 其中 a[i] (i=1,2,……,k) 为互不相同的正整数,且依降序排列, a[1]≤200。给定某整数币值 n(n≤3000), 要求用最少枚数的硬币表示这个币值。输入格式为:第一行:k (硬币种数)第二行:a[1]、 a[2]、 … a[k] (各币值用空格隔开,已按降序排列好)第三行:n (给定的币值)直接在屏幕上输出结果。如果该钱币系统无法表示币
2021-01-10 15:48:12 322
原创 2021-01-03
问题既复杂又简单问题:编写一个在1,2,…,n(顺序不能变,n<=9)数字之间插入+或-或*或/或什么都不插入,使得计算结果为0的程序,并输出所有的可能性。#include<iostream>#include<deque>#include<vector>#include <math.h> #include<string>using namespace std;int n;//以'0'、'1'、'2'、替代' '、'+'、'
2021-01-03 23:21:30 182
原创 C++——do while应用
C++——do while应用移动问题:有一行数据,左边有n个1,右边有n个2,1和2相邻可以交换,至无连续的1相邻和无连续的2相邻为止。显示移动过程。这个问题一开始认为用递归应该没有问题,程序如下:#include <iostream>#include<deque>#include<time.h>using namespace std;void dfs(string s);deque <string> result;string sourc
2021-01-02 14:49:37 223
原创 继续修炼——从一种状态到另一种状态的最短路径(之goto语句)
继续修炼——从一种状态到另一种状态的最短路径(之goto语句)参考:继续修炼——从一种状态到另一种状态的最短路径还是把题目再说一遍,不然续得太多,都不知道题目是什么了。问题:在一行数据中,有3个1,3个2,1个0,0(空格)在中间,1和2分居左右,每个数据占据一格,如下:1, 1, 1, 0, 2, 2, 2通过移动把上述排列变成:2, 2, 2, 0, 1, 1, 1移动规则:1、1只能向右移动,2只能向左移动。2、在下列两种条件下可以移动:一是移动一格,恰好进入到空格子中,二是跳过
2021-01-01 22:38:28 209
原创 继续修炼——从一种状态到另一种状态的最短路径
继续修炼——从一种状态到另一种状态的最短路径(续三)参考继续修炼——从一种状态到另一种状态的最短路径(再续)用C++再写一遍:#include <iostream>#include<deque>#include<time.h>using namespace std;void dfs(string s);deque <string> result;string source, target;time_t start_time;int n;
2021-01-01 12:26:18 232
原创 2020-12-31
继续修炼——从一种状态到另一种状态的最短路径(再续)参考:继续修炼——从一种状态到另一种状态的最短路径(续)当n超过12以后,宽搜就显得时间漫长了。因此,改进方法是必然的。采用递归的方法是解决这类问题比较好的方法。设置了一个交换函数和一个递归函数,在四种情况下递归,即向左移动的两种方式和向右移动的两种方式,程序就不详解解释了。import copyimport timedef dfs(s): state = copy.deepcopy(s) if state == target
2020-12-31 23:29:53 144
原创 2020-12-30
继续修炼——从一种状态到另一种状态的最短路径(续)参见:继续修炼——从一种状态到另一种状态的最短路径问题:在一行数据中,有3个1,3个2,1个0,0(空格)在中间,1和2分居左右,每个数据占据一格,如下:1, 1, 1, 0, 2, 2, 2通过移动把上述排列变成:2, 2, 2, 0, 1, 1, 1移动规则:1、1只能向右移动,2只能向左移动。2、在下列两种条件下可以移动:一是移动一格,恰好进入到空格子中,二是跳过一个与自身非相同数字进入到空格。数字移动或跳动之后留下一个空格。要求
2020-12-30 22:42:16 96 1
原创 2020-12-30
继续修炼——从一种状态到另一种状态的最短路径问题:有两行数据,第一行3个,第二行5个,包括1-5和3个0。数据交换的规则是:各行相邻数据其中之一为0的(另一个不为0)可以相互交换。上下两行之间只能交换中间位置(位置1和位置5)的数据,并且两个数据之一为0(另一个不为0)。例如: 4 5 1 0 2 3 0 0 移动一步可以转换到 4 5 1 0 2 0 3 0 然后再移动一步转换到 4 0 1 0 2 5 3 0 找出从一
2020-12-30 10:46:01 128 1
原创 2020-12-22
八皇后问题——经典再现在8×8的方格中,放置8个皇后,使其相互不冲突,即任意一个皇后所在的行、列和斜线均无其它皇后。以下是其中两种放置方法。 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 2 0 0 0 3 0 0 0 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 5 0 0 6 0 0 0 0 0
2020-12-22 22:47:12 129 1
原创 蛇形排列的种数
蛇形排列的种数问题:在4×4方格中按蛇形排列放置1-16个数字,以下是二种放置方法:13 12 1 214 11 4 315 10 5 616 9 8 71 2 13 124 3 14 115 16 15 106 7 8 9计算总共有多少种放置方法,并打印其中的20种放置方法。这应该是一道竞赛题的变种。解题思路如下。1、分清楚外层递归和内层递归,这个相当关键,详见程序。2、进入放置环节前先看放置是否越
2020-12-21 19:36:46 3493 1
围棋打谱软件,正常下棋并悔棋,具有提子、打劫、不入气等基本功能,按sgf格式保存棋谱,在回放棋谱的基础上进行研究,可以从任何位置
2022-04-27
Python科学计算器
2020-08-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人