DEV Community

Altencir Junior
Altencir Junior

Posted on

Resolvendo problemas no HackerRank: Joaninhas Felizes

Olá, seja bem vindo a mais um Resolvendo problemas no HackerRank: No caso de hoje, iremos jogar um jogo de tabuleiro de joaninhas . Vejamos mais informações com a explicação e sua resolução.

Happy Ladybugs -

Happy Ladybugs é um jogo de tabuleiro com as seguintes propriedades:

  • O tabuleiro é representado por uma string, b, de comprimento n. O ith caractere da string, b[i], denota a ith célula do quadro.
  • Se b[i] for um sublinhado (ou seja, _), significa que a i-ésima célula do quadro está vazia.
  • Se b[i] for uma letra maiúscula do alfabeto inglês (ascii[AZ]), significa que a ¿ésima célula contém uma joaninha da cor b[i].
  • A string b não conterá nenhum outro caractere.
  • Uma joaninha fica feliz apenas quando sua célula adjacente esquerda ou direita (ou seja, b[i+1]) é ocupada por outra joaninha da mesma cor.
  • Em um único movimento, você pode mover uma joaninha de sua posição atual para qualquer célula vazia.
  • Dados os valores de n e b para g jogos de Happy Joaninhas, determine se é possível fazer todas as joaninhas felizes. Para cada jogo, retorne SIM se todas as joaninhas puderem ficar felizes por meio de alguns movimentos. Caso contrário, retorne NÃO.

Exemplo:

b = [YYR_B_BR]
Você pode mover o B e R mais à direita para fazer b = [YYRRBB_] e todas as joaninhas ficarão felizes. Retorno SIM.

Vejamos o código a seguir:

const ladybugs = b.split("");
    const ladybugsSet = [...new Set(ladybugs)];

    if (!ladybugsSet.includes("_")) {
      for (let i = 0; i < ladybugs.length; i++) {
        if (ladybugs[i - 1] !== ladybugs[i] && ladybugs[i] !== ladybugs[i + 1]) return "NO";
      }
      return "YES";
    } else {
      for (const ladybug of ladybugsSet) {
        if (ladybug !== "_") {
          if (ladybugs.filter((color) => color === ladybug).length === 1) return "NO";
        }
      }
      return "YES";
    }
Enter fullscreen mode Exit fullscreen mode

Esse código verifica se é possível rearranjar as joaninhas representadas pela string b de forma que cada joaninha tenha pelo menos uma joaninha vizinha da mesma cor, ou se é possível colocar "_" em alguns espaços vazios para atender a essa condição. Se for possível, a função retorna "YES"; caso contrário, retorna "NO".

4
7
RBY_YBR
6
X_Y__X
2
__
6
B_RRBR


input:
YES
NO
YES
YES
Enter fullscreen mode Exit fullscreen mode

Assim, concluímos mais um Resolvendo problemas no HackerRank: até a próxima.

Top comments (0)