Trilhas
/
Rust
Rust
/
Exercícios
/
Campo de flores
Campo de flores

Campo de flores

Médio

Introdução

Flower Field é uma releitura compassiva do popular jogo Minesweeper. O objetivo do jogo é encontrar todas as flores do jardim usando dicas numéricas que indicam quantas flores estão diretamente adjacentes (na horizontal, na vertical, na diagonal) a uma casa. "Flower Field" foi lançado em versões regionais do Microsoft Windows na Itália, Alemanha, Coreia do Sul, Japão e Taiwan.

Instruções

Sua tarefa é adicionar a contagem de flores às casas vazias de um jardim do Campo de Flores já concluído. O jardim em si é um tabuleiro retangular composto de casas que estão vazias (' ') ou têm uma flor ('*').

Para cada casa vazia, conte quantas flores estão adjacentes a ela (na horizontal, na vertical, na diagonal). Se a casa vazia não tiver flores adjacentes, deixe-a vazia. Caso contrário, substitua-a pela contagem de flores adjacentes.

Por exemplo, você pode receber um tabuleiro 5 x 4 como este (os espaços vazios são representados aqui com o caractere '·' para exibição na tela):

·*·*·
··*··
··*··
·····

E seu código deve transformá-lo nisto:

1*3*1
13*31
·2*2·
·111·

Dica de desempenho

Todas as entradas e saídas estão em ASCII. As Strings e &str do Rust são utf8, então, embora a gente possa esperar que "Hello".chars() seja simples, na verdade ele precisa verificar cada caractere para ver se ele tem 1, 2, 3 ou 4 u8s de comprimento. Se sabemos que uma &str é ASCII, podemos chamar .as_bytes() e nos referir aos dados subjacentes como uma &[u8] (fatia de bytes). Iterar sobre uma fatia de bytes ASCII é muito mais rápido, pois não há pontos de código envolvidos: cada byte ASCII ocupa um u8.

Você consegue completar o desafio sem clonar a entrada?

Editar via GitHub O link abre em uma nova janela ou aba
Rust Exercism

Tudo pronto para começar Campo de flores?

Crie sua conta no Exercism para aprender e dominar Rust com 99 exercícios e mentoria humana de verdade, tudo de graça.

Mergulho profundo em Campo de flores!

Vamos explorar laços for aninhados, o uso inteligente de min/max para simplificar a verificação de limites, pipelines funcionais e o uso de matrizes bidimensionais.