プログラミングのお題スレ Part22 (863レス)
上下前次1-新
抽出解除 レス栞
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
54: デフォルトの名無しさん [] 2023/08/20(日)20:19:24.17 ID:T0IVLETo(1)
>>52
365と366を7で割った余りは1と2なので、平年には翌年の元日の曜日が1つ進み、閏年には2つ進む。
100の倍数の年の例外を除けば、曜日の進みは1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, ...のように
1, 1, 1, 2というパターンの繰り返しになる。
パターン1, 1, 1, 2のうちの最初の1の年から始めて、何年後に曜日の進みの累積が7の倍数かつ
その年が閏年でなくなるかを順々に求めれば6, 11, 11年後となり、ここでパターン1, 1, 1, 2の
うちの最初の1の年に戻るので、以降は6, 11, 11年後というパターンの繰り返しになる。
┌──────────┐
│ ↓
???❷???❷???❷???❷???❷???❷???❷???❷
│ ↑ │ ↑
└─────┘ └──────────┘
238(1): デフォルトの名無しさん [sage] 2024/02/15(木)21:30:35.17 ID:MveN6p4/(1)
>>234
Rust
fn foo(n: usize) -> (usize, Option<usize>) {
let n2b = |n: usize| { let mut o = Some(n); iter::from_fn(|| { let n = o.take()?; o = (n >= 10).then(|| n / 10); Some((n % 10) as i8) }).collect::<Vec<i8>>() };
let b2n = |b: &[i8]| b.iter().rev().fold(0_usize, |n, b| n * 10 + *b as usize);
let pal = |b: &mut [i8]| { let len = b.len() / 2; let (l, u) = b.split_at_mut(len); iter::zip(l, u.iter().rev()).for_each(|(l, u)| *l = *u); };
let inc = |b: &mut [i8]| { let len = b.len() / 2; let mut c = 1; b[len..].iter_mut().for_each(|b| { *b += c; if *b > 9 { *b = 0; c = 1; } else { c = 0; }}); };
let dec = |b: &mut [i8]| { let len = b.len() / 2; let mut c = 1; b[len..].iter_mut().for_each(|b| { *b -= c; if *b < 0 { *b = 9; c = 1; } else { c = 0; }}); };
let fix = |b: &mut [i8]| { if b.last() == Some(&0) { if b.len() & 1 == 0 { b[(b.len() - 1) / 2] = 9; } true } else { false } };
let mut b = n2b(n);
pal(&mut b);
let n1 = b2n(&b);
match n.cmp(&n1) {
Ordering::Equal => return (n, None),
Ordering::Greater => inc(&mut b),
Ordering::Less => dec(&mut b),
}
if fix(&mut b) { b.pop(); }
pal(&mut b);
let n2 = b2n(&b);
match n.abs_diff(n1).cmp(&n.abs_diff(n2)) {
Ordering::Less => (n1, None),
Ordering::Greater => (n2, None),
Ordering::Equal => (n1, Some(n2)),
}
}
385: デフォルトの名無しさん [sage] 2024/08/03(土)21:19:51.17 ID:VMb0ie+F(1/2)
>>384
jwwの外部変形としてこんな感じで交点で分割させるの作ったことあるけどプログラミングスレののお題としては座標指定もなく漠然としすぎていていかがなものか。ちょっと伝わんなかった。
452: デフォルトの名無しさん [] 01/01(水)13:32:50.17 ID:ZpviU2f/(1/7)
>>438
Java
https://paiza.io/projects/c5TaBFHebIAdHNIU_QToUg
457: デフォルトの名無しさん [] 01/01(水)19:35:45.17 ID:ZpviU2f/(5/7)
>>381
Java
https://paiza.io/projects/DzTt5UiETM3n60v4Pj5-hg?language=java
662: デフォルトの名無しさん [sage] 02/28(金)23:07:16.17 ID:SRu+xdWw(1)
よく見たらみんな絶対値をとったりbigintを使ったりしてるな
674: デフォルトの名無しさん [] 03/14(金)20:19:17.17 ID:Imul3vYR(1)
>>672
確かに間違っていた。PowerShellの旧ヴァージョンでは [BigInt]文字列 と書くだけで
文字列をBigInt型に正確に変換できるから>>671のプログラムでも正しい結果が得られるが、
新ヴァージョンではdouble経由での変換に仕様変更されたようで誤差が生じてしまうから
[BigInt]::Parse(文字列) と書かなければならなくなった。
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.036s