当前位置: 面试刷题>> 卡牌游戏Ⅰ (经典算法题500道)


题目描述补充

卡牌游戏Ⅰ

在卡牌游戏中,玩家拥有一套卡牌,每张卡牌都有一个唯一的标识(ID)和一个攻击力值(Attack Power)。现在,你需要编写一个程序来实现以下功能:

  1. 添加卡牌:允许玩家向卡牌集合中添加新卡牌,需要提供卡牌的ID和攻击力值。
  2. 删除卡牌:允许玩家根据卡牌的ID从卡牌集合中删除卡牌。
  3. 查询卡牌:允许玩家根据卡牌的ID查询该卡牌的攻击力值。
  4. 卡牌排序:能够按照攻击力值对卡牌进行排序,并返回排序后的卡牌列表(可以是ID和攻击力值的对)。

示例代码

以下是使用PHP、Python和JavaScript编写的示例代码,用于实现上述功能。

PHP 示例

<?php
class CardGame {
    private $cards = [];

    // 添加卡牌
    public function addCard($id, $attackPower) {
        $this->cards[$id] = $attackPower;
    }

    // 删除卡牌
    public function removeCard($id) {
        unset($this->cards[$id]);
    }

    // 查询卡牌
    public function queryCard($id) {
        return isset($this->cards[$id]) ? $this->cards[$id] : null;
    }

    // 卡牌排序
    public function sortCards() {
        arsort($this->cards); // 按攻击力降序排序,保留键值对
        return array_keys($this->cards, ...array_values($this->cards)); // 返回排序后的ID列表(注意:PHP不支持直接返回键值对排序后的结果)
    }
}

// 示例使用
$game = new CardGame();
$game->addCard(1, 5);
$game->addCard(2, 10);
$game->addCard(3, 3);
echo "Sorted IDs: " . implode(', ', $game->sortCards()) . "\n";
echo "Card 2 Attack: " . $game->queryCard(2) . "\n";
$game->removeCard(2);
echo "Card 2 Attack after removal: " . ($game->queryCard(2) ?? 'Not found') . "\n";
?>

Python 示例

class CardGame:
    def __init__(self):
        self.cards = {}

    # 添加卡牌
    def add_card(self, id, attack_power):
        self.cards[id] = attack_power

    # 删除卡牌
    def remove_card(self, id):
        del self.cards[id]

    # 查询卡牌
    def query_card(self, id):
        return self.cards.get(id, None)

    # 卡牌排序
    def sort_cards(self):
        return sorted(self.cards.items(), key=lambda x: x[1], reverse=True)

# 示例使用
game = CardGame()
game.add_card(1, 5)
game.add_card(2, 10)
game.add_card(3, 3)
print("Sorted Cards:", game.sort_cards())
print("Card 2 Attack:", game.query_card(2))
game.remove_card(2)
print("Card 2 Attack after removal:", game.query_card(2))

JavaScript 示例

class CardGame {
    constructor() {
        this.cards = new Map();
    }

    // 添加卡牌
    addCard(id, attackPower) {
        this.cards.set(id, attackPower);
    }

    // 删除卡牌
    removeCard(id) {
        this.cards.delete(id);
    }

    // 查询卡牌
    queryCard(id) {
        return this.cards.get(id);
    }

    // 卡牌排序
    sortCards() {
        return [...this.cards.entries()].sort((a, b) => b[1] - a[1]); // 按攻击力降序排序
    }
}

// 示例使用
const game = new CardGame();
game.addCard(1, 5);
game.addCard(2, 10);
game.addCard(3, 3);
console.log("Sorted Cards:", game.sortCards());
console.log("Card 2 Attack:", game.queryCard(2));
game.removeCard(2);
console.log("Card 2 Attack after removal:", game.queryCard(2));

码小课网站中有更多相关内容分享给大家学习,包括但不限于算法解析、数据结构应用、编程语言技巧等,欢迎大家访问学习。

推荐面试题