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

O reino dos ecos

Exercício de aprendizagem

Introdução

Imprimir no Cairo permite-te mostrar mensagens ou informação de debug durante a execução do programa.

Noções básicas

O Cairo disponibiliza duas macros para imprimir:

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

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

Formatação de strings

Usa format! para criar um ByteArray sem imprimir de imediato:

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

Tipos de dados personalizados

Para tipos personalizados, implementa Display ou deriva Debug para imprimir:

#[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

Usa {:x} para imprimir números inteiros em hexadecimal:

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

Instruções

No mundo mágico de Echoes, existe um feitiço poderoso chamado "EchoSpeak". Este feitiço permite aos magos comunicar os seus pensamentos e observações através de palavras faladas, que são escritas por penas mágicas. Para dominar este feitiço, os magos têm de aprender a formular as suas palavras e pensamentos de forma clara e concisa, quer se trate de números, objetos ou construções mágicas complexas.

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

No entanto, ao lidar com construções mágicas personalizadas, como itens ou feitiços encantados, o EchoSpeak precisa de um encantamento especial para entender como representar esses objetos. É aí que entra a tua magia: aprender a implementar feitiços especiais conhecidos como traits para itens mágicos personalizados.

1. Formatar palavras mágicas

Por vezes, os magos precisam de formatar as suas palavras mágicas antes de as inscrever nos pergaminhos. Vais escrever uma função que formata três palavras mágicas numa única mensagem.

Implementa uma função chamada format_magical_chant que devolve uma string formatada na forma "chant1-chant2-chant3".

Exemplo:

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

2. Ecoar itens encantados personalizados

O reino de Echoes está cheio de itens encantados. Um desses itens é a EchoStone, que contém dois atributos mágicos: power e duration. A tua tarefa é implementar a função stringify_echo_stone que converte uma EchoStone num ByteArray num 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. Depurar a magia

Como aprendiz de mago, a depuração é essencial para construções mágicas complexas. Vais criar uma função que imprime um 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 A ligação abre numa nova janela ou separador
Cairo Exercism

Estás pronto para começar O reino dos ecos?

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