[過去ログ]
Qiita 4 - キータぞ、来たぞ、キータだぞー (1002レス)
Qiita 4 - キータぞ、来たぞ、キータだぞー http://mevius.5ch.net/test/read.cgi/tech/1705486836/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
315: デフォルトの名無しさん [sage] 2024/03/03(日) 21:47:18.39 ID:B4rwo5Er 閏年の仕様が変わったら判定関数だけ置き換えればいいのだから 判定関数の中身なんて何でもいいのよ 割り算(剰余算)と分岐はCPUにとって非常に遅いから避けるとするならば例えばこんな感じ fn is_leap_year(year: u64) -> bool { let q100 = (year * 42949673) >> 32; ((q100 & 3 == 0) | (q100 * 100 != year)) & (year & 3 == 0) } http://mevius.5ch.net/test/read.cgi/tech/1705486836/315
316: デフォルトの名無しさん [sage] 2024/03/03(日) 22:44:59.76 ID:korTDzLq >>315 107374182500年は平年? 閏年? http://mevius.5ch.net/test/read.cgi/tech/1705486836/316
318: デフォルトの名無しさん [sage] 2024/03/04(月) 00:48:03.64 ID:nt/dsevV >>315 素直に100で割らない意味がわからん。 要らんことやって仕事増やすタイプだろお前。 pub fn is_leap_year(year: u64) -> bool { let q100 = year / 100; ((q100 & 3 == 0) | (q100 * 100 != year)) & (year & 3 == 0) } https://godbolt.org/z/YKPWx7ecW http://mevius.5ch.net/test/read.cgi/tech/1705486836/318
319: デフォルトの名無しさん [sage] 2024/03/04(月) 08:16:08.85 ID:L2qxv/xY >>315 > 閏年の仕様が変わったら判定関数だけ置き換えればいいのだから > 判定関数の中身なんて何でもいいのよ 仕様通りに動作するコーディングできるようなってからカッコイイこと言おうなw http://mevius.5ch.net/test/read.cgi/tech/1705486836/319
321: デフォルトの名無しさん [sage] 2024/03/04(月) 09:02:08.19 ID:4WAZxDSM >>315 Rustって使ったことないんだけど動確してみた。書き方合ってる? fn is_leap_year(year: u64) -> bool { let q100 = (year * 42949673) >> 32; ((q100 & 3 == 0) | (q100 * 100 != year)) & (year & 3 == 0) } fn main() { let year = 107374182500; println!("is_leap_year({}) -> {}", year, is_leap_year(year)); } 実行結果: is_leap_year(107374182500) -> true https://wandbox.org/permlink/QpmojpixtLrxk9CW http://mevius.5ch.net/test/read.cgi/tech/1705486836/321
326: デフォルトの名無しさん [sage] 2024/03/04(月) 10:17:08.86 ID:nwGjv9Ax https://wandbox.org/permlink/V9X44saMMVMpQVoi > thread 'main' panicked at 'attempt to multiply with overflow', prog.rs:2:14 > note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace あっこれはカッコ悪いなw >>315 > 割り算(剰余算)と分岐はCPUにとって非常に遅いから避けるとするならば例えばこんな感じ 素直に100で割ってればオーバーフローしないんだし優先順位間違ってるよ。 http://mevius.5ch.net/test/read.cgi/tech/1705486836/326
332: デフォルトの名無しさん [sage] 2024/03/04(月) 13:53:50.23 ID:GQyS78JX Rust支持の人達って安全について意識が高く技術的レヴェルが高い層だと思っていたので自ら率先して不具合を作り込もうとする>>315の存在には驚いたんだけど、よく考えてみると 「えっ今どきEmacsなんて使ってるの?今はVSCode一択でしょ」 「えっ今どきSVNなんて使ってるの?今はgit一択でしょ」 「えっ今どきJavaなんて使ってるの?今はKotlin一択でしょ」 「えっ今どきC++なんて使ってるの?今はRust一択でしょ」 使ってる道具でマウント取ろうとする奴なんて昔からいるし使ってる道具が新しく洗練されてたとしてそれ使ってる奴の技術的高さを証明するものではないしなあ、変な先入観持ってたわと反省。 http://mevius.5ch.net/test/read.cgi/tech/1705486836/332
343: デフォルトの名無しさん [sage] 2024/03/04(月) 20:30:16.70 ID:k69OqpEV >>322 >>315のコードでおかしな結果を出す一番近い年が107374182500年だと思ってる?? http://mevius.5ch.net/test/read.cgi/tech/1705486836/343
348: デフォルトの名無しさん [sage] 2024/03/04(月) 21:07:19.90 ID:lbPgOJLr >>315のコードは ・なぜ引数yearの型がu64なのか ・yearを100で割れば良いところを2**32/100倍して32ビット右シフトなんて馬鹿なことをしてるのか 謎なのよなあ、こんなコード業務で書いたら絶対レビューでなんか言われるやつじゃん。 説明すれや >本人 http://mevius.5ch.net/test/read.cgi/tech/1705486836/348
361: デフォルトの名無しさん [sage] 2024/03/05(火) 11:10:48.88 ID:kMFA7wVm >>355 > 関数内部の単なる数値演算に保守性もクソもないぜ >>315のクソコード見てから言え http://mevius.5ch.net/test/read.cgi/tech/1705486836/361
366: デフォルトの名無しさん [sage] 2024/03/05(火) 18:44:35.96 ID:1i72r55F >>318 「let q100 = year / 100;」の方が生成コードが長く遅くなってるな あくまでも速さ優先ということならば>>315の 「let q100 = (year * 42949673) >> 32;」が正解でいいんじゃないか あとは状況による使い分けだろう http://mevius.5ch.net/test/read.cgi/tech/1705486836/366
368: デフォルトの名無しさん [sage] 2024/03/05(火) 20:42:06.70 ID:HwnQ5/nd > あくまでも速さ優先ということならば>>315の > 「let q100 = (year * 42949673) >> 32;」が正解でいいんじゃないか 「自分は>>315じゃないけどこの人のコードが正解だと思いますよ」みたいな投稿よくできるなあ。 http://mevius.5ch.net/test/read.cgi/tech/1705486836/368
376: デフォルトの名無しさん [sage] 2024/03/07(木) 20:58:11.23 ID:HzTOrgQG >>315と>>374を比べると微妙に違うんだな q100 = (year * 42949673) >> 32 q100 = (year * 1374389535) >> 37 http://mevius.5ch.net/test/read.cgi/tech/1705486836/376
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.031s