Percursos
/
Rust
Rust
/
Exercícios
/
Campo de Flores
Campo de Flores

Campo de Flores

Médio

Introdução

O Flower Field é uma reinvenção compassiva do popular jogo Campo Minado. O objetivo do jogo é encontrar todas as flores do jardim com a ajuda de pistas numéricas que indicam quantas flores estão diretamente adjacentes (na horizontal, na vertical e na diagonal) a uma casa. O "Flower Field" veio incluído em versões regionais do Microsoft Windows na Itália, na Alemanha, na Coreia do Sul, no Japão e em Taiwan.

Instruções

A tua tarefa é acrescentar a contagem de flores às casas vazias de um jardim Campo de Flores já completo. O jardim é um tabuleiro retangular composto por casas que estão vazias (' ') ou contêm uma flor ('*').

Para cada casa vazia, conta o número de flores adjacentes (na horizontal, na vertical e na diagonal). Se a casa vazia não tiver flores adjacentes, deixa-a vazia. Caso contrário, substitui-a pelo número de flores adjacentes.

Por exemplo, podes receber um tabuleiro 5 x 4 como este (aqui, os espaços vazios são representados com o caráter '·' para serem visíveis no ecrã):

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

E o teu 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 as &str do Rust são utf8, por isso, embora se possa esperar que "Hello".chars() seja simples, na verdade tem de verificar cada caráter para ver se tem 1, 2, 3 ou 4 u8s de comprimento. Se soubermos que uma &str é ASCII, podemos chamar .as_bytes() e referir os dados subjacentes como um &[u8] (uma fatia de bytes). Iterar sobre uma fatia de bytes ASCII é muito mais rápido, porque não há pontos de código envolvidos. Cada byte ASCII tem um u8 de comprimento.

Consegues completar o desafio sem clonar a entrada?

Editar via GitHub A ligação abre numa nova janela ou separador
Rust Exercism

Estás pronto para começar Campo de Flores?

Inscreve-te no Exercism para aprenderes e dominares Rust com 99 exercícios, e mentoria humana real, tudo grátis.

Mergulha a fundo em Campo de Flores!

Exploramos ciclos for aninhados, o uso engenhoso de min/max para simplificar a verificação de limites, pipelines funcionais e a utilização de matrizes bidimensionais.