1 名前:デフォルトの名無しさん mailto:sage [2022/01/27(木) 22:19:47.56 ID:avZQ9Wm7.net] 闘え ※前スレ C++ vs Rust https://mevius.5ch.net/test/read.cgi/tech/1619219089/ C vs C++ vs Rust Part.2 https://mevius.5ch.net/test/read.cgi/tech/1639539350/
552 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 20:43:27.53 ID:oh1xEFC0.net] enum Optionとか便利で簡潔に null nil undefined -1など無くして安全に出来ていいよね それでいてコンパイル後は最適化されたり消えたりして効率も両立されたり
553 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 20:52:32.01 ID:faeKJv0z.net] 別にC++でも同じことはできるけどね 自分で組めばC++14とかでもrxっぽく書いたり、Optionの実装も余裕 手間さえ惜しまなければw
554 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 20:55:03.76 ID:faeKJv0z.net] Javaも最近は左側省略できるよ おっしゃるとおり基底型何にするかは選べないけどw
555 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 20:58:40.56 ID:LRb50lm3.net] C++17にstd::optional<T>があるにはあるのだが... 膨大な量の既存のSTLが無効値をoptionalに置き換えられることはない つまり無効値でoptionalを返す風潮ができにくいから悲しみ
556 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 20:59:36.98 ID:oh1xEFC0.net] 引数の型推論は原理的にはかなり出来そうだけど 例えば引数がas_ref()で使われていて変換後がPathなら引数はimpl AsRef<Path>までやっちゃう? でもその利用者へのインタフェース明示や可読性と保守性を考えると型明記でいいような気がする
557 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 21:13:38.45 ID:faeKJv0z.net] C++もautoだらけlambdaだらけにすると引数も戻り値も結構型書かなくていいけど、遠すぎて何に怒られてるのか分からん代入エラーが出たりもするw Rustも同じだけどエラーは分かりやすい
558 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 21:15:46.46 ID:cEFLJG6J.net] >>545 そこはやろうと思えばできるレベルと Rustが標準ライブラリで全面採用サポートしてるレベルで天と地の差があるよね 例えば>>522 もbool値がthenでOptionを生成してそれをfilter_mapが受け取ることで簡潔なコードになっていたり
559 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 21:23:13.02 ID:faeKJv0z.net] そこはfilterとmapの方が分かりやすい
560 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 21:32:28.43 ID:7cb0HHrx.net] 一般的にfilter_mapはわかりやすと速さを両立 だからわざわざfilter_mapやfilter_map_okが用意されている
561 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 21:35:05.28 ID:faeKJv0z.net] そんなところは全く速さに影響しないと思うよ
562 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 21:43:21.73 ID:LVblziyo.net] >>553 その種類のイテレータを2段は最適化前はもちろん速さに影響するけど 最適化により最終コードが同一コードになることを確認したということ?
563 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 21:49:32.84 ID:faeKJv0z.net] お前は速くなることを確認したんかい?w 俺は出来るけど速くならないことを確認する必要がないと判断したw お前は恐らく出来ないw
564 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 21:58:49.13 ID:S0ETBIy2.net] コードそのままならイテレータ2つより1つの方が速いと明白なので 速さが同じと主張する>>555 が最適化で同じコードになることを示す必要がある
565 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 22:05:07.99 ID:faeKJv0z.net] 明白じゃねーよwwwww
566 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 22:19:03.24 ID:ONkUn4dy.net] たぶん>>557 氏はイテレータの動作原理を知らないのだと思う 例えばfilterは構造体Filterを返しそのメソッドnext()がイテレータを進めるごとに呼ばれる 同様にmapは構造体Mapを返しそのメソッドnext()がイテレータを進めるごとに呼ばれる 最適化前はそれら二重のオーバヘッドがある
567 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 22:24:52.40 ID:qNBuWQhB.net] 速さに関して議論するなら最適化のコードがどうなるかを確認すべきでは 特にイテレーターアダプターを何度も噛ませてもfor文相当のコードが生成されるというのはrustの売りのひとつだよね
568 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 22:29:02.79 ID:IFNw/pUN.net] もし最適化後に有意に速度差があるなら、それは性能バグとしてIssueにあげるべき問題だと思う
569 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 22:31:57.85 ID:IHLBrgoM.net] >>559 その通りで最適化で非常に効率な最終コードとなる ただし今回のケースでfilter().map()がfilter_map()と同一コードになるかどうかは自明ではない したがって>>553 に立証義務がある
570 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 22:36:47.68 ID:faeKJv0z.net] 立証義務なんてねーだろwwww できないからって他人に頼るなwwwww
571 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 22:38:48.81 ID:IFNw/pUN.net] 意味的に同じことやってるんだから、理想的な最適化コンパイラは全く同じバイナリを吐くはずで 遅くなるはずってのも別に自明ではないのでは
572 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 22:46:51.69 ID:IHLBrgoM.net] >>563 意味の同じプログラムが最適化で常に同じコードになるかどうかは自明ではない そしてそれを期待することはよいが前提としてはいけない 自明ではないことを同じと主張する側に立証義務がある
573 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 22:48:42.58 ID:faeKJv0z.net] できないんだねwwww rustの吐くコードすげー見にくいしなw それ以前にアセンブラ読めなそうw
574 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 22:52:00.13 ID:IFNw/pUN.net] >>564 ん?別に同じになるのが自明とは言ってないよ どちらも同程度に自明でないって言ってるだけ 立証はまぁやりたい人がやればいいんじゃない
575 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 22:57:38.05 ID:s2P7MscG.net] >>565 > rustの吐くコードすげー見にくいしなw 無知っぷりを曝け出してるな
576 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 23:14:09.53 ID:faeKJv0z.net] お前が無知なだけw
577 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 23:29:12.99 ID:OpaED0hw.net] >>565 LLVMがアセンブリを吐いてることも知らないのか
578 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 23:31:17.03 ID:faeKJv0z.net] ビビリ単発IDが何もかもを証明しちゃってるw お前は何も分かってないw
579 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 23:50:47.22 ID:76PcfavB.net] >>529 C++ではそんなに簡単には書けない
580 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 23:59:39.29 ID:faeKJv0z.net] C++でも簡単に書けるよw C++20で導入されたrangeでも使ってみw より古い規格でもユーザーライブラリを使えばRxっぽい記述は簡単に出来る 自分で書くと難しくはないが骨が折れるタイプの実装 並列化を意識しない限りだけどw まあ並列化を意識しないで簡便さを意識すれば無理にRxを使う必要もないけども・・・
581 名前:デフォルトの名無しさん mailto:sage [2022/03/18(金) 00:00:49.69 ID:Mo7HNly3.net] >>572 無理でしょ 実際に書いてみ
582 名前:デフォルトの名無しさん mailto:sage [2022/03/18(金) 00:03:10.42 ID:slshVm4c.net] 加えて言えばRxでなければ上限を意識したループで書けるのでメモリ確保が最適化できるし、手でinlineにする部分を選べる分より速く書ける可能性もあるw
583 名前:デフォルトの名無しさん mailto:sage [2022/03/18(金) 00:03:27.72 ID:slshVm4c.net] >>573 いくらくれる?
584 名前:デフォルトの名無しさん mailto:sage [2022/03/18(金) 00:10:24.15 ID:eD3MnnxT.net] >>574 無理だ
585 名前:デフォルトの名無しさん mailto:sage [2022/03/18(金) 00:13:29.40 ID:slshVm4c.net] 君にはそうなんだねw可哀想にねw
586 名前:デフォルトの名無しさん mailto:sage [2022/03/18(金) 00:37:03.66 ID:3Q/aNMKI.net] 前スレの時からそうだけどRustのコードばかり出てくるスレ C++で同じコードを書くと長く見難くなってしまうからだろうけど
587 名前:デフォルトの名無しさん mailto:sage [2022/03/18(金) 00:49:14.78 ID:slshVm4c.net] C++20なら普通に同じくらいw あるのはRustの不慣れな部分コードねw まあこのレベルの作業に良い悪いもないけどw 君等のお勉強()にはいいんじゃないのw
588 名前:デフォルトの名無しさん mailto:sage [2022/03/18(金) 03:33:36.54 ID:ljbCBN/E.net] >>524 のC++バージョン教えて
589 名前:デフォルトの名無しさん mailto:sage [2022/03/18(金) 06:33:28.96 ID:slshVm4c.net] これだけヒント出してやったのにまだ書けないのやばくね?w
590 名前:デフォルトの名無しさん mailto:sage [2022/03/18(金) 08:39:50.87 ID:q9WLoJ2B.net] >>542 変数の型を必要最低限の小さいインタフェースで宣言するのが嬉しいのに とか言っているのに、使わない部分も含めてインターフェイスを制限する変数の型制限を有難がるのは笑いどころでしょうか? 「変数の型を固定して、コーダーの想定外の動きをしないように限定する」なら、そういう考えをもあるよね、となるけど。
591 名前:デフォルトの名無しさん mailto:sage [2022/03/18(金) 19:44:54.15 ID:MDox3gf5.net] >>580 手間がかかって分かりにくいのでC++でやるのは不向き
592 名前:デフォルトの名無しさん mailto:sage [2022/03/18(金) 21:03:36.45 ID:slshVm4c.net] >>583 この人も出来ないタイプなんだねw そういうことは全くないよw
593 名前:デフォルトの名無しさん mailto:sage [2022/03/18(金) 21:36:44.00 ID:w8aoFpzv.net] >>584 Rustのように楽にコード書けるの?
594 名前:デフォルトの名無しさん mailto:sage [2022/03/18(金) 21:41:42.97 ID:slshVm4c.net] >>585 楽かどうかは主観なので、まず自分でやってみれば? このレベルなら俺はどちらが楽とかはないよw
595 名前:デフォルトの名無しさん mailto:sage [2022/03/18(金) 22:10:37.73 ID:HiGga5GH.net] 9割9分はRustの方が楽にプログラミングできる
596 名前:デフォルトの名無しさん mailto:sage [2022/03/18(金) 22:13:55.40 ID:slshVm4c.net] 単発IDは自作自演だから信用ならんのだよねw
597 名前:デフォルトの名無しさん mailto:sage [2022/03/18(金) 23:01:40.37 ID:l4s3ZEj8.net] ほとんどのケースでC++よりRustが簡潔になることは皆承知
598 名前:デフォルトの名無しさん mailto:sage [2022/03/18(金) 23:44:11.33 ID:slshVm4c.net] お前がC++使えてないだけw 変わらないよw 単発IDは自作自演
599 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 06:24:53.41 ID:GZmTU31E.net] >>590 あちゃ、痛いところつかれましたわ
600 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 08:29:04.12 ID:yuJH1G8D.net] 変わらない と連呼するだけの簡単なお仕事ですw
601 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 08:34:00.61 ID:DslNhsx1.net] 単発IDが皆承知というだけで、ヒントも出したのにC++書けないバカが悪いw
602 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 08:35:31.99 ID:GnnMuKUb.net] Rust信者がたくさん居るかのような見せかけのIDコロコロ
603 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 14:50:55.94 ID:QSBhdvNV.net] 公平に見てここまでに Rustでの実装コードはある>>522 >>524 C++での実装コードはない 不利なのはC++側
604 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 15:08:06.66 ID:DslNhsx1.net] 必要だと思うなら自分で書けよwwww 書かなくても分かるから書いてないだけでw 両方分かる人はちゃんと言葉で説明できるからw
605 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 15:10:45.07 ID:DslNhsx1.net] そもそも分からない言語があるのにこういうスレに来る方が間違いなんだがw
606 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 15:57:28.84 ID:+R/acvy/.net] >>595 やめたれw
607 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 16:01:08.28 ID:unVMuDSw.net] 口だけでコードとか全然書けないヤツってよくいるよね
608 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 16:04:54.04 ID:DslNhsx1.net] 単発ID君悔しいのねw 俺は永遠に返事し続けるよw 君がC++使えるようになる日が来るといいねw
609 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 16:11:35.17 ID:+R/acvy/.net] >>599 いるよなw コード書いたようが早いような言い訳はいっぱい書けるのになw 言い訳だけはいっぱい書けるんよw
610 名前:デフォルトの名無しさん [2022/03/19(土) 16:12:10.15 ID:m5PNQvz6.net] >>547 互換性が壁になるのは、長く広く使われてる言語ではどうしようも無いしなぁ。 だから言語も新しく作られるわけだけど、新しいものは認めません!という奴はいつだっている。
611 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 16:13:51.10 ID:M61n5/yF.net] もう少しわかりやすくして このsubsetsイテレータをC++で実装すればいいんだよね fn subsets<T>(input: &[T]) -> impl Iterator<Item=Vec<&T>> { let len = input.len(); (0..(1 << len)) .map(move |bits| (0..len) .filter(|index| bits & (1 << index) != 0) .map(|index| &input[index]) .collect()) } fn main() { let input = ["a", "b", "c"]; for s in subsets(&input) { println!("{s:?}"); } } 出力結果 [] ["a"] ["b"] ["a", "b"] ["c"] ["a", "c"] ["b", "c"] ["a", "b", "c"]
612 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 16:30:53.75 ID:kMuw3v3E.net] >>602 置き換えのためのテスト手順なんかも考えずに新しいものにすればいいって言い張る老害も たくさんいるんでその辺はどっちもどっちだがな。
613 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 16:40:18.91 ID:DslNhsx1.net] filter_mapがfilterとmapに分かれただけじゃんwwww マジでそんなのを何度もブラッシュアップするレベルでは俺には一生追いつけないぞw どうでもいいけどクロージャ(ラムダ)の引数を次のクロージャで使うのは気持ち悪いのと結局collectしちゃうのはイマイチだねw あと生成コードの比較、もしくは時間測定は出来たのか?w 何度も言うが、誰でもどちらの言語でも同じように書けるぞw
614 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 17:31:22.77 ID:M61n5/yF.net] >>603 やってみたがC++の従来のイテレータ仕様が悪すぎることが敗因 なのでC++20からのstd::rangesでかなり改善できる ただしRust版ほどシンプルに仕上がらないな >>605 勘違いで詰まらない言いがかりを付けてくるな そこまで言うならばC++版のコードはおまえに任せる
615 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 18:10:48.21 ID:DslNhsx1.net] 単発IDがたまに連続させたって意味ないんだけどw その辺はとうに>>572 に書いたよね?w まだ出来ないの?wwwww
616 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 18:22:18.16 ID:u/mznaJY.net] >>605 > クロージャ(ラムダ)の引数を次のクロージャで使うのは気持ち悪い 意味不明すぎ クロージャを理解できていない? > 結局collectしちゃうのはイマイチだね わかりやすくcollectしてるだけだろう collectを外せばイテレータを返すイテレータとなるのは自明
617 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 18:31:58.03 ID:DslNhsx1.net] またID変えて忙しいやつだなwww 1つ目の点は細かいが、クロージャを外に出したいと思ったときに不自由なんだよw 2つ目の点は遅延評価をわざわざ使うなら、collectしちゃうとロスが発生するのは分かるだろw 例えばコンソールに出力する場合、そのままiteratorをぶん回したらメモリ要らないのに、最初にcollect付けちゃってるから問題なんだよw 後から付ける事はできても、取り外すことは出来ないからw
618 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 18:34:23.73 ID:+R/acvy/.net] エアプC++erの言い訳無限に出てくるよw
619 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 18:37:48.37 ID:LL+Ti59i.net] もういいから正解書いてくれ。
620 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 18:38:41.55 ID:DslNhsx1.net] ありゃりゃココで複垢まで使っちゃうと他で使えなくなっちゃうよ?w いいの?w
621 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 18:39:15.88 ID:+R/acvy/.net] 書けないのに書けるフリして可哀想やわ
622 名前:デフォルトの名無しさん [2022/03/19(土) 18:41:43.33 ID:LL+Ti59i.net] 複垢とか何を言ってるのかよくわからんが、正解がどうなるのか気になるので正解かいてくれ。 おれはC++もRustもそんなに知らん。
623 名前:デフォルトの名無しさん [2022/03/19(土) 18:43:31.88 ID:6MHm2WKJ.net] >>545 手間を惜しまないならチュリ完ならなんでも出来るからなw
624 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 18:44:04.03 ID:DslNhsx1.net] そんなに知らないならココ見るなよwwww 答えクレクレ君が来る場所じゃないw
625 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 18:44:08.25 ID:jyTBsiM0.net] >>605 >どうでもいいけどクロージャ(ラムダ)の引数を次のクロージャで使うのは気持ち悪い クロージャーは互いに独立しているので 引数を次のクロージャーで使うのは不可能です 根本的な理解が出来ていないのでは?
626 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 18:45:06.81 ID:DslNhsx1.net] チュリ完はプログラミング出来るというだけで、何でもは出来んよw 知ったかくんw
627 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 18:46:38.78 ID:DslNhsx1.net] 入れ子のクロージャでって意味の次のだよw ただの順番w
628 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 18:47:35.76 ID:+R/acvy/.net] だっさwwww 言い訳ばっかやんwww
629 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 18:49:45.68 ID:DslNhsx1.net] 分かる人は最初ので全部分かってるから、何もしないw バカが煽ったり質問したりするから永遠に反応してやってるだけw
630 名前:デフォルトの名無しさん [2022/03/19(土) 18:49:59.87 ID:LL+Ti59i.net] いやくるなと言われてもくるけどね。
631 名前:デフォルトの名無しさん [2022/03/19(土) 18:50:09.75 ID:m5PNQvz6.net] 相変わらすc++コードは全然でてこないな。
632 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 18:50:51.71 ID:+R/acvy/.net] C++書いたほうが早いのに言い訳しか出てこないの怖いわw
633 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 18:54:53.91 ID:DslNhsx1.net] Rust推しの駆け出し君がC++を語るとか片腹痛いw
634 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 19:02:54.69 ID:cmtG3lS6.net] >>619 何を言ってるのかわからん 皆にイチャモンつけまくっているだけにみえる 君のsubsetsイテレータ実装を出したまえ
635 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 19:04:05.03 ID:DslNhsx1.net] 君等のような駆け出し君がやれマウントだドヤ顔だ上から目線だのと言いつつ、自分の仕事に真摯に取り組まず、自身の評価ばかり気にして待遇がどうの周りがどうのと言い始めて辞めた挙げ句、技術も経験もないままニートになってるから社会問題になってるんだよw まずは足元を固めてじっくり1つのことをやった方がいいと思うぞおっさん的にはw
636 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 19:06:49.48 ID:+R/acvy/.net] お前がなw
637 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 19:09:27.82 ID:DslNhsx1.net] あれれ?当たっちゃった?w 頑張れよw
638 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 19:10:49.95 ID:GZmTU31E.net] >>625 痛いのは左の腹ですか?それとも右脇腹ですか?
639 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 19:14:41.36 ID:DslNhsx1.net] あえて訂正してこないところが出来るね君w 背中側の腹だよw
640 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 19:33:55.07 ID:YQxYhoLA.net] >>605 もちろんcollect()を外せばそのままイテレータを返すイテレータを返す関数になる fn subsets<T>(input: &[T]) -> impl Iterator<Item=impl Iterator<Item=&T>> { let len = input.len(); (0..(1 << len)) .map(move |bits| (0..len) .filter(move |index| bits & (1 << index) != 0) .map(|index| &input[index])) }
641 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 19:50:41.66 ID:YQxYhoLA.net] あとはID:DslNhsx1氏がC++バージョンを書けるかどうか
642 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 19:52:06.07 ID:+R/acvy/.net] やめたれw
643 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 19:57:39.82 ID:DslNhsx1.net] あれあれ?全文がなくなって動かなくなってるねwwww 変更はそこだけでいいのかな?w C++はお前が書けないのがおかしいんだよw
644 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 20:09:59.31 ID:YQxYhoLA.net] >>635 言いがかりをつけることしか出来ないダメなやつだな 自分でコードを書けないってことなんだろ どうぞ >>632 用の簡易動作確認コード let input = ["a", "b", "c"]; for mut iter in subsets(&input) { println!("({})", iter.join(",")); }
645 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 20:41:03.66 ID:DslNhsx1.net] # こんな感じねw cargo install cargo-edit cargo-geiger cargo new subsets cd subsets cargo add itertools cat >src/main.rs <<EOF #![forbid(unsafe_code)] use itertools::Itertools; fn subsets<T>(input: &[T]) -> impl Iterator<Item = impl Iterator<Item = &T>> { let len = input.len(); (0..(1 << len)).map(move |bits| { (0..len) .filter(move |index| bits & (1 << index) != 0) .map(|index| &input[index]) }) } fn main() { let input = ["a", "b", "c"]; for s in subsets(&input) { println!("[{}]", s.format(",")); } } EOF cargo run cargo geiger # Run cargo-geiger!
646 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 20:42:40.39 ID:DslNhsx1.net] まあ外部に括りにくいのが気になるのは趣味だから修正はやめといたw joinはformatに変えただけw そのまま動くというのはこういうコードw
647 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 21:18:01.62 ID:OlJIHMMJ.net] 相変わらずコピペ&改変だけしかできないガイガー君だ ゼロからコードを書くのは苦手だからC++版の方は手付かずのままなわけだ
648 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 21:27:48.52 ID:jYZm0dN8.net] 金もらわないとコード書かないんじゃなかったのか 機嫌が良かったのかな?
649 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 21:39:07.36 ID:DslNhsx1.net] 俺は書けるけど、お前らが書けないのに俺が書いたら書かされた感があって嫌なだけw
650 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 21:44:20.43 ID:LL+Ti59i.net] 残念だな。エレガントなC++のコードみたかったわ。
651 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 21:47:05.64 ID:DslNhsx1.net] じゃあエレガントでないC++のコードを見せろよw
652 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 21:50:10.65 ID:LL+Ti59i.net] いやおれは書かないけどね。なにをいうてんの。