Tabla de contenido
7-21 Prueba suerte
Titulo original:
Sabemos que un dado tiene 6 caras, cada una con de 1 a 6 puntos grabados. A continuación se muestran los estados iniciales de los seis dados, es decir, las puntas de sus lados hacia arriba, lo que le permite agarrarlos y sacudirlos para producir otra serie de resultados. Supongamos que tiras los dados con mucha habilidad y el resultado de cada tirada cumple las dos condiciones siguientes:
- 1. El número que sale de cada dado es diferente del número que apareció antes;
- 2. Bajo la premisa de que se cumple la condición 1, cada dado puede obtener el máximo de puntos posibles cada vez.
Entonces deberías poder predecir el resultado que obtendrás por enésima vez (1≤ n ≤5).
Formato de entrada:
La primera línea de entrada da el número inicial de 6 dados, es decir, un número entero entre [1,6], y los números están separados por espacios; la segunda línea da el número de tiradas n (1≤ n ≤5 ) .
Formato de salida:
Enumera los puntos de cada dado lanzado por enésima vez en orden en una fila . Los números deben estar separados por 1 espacio y no debe haber espacios adicionales al principio de la línea.
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
. - Analice la entrada y procese la secuencia de números: asigne
buf
el primer elemento de la matriz (es decir, la posición con índice 0) a una variablearr
, sepárelo en una matriz de cadenas basadas en espacios y luego usemap
el método para convertir cada una cadena en un número.buf
Asigne el segundo elemento de la matriz a una variablen
y conviértalo a un tipo entero. - Inicialice la matriz de resultados: asigne una matriz de seis 6 a la variable
res
como resultado inicial. - Actualice la matriz de resultados: recorra la secuencia de números de entrada
arr
. Si el elemento actual es igual al elemento de la matriz de resultados en la posición correspondiente, entonces disminuya el elemento en la posición correspondiente de la matriz de resultados en 1. - Bucle para actualizar la matriz de resultados: use dos bucles anidados. El bucle externo va de 0 a
n-1
, el bucle interno atraviesa la matriz de resultados y disminuye cada elemento en 1, y luego verifica si el elemento en la posición correspondiente en la matriz de resultados corresponde a la secuencia numérica de entrada. Los elementos de son iguales. Si son iguales, el elemento en la posición correspondiente de la matriz de resultados se reduce en 1. - Construya la cadena de salida: use una variable
str
como contenedor de la cadena de resultado, recorra la matriz de resultadosres
y concatene cada elemento separado por espaciosstr
. - Resultado de salida: utilícelo para
console.log
generar la cadena de resultado sin los espacios iniciales y finales.
.
Código JavaScript (nodo):
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin
});
let buf = [];
rl.on('line', (input) => {
buf.push(input);
});
rl.on('close', () => {
let arr = buf[0].split(" ").map(Number)
let n = parseInt(buf[1])
const res = [6, 6, 6, 6, 6, 6]
for (let i = 0; i < arr.length; i++) {
if (arr[i] == res[i]) {
res[i]--
}
}
for (let i = 0; i < n - 1; i++) {
for (let j = 0; j < arr.length; j++) {
res[j]--
if (res[j] == arr[j]) {
res[j]--
}
}
}
let str = ""
for (let i of res) {
str += i + " "
}
console.log(str.trim());
});
.