// upper limit (55555)_6
const limit = [5, 5, 5, 5, 5].reduce((acc, cur) => acc * 6 + cur);
const result = {
five_card: 0,
four_card: 0,
straight: 0,
fullhouse: 0,
three_card: 0,
two_pair: 0,
one_pair: 0,
garbage: 0,
};
// polyfill
String.prototype.padStart = function (n, c = ' ') { return this.length < n ? c.repeat(n - this.length) + this : this; }
String.prototype.padEnd = function (n, c = ' ') { return this.length < n ? this + c.repeat(n - this.length) : this; }
const sorter = i => i.toString(6).padStart(5, '0').split('').sort().join('');
for (let i = 0; i <= limit; i++) {
const str = sorter(i);
if (str.match(/^(\d)\1{4}$/)) {
result.five_card++;
continue;
}
if (str.match(/(\d)\1{3}/)) {
result.four_card++;
continue;
}
if (str.match(/^0?12345?$/)) {
result.straight++;
continue;
}
if (str.match(/^(\d)\1{1,2}(\d)\2{1,2}$/)) {
result.fullhouse++;
continue;
}
if (str.match(/(\d)\1{2}/)) {
result.three_card++;
continue;
}
if (str.match(/(\d)\1\d?(\d)\2/)) {
result.two_pair++;
continue;
}
if (str.match(/(\d)\1/)) {
result.one_pair++;
continue;
}
result.garbage++;
}
for (const e in result) {
console.log(
`${e.padEnd(10)}: ${result[e].toString().padStart(4)}/${limit + 1} (${((result[e] / (limit + 1)) * 100).toFixed(2)}%)`
);
}
Ly8gdXBwZXIgbGltaXQgKDU1NTU1KV82CmNvbnN0IGxpbWl0ID0gWzUsIDUsIDUsIDUsIDVdLnJlZHVjZSgoYWNjLCBjdXIpID0+IGFjYyAqIDYgKyBjdXIpOwpjb25zdCByZXN1bHQgPSB7CglmaXZlX2NhcmQ6IDAsCglmb3VyX2NhcmQ6IDAsCglzdHJhaWdodDogMCwKCWZ1bGxob3VzZTogMCwKCXRocmVlX2NhcmQ6IDAsCgl0d29fcGFpcjogMCwKCW9uZV9wYWlyOiAwLAoJZ2FyYmFnZTogMCwKfTsKCi8vIHBvbHlmaWxsClN0cmluZy5wcm90b3R5cGUucGFkU3RhcnQgPSBmdW5jdGlvbiAobiwgYyA9ICcgJykgeyByZXR1cm4gdGhpcy5sZW5ndGggPCBuID8gYy5yZXBlYXQobiAtIHRoaXMubGVuZ3RoKSArIHRoaXMgOiB0aGlzOyB9ClN0cmluZy5wcm90b3R5cGUucGFkRW5kID0gZnVuY3Rpb24gKG4sIGMgPSAnICcpIHsgcmV0dXJuIHRoaXMubGVuZ3RoIDwgbiA/IHRoaXMgKyBjLnJlcGVhdChuIC0gdGhpcy5sZW5ndGgpIDogdGhpczsgfQoKY29uc3Qgc29ydGVyID0gaSA9PiBpLnRvU3RyaW5nKDYpLnBhZFN0YXJ0KDUsICcwJykuc3BsaXQoJycpLnNvcnQoKS5qb2luKCcnKTsKCmZvciAobGV0IGkgPSAwOyBpIDw9IGxpbWl0OyBpKyspIHsKICAgIGNvbnN0IHN0ciA9IHNvcnRlcihpKTsKCWlmIChzdHIubWF0Y2goL14oXGQpXDF7NH0kLykpIHsKCQlyZXN1bHQuZml2ZV9jYXJkKys7CgkJY29udGludWU7Cgl9CglpZiAoc3RyLm1hdGNoKC8oXGQpXDF7M30vKSkgewoJCXJlc3VsdC5mb3VyX2NhcmQrKzsKCQljb250aW51ZTsKCX0KCWlmIChzdHIubWF0Y2goL14wPzEyMzQ1PyQvKSkgewoJCXJlc3VsdC5zdHJhaWdodCsrOwoJCWNvbnRpbnVlOwoJfQoJaWYgKHN0ci5tYXRjaCgvXihcZClcMXsxLDJ9KFxkKVwyezEsMn0kLykpIHsKCQlyZXN1bHQuZnVsbGhvdXNlKys7CgkJY29udGludWU7Cgl9CglpZiAoc3RyLm1hdGNoKC8oXGQpXDF7Mn0vKSkgewoJCXJlc3VsdC50aHJlZV9jYXJkKys7CgkJY29udGludWU7Cgl9CglpZiAoc3RyLm1hdGNoKC8oXGQpXDFcZD8oXGQpXDIvKSkgewoJCXJlc3VsdC50d29fcGFpcisrOwoJCWNvbnRpbnVlOwoJfQoJaWYgKHN0ci5tYXRjaCgvKFxkKVwxLykpIHsKCQlyZXN1bHQub25lX3BhaXIrKzsKCQljb250aW51ZTsKCX0KCQoJcmVzdWx0LmdhcmJhZ2UrKzsKfQoKZm9yIChjb25zdCBlIGluIHJlc3VsdCkgewogICAgY29uc29sZS5sb2coCiAgICAgICAgYCR7ZS5wYWRFbmQoMTApfTogJHtyZXN1bHRbZV0udG9TdHJpbmcoKS5wYWRTdGFydCg0KX0vJHtsaW1pdCArIDF9ICgkeygocmVzdWx0W2VdIC8gKGxpbWl0ICsgMSkpICogMTAwKS50b0ZpeGVkKDIpfSUpYAogICAgKTsKfQo=