[過去ログ] Rust part24 (1002レス)
前次1-
抽出解除 レス栞

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
372
(2): デフォルトの名無しさん [sage] 2024/06/25(火) 23:30:51.26 ID:oKw2Pfcc(1) AAS
>>347
347(1): デフォルトの名無しさん [sage] 2024/06/25(火) 07:25:12.24 ID:H43UHQbv(1) AAS
>>346
ほぼ定数になる部分まで
実行時に二重ループで毎回計算してるのは効率悪いと思う
展開しないほうがよい

展開する時も二重ループは発生するだけでなく単なる計算より重い
さらに本来は回避できる浮動小数点を使わざるを得なくなる
そして>>342
342(2): デフォルトの名無しさん [sage] 2024/06/24(月) 23:33:41.46 ID:FIb4AZ4T(1/2) AAS
>>328-329
なんかダサい
外部リンク:paiza.io
pub fn f(x: i32) -> i32 {
(
-2413f64*(x.pow(6) as f64)/120960f64
+739f64*(x.pow(5) as f64)/1260f64
-157991f64*(x.pow(4) as f64)/24192f64
+69551f64*(x.pow(3) as f64)/2016f64
-2691673f64*(x.pow(2) as f64)/30240f64
+88679f64*(x as f64)/840f64
-905f64/21f64
+0.5)
as i32
}
pub fn g(y: i32) -> i32 {
(
13f64*(y.pow(6) as f64)/120960f64
-(y.pow(5) as f64)/315f64
+1415f64*(y.pow(4) as f64)/24192f64
-1511f64*(y.pow(3) as f64)/2016f64
+144793f64*(y.pow(2) as f64)/30240f64
-3053f64*(y as f64)/280f64
+185f64/21f64
+0.5)
as i32
}
pub fn main() {
let a = vec![(1, 2), (2, 1), (3, 3), (4, 10), (6, 4), (8, 8), (10, 6)];
for (x, _y) in &a { println!("{}, {}", x, f(*x)); }
for (_x, y) in &a { println!("{}, {}", y, g(*y)); }
}
のコードをその例のような静的ではなく問題入力値に応じて動的に作り出さなければならない

一方で展開しないならばRustコード数行だけで済み任意の問題に対応できる
割り算部分も0/N=0かN/N=1だけなので整数で済む
375: デフォルトの名無しさん [sage] 2024/06/26(水) 12:30:12.07 ID:j6fp+f8B(1/3) AAS
>>372
>割り算部分も0/N=0かN/N=1だけなので整数で済む
そうだね
この問題の本質はそこだと思うけどそれ言い出すとif使わない理由が無いな
393: デフォルトの名無しさん [sage] 2024/06/27(木) 09:50:18.20 ID:OTNDZ+yC(1/4) AAS
>>372
PyO3おすすめ
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.047s