Tabla de contenido
7-23 Preguntas sobre el tren de Estocolmo
Titulo original:
La imagen de arriba es una anécdota interesante en Sina Weibo. Es una pregunta en un tren en Estocolmo, Suecia. Parece un fragmento de pseudocódigo:
s = ''
a = '1112031584'
for (i = 1; i < length(a); i++) {
if (a[i] % 2 == a[i-1] % 2) {
s += max(a[i], a[i-1])
}
}
goto_url('www.multisoft.se/' + s)
La +
operación de cadena significa concatenar dos cadenas. Entonces, esta pregunta en realidad les pide a todos que visiten el sitio web www.multisoft.se/112358
( nota: ¡¡¡no visiten este sitio web durante la competencia!!! ).
Por supuesto, 112358
la cadena original que se puede obtener mediante el algoritmo anterior a
no es única. Esta pregunta le pide que juzgue si dos cadenas originales dadas pueden obtener el mismo resultado a través del algoritmo anterior.
Formato de entrada:
La entrada son dos líneas de cadenas no vacías que consisten únicamente en números, cuya longitud no excede 104 y terminan con un retorno de carro.
Formato de salida:
Las dos cadenas se procesan utilizando el algoritmo anterior en el tren de Estocolmo. Si los dos resultados son iguales, genere ese resultado en una línea; de lo contrario, genere los resultados de procesamiento correspondientes por separado, cada uno ocupando una línea. La pregunta garantiza que el resultado de salida no esté vacío.
.
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
. - Inicializar variables de resultado: establezca las variables de resultado iniciales
res1
yres2
en la cadena vacía. - Procese la primera cadena: use
for
un bucle para iterar sobre la primera cadena de entrada, indexando a partir de 1. Para el carácter en cada posición del índice, determine si su paridad es la misma que la del carácter anterior. Si son iguales, se agrega el mayor de los dos caracteresres1
. - Procese la segunda cadena: use
for
un bucle para iterar sobre la segunda cadena de entrada, el índice comienza desde 1, la lógica es la misma que procesar la primera cadena. Agregue el valor máximo que cumpla con los criterios ares2
. - Compare los resultados y la salida: compare
res1
sires2
la suma es igual. Si son iguales, significa que la paridad de los números adyacentes en las dos cadenas es la misma y la salidares1
. Si no son iguales, significa que la paridad de los números adyacentes en las dos cadenas es diferente y se genera lares1
sumares2
, separada por un carácter de nueva línea. - Utilice
console.log
la salida.
.
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 res1 = '';
for (let i = 1; i < buf[0].length; i++) {
if (buf[0][i] % 2 == buf[0][i - 1] % 2) {
res1 += Math.max(buf[0][i], buf[0][i - 1]);
}
}
let res2 = '';
for (let i = 1; i < buf[1].length; i++) {
if (buf[1][i] % 2 == buf[1][i - 1] % 2) {
res2 += Math.max(buf[1][i], buf[1][i - 1]);
}
}
if (res1 === res2) {
console.log(res1);
} else {
console.log(`${
res1}\n${
res2}`);
}
});
.