レス書き込み
スレへ戻る
写
レス栞
レス消
プログラミングのお題スレ Part22
PC,スマホ,PHSは
ULA
べっかんこ
公式(スマホ)
公式(PC)
で書き込んでください。
名前
メール
引用切替:
レスアンカーのみ
>>814 > >>812 > Rust >>799の逆変換の重複順列の何番目か算出 > > use itertools::Itertools; > use num::{BigUint, One}; > > // 重複順列の何番目かを求める ex. "222331434114" → "123456"番目 > fn to_nth(input: &str) -> String { > // 出現数 > let (mut counts, chars): (Vec<usize>, Vec<char>) = input.chars().sorted().dedup_with_count().multiunzip(); > // index化input > let input: Vec<usize> = input.chars().map(|c| chars.iter().position(|&c0| c0 == c).unwrap()).collect(); > // 階乗関数 > fn factorial(x: usize) -> BigUint { (1..=x).fold(BigUint::one(), |p, x| p * x) } > // 重複順列の総数 > let mut whole: BigUint = factorial(input.len()) / counts.iter().map(|&x| factorial(x)).product::<BigUint>(); > // nth番目を算出 > (1..=input.len()).rev().zip(input).fold(BigUint::one(), |mut nth, (len, index)| { > // 自分より前までの総数をnthに足す > nth += &whole * counts[..index].iter().sum::<usize>() / len; > // 自分の総数へ更新 > whole *= counts[index]; > whole /= len; > counts[index] -= 1; > nth > }) > .to_string() > }
ローカルルール
SETTING.TXT
他の携帯ブラウザのレス書き込みフォームはこちら。
書き込み設定
で書き込みサイトの設定ができます。
・
ULA
・
べっかんこ(身代わりの術)
・
べっかんこ(通常)
・
公式(スマホ)
・
公式(PC)[PC,スマホ,PHS可]
書き込み設定(板別)
で板別の名前とメールを設定できます。
メモ帳
(0/65535文字)
上
下
板
覧
索
設
栞
歴
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.020s