当前位置: 面试刷题>> 卡牌游戏Ⅰ (经典算法题500道)
### 题目描述补充
**卡牌游戏Ⅰ**
在卡牌游戏中,玩家拥有一套卡牌,每张卡牌都有一个唯一的标识(ID)和一个攻击力值(Attack Power)。现在,你需要编写一个程序来实现以下功能:
1. **添加卡牌**:允许玩家向卡牌集合中添加新卡牌,需要提供卡牌的ID和攻击力值。
2. **删除卡牌**:允许玩家根据卡牌的ID从卡牌集合中删除卡牌。
3. **查询卡牌**:允许玩家根据卡牌的ID查询该卡牌的攻击力值。
4. **卡牌排序**:能够按照攻击力值对卡牌进行排序,并返回排序后的卡牌列表(可以是ID和攻击力值的对)。
### 示例代码
以下是使用PHP、Python和JavaScript编写的示例代码,用于实现上述功能。
#### PHP 示例
```php
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 示例
```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 示例
```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));
```
**码小课网站中有更多相关内容分享给大家学习**,包括但不限于算法解析、数据结构应用、编程语言技巧等,欢迎大家访问学习。