मैं एक खेल बना रहा हूँ जहाँ मैं पोकर शैली के हाथों का अनुकरण करना चाहता हूँ। हाथ अभी 5 मानों की एक सरणी है। मान बेतरतीब ढंग से उत्पन्न होते हैं। उदाहरण के लिए, मेरे पास हाथ हो सकता है = [१, १, २, ४, ४] या मेरे पास हाथ हो सकता है = [१, २, २, २, ६]।

मैं हाथ सरणी में डुप्लिकेट नंबर लेने में सक्षम होना चाहता हूं और कितने डुप्लिकेट हैं, और डुप्लिकेट के कितने समूह हैं, इसके आधार पर एक मान वापस करना चाहते हैं। पहले उदाहरण में, 1, 1 पहला समूह है। 4, 4 दूसरा समूह है। इसलिए, 2 के 2 समूह हैं। दूसरे उदाहरण में, 2, 2, 2 3 का एक समूह है।

वहां से, मैं रिटर्न स्टेटमेंट का एक साधारण सेट बना सकता हूं। तो, पहला उदाहरण "दो जोड़े" लौटाएगा। दूसरा उदाहरण "एक तरह का तीन" लौटाएगा।

मैंने शर्तों के साथ प्रत्येक लूप के लिए विभिन्न कोशिश की है।

उदाहरण के लिए,

handCombo() {
        let group1 = [], group2 = [];

        this.hand.forEach((card, index) => {
            //  1. If the index is 0, push the value to the group1
            if (index === 0) {
                group1.push(card.value);
            }
            else if (index > 0 && group1[index - 1] === card) {
                group1.push(card.value);
            }
            else if (index > 0 && group1[index - 1] === card) {
                group1.push(card.value);
            }

        });

जब हाथ = [१, २, २, २, ६], यह एक सरणी उत्पन्न करता है, समूह १ = [१]। मैं जो चाहता हूं वह उस मामले में समूह १ = [२, २, २] है।

0
Matiny 3 अगस्त 2019, 23:23

2 जवाब

सबसे बढ़िया उत्तर

आप समान मानों की गणना कर सकते हैं और एक अनुकूलित परिणाम लौटा सकते हैं।

function x(hand) {
    var count = {},
        pairs = 0,
        three = 0,
        s = '';
        
    hand.forEach(v => count[v] = (count[v] || 0) + 1);
    Object.values(count).forEach(c => {
        if (c === 3) three++;
        if (c === 2) pairs++;    
    });
    if (three) s = 'Three of a Kind';
    if (pairs === 1) s += (s && ' and ') + 'One Pair';
    if (pairs === 2) s = 'Two Pairs';
    return s;
}

console.log([[1, 1, 2, 4, 4], [1, 2, 2, 2, 6], [1, 1, 2, 2, 2], [1, 2, 3, 4, 5]].map(x)); // "Two Pairs" "Three of a Kind".
2
Nina Scholz 3 अगस्त 2019, 23:35

यह कोड आपके प्रश्न का उत्तर देगा। डुप्लिकेट की संख्या के लिए यह कोड।

let arr = [1, 2, 2, 2, 6];
let groups = {};
for(let num of arr) {
  let numStr = num.toString();
  if (!groups[numStr]) groups[numStr] = 0;
  groups[numStr]++;
}

console.log(groups);

for(let no in groups) {
    console.log("no", no, "have ", groups[no]);
}

यदि आप जो चाहते हैं वह समूह में सरणी है। इस कोड का प्रयोग करें।

let arr = [1, 2, 2, 2, 6];
let groups = {};
for (let num of arr) {
    let numStr = num.toString();
    if (!groups[numStr]) groups[numStr] = [];
    groups[numStr].push(num);
}

console.log(groups);

for (let no in groups) {
    console.log("no", no, "have ", groups[no]);
}
0
William Gunawan 3 अगस्त 2019, 23:29