Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
First solution in Clear category for [old] Card Game by Sim0000
"use strict";
function cards(deck, hand) {
let count = Array(deck + 1).fill(2);
count[0] = count[deck] = 1;
hand.sort((a, b) => a - b);
for(let n of hand){
if(n > deck || --count[n] < 0) return false;
let m = (n == deck || count[n] == 1) ? n - 1 : n + 1;
if(--count[m] < 0) return false;
}
return true;
}
var assert = require('assert');
if (!global.is_checking) {
console.log('Example:')
console.log(cards(5, [2, 0, 1, 2]))
// These "asserts" are used for self-checking and not for an auto-testing
assert.equal(cards(5, [2, 0, 1, 2]), false)
assert.equal(cards(10, [9, 9, 6, 6]), true)
assert.equal(cards(10, [11]), false)
assert.equal(cards(3, [0, 1, 1]), false)
assert.equal(cards(10, [3, 3, 5, 6, 6, 7]), true)
assert.equal(cards(8, [4, 4, 5, 6, 7]), true)
assert.equal(cards(7, [4, 4, 5, 6, 7]), false)
assert.equal(cards(4, [0, 0]), false)
assert.equal(cards(4, [2, 2]), true)
assert.equal(cards(4, [4, 4]), false)
assert.equal(cards(4, [2, 2, 2]), false)
assert.equal(cards(4, [1, 1, 2, 2]), false)
assert.equal(cards(4, [2, 2, 3, 3]), false)
assert.equal(cards(4, [0, 1, 2, 3, 3]), false)
assert.equal(cards(4, [1, 1, 2, 3, 4]), false)
assert.equal(cards(4, [0, 1, 2, 3, 4]), false)
assert.equal(cards(4, [1, 1, 2, 3, 3]), false)
assert.equal(cards(10, [1, 1, 2, 3, 4, 5, 6, 7, 7]), false)
console.log("Coding complete? Click 'Check' to earn cool rewards!");
}
Sept. 28, 2018
Comments: