amarao: (Default)
[personal profile] amarao

Первый раз я ощутил Силу. Задача - roman numerals, с обещанием, что на входе нет мусора.

pub fn roman_to_int(s: String) -> i32 {
    let mut acc = 0;
    let mut stream = s.chars().peekable();
    while let Some(curr) = stream.next(){
        let next = stream.peek();
        acc += match (curr, next){
            ('I', Some('V')) => -1,
            ('I', Some('X')) => -1,
            ('X', Some('L')) => -10,
            ('X', Some('C')) => -10,
            ('C', Some('D')) => -100,
            ('C', Some('M')) => -100,
            ('I', _) => 1,
            ('V', _) => 5,
            ('X', _) => 10,
            ('L', _) => 50,
            ('C', _) => 100,
            ('D', _) => 500,
            ('M', _) => 1000,
            _ => panic!("Bad symbol")
        }
    }
    acc
}

Результат, как всегда, 0ms, 2МБ памяти.

PS Обещают, что скоро можно будет писать так:

('I', Some('V'|'X')) => -1,

Date: 2021-09-09 10:57 pm (UTC)
ufm: (Default)
From: [personal profile] ufm
Красиво. Но как всё красивое - ломается об суровую действительность. Спасибо Микрософту и Юникоду.

Date: 2021-09-25 02:31 pm (UTC)
juan_gandhi: (Default)
From: [personal profile] juan_gandhi

Красивое.

Profile

amarao: (Default)
amarao

September 2025

S M T W T F S
 12345 6
78 910111213
14151617 181920
21222324252627
282930    

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Oct. 3rd, 2025 01:08 am
Powered by Dreamwidth Studios