发表于 2024-2-13 22:51:21

春碗刘千魔术解析易语言版本

<p></p>
<p>'&nbsp;&rsquo;&lsquo;揭秘:<br />' 重要的步骤前 我加了* 表示<br />' 第一个*号, 就是从顶部拿3张牌 插入中间,结果会怎样,不管原来几张牌如何排列,经过本步骤后一定会出现首张与尾张相同的情况,如果没做到,可以和小尼一桌。<br />' 这里延伸一下, 如果魔术开始是5张牌,这里就要拿4张牌, 依次类推。。。<br /><br /><br />' 第二个*号,很神奇,必须的步骤,使底牌排在了准确的位置,具体来说就是:<br />' 如果 手余 5 张牌,循环一轮后底牌在第 3 位置,如果手余 6 张牌,循环一轮后底牌在 第 5 位置,本操作很重要,使其正好符合 约瑟夫序列<br /><br />' 第三个*号,约瑟夫问题的实施。过程不能错<br /><br />' 至于为何是下翻7张,其实也不是巧合,有兴趣去了解下约瑟夫问题, 下面我们来分析 约瑟夫问题的解法,递归法。<br /><br />' 本程序只从程序算法角度解决问题,还有更好的数学解法,从略。<br /><br />最后加上&nbsp;约瑟夫问题的解法 ,完美了<br /><br /><br />.版本 2<br /><br />.子程序 子程序报数问题<br />.局部变量 n, 整数型<br />.局部变量 m, 整数型<br />.局部变量 people, , , "0"<br />.局部变量 i, 整数型<br />.局部变量 j, 整数型<br />.局部变量 count, 整数型<br /><br />' 设有n个人(编号从1到n)围成一圈,从第一个人开始报数,数到m的人出列,然后从出列的下一个人开始重新报数,直到所有人依次出列。问,最后一个出列的人的编号是多少?<br />n = 到整数 (编辑框3.内容)&nbsp;&nbsp;' 总人数)<br />m = 到整数 (编辑框4.内容)&nbsp;&nbsp;' 报数到m的人出列<br />重定义数组 (people, 假, n)<br />.计次循环首 (n, i)<br />&nbsp; &nbsp; people&nbsp;= 1&nbsp;&nbsp;' '初始化每个人的状态为在圈内<br />.计次循环尾 ()<br />count = 0&nbsp;&nbsp;' 计数器,记录报数到m的人<br />i = 1&nbsp;&nbsp;' 从第1个人开始报数<br />j = 0&nbsp;&nbsp;' 记录出圈的人数<br />.判断循环首 (j < n - 1)&nbsp;&nbsp;' 当出圈人数小于总人数时循环<br />&nbsp; &nbsp; .如果 (people&nbsp;= 1)<br />&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;count = count + 1&nbsp;&nbsp;' 报数加1<br />&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;.如果 (count = m)&nbsp;&nbsp;' 如果报数到m了<br />&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;count = 0&nbsp;&nbsp;' 重新开始报数<br />&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;people&nbsp;= 0&nbsp;&nbsp;' 将这个人标记为出圈<br />&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;j = j + 1&nbsp;&nbsp;' 出圈人数加1<br />&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;输出调试文本 (数组_hebing_整数 (people, &ldquo;,&rdquo;))<br />&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;.否则<br /><br />&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;.如果结束<br /><br /><br />&nbsp; &nbsp; .否则<br /><br />&nbsp; &nbsp; .如果结束<br />&nbsp; &nbsp; i = i + 1&nbsp;&nbsp;' 继续报数<br />&nbsp; &nbsp; .如果真 (i > n)<br />&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;i = 1&nbsp;&nbsp;' 如果到了最后一个人,则从第一个人继续报数<br />&nbsp; &nbsp; .如果真结束<br />。。。<br /><br />话说论坛为啥不能直接上传易语言源码格式<br /><br />源码链接:<span style="color: #e03e2d;"><a style="color: #e03e2d;" href="https://pan.quark.cn/s/56b94ace0a14" target="_blank" rel="noopener">https://pan.quark.cn/s/56b94ace0a14</a></span></p>
页: [1]
查看完整版本: 春碗刘千魔术解析易语言版本