En esta tarea, su trabajo será escribir un programa que pueda decidir si dos palabras son sinónimos o no. Obtendrá un diccionario de sinónimos que describe pares de palabras sinónimas. Luego, responderá varias consultas sobre si dos palabras dadas son sinónimos o no. Tanto el diccionario de pares de sinónimos como las consultas para su programa se incluirán en el archivo de entrada.
Usa las siguientes reglas para decidir:
Aporte :
La entrada comienza con un número de casos de prueba T (0 < T < 100). Cada caso de prueba comienza con una línea que contiene un solo número N (0 N s 100), la longitud de un diccionario de sinónimos. En cada una de las siguientes N líneas, hay exactamente un par de sinónimos separados por un solo espacio. La siguiente línea contiene un solo número Q (0 Q 100) — número de consultas. Cada una de las siguientes líneas contiene un par de palabras de consulta separadas por un solo espacio. Cada palabra se compone únicamente de letras del alfabeto inglés ([a-zA-Z]) y tiene una longitud máxima de 20 caracteres.
Producción :
Para cada par de palabras de consulta, se generan sinónimos de cadena o diferentes .
Entrada de muestra
2 4 big large large huge small little apple banana 6 same same big huge huge big apple peach big tall peach PEACH 5 wood FORest meadoW PrAirIe WOOD Lumber lumber forest lumber forest 2 wood LUMBER mEADOw fireSalida de muestra
synonyms synonyms synonyms different different synonyms synonyms differentExplicación del problema de ejemplo.
En el primer caso de prueba hay 6 consultas:
La Universidad de Harvard y Google en 2010 estimaron un total de 1.022.000 palabras y que el número crecería en varios miles cada año.
Entonces, lógicamente, su código debe conocerlos todos para poder funcionar correctamente. Dicha base de datos de palabras, sus enlaces y métodos de acceso son proporcionados por API externas. Su aplicación debe buscar sinónimos utilizando una de estas API.
Éstos son algunos de ellos-
https://openbase.com/categories/js/best-nodejs-dictionary-api-libraries
No hay una función integrada en Node para probar si alguna palabra es un sinónimo o no. Pero (afortunadamente) hay algunas bibliotecas para hacer eso.
Aquí hay un ejemplo: Primero, instale el paquete de synonyms de NPM:
npm i synonymsLuego, en su archivo JS:
const synonyms = require("synonyms"); // Import the "synonyms" library const fs = require("fs"); fs.readFile("path/to/file", "utf-8", (err, file) => { // Read the file const lines = file.split("\n"); // Each line is split into an array let result = lines.map(i => { return i.split(" "); }); // "result" holds an array of arrays. Index 0 is word 1 and index 1 is word 2 result.forEach(item => { // Loop through our words const s = synonyms(item[0].toLowerCase()); // Call the function let allSynonyms = []; for (let q in s) { s[q].forEach(i => { if(typeof i === "object") i.forEach(allSynonyms.push); else allSynonyms.push(i); }); } if (allSynonyms.includes(item[1].toLowerCase())) { console.log(`Yes, "${item[0]}" is a synonym with "${item[1]}"!`); // Yes } else { // Nope! console.log(`Nope, "${item[0]}" is not a synonym with "${item[1]}".`); } }); }); Sólo un ejemplo :) Puedes comprobar el resultado aquí . Simplemente ejecute npm start .