今回の件は全体が見やすいように3つの部分に分けるとプログラムはこれだけだね
type Count = fn(usize, usize) -> usize;
const DIV: Count = |t, n| (t % n == 0) as usize;
const IN: Count = |t, n| t.to_string().contains(&n.to_string()) as usize;
const DIV_OR_IN: Count = |t, n| (t % n == 0 || t.to_string().contains(&n.to_string())) as usize;
const DIV_AND_MULTI_IN: Count = |t, n| (t % n == 0) as usize + t.to_string().split(&n.to_string()).count() - 1;
type Rule<'a> = (Count, &'a[(usize, &'a str)]);
const CLASSIC: Rule = (DIV, &[(3, "Fizz"), (5, "Buzz")]);
const DIGITS: Rule = (IN, &[(3, "Fizz"), (5, "Buzz")]);
const BOOM: Rule = (DIV_OR_IN, &[(3, "Fizz"), (5, "Buzz"), (7, "Boom")]);
const WOOF: Rule = (DIV_AND_MULTI_IN, &[(3, "Fizz"), (5, "Buzz"), (7, "Woof")]);
const POP_WHACK: Rule = (DIV, &[(3, "Fizz"), (5, "Buzz"), (7, "Pop"), (11, "Whack")]);
const ZING_CHOP: Rule = (DIV, &[(3, "Fizz"), (5, "Buzz"), (7, "Pop"), (8, "Zing"), (11, "Whack"), (13, "Chop")]);
struct FizzBuzz<'a>(usize, Rule<'a>);
impl<'a> std::fmt::Display for FizzBuzz<'a> {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
let FizzBuzz(target, (count, list)) = self;
let mut is_done = false;
for &(number, name) in *list {
for _ in 0..count(*target, number) {
f.write_str(name)?;
is_done = true;
}
}
if !is_done {
write!(f, "{target}")?;
}
Ok(())
}
}
オブジェクト指向はオワコン? part3
■ このスレッドは過去ログ倉庫に格納されています
2026/08/27(木) 19:55:08.94ID:Fm6ww48Z
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【野球】侍ジャパン、韓国に快勝し優勝! 大会3連覇 西川先制弾、正木4戦連発、先発の高橋は7回1失点と好投 アジアCS [冬月記者★]
- 安倍晋三元首相の銅像建立 東郷神社で除幕式 昭恵さんら参列 福岡・福津 (産経) [少考さん★]
- 消費減税、効果小さい63% 財源、支援金説明必要85%-共同通信世論調査 ★2 [蚤の市★]
- 【音楽】スピッツのドラム・﨑山龍男、交通事故で救急搬送 「命に別状はないものの、全身を強く打っており」 [Ailuropoda melanoleuca★]
- 【実況】アジアプロ野球チャンピオンシップ・決勝 『日本 vs 韓国』 TBS系 19:00~ [冬月記者★]
- 【芸能】小泉今日子、クマ被害対策でドングリの木3000本植樹 「口だけではダメ」自ら行動し高まる“政治家転身”への期待★2 [冬月記者★]
- 今日床屋さん行ったんやけどハゲにされてたんやが🥺
- 【緊急】絶対にやるべきギャルゲーやノベルゲーを教えてほしい
- ぼっちざろっくの喜多郁代ちゃんの足を舐めたい
- 【悲惨】日本人の81%「日本は真面目に頑張って働いてる普通の人が十分報われない」 実際、年収330万円〜870万円の世帯で可処分所得が激減 [597533159]
- jcコテだけど受験への焦りが
- さっさと死ねよ馬鹿ネカマキモ脛毛👊😅👊🏡