碧海潮声大学生网

标题: 大家都来揭开魔术师的诡计 [打印本页]

作者: 枫    时间: 2005-5-26 22:34
提示: 作者被禁止或删除 内容自动屏蔽
作者: 枫    时间: 2005-5-26 22:39
提示: 作者被禁止或删除 内容自动屏蔽
作者: 笨笨啊    时间: 2005-5-27 17:38
<P>一看英文的题目,又这么长,就………………</P>
<P>不想看下去了,给翻译成中文我立马给你写出代码来</P>
作者: 枫    时间: 2005-5-27 17:54
提示: 作者被禁止或删除 内容自动屏蔽
作者: 枫    时间: 2005-5-27 17:56
提示: 作者被禁止或删除 内容自动屏蔽
作者: 笨笨啊    时间: 2005-5-27 22:24
<P>晚上好像没时间了,呵,先看题目</P>
作者: 枫    时间: 2005-5-27 23:47
提示: 作者被禁止或删除 内容自动屏蔽
作者: 枫    时间: 2005-5-28 00:29
提示: 作者被禁止或删除 内容自动屏蔽
作者: 笨笨啊    时间: 2005-5-28 22:24
本想要用好一点的算法,发现没耐心,还是枚举法来得实在
作者: 枫    时间: 2005-5-28 22:27
提示: 作者被禁止或删除 内容自动屏蔽
作者: 笨笨啊    时间: 2005-5-28 22:34
<P>这倒没有,代码早上写了一半多了</P>
<P>中午出去一直忙到现在才回寝室,怎么可能写啊。</P>
<P>唉,明天还得准备总结。明天早起再继续</P>
作者: 笨笨啊    时间: 2005-5-31 13:22
标题: 拖了几天写好了
<P>.程序集 程序集1</P>
<P>.子程序 _启动子程序, 整数型, , 本子程序在程序启动后最先执行</P>
<P>输出调试文本 (“结果:” + 分牌 (“4D 5H 10C 10D QH”))<BR>输出调试文本 (“结果:” + 分牌 (“7H 5C KS 6C 8D”))<BR>返回 (0)  ' 可以根据您的需要返回任意数值</P>
<P>.子程序 分牌, 文本型, , 算了,直接用枚举法反而要好写一些,虽然循环次数要增加<BR>.参数 输入, 文本型<BR>.局部变量 牌, 文本型, , "0"<BR>.局部变量 牌2, 文本型, , "0"<BR>.局部变量 返回文本, 文本型, , "0", 最终返回的牌,最终将返回最小的一组<BR>.局部变量 i, 整数型, , "5"</P>
<P>牌 = 分割文本 (到大写 (输入), “ ”, )  ' 将五张牌放入数组:牌</P>
<P>.如果真 (取数组成员数 (牌) = 5)  ' 防止误输入<BR>    .变量循环首 (1, 5, 1, i [1])<BR>        ' 清除数组 (牌2)<BR>        重定义数组 (牌2, 假, 5)<BR>        ' 第一张牌<BR>        牌2 [1] = 牌 [i [1]]</P>
<P>        .变量循环首 (1, 5, 1, i [2])<BR>            .如果真 (i [2] ≠ i [1])  ' 判断条件<BR>                牌2 [2] = 牌 [i [2]]  ' 第二张牌<BR>                .变量循环首 (1, 5, 1, i [3])  ' 判断条件<BR>                    .如果真 (i [3] ≠ i [1] 且 i [3] ≠ i [2])<BR>                        牌2 [3] = 牌 [i [3]]  ' 第三张牌<BR>                        .变量循环首 (1, 5, 1, i [4])<BR>                            .如果真 (i [4] ≠ i [3] 且 i [4] ≠ i [2] 且 i [4] ≠ i [1])<BR>                                牌2 [4] = 牌 [i [4]]  ' 第四张牌<BR>                                .变量循环首 (1, 5, 1, i [5])<BR>                                    .如果真 (i [5] ≠ i [3] 且 i [5] ≠ i [2] 且 i [5] ≠ i [1] 且 i [5] ≠ i [4])<BR>                                        牌2 [5] = 牌 [i [5]]  ' 第五张牌<BR>                                        ' 输出调试文本 (牌2 [1] + “ ” + 牌2 [2] + “ ” + 牌2 [3] + “ ” + 牌2 [4] + “ ” + 牌2 [5])<BR>                                        .如果真 (是否符合要求 (牌2))<BR>                                            ' 说明排序正确<BR>                                            加入成员 (返回文本, 牌2 [1] + “ ” + 牌2 [2] + “ ” + 牌2 [3] + “ ” + 牌2 [4] + “ ” + 牌2 [5])<BR>                                            输出调试文本 (牌2 [1] + “ ” + 牌2 [2] + “ ” + 牌2 [3] + “ ” + 牌2 [4] + “ ” + 牌2 [5])<BR>                                        .如果真结束</P>
<P>                                    .如果真结束</P>
<P>                                .变量循环尾 ()</P>
<P>                            .如果真结束</P>
<P>                        .变量循环尾 ()</P>
<P>                    .如果真结束</P>
<P>                .变量循环尾 ()</P>

