ZCETHAN 2020-03-02 22:03 采纳率: 0%
浏览 83

蒟蒻在此救助大佬们,这是我们老师的原创题(很暴力),但是蒟蒻不会,求大佬相助

斗地主之叫牌
题目描述
经过一周的学习和练习,Eddie的小弟弟已经学会了斗地主的下述规则:

1)最大是王炸,即大王(D)+小王(X),王炸可以一起出。

2)其次是4张一样大小的牌,构成炸弹,炸弹可以一起出。

3)任何牌都可以单张出,单张牌的大小如下 D>X>2>A>K>Q>J>10>9>8>7>6>5>4>3。

4)顺子是5张及5张以上的连续牌,2、X、D这三张牌不能包括在顺子中,比如34567。

5)对子可以出,但双顺必须是连续3对及3对以上,比如556677。对2不能包含在双顺中。

6)三张同样大小的牌可以出,但三顺必须是连续2个及2个以上,比如888999。三张2不能包含在三顺中。

7)三带一,就是其中三张牌大小一样,另外一张单独,比如555K。

8)三带二,就是其中三张牌大小一样,另外两张是一对,比如555KK。

9)四带二:四张一样大小的牌,再加上两张不一样的牌,或者加上两个不一样的对子,比如355556,44666688,都属于四带二。

今天Eddie打算教他小弟弟如何叫牌,所谓叫牌,叫了就是要当地主,地主多三张底牌。叫牌其实是蛮有技术含量的,也没有标准答案,因为叫牌时不知道下面的三张底牌是什么,也不知道另外两个玩家的牌咋样。Eddie给小弟弟罗列了下面这些叫牌规则,只要符合a)或者同时满足b)和c),就可以去抢做地主:

a)手里有3个及3个以上的炸弹;

b)小于10以下的单牌有2张及2张以下;(3335中5不算单牌,444468中的6和8也不能算单牌;能构成顺子的也不算单牌,比如345678中的任何一张)

c)小于10以下的单对子有2对及2对以下;(334455中的对3不算单对子,44
446688中对6和对8也不能算单对子)

输入

17张牌

输出

如果符合叫牌的条件,则输出Landlord

否则输出Peasant

样例输入
3 3 4 4 6 6 7 7 10 J Q K A 2 2 2 X

样例输出

Peasant

提示

样例说明:

小于10以下的单对子有4对,虽然其中一对可以和222一起出,比如22233,但还有446677三个单对,故不符合叫牌的条件。

  • 写回答

2条回答 默认 最新

  • 码农阿豪@新空间 新星创作者: 前端开发技术领域 2024-07-25 18:56
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    **解答:** 根据题目描述,我们首先需要对输入的17张牌进行处理,将其分类,统计其中炸弹的数量、小于10的单牌的数量、小于10的单对子的对数。然后根据条件a)或同时满足条件b)和c)来判断是否符合叫牌的条件。 下面是Python代码实现:
    from collections import Counter
    # 输入17张牌
    cards = input().split()
    # 统计各种牌的数量
    card_counter = Counter(cards)
    # 统计炸弹的数量
    bomb_count = sum(value == 4 for value in card_counter.values())
    # 统计小于10的单牌数量
    single_count = sum(value == 1 and card != '10' and card not in ['X', 'D', '2'] for card, value in card_counter.items())
    # 统计小于10的对子数量
    pair_count = sum(value == 2 and card not in ['X', 'D', '2'] for card, value in card_counter.items())
    # 判断是否符合叫牌的条件
    if bomb_count >= 3 or (single_count <= 2 and pair_count <= 2):
        print("Landlord")
    else:
        print("Peasant")
    

    样例输入:

    3 3 4 4 6 6 7 7 10 J Q K A 2 2 2 X
    

    样例输出:

    Peasant
    

    根据以上代码和样例输入,可以得到样例输出为Peasant。因为小于10以下的单对子有4对,虽然其中一对可以和222一起出,比如22233,但还有446677三个单对,所以不符合叫牌的条件。

    评论

报告相同问题?