Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

231
Views
¿Por qué falla mi solucionador de Wordle cuando hay caracteres repetidos?

Para el contexto, Wordle es un juego en el que tienes que descifrar una palabra de 5 letras en 6 o menos intentos basados en ciertas pistas. Las pistas que obtienes son las siguientes:

  1. Si un carácter es de color negro, no hay caracteres que coincidan con ese carácter en la palabra de destino.
  2. Si un carácter es de color naranja, hay un carácter que coincide con ese carácter en la palabra de destino, pero está en una posición diferente.
  3. Si un carácter es de color verde, la posición y el carácter coinciden.

Estoy creando un programa de resolución de palabras que toma una variedad de intentos de palabras y los elimina de una lista de palabras posibles.

Siento que el mejor algoritmo para resolver este problema es una lista negra donde una palabra que rompe una de las reglas se elimina de la matriz. Pero si hay una alternativa mejor, estoy abierto a sugerencias.

 const text = [ [ ["N","black"],["i","black"],["g","black"], ["h","black"],["t","green"] ], [ ["b","black"],["e","black"],["l","orange"], ["o","orange"],["w","black"] ] ] const words = "dozen,brave,apple,climb,outer,pitch,ruler,holds,fixed,costs,calls, ...etc" const solver = (text: any) => { this.resultingWords = words.split(",").filter(word => { word = word.toUpperCase() for (var i = 0; i < text.length; i++) { for (var j = 0; j < 5; j++) { let currentText = text[i][j] currentText[0] = currentText[0].toUpperCase() if (currentText[0] == '') { continue } if (currentText[1] == "green" && (word[j] != currentText[0])) { return false } if (currentText[1] == "black" && word.includes(currentText[0])) { return false; } if (currentText[1] == "orange" && (word[j] == currentText[0] || !word.includes(currentText[0]))) { return false } } } return true }) }

El problema que tengo es si una palabra tiene múltiplos de la misma letra y uno de ellos es verde o naranja, pero el otro es negro. No obtengo resultados debido a la forma en que escribí mi algoritmo.

¿Cuál sería la forma de solucionar correctamente este problema?

¿Es un estilo de lista negra de filtrado la mejor solución? (a diferencia de la lista blanca).

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Estás construyendo una lista de candidatos, creo que es un buen comienzo. Realmente no importa si pones en la lista blanca o negra, el resultado es la lista de candidatos. La única preocupación es que podría obtener la solución más rápido o de manera más confiable al adivinar palabras que no están en la lista de candidatos. ¿Por qué? Porque así puedes introducir más letras nuevas a la vez para comprobar si la palabra las contiene. Tal vez lo mejor sea una mezcla entre las dos estrategias, difícil de decir sin probarlo primero.

  • "verde" está bien.
  • "negro" necesita contar el número de apariciones de la letra que no son negras en la suposición y todas las palabras que no contienen esa cantidad exacta de esa letra pueden eliminarse (y también aquellas que tienen la letra en una posición negra).
  • "naranja" está bien, pero se puede mejorar: puede contar la cantidad de apariciones de la letra que no sean negras en la suposición y eliminar todas las palabras que contienen la letra menos veces (verificando la apariencia mínima y no solo una vez) y también se aplica lo que ya tiene: la letra no puede estar en una posición naranja.

Hay muchas ideas para mejorar. Primero crearía el filtro antes de pasar por las palabras. Usando una lógica similar a la anterior, obtendría una colección de cuatro tipos de reglas diferentes: una letra tiene que estar o no puede estar en una posición específica o una letra tiene que aparecer exactamente (posiblemente 0) o al menos un número específico de veces. Luego revisa las palabras y filtra usando esas reglas. De lo contrario, algunos trabajos podrían realizarse varias veces. Es más fácil crear un filtro de este tipo recopilando las mismas letras en la suposición primero. Si hay un número exacto de regla de aparición, obviamente puede descartar un número mínimo de regla de aparición para la misma letra.

Para adivinar la palabra rápido, crearía una función de evaluación para encontrar la siguiente conjetura más prometedora entre los candidatos. Posibles valores a puntuar:

  • Cuántas letras nuevas se introducen (letras que aún no se han adivinado).
  • También se podrían tener en cuenta las probabilidades de las nuevas letras. Por ejemplo, qué tan probable es que una palabra contenga una letra específica. O incluso mire las correlaciones entre las letras: como si tengo una Q, entonces probablemente también tenga una U o si la última letra es D, entonces la probabilidad de que la segunda última sea E es muy alta.
  • Incluso podría revisar todas las respuestas posibles para cada candidato y ver qué conjetura elimina la mayor cantidad de palabras en promedio o algo similar. Aunque esto probablemente tome demasiado tiempo a menos que se aproxime de alguna manera.
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!