Trilhas
/
Cairo
Cairo
/
Exercícios
/
O reino dos ecos
O reino dos ecos

O reino dos ecos

Exercício de aprendizagem

Introdução

A impressão em Cairo permite que você exiba mensagens ou informações de depuração durante a execução do programa.

Noções básicas

Cairo fornece duas macros para impressão:

  • println!: Exibe uma mensagem seguida de uma nova linha.
  • print!: Exibe uma mensagem sem uma nova linha.
println!("Hello, Cairo!"); 
println!("x = {}, y = {}", 10, 20); 

Os placeholders {} são substituídos pelos valores fornecidos.

Formatação de strings

Use format! para criar um ByteArray sem imprimir imediatamente:

let result = format!("{}-{}-{}", "tic", "tac", "toe");
println!("{}", result); // Output: tic-tac-toe

Tipos de dados personalizados

Para tipos personalizados, implemente Display ou derive Debug para impressão:

#[derive(Debug)]
struct Point { x: u8, y: u8 }

let p = Point { x: 3, y: 4 };
println!("{:?}", p); // Debug output: Point { x: 3, y: 4 }

Impressão em hexadecimal

Use {:x} para imprimir inteiros em hexadecimal:

println!("{:x}", 255); // Output: ff

Instruções

No mundo mágico de Echoes, existe um feitiço poderoso chamado "EchoSpeak". Esse feitiço permite que os magos comuniquem seus pensamentos e observações por meio de palavras faladas, que são escritas por penas mágicas. Para dominar esse feitiço, os magos precisam aprender a formular suas palavras e pensamentos de forma clara e concisa, seja sobre números, objetos ou construções mágicas complexas.

Sua tarefa como Aprendiz de Mago é dominar a arte do EchoSpeak. Para isso, você vai aprender a imprimir vários tipos de dados mágicos nos pergaminhos encantados. O EchoSpeak funciona pegando uma tinta mágica especial, representada pelo ByteArray, e inscrevendo mensagens formatadas no pergaminho com feitiços como println! e print!.

Porém, ao lidar com construções mágicas personalizadas, como itens encantados ou feitiços, o EchoSpeak precisa de uma encantação especial para entender como representar esses objetos. É aí que entra a sua magia: aprender a implementar feitiços especiais conhecidos como traits para itens mágicos personalizados.

1. Formatando palavras mágicas

Às vezes, os magos precisam formatar suas palavras mágicas antes de inscrevê-las nos pergaminhos. Você vai escrever uma função que formata três palavras mágicas em uma única mensagem.

Implemente uma função chamada format_magical_chant que retorna uma string formatada no formato "chant1-chant2-chant3".

Exemplo:

let result = format_magical_chant("Spark", "Shine", "Glow");
assert_eq!(result, "Spark-Shine-Glow");

2. Ecoando itens encantados personalizados

O reino de Echoes está cheio de itens encantados. Um desses itens é a EchoStone, que tem dois atributos mágicos: poder e duração. Sua tarefa é implementar a função stringify_echo_stone, que converte uma EchoStone em um ByteArray em um formato especial "EchoStone [power: x, duration: y]", implementando o trait Display.

Exemplo:

let stone = EchoStone { power: 100, duration: 300 };
assert_eq!(stringify(stone), "EchoStone [power: 100, duration: 300]");

3. Depurando a magia

Como aprendiz de mago, depurar é essencial para construções mágicas complexas. Você vai criar uma função que imprime uma EchoStone para depuração, usando o trait Debug. O formato deve ser: "Debugging EchoStone: { power: x, duration: y }".

Exemplo:

let stone = EchoStone { power: 25, duration: 10 };
assert_eq!(format!("{:?}", stone), "Debugging EchoStone: { power: 25, duration: 10 }");
Editar via GitHub O link abre em uma nova janela ou aba
Cairo Exercism

Tudo pronto para começar O reino dos ecos?

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