パーソナルブログメモリ

a = [1, 1]
for _ in "*" * 999: a += [sum(a[-2:])]
print(a)

Rust 8日目 簡易オセロ問題の下準備

2020-06-06 | Rust 9日坊主

オセロの一手指しのような問題を解く前の下準備です

 

1) 文字列の連結

2) 指定位置文字の入れ替え

3) 文字列から指定1文字のカウント

4) 指定位置文字の比較

5) 変数の型表示

こんなことを検証してみました

 

ソースリスト

fn print_type(_: T) {
    println!("{}", std::any::type_name::());
}

fn main() {
    let str1 = "1234";
    let str2 = "####";
    let str3 = str1.to_owned() + str2; //文字列連結
    println!("{}", str3);
    
    let go = "5";
    let pos = 4;
    let str4 = str3[..pos].to_owned() + go + &str3[pos+1..]; //一文字入れ替え
    println!("{} {}", str4, go);
    
    println!("\n** sharp_count **");
    
    let a_iter = str4.chars().map(|c| c=='#');//#をカウント(失敗)
    for i in a_iter{
        println!("{}", i);
    }
    
    let sharp_count = str4.chars().filter(|&c| c == '#').count();//#をカウント
    println!("{} {}", str4, sharp_count);
    
    println!("\n** compare_&str **");
    
    if &str4[pos..pos+1] == go{
        println!("** go 1 **")
    }
    if str4[pos..pos+1] == *go{
        println!("** go 2 **")
    }
    println!("\n** type_name **");
    print_type(str1);
    print_type(str1.to_owned());
    print_type(str3);
    //print_typename(str4[pos..pos+1]); error
    print_type(&str4[pos..pos+1]);
    print_type(str4);
    //print_type(str4); //2度は呼べない use of moved value: `str4`
    print_type(go);
    print_type(pos);
    print_type(pos); //こちらは呼べるー
}

 

 


最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。