<P><BR>            .如果真结束</P>
<P>        .变量循环尾 ()<BR>    .变量循环尾 ()<BR>    数组排序 (返回文本, 真)  ' 从小到大排序<BR>    .如果真 (取数组成员数 (返回文本) ≥ 1)  ' 是否有解<BR>        返回 (返回文本 [1])<BR>    .如果真结束<BR>    返回 (“”)<BR>.如果真结束<BR>返回 (“”)</P>
<P>.子程序 牌到数值, 整数型, , 将牌和花色转换成数值以便计算<BR>.参数 牌, 文本型<BR>.局部变量 牌2, 文本型<BR>.局部变量 k, 整数型<BR>.局部变量 j, 文本型<BR>.局部变量 临时数, 整数型</P>
<P>牌2 = 到大写 (牌)<BR>j = 取文本左边 (牌2, 取文本长度 (牌2) - 1)  ' 先取出牌值<BR>.判断开始 (j = “A”)<BR>    k = 1<BR>.判断 (j = “J”)<BR>    k = 11<BR>.判断 (j = “Q”)<BR>    k = 12<BR>.判断 (j = “K”)<BR>    k = 13<BR>.判断 (到数值 (j) ≠ 0)  ' 说明是整数型文本,而非A,J,Q,K<BR>    k = 到数值 (j)<BR>.默认</P>
<P>.判断结束<BR>临时数 = k  ' 得到整数部分</P>
<P>j = 取文本右边 (牌2, 1)  ' 取出第二位,即花色<BR>k = 4<BR>.判断开始 (j = “C”)<BR>    k = 1<BR>.判断 (j = “D”)<BR>    k = 2<BR>.判断 (j = “H”)<BR>    k = 3<BR>.判断 (j = “S”)<BR>    k = 4<BR>.默认</P>
<P>.判断结束<BR>临时数 = 临时数 × 10 + k  ' 取得最终的数值<BR>返回 (临时数)</P>
<P>.子程序 是否符合要求, 逻辑型, , 验证五张牌是否符合要求<BR>.参数 数组, 文本型, 数组<BR>.局部变量 返回值, 逻辑型<BR>.局部变量 数值, 整数型, , "0"<BR>.局部变量 i, 整数型<BR>.局部变量 最小位, 整数型<BR>.局部变量 最小值, 整数型<BR>.局部变量 最终值, 整数型</P>
<P>.如果 (取文本右边 (数组 [1], 1) = 取文本右边 (数组 [2], 1))<BR>    .变量循环首 (1, 5, 1, i)<BR>        加入成员 (数值, 牌到数值 (数组 ))<BR>    .变量循环尾 ()<BR>    最小值 = 数值 [3]<BR>    最小位 = 3<BR>    .如果真 (数值 [4] < 最小值)<BR>        最小位 = 4<BR>        最小值 = 数值 [4]<BR>    .如果真结束<BR>    .如果真 (数值 [5] < 最小值)<BR>        最小位 = 5<BR>        最小值 = 数值 [5]</P>
<P>    .如果真结束<BR>    .判断开始 (最小位 = 3)<BR>        .如果 (数值 [4] > 数值 [5])<BR>            最终值 = 数值 [2] + 10 + 10<BR>        .否则<BR>            最终值 = 数值 [2] + 10<BR>        .如果结束</P>
<P>    .判断 (最小位 = 4)<BR>        .如果 (数值 [3] > 数值 [5])<BR>            最终值 = 数值 [2] + 20 + 20<BR>        .否则<BR>            最终值 = 数值 [2] + 20<BR>        .如果结束</P>
<P>    .判断 (最小位 = 5)<BR>        .如果 (数值 [3] > 数值 [4])<BR>            最终值 = 数值 [2] + 30 + 30<BR>        .否则<BR>            最终值 = 数值 [2] + 30<BR>        .如果结束</P>
<P>    .默认</P>
<P>    .判断结束<BR>    .判断循环首 (最终值 > 140)<BR>        最终值 = 最终值 - 130<BR>    .判断循环尾 ()</P>
<P>    返回值 = 最终值 = 数值 [1]<BR>    返回 (返回值)<BR>.否则<BR>    返回 (假)<BR>.如果结束</P>
<P><BR>正在编译现行易程序...<BR>正在预处理现行易程序...<BR>正在进行名称连接...<BR>正在统计需要编译的子程序<BR>正在编译“程序集1”中的“_启动子程序”子程序<BR>正在编译“程序集1”中的“分牌”子程序<BR>正在编译“程序集1”中的“是否符合要求”子程序<BR>正在编译“程序集1”中的“牌到数值”子程序<BR>正在生成主程序入口代码<BR>程序代码编译成功<BR>正在封装易格式目的代码<BR>开始运行被调试易程序<BR>* 5H QH 10D 10C 4D<BR>* 10D 4D QH 10C 5H<BR>* 结果:5H QH 10D 10C 4D<BR>* 6C 5C 7H 8D KS<BR>* 结果:6C 5C 7H 8D KS<BR>被调试易程序运行完毕</P>

<P>自己寒自己一个,代码质量也………………</P>

<P><BR></P>
<P>用易语言的打开</P>
<P><a href="http://www.0580hy.com/bbs/dispbbs.asp?boardID=20&ID=2775&page=1" target="_blank" >http://www.0580hy.com/bbs/dispbbs.asp?boardID=20&ID=2775&page=1</A></P>
作者: 笨笨啊    时间: 2005-5-31 16:12
<P><br></P>
<P>我写成console程序了</P>
<P>下载地址:</P>
<P><a href="http://eastide.zheou.cn/netknave/test.exe" target="_blank" >http://eastide.zheou.cn/netknave/test.exe</A></P>
<P></P>
<P>代码在这里</P>
<P><br></P>
[此贴子已经被作者于2005-5-31 16:13:37编辑过]





欢迎光临 碧海潮声大学生网 (http://www.zjoubbs.com/) Powered by Discuz! X3.2