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

238
Views
Algoritmo (JS -React)

Actualmente estoy enfrentando un problema de algoritmo que no puedo resolver y realmente necesito ayuda con eso.

Aquí está el diseño general:

  • Los elementos se colocan dentro de una cuadrícula de 4x4 (desde la posición 0,0 hasta la 3,3).
  • Los elementos tienen 3 estados diferentes, " desbloqueado ", " desbloqueable " y " bloqueado ".
  • Grid inicia con la celda (0,0) como " desbloqueable ".
  • Cuando se desbloquea una celda (o se hace clic en ella), las celdas adyacentes (horizontal y verticalmente, no en diagonal ) se vuelven " desbloqueables ".
  • Las celdas deben estar conectadas al punto de inicio ( celda (0,0) ).
  • Las celdas se pueden desasignar (" bloqueadas " de nuevo).
  • Si una celda no asignada (" bloqueada ") tiene celdas " desbloqueadas " adyacentes, se vuelve " desbloqueable " y no " desbloqueada ".

Así que aquí está el problema al que me enfrento:

Digamos que tengo celdas desbloqueadas (0,0), (1,0), (2,0), (2,1).

En esta situación, no debería ser posible bloquear la celda (2,0), ya que la celda (2,1) perderá cualquier conexión que tenga con (0,0).

¿Cómo puedo implementar tal lógica que haga que las celdas no se puedan volver a bloquear, a menos que sea seguro hacerlo (las siguientes celdas aún tienen conexión con el punto de partida de alguna manera)?

Si esto requiere algún tipo de algoritmo general, no sé cómo buscarlo, así que no dude en proporcionarme su nombre para que pueda aprenderlo. No estudié informática, soy un estudiante autodidacta.

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Una forma estándar de hacer esto sería tratar su cuadrícula como un gráfico (un conjunto de vértices y aristas) y verlo como un problema gráfico. Las celdas serían los vértices del gráfico, conectados por los bordes horizontales y verticales entre ellos. Haría un seguimiento de qué celdas/vértices están desbloqueados, con las celdas que bordean las celdas desbloqueadas siendo desbloqueables y todas las demás celdas bloqueadas.

Un "vértice de corte" o "punto de articulación" en un gráfico es un vértice que, si se elimina, desconectaría el gráfico. Desea asegurarse de que una celda no sea un vértice cortado entre las celdas desbloqueadas antes de permitir que se bloquee (ya que hacerlo desconectaría una parte de las celdas desbloqueadas). Puede realizar una búsqueda en profundidad primero solo sobre las celdas desbloqueadas para encontrar sus puntos de articulación y comprobar que la celda que se va a bloquear no es uno de esos puntos antes de bloquearla.

about 4 years ago · Juan Pablo Isaza 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!