Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

109
Visualizações
Ejercicio de codificación de tuberías de agua. ¿Cómo me visualizo resolviendo este problema?

Este es un ejercicio en línea para el que estoy tratando de entender la solución.

La pregunta es:

Dada la imagen a continuación (una matriz multidimensional), los valores 0 actúan como una tubería y los valores 1 actúan como cemento. Necesito escribir código para determinar si la "tubería" se extiende desde la parte superior de la primera matriz (se puede decir que es una "apertura" de una tubería) hasta la parte inferior de la última matriz.

 const arr = [ [0, 0, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [1, 1, 1, 1, 0], [1, 0, 1, 1, 0], ]

El código que escriba para la matriz anterior arrojaría "verdadero" porque los valores 0 forman el siguiente patrón (reemplace con el asterisco):

 const arr = [ [0, 0, 0, *, 1], [0, 0, 1, *, *], [0, 0, 0, 1, *], [1, 1, 1, 1, *], [1, 0, 1, 1, *], ]

En mi cabeza, visualizo este problema como uno en el que crearía un puntero para moverme por las matrices. Si las reglas solo requirieran que el codificador trabajara con un solo 0 por matriz, el problema sería fácil de resolver. Siendo que hay múltiples callejones sin salida es donde mi mente se vuelve papilla. Supongo que hay una manera más fácil de ver este problema que pensar en bucles. Sé que esto se puede matemetizar, pero no soy exactamente una persona matemática.

Mi proceso de recuperación es simplemente crear una colección de funciones como:

 checkSurroundingValues() goForward() goBackward() goLeft() goDOwn() goUp()

etc., pero hacerlo de esta manera se convierte en un lío demasiado complicado. Me imagino que hay algunos trucos para visualizar cómo completar este problema. Quiero entender claramente "el truco" y el proceso de pensamiento.

Siento que el camino a seguir es escribir un código que siga a cada "cero" y genere efectivamente un nuevo "rastreador" para seguir cada rastro, pero no tengo idea de cómo escribir eso. :)

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

hacerlo de esta manera se convierte en un lío demasiado complicado

Es más repetitivo de lo que necesitas, pero no tanto.

Primero haga un conjunto o matriz de índices visitados hasta el momento, por ejemplo, 1_2 corresponde a haber visitado arr[1][2] . Haz una función recursiva que:

  • Comprueba si la posición que se está iterando ya ha sido visitada. Si es así, vuelve

  • Comprueba si la posición que se está iterando tiene un 1 o un 0. Si es 1, regresa.

  • Comprueba si la posición que se está iterando tiene el índice x máximo (en cuyo caso, se encuentra en la parte inferior); volver verdadero

  • Llame a la función recursivamente con los cuatro cuadrados circundantes: (0, 1), (1, 0), (0, -1), (-1, 0). Si alguna de las llamadas recursivas devuelve verdadero, devuelve verdadero. Debería ser tan simple como

     return [ recuse(x + 1, y), recuse(x - 1, y), recuse(x, y + 1), recuse(x, y - 1), ].some(Boolean);
  • Para comenzar la recursividad, llame a la función para todos los elementos superiores en el índice 0 en la matriz de entrada.

Hay una serie de cosas que tienes que hacer para armarlo, pero es un algoritmo bastante simple.

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda