作者LeafLu (小叶)
看板C_Sharp
标题[问题] 1A2B判断
时间Wed Jan 11 23:17:29 2017
大家好
不好意思请问一下大家
如何判断B的个数?
我想要让2位使用者textbox输入数字(4位数)让对方来猜
模板:
http://imgur.com/a/3X6M2
(左上textBox1 右上textBox2
左中textBox3 右中textBox4)
用到了
int A=0,B=0;
char[] guess=new char[4];
guess=textBox3.Text.ToCharArray();
char[] p2number=new char[4]
p2number=textBox2.Text.ToCharArray();
爬文看到的都是数字不能重复的范例
请问一下有甚麽办法判断完重复的数字就决定(B)个数?
EX:
设定的数字是1177
猜的数字7700
现在想到的是用回圈一个一个判断
第一个7跟後面两个7重复=>2B
第二个7也跟後面2个7重复=>2B
显示出的是4B
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 223.139.63.53
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_Sharp/M.1484147852.A.837.html
※ 编辑: LeafLu (223.138.45.242), 01/11/2017 23:22:43
1F:→ te426odin: 为什麽会是4B,照理说应该是2B而已 01/12 00:46
2F:→ te426odin: 目前只想到用回圈一个一个判断,位子不会就B++ 01/12 00:47
3F:→ te426odin: 期待高手解题 01/12 00:47
4F:推 Phenomenon: 这个回圈有判断到B的时候就可以离开(break)了,不然 01/12 02:02
5F:→ Phenomenon: 後面第二次判断到相同的又会B++ 01/12 02:02
6F:→ pili100: 以前玩这个,印象数字不能重覆? 01/12 11:11
因为想做1P或2P模式 1P用乱数 想说保全一点..
问了一下别人说
相同的话把阵列的元素清掉
EX:
guess={7,7,0,0};
p2number={1,1,7,7};
逐步检查
guess[0]=p2number[3] ==>B+1==>p2number={1,1,7}
guess[1]=p2number[3] ==>B+1==>p2number={1,1}
结果:0A2B
请问一下如何把阵列相同的东西完全清除掉?
用了Array.Clear好像只是把它变成0 阵列大小一样
※ 编辑: LeafLu (140.123.225.131), 01/12/2017 17:49:18
7F:→ smmoon: p2number.Distinct().ToArray(); 01/13 09:07
8F:→ testPtt: 先把a位置排除 再去算b 01/13 14:43
9F:→ testPtt: 这方法排除7777给到2a2b的回答 01/13 14:59
10F:推 jeffic0730: 数字重复感觉会玩到天亮XD 01/13 21:30
11F:→ uranusjr: 其实你 1P 直接 shuffle 一个 int[10] 就好了啊... 01/13 23:14
12F:→ uranusjr: int[] source = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; 01/13 23:18
13F:→ uranusjr: source.OrderBy(i => ran.Next()) 然後取前四个 01/13 23:21
14F:→ uranusjr: (忘了 var ran = new Random()) 01/13 23:22
15F:→ Litfal: 怎麽会是4B...B的定义应该是有这个数字,但位置错了吧 01/16 10:02
16F:→ Litfal: 7700 前两个7是B,後两个0没中 01/16 10:03
17F:→ Litfal: P[i]==Q[i] 时A++,否则P.Contains(Q[i])时B++ 01/16 10:05