Menu
Coddy logo textTech

Outros Slices

Parte da seção Lógica & Fluxo do Journey de Rust da Coddy. Lição 57 de 66.

Embora as fatias de strings sejam muito úteis, a criação de fatias não se limita apenas a strings. O conceito de fatia do Rust se estende a qualquer sequência de elementos, tornando-o uma ferramenta poderosa para trabalhar com coleções sem assumir a propriedade.

Você pode criar slices a partir de arrays e vetores usando a mesma sintaxe que aprendeu para strings. Por exemplo, se você tiver um array de números, poderá criar um slice que faz referência a parte dele ou a todo o array:

let numbers = [1, 2, 3, 4, 5];
let slice: &[i32] = &numbers[1..4]; // Isso nos dá [2, 3, 4]
let full_slice: &[i32] = &numbers;  // Isso referencia o array inteiro

O mesmo princípio funciona com vetores. Você pode criar slices a partir de vetores para trabalhar com partes dos dados sem movê-los nem copiá-los:

let mut vec = vec![10, 20, 30, 40];
let vec_slice: &[i32] = &vec[0..2]; // Isso nos dá [10, 20]
challenge icon

Desafio

Fácil

Você receberá três entradas. A primeira entrada é uma lista de números separados por vírgulas. A segunda entrada contém dois números separados por um espaço, representando os índices inicial e final para criar uma fatia. A terceira entrada é um único número que representa um índice para acessar na fatia.

Crie um vetor a partir dos números separados por vírgulas e, em seguida, crie uma fatia usando o intervalo especificado. Acesse o elemento no índice fornecido na fatia e imprima-o.

Requisitos:

  • Leia a primeira entrada (números separados por vírgulas) e remova os espaços em branco
  • Divida a entrada por vírgulas e converta cada número para i32
  • Crie um vetor a partir desses números
  • Leia a segunda entrada (dois números separados por um espaço) e remova os espaços em branco
  • Divida a segunda entrada por espaço para obter os índices inicial e final
  • Converta ambos os índices para usize
  • Crie uma fatia a partir do vetor usando a sintaxe de intervalo &vec[start..end]
  • Leia a terceira entrada (índice a ser acessado) e remova os espaços em branco
  • Converta o índice para usize
  • Acesse o elemento no índice especificado da fatia
  • Imprima o elemento acessado

Entrada:

  • Primeira linha: Números separados por vírgulas (por exemplo, 10,20,30,40,50)
  • Segunda linha: Dois números separados por um espaço (por exemplo, 1 4)
  • Terceira linha: Um número de índice (por exemplo, 2)

Saída:

  • O elemento no índice especificado da fatia

Experimente você mesmo

use std::io::{self, BufRead};

fn main() {
    let stdin = io::stdin();
    let mut lines = stdin.lock().lines();
    
    // Leia a primeira entrada (números separados por vírgula)
    let first_input = lines.next().unwrap().unwrap();
    
    // Leia a segunda entrada (índices de início e fim)
    let second_input = lines.next().unwrap().unwrap();
    
    // Leia a terceira entrada (índice a acessar)
    let third_input = lines.next().unwrap().unwrap();
    
    // TODO: Escreva seu código abaixo
    // Analise os números separados por vírgula e crie um vetor
    // Analise os índices de início e fim
    // Crie uma fatia a partir do vetor
    // Acesse o elemento no índice especificado da fatia
    
    // Imprima o resultado
    // println!("{}", result);
}
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Lógica & Fluxo

Pratique por conta própria: Compilador de Rust online