返回信息流两手牌A,B,一手5个,散牌
原则:
先比最大的牌,相等则比次大的,依次类推。如果大小全部一样。
就再比最大的牌的花色-->次大的花色,依次类推。
纠结了好久,实在是没有什么好的想法,总不能一个一个if去嵌套呀。。。求大神指点!跪谢。。。
这是一条镜像帖。来源:北邮人论坛 / java / #40092同步于 2015/4/22
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
比较5个散牌的大小
SunnyRain
2015/4/22镜像同步2 回复
订阅后,新回复会通过你的通知中心匿名送达。
2 条回复
=。=来个胡闹的:
搞个10位的13进制数,Java可能得用BigInteger
对每手牌按数字排序得到的数列ABCDE
然后分别把花色标为FGHIJ
10位的13进制数就可以写成 ABCDEFGHIJ
然后比两个数大小吧
比如黑红梅方分别为4321
那一手牌黑5红4梅3方2黑1得到的13进制数就应该是 5432143214
黑5红4梅3方2红1得到的13进制数就应该是 5432143213
所以黑桃牛逼~
冏
===》2.0版
用一个5位的13进制和5位的4进制来表示,这样最多的情况比较2次,而且可以用int搞定。
嗯。。。
【 在 SunnyRain 的大作中提到: 】
: 两手牌A,B,一手5个,散牌
: 原则:
: 先比最大的牌,相等则比次大的,依次类推。如果大小全部一样。
: ...................
class Cards {
List<Card> cards;
private static int size = 5;
public static Comparator<Cards> cardsComparator = new Comparator<Cards>() {
@Override
public int compare(Cards a, Cards b) {
int dx = 0;
for (int i = 0; i < size; i++) {
dx = a.cards.get(i).value - b.cards.get(i).value;
if (dx != 0) {
break;
}
}
if (dx != 0) {
return dx > 0 ? 1 : -1;
}
for (int i = 0; i < size; i++) {
dx = a.cards.get(i).color - b.cards.get(i).color;
if (dx > 0) {
return 1;
} else if (dx < 0) {
return -1;
}
}
return dx;
}
};
class Card {
int value;
int color;
}
}
【 在 SunnyRain 的大作中提到: 】
: 两手牌A,B,一手5个,散牌
: 原则:
: 先比最大的牌,相等则比次大的,依次类推。如果大小全部一样。
: ...................