猜大小
同步版
process.stdin.setEncoding('utf8');
// This function reads only one line on console synchronously. After pressing `enter` key the console will stop listening for data.
let fn;
function readlineSync() {
return new Promise((resolve, reject) => {
if (fn !== (void 0)) {
process.stdin.removeListener('data', fn)
}
fn = function (data) {
process.stdin.pause(); // stops after one line reads
resolve(data);
}
process.stdin.resume();
process.stdin.on('data', fn);
});
}
let array = ["2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A"]
let passed = new Set;
// entry point
async function main() {
while (true) {
let input = await readlineSync();
input = input.replace("\r\n", "");
if (array.indexOf(input) !== -1) {
console.log("入牌:" + input)
processPassed(input)
continue;
}
if (input === "R") {
console.log("重新开始")
passed.clear();
continue;
}
if (input === "exit") {
console.log("退出")
break;
}
console.log("请输入 2 到 A,R 重新开始")
}
}
main();
function processPassed(input) {
if (passed.has(input)) {
console.log("请重新选择");
return;
}
passed.add(input);
let index = array.indexOf(input);
let remain = array.filter(s => passed.has(s) === false);
let smaller = remain.filter(s => array.indexOf(s) < index);
let larger = remain.filter(s => array.indexOf(s) > index);
console.log("smaller: " + smaller.length + " " + JSON.stringify(smaller))
console.log("larger: " + larger.length + " " + JSON.stringify(larger))
console.log("suggestion: " + (smaller.length > larger.length ? "小" : "大"));
}
异步版
process.stdin.setEncoding('utf8');
process.stdin.on('data', main);
let array = ["2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A"]
let passed = new Set;
function exit() {
process.stdin.removeListener('data', main);
process.exit();
}
function main(input) {
input = input.replace("\r\n", "");
if (array.indexOf(input) !== -1) {
console.log("入牌:" + input)
processPassed(input)
return;
}
if (input === "R") {
console.log("重新开始")
passed.clear();
return;
}
if (input === "exit") {
console.log("退出")
exit();
}
console.log("请输入 2 到 A,R 重新开始")
}
function processPassed(input) {
if (passed.has(input)) {
console.log("请重新选择");
return;
}
passed.add(input);
let index = array.indexOf(input);
let remain = array.filter(s => passed.has(s) === false);
let smaller = remain.filter(s => array.indexOf(s) < index);
let larger = remain.filter(s => array.indexOf(s) > index);
console.log("smaller: " + smaller.length + " " + JSON.stringify(smaller))
console.log("larger: " + larger.length + " " + JSON.stringify(larger))
console.log("suggestion: " + (smaller.length > larger.length ? "小" : "大"));
}
最后更新于