Full House trong poker: 5 lá bài có ít nhất 3 lá cùng giá trị (3 của 1 loại + 2 của loại khác, hoặc 4/5 của 1 loại).
Viết hàm kiểm tra mảng 5 lá bài có full house không.
Giải pháp
Mã triển khai:
const arr1 = ['A', 'A', 'A', 'K', 'K']; // Full house
const arr2 = ['K', '2', 'K', 'A', 'J']; // Không
const isFullHouse = arr => {
const counts = {};
for (const card of arr) {
counts[card] = (counts[card] || 0) + 1;
}
// Kiểm tra có giá trị nào >= 3 không
return Object.values(counts).some(count => count >= 3);
};
console.log(isFullHouse(arr1)); // true
console.log(isFullHouse(arr2)); // false
Kết quả
Đầu ra trong console:
true
false
Giải thích: Đếm tần suất mỗi lá, nếu có tần suất ≥ 3 → full house. Code gốc dùng splice phức tạp, cách dùng object đếm đơn giản hơn.