Tabla de contenido
7-27 Juego de adivinar sombreros
Titulo original:
Los bebés juegan juntos al juego del sombrero de adivinanzas. Se colocó un sombrero en la cabeza de cada persona, algunos eran negros y otros amarillos. Todos pueden ver los sombreros en las cabezas de otras personas, pero no los suyos propios. Una vez que comienza el juego, todos pueden adivinar el color del sombrero que tienen en la cabeza, o pueden abstenerse de adivinar. Si nadie adivina mal y al menos una persona adivina correctamente, todos los bebés ganarán un gran premio. Si nadie adivina, o si solo una persona adivina mal, no se entregará ningún premio a todos los bebés.
El siguiente orden da los colores de una fila de gorros, se supone que cuando cada grupo de bebés viene a jugar, los gorros se distribuyen en este orden. Luego se dan los resultados de las conjeturas de cada grupo de bebés y se le pide que juzgue si pueden ganar el gran premio.
Formato de entrada:
La entrada primero da un número entero positivo N (2< N ≤100) en una línea , que es el número de sombreros. La segunda línea muestra los colores de N sombreros, y los números 1
representan el negro y 2
el amarillo. A continuación, se proporciona
un número entero positivo K (≤10), seguido de K líneas. Cada línea proporciona los resultados de las adivinanzas de un grupo de bebés. Además de seguir usando números 1
para representar el negro y 2
el amarillo, 0
significa que el bebé se abstiene de adivinación.
Los números de la misma línea están separados por espacios.
Formato de salida:
Para cada grupo de bebés que juegan, si pueden ganar el gran premio, envíelo en una línea Da Jiang!!!
; de lo contrario, envíelo Ai Ya
.
.
Ideas para resolver problemas:
- Importe
readline
el módulo y cree un objeto de interfaz: primeroreadline
introduzca el módulo y usecreateInterface
métodos para crear un objeto de interfazrl
. Este objeto establece el flujo de entrada en entrada estándar. - Leer entrada y almacenar: al escuchar
'line'
eventos, la entrada se almacena en una matrizbuf
. - Deconstruya la tarea para obtener la respuesta correcta y la respuesta del estudiante: use
split
el método para dividir el segundo elemento (es decir, la matriz de respuestas correctas) por espacios y usemap
el método para convertir cada elemento en un número y almacenarlo en una variable; use el método para convertirans
el cuarto elemento y los siguientes. Los elementos (es decir, la matriz de respuestas de los estudiantes) se almacenan en una variabletext
, que en este casotext
es una matriz de cadenas. - Iterar sobre la matriz de respuestas de los estudiantes: utilice
for...of
un bucletext
para iterar sobre cada elementotemp
. - Determine si la matriz de respuestas del estudiante es exactamente la misma que la matriz de respuestas correcta: use dos variables
flag
yk
, dondeflag
el valor inicial estrue
,k
que indica el número de 0 elementos en la matriz de respuestas del estudiante.temp
Para cada elemento atravesado usando el bucle internotemp[j]
, sitemp[j]
es 0, se incrementarák
en 1; de lo contrario, si estemp[j]
igualans[j]
a, el bucle continuará; de lo contrario, se estableceráflag
enfalse
. - Salida de acuerdo con el resultado del juicio: si es
k
igualtemp.length
, significa que la matriz de respuestas del estudiante es 0, luego genera "Ai Ya"; de lo contrario, si es igualflag
,true
significa que la matriz de respuestas del estudiante es exactamente la misma que la matriz de respuestas correcta , luego genera "Da Jiang!!!"; de lo contrario, genera "Ai Ya". - Genere el resultado una vez finalizado el ciclo: utilice
console.log
el resultado del juicio para generar la matriz de respuestas de cada estudiante.
.
Código JavaScript (nodo):
const r = require("readline");
const rl = r.createInterface({
input: process.stdin
});
let buf = [];
rl.on('line', (input) => buf.push(input));
rl.on('close', () => {
let ans = buf[1].split(" ").map(Number);
let text = buf.slice(3);
for (let i = 0; i < text.length; i++) {
let temp = text[i].split(" ").map(Number);
let flag = true;
let k = 0;
for (let j = 0; j < temp.length; j++) {
if (temp[j] == 0) {
k++;
} else if (temp[j] == ans[j]) {
continue;
} else {
flag = false
}
}
if (k == temp.length) {
console.log("Ai Ya");
} else {
console.log(flag ? "Da Jiang!!!" : "Ai Ya");
}
}
});
.