プログラミングのお題スレ Part22 (860レス)
上下前次1-新
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
800(1): 08/16(土)13:16 ID:MUbLd8/3(1)調 AAS
>>799 Rust 愚直にn回まわし
use itertools::Itertools; // for tuple_windows()
fn f(init: &str, n: usize) -> String {
let mut list = init.chars().rev().collect::<Vec<_>>();
for _ in 1..n {
if let Some((pre_index, (_, old))) = list.iter().tuple_windows().enumerate().find(|(_, (pre, cur))| pre > cur) {
let old_index = pre_index + 1;
let (new_index, _) = list.iter().enumerate().find(|(_, cur)| cur > &old).unwrap();
list.swap(old_index, new_index);
list[..old_index].reverse();
}
}
list.into_iter().rev().collect()
}
fn main() {
assert_eq!(f("123456789", 1), "123456789");
assert_eq!(f("123456789", 2), "123456798");
assert_eq!(f("123456789", 3), "123456879");
assert_eq!(f("123456789", 123456), "416589732");
assert_eq!(f("123456789", 234567), "684753219");
assert_eq!(f("123456789", 362880), "987654321");
assert_eq!(f("111222333444", 1), "111222333444");
assert_eq!(f("111222333444", 2), "111222334344");
assert_eq!(f("111222333444", 3), "111222334434");
assert_eq!(f("111222333444", 123456), "222331434114");
assert_eq!(f("111222333444", 234567), "324424331112");
assert_eq!(f("111222333444", 369600), "444333222111");
}
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.035s