プログラミングのお題スレ Part22 (831レス)
プログラミングのお題スレ Part22 http://mevius.5ch.net/test/read.cgi/tech/1691038333/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
必死チェッカー(本家)
(べ)
自ID
レス栞
あぼーん
リロード規制
です。10分ほどで解除するので、
他のブラウザ
へ避難してください。
800: デフォルトの名無しさん [sage] 2025/08/16(土) 13:16:59.50 ID:MUbLd8/3 >>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"); } http://mevius.5ch.net/test/read.cgi/tech/1691038333/800
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.038s