闘え
※前スレ
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/
C vs C++ vs Rust Part.3
■ このスレッドは過去ログ倉庫に格納されています
2022/01/27(木) 22:19:47.56ID:avZQ9Wm7
574デフォルトの名無しさん
2022/03/18(金) 00:03:10.42ID:slshVm4c 加えて言えばRxでなければ上限を意識したループで書けるのでメモリ確保が最適化できるし、手でinlineにする部分を選べる分より速く書ける可能性もあるw
575デフォルトの名無しさん
2022/03/18(金) 00:03:27.72ID:slshVm4c >>573
いくらくれる?
いくらくれる?
576デフォルトの名無しさん
2022/03/18(金) 00:10:24.15ID:eD3MnnxT >>574
無理だ
無理だ
577デフォルトの名無しさん
2022/03/18(金) 00:13:29.40ID:slshVm4c 君にはそうなんだねw可哀想にねw
578デフォルトの名無しさん
2022/03/18(金) 00:37:03.66ID:3Q/aNMKI 前スレの時からそうだけどRustのコードばかり出てくるスレ
C++で同じコードを書くと長く見難くなってしまうからだろうけど
C++で同じコードを書くと長く見難くなってしまうからだろうけど
579デフォルトの名無しさん
2022/03/18(金) 00:49:14.78ID:slshVm4c C++20なら普通に同じくらいw
あるのはRustの不慣れな部分コードねw まあこのレベルの作業に良い悪いもないけどw
君等のお勉強()にはいいんじゃないのw
あるのはRustの不慣れな部分コードねw まあこのレベルの作業に良い悪いもないけどw
君等のお勉強()にはいいんじゃないのw
580デフォルトの名無しさん
2022/03/18(金) 03:33:36.54ID:ljbCBN/E >>524のC++バージョン教えて
581デフォルトの名無しさん
2022/03/18(金) 06:33:28.96ID:slshVm4c これだけヒント出してやったのにまだ書けないのやばくね?w
582デフォルトの名無しさん
2022/03/18(金) 08:39:50.87ID:q9WLoJ2B >>542
変数の型を必要最低限の小さいインタフェースで宣言するのが嬉しいのに
とか言っているのに、使わない部分も含めてインターフェイスを制限する変数の型制限を有難がるのは笑いどころでしょうか?
「変数の型を固定して、コーダーの想定外の動きをしないように限定する」なら、そういう考えをもあるよね、となるけど。
変数の型を必要最低限の小さいインタフェースで宣言するのが嬉しいのに
とか言っているのに、使わない部分も含めてインターフェイスを制限する変数の型制限を有難がるのは笑いどころでしょうか?
「変数の型を固定して、コーダーの想定外の動きをしないように限定する」なら、そういう考えをもあるよね、となるけど。
583デフォルトの名無しさん
2022/03/18(金) 19:44:54.15ID:MDox3gf5 >>580
手間がかかって分かりにくいのでC++でやるのは不向き
手間がかかって分かりにくいのでC++でやるのは不向き
584デフォルトの名無しさん
2022/03/18(金) 21:03:36.45ID:slshVm4c >>583
この人も出来ないタイプなんだねw そういうことは全くないよw
この人も出来ないタイプなんだねw そういうことは全くないよw
585デフォルトの名無しさん
2022/03/18(金) 21:36:44.00ID:w8aoFpzv >>584
Rustのように楽にコード書けるの?
Rustのように楽にコード書けるの?
586デフォルトの名無しさん
2022/03/18(金) 21:41:42.97ID:slshVm4c587デフォルトの名無しさん
2022/03/18(金) 22:10:37.73ID:HiGga5GH 9割9分はRustの方が楽にプログラミングできる
588デフォルトの名無しさん
2022/03/18(金) 22:13:55.40ID:slshVm4c 単発IDは自作自演だから信用ならんのだよねw
589デフォルトの名無しさん
2022/03/18(金) 23:01:40.37ID:l4s3ZEj8 ほとんどのケースでC++よりRustが簡潔になることは皆承知
590デフォルトの名無しさん
2022/03/18(金) 23:44:11.33ID:slshVm4c お前がC++使えてないだけw
変わらないよw
単発IDは自作自演
変わらないよw
単発IDは自作自演
591デフォルトの名無しさん
2022/03/19(土) 06:24:53.41ID:GZmTU31E >>590
あちゃ、痛いところつかれましたわ
あちゃ、痛いところつかれましたわ
592デフォルトの名無しさん
2022/03/19(土) 08:29:04.12ID:yuJH1G8D 変わらない と連呼するだけの簡単なお仕事ですw
593デフォルトの名無しさん
2022/03/19(土) 08:34:00.61ID:DslNhsx1 単発IDが皆承知というだけで、ヒントも出したのにC++書けないバカが悪いw
594デフォルトの名無しさん
2022/03/19(土) 08:35:31.99ID:GnnMuKUb Rust信者がたくさん居るかのような見せかけのIDコロコロ
595デフォルトの名無しさん
2022/03/19(土) 14:50:55.94ID:QSBhdvNV596デフォルトの名無しさん
2022/03/19(土) 15:08:06.66ID:DslNhsx1 必要だと思うなら自分で書けよwwww
書かなくても分かるから書いてないだけでw
両方分かる人はちゃんと言葉で説明できるからw
書かなくても分かるから書いてないだけでw
両方分かる人はちゃんと言葉で説明できるからw
597デフォルトの名無しさん
2022/03/19(土) 15:10:45.07ID:DslNhsx1 そもそも分からない言語があるのにこういうスレに来る方が間違いなんだがw
598デフォルトの名無しさん
2022/03/19(土) 15:57:28.84ID:+R/acvy/ >>595
やめたれw
やめたれw
599デフォルトの名無しさん
2022/03/19(土) 16:01:08.28ID:unVMuDSw 口だけでコードとか全然書けないヤツってよくいるよね
600デフォルトの名無しさん
2022/03/19(土) 16:04:54.04ID:DslNhsx1 単発ID君悔しいのねw
俺は永遠に返事し続けるよw 君がC++使えるようになる日が来るといいねw
俺は永遠に返事し続けるよw 君がC++使えるようになる日が来るといいねw
601デフォルトの名無しさん
2022/03/19(土) 16:11:35.17ID:+R/acvy/602デフォルトの名無しさん
2022/03/19(土) 16:12:10.15ID:m5PNQvz6603デフォルトの名無しさん
2022/03/19(土) 16:13:51.10ID:M61n5/yF もう少しわかりやすくして
この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"]
この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"]
604デフォルトの名無しさん
2022/03/19(土) 16:30:53.75ID:kMuw3v3E605デフォルトの名無しさん
2022/03/19(土) 16:40:18.91ID:DslNhsx1 filter_mapがfilterとmapに分かれただけじゃんwwww
マジでそんなのを何度もブラッシュアップするレベルでは俺には一生追いつけないぞw
どうでもいいけどクロージャ(ラムダ)の引数を次のクロージャで使うのは気持ち悪いのと結局collectしちゃうのはイマイチだねw
あと生成コードの比較、もしくは時間測定は出来たのか?w
何度も言うが、誰でもどちらの言語でも同じように書けるぞw
マジでそんなのを何度もブラッシュアップするレベルでは俺には一生追いつけないぞw
どうでもいいけどクロージャ(ラムダ)の引数を次のクロージャで使うのは気持ち悪いのと結局collectしちゃうのはイマイチだねw
あと生成コードの比較、もしくは時間測定は出来たのか?w
何度も言うが、誰でもどちらの言語でも同じように書けるぞw
606デフォルトの名無しさん
2022/03/19(土) 17:31:22.77ID:M61n5/yF607デフォルトの名無しさん
2022/03/19(土) 18:10:48.21ID:DslNhsx1 単発IDがたまに連続させたって意味ないんだけどw
その辺はとうに>>572に書いたよね?w まだ出来ないの?wwwww
その辺はとうに>>572に書いたよね?w まだ出来ないの?wwwww
608デフォルトの名無しさん
2022/03/19(土) 18:22:18.16ID:u/mznaJY >>605
> クロージャ(ラムダ)の引数を次のクロージャで使うのは気持ち悪い
意味不明すぎ
クロージャを理解できていない?
> 結局collectしちゃうのはイマイチだね
わかりやすくcollectしてるだけだろう
collectを外せばイテレータを返すイテレータとなるのは自明
> クロージャ(ラムダ)の引数を次のクロージャで使うのは気持ち悪い
意味不明すぎ
クロージャを理解できていない?
> 結局collectしちゃうのはイマイチだね
わかりやすくcollectしてるだけだろう
collectを外せばイテレータを返すイテレータとなるのは自明
609デフォルトの名無しさん
2022/03/19(土) 18:31:58.03ID:DslNhsx1 またID変えて忙しいやつだなwww
1つ目の点は細かいが、クロージャを外に出したいと思ったときに不自由なんだよw
2つ目の点は遅延評価をわざわざ使うなら、collectしちゃうとロスが発生するのは分かるだろw
例えばコンソールに出力する場合、そのままiteratorをぶん回したらメモリ要らないのに、最初にcollect付けちゃってるから問題なんだよw
後から付ける事はできても、取り外すことは出来ないからw
1つ目の点は細かいが、クロージャを外に出したいと思ったときに不自由なんだよw
2つ目の点は遅延評価をわざわざ使うなら、collectしちゃうとロスが発生するのは分かるだろw
例えばコンソールに出力する場合、そのままiteratorをぶん回したらメモリ要らないのに、最初にcollect付けちゃってるから問題なんだよw
後から付ける事はできても、取り外すことは出来ないからw
610デフォルトの名無しさん
2022/03/19(土) 18:34:23.73ID:+R/acvy/ エアプC++erの言い訳無限に出てくるよw
611デフォルトの名無しさん
2022/03/19(土) 18:37:48.37ID:LL+Ti59i もういいから正解書いてくれ。
612デフォルトの名無しさん
2022/03/19(土) 18:38:41.55ID:DslNhsx1 ありゃりゃココで複垢まで使っちゃうと他で使えなくなっちゃうよ?w いいの?w
613デフォルトの名無しさん
2022/03/19(土) 18:39:15.88ID:+R/acvy/ 書けないのに書けるフリして可哀想やわ
614デフォルトの名無しさん
2022/03/19(土) 18:41:43.33ID:LL+Ti59i 複垢とか何を言ってるのかよくわからんが、正解がどうなるのか気になるので正解かいてくれ。
おれはC++もRustもそんなに知らん。
おれはC++もRustもそんなに知らん。
615デフォルトの名無しさん
2022/03/19(土) 18:43:31.88ID:6MHm2WKJ >>545
手間を惜しまないならチュリ完ならなんでも出来るからなw
手間を惜しまないならチュリ完ならなんでも出来るからなw
616デフォルトの名無しさん
2022/03/19(土) 18:44:04.03ID:DslNhsx1 そんなに知らないならココ見るなよwwww 答えクレクレ君が来る場所じゃないw
617デフォルトの名無しさん
2022/03/19(土) 18:44:08.25ID:jyTBsiM0 >>605
>どうでもいいけどクロージャ(ラムダ)の引数を次のクロージャで使うのは気持ち悪い
クロージャーは互いに独立しているので
引数を次のクロージャーで使うのは不可能です
根本的な理解が出来ていないのでは?
>どうでもいいけどクロージャ(ラムダ)の引数を次のクロージャで使うのは気持ち悪い
クロージャーは互いに独立しているので
引数を次のクロージャーで使うのは不可能です
根本的な理解が出来ていないのでは?
618デフォルトの名無しさん
2022/03/19(土) 18:45:06.81ID:DslNhsx1 チュリ完はプログラミング出来るというだけで、何でもは出来んよw 知ったかくんw
619デフォルトの名無しさん
2022/03/19(土) 18:46:38.78ID:DslNhsx1 入れ子のクロージャでって意味の次のだよw ただの順番w
620デフォルトの名無しさん
2022/03/19(土) 18:47:35.76ID:+R/acvy/ だっさwwww
言い訳ばっかやんwww
言い訳ばっかやんwww
621デフォルトの名無しさん
2022/03/19(土) 18:49:45.68ID:DslNhsx1 分かる人は最初ので全部分かってるから、何もしないw
バカが煽ったり質問したりするから永遠に反応してやってるだけw
バカが煽ったり質問したりするから永遠に反応してやってるだけw
622デフォルトの名無しさん
2022/03/19(土) 18:49:59.87ID:LL+Ti59i いやくるなと言われてもくるけどね。
623デフォルトの名無しさん
2022/03/19(土) 18:50:09.75ID:m5PNQvz6 相変わらすc++コードは全然でてこないな。
624デフォルトの名無しさん
2022/03/19(土) 18:50:51.71ID:+R/acvy/ C++書いたほうが早いのに言い訳しか出てこないの怖いわw
625デフォルトの名無しさん
2022/03/19(土) 18:54:53.91ID:DslNhsx1 Rust推しの駆け出し君がC++を語るとか片腹痛いw
626デフォルトの名無しさん
2022/03/19(土) 19:02:54.69ID:cmtG3lS6627デフォルトの名無しさん
2022/03/19(土) 19:04:05.03ID:DslNhsx1 君等のような駆け出し君がやれマウントだドヤ顔だ上から目線だのと言いつつ、自分の仕事に真摯に取り組まず、自身の評価ばかり気にして待遇がどうの周りがどうのと言い始めて辞めた挙げ句、技術も経験もないままニートになってるから社会問題になってるんだよw
まずは足元を固めてじっくり1つのことをやった方がいいと思うぞおっさん的にはw
まずは足元を固めてじっくり1つのことをやった方がいいと思うぞおっさん的にはw
628デフォルトの名無しさん
2022/03/19(土) 19:06:49.48ID:+R/acvy/ お前がなw
629デフォルトの名無しさん
2022/03/19(土) 19:09:27.82ID:DslNhsx1 あれれ?当たっちゃった?w 頑張れよw
630デフォルトの名無しさん
2022/03/19(土) 19:10:49.95ID:GZmTU31E >>625
痛いのは左の腹ですか?それとも右脇腹ですか?
痛いのは左の腹ですか?それとも右脇腹ですか?
631デフォルトの名無しさん
2022/03/19(土) 19:14:41.36ID:DslNhsx1 あえて訂正してこないところが出来るね君w 背中側の腹だよw
632デフォルトの名無しさん
2022/03/19(土) 19:33:55.07ID:YQxYhoLA >>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]))
}
もちろん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]))
}
633デフォルトの名無しさん
2022/03/19(土) 19:50:41.66ID:YQxYhoLA あとはID:DslNhsx1氏がC++バージョンを書けるかどうか
634デフォルトの名無しさん
2022/03/19(土) 19:52:06.07ID:+R/acvy/ やめたれw
635デフォルトの名無しさん
2022/03/19(土) 19:57:39.82ID:DslNhsx1 あれあれ?全文がなくなって動かなくなってるねwwww
変更はそこだけでいいのかな?w
C++はお前が書けないのがおかしいんだよw
変更はそこだけでいいのかな?w
C++はお前が書けないのがおかしいんだよw
636デフォルトの名無しさん
2022/03/19(土) 20:09:59.31ID:YQxYhoLA637デフォルトの名無しさん
2022/03/19(土) 20:41:03.66ID:DslNhsx1 # こんな感じね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!
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!
638デフォルトの名無しさん
2022/03/19(土) 20:42:40.39ID:DslNhsx1 まあ外部に括りにくいのが気になるのは趣味だから修正はやめといたw
joinはformatに変えただけw
そのまま動くというのはこういうコードw
joinはformatに変えただけw
そのまま動くというのはこういうコードw
639デフォルトの名無しさん
2022/03/19(土) 21:18:01.62ID:OlJIHMMJ 相変わらずコピペ&改変だけしかできないガイガー君だ
ゼロからコードを書くのは苦手だからC++版の方は手付かずのままなわけだ
ゼロからコードを書くのは苦手だからC++版の方は手付かずのままなわけだ
640デフォルトの名無しさん
2022/03/19(土) 21:27:48.52ID:jYZm0dN8 金もらわないとコード書かないんじゃなかったのか
機嫌が良かったのかな?
機嫌が良かったのかな?
641デフォルトの名無しさん
2022/03/19(土) 21:39:07.36ID:DslNhsx1 俺は書けるけど、お前らが書けないのに俺が書いたら書かされた感があって嫌なだけw
642デフォルトの名無しさん
2022/03/19(土) 21:44:20.43ID:LL+Ti59i 残念だな。エレガントなC++のコードみたかったわ。
643デフォルトの名無しさん
2022/03/19(土) 21:47:05.64ID:DslNhsx1 じゃあエレガントでないC++のコードを見せろよw
644デフォルトの名無しさん
2022/03/19(土) 21:50:10.65ID:LL+Ti59i いやおれは書かないけどね。なにをいうてんの。
645デフォルトの名無しさん
2022/03/19(土) 21:57:27.50ID:OlJIHMMJ ガイガー君はコピペ改変なら辛うじてできるからC++派の誰かがコードを書くまで無理だろう
646デフォルトの名無しさん
2022/03/19(土) 22:02:11.32ID:DslNhsx1 なんでC++派とかRust派とかいるんだよwwww
両方書けないのになんでこのスレにいるんだよゴミクズどもwwww
両方書けないのになんでこのスレにいるんだよゴミクズどもwwww
647デフォルトの名無しさん
2022/03/19(土) 22:18:51.04ID:pGbdb8un648デフォルトの名無しさん
2022/03/19(土) 22:19:15.66ID:/tgdZc/e 正確には
Rustだと色々シンプルに書けるためRust派
と
C++でも書ける派
ただし後者はコードが出てこないので実証されていない
Rustだと色々シンプルに書けるためRust派
と
C++でも書ける派
ただし後者はコードが出てこないので実証されていない
649デフォルトの名無しさん
2022/03/19(土) 22:25:23.19ID:DslNhsx1 いやいや
RustだとC++より色々シンプルに書ける派と
RustもC++も同じ派がいるだけだろw
C++だとこんなになっちゃいますってコードが前者から出てないんだがw
C++書けないのにRustだけシンプルに書けると思い込んでるバカはお引取り願おうかねwwwww
RustだとC++より色々シンプルに書ける派と
RustもC++も同じ派がいるだけだろw
C++だとこんなになっちゃいますってコードが前者から出てないんだがw
C++書けないのにRustだけシンプルに書けると思い込んでるバカはお引取り願おうかねwwwww
650デフォルトの名無しさん
2022/03/19(土) 22:32:19.39ID:DslNhsx1 あと個人的に無駄が結構気になるので、さっきのコードRust部分だけ以下に置き換えてくれ
#![forbid(unsafe_code)]
use itertools::Itertools;
fn subsets(len: usize) -> impl Iterator<Item=impl Iterator<Item=usize>> {
(0..(1 << len)).map(move |bits| {
(0..len).filter(move |index| bits & (1 << index) != 0)
})
}
fn main() {
let input = ["a", "b", "c"];
for s in subsets(input.len()) {
println!("[{}]", s.map(|index|&input[index]).format(","));
}
}
#![forbid(unsafe_code)]
use itertools::Itertools;
fn subsets(len: usize) -> impl Iterator<Item=impl Iterator<Item=usize>> {
(0..(1 << len)).map(move |bits| {
(0..len).filter(move |index| bits & (1 << index) != 0)
})
}
fn main() {
let input = ["a", "b", "c"];
for s in subsets(input.len()) {
println!("[{}]", s.map(|index|&input[index]).format(","));
}
}
651デフォルトの名無しさん
2022/03/19(土) 22:36:43.09ID:unVMuDSw 絶対コード書けないだろ
面白すぎw
面白すぎw
652デフォルトの名無しさん
2022/03/19(土) 22:42:30.15ID:miakijMp653デフォルトの名無しさん
2022/03/19(土) 23:04:04.71ID:DslNhsx1 別にu32やu16でもいいよw
むしろセットである必要がないのが素晴らしく合理的だし元とかiteratorにした時点で細かく言えば変わっているw
ただ最適化時に範囲チェックがどこまで見てくれるのかが気になるかな…
ノーチェックでいいと判断してくれたら御の字w
むしろセットである必要がないのが素晴らしく合理的だし元とかiteratorにした時点で細かく言えば変わっているw
ただ最適化時に範囲チェックがどこまで見てくれるのかが気になるかな…
ノーチェックでいいと判断してくれたら御の字w
654デフォルトの名無しさん
2022/03/19(土) 23:27:21.61ID:YSd+hKe3655デフォルトの名無しさん
2022/03/19(土) 23:49:24.15ID:DslNhsx1 お前は何を言ってるんだw
inputのサイズで、この方式だと30個が上限w
usizeはオーバースペックなのw
inputのサイズで、この方式だと30個が上限w
usizeはオーバースペックなのw
656デフォルトの名無しさん
2022/03/19(土) 23:58:01.67ID:Xi4ntxoy >>653
Iteratorではなく他の言語のようにコストを払ってVec(のVec)で返したいならば
以下のように2段階それぞれcollect()するだけなのでコードが本質的に変わるわけではない
fn subsets<T>(input: &[T]) -> Vec<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())
.collect()
}
そしてあなたもcollect()して返すのはイマイチだと>>605で明言しているのだから
今回の結論はどちらもcollect()せずにイテレータのイテレータとなる>>632のコードが正解
Iteratorではなく他の言語のようにコストを払ってVec(のVec)で返したいならば
以下のように2段階それぞれcollect()するだけなのでコードが本質的に変わるわけではない
fn subsets<T>(input: &[T]) -> Vec<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())
.collect()
}
そしてあなたもcollect()して返すのはイマイチだと>>605で明言しているのだから
今回の結論はどちらもcollect()せずにイテレータのイテレータとなる>>632のコードが正解
657デフォルトの名無しさん
2022/03/20(日) 00:10:53.62ID:1+CNf8az658デフォルトの名無しさん
2022/03/20(日) 01:32:33.30ID:+zPQ2FRY659デフォルトの名無しさん
2022/03/20(日) 01:40:13.83ID:1+CNf8az660デフォルトの名無しさん
2022/03/20(日) 01:51:34.86ID:+zPQ2FRY661デフォルトの名無しさん
2022/03/20(日) 01:58:09.59ID:1+CNf8az >>660
頭悪いの?遅延評価されてるので、必要にならない限り計算されないんだけどw
その値も必要時に計算され、その結果を引数に与えられたiteratorが生成されて返ってくるだけだろw
そのときにiteratorがセットになってないindexだけ返ってきてそれがsubsetsになるの?wwww
足りない頭に脳味噌もう少し充填した方がいいよw
頭悪いの?遅延評価されてるので、必要にならない限り計算されないんだけどw
その値も必要時に計算され、その結果を引数に与えられたiteratorが生成されて返ってくるだけだろw
そのときにiteratorがセットになってないindexだけ返ってきてそれがsubsetsになるの?wwww
足りない頭に脳味噌もう少し充填した方がいいよw
662デフォルトの名無しさん
2022/03/20(日) 02:52:06.33ID:fen0VFs0 ガイガー君の主張だと
入力として集合をスライスとしてもらって
出力としてその部分集合をイテレータとして返す>>522は無駄で
出力としてその部分集合もイテレータで返し二段イテレータとなる>>632も無駄で
そもそも入力としての集合を関数に渡す必要がなく長さだけ渡してインデックスだけ返せばいいとの主張で>>650なんだろ
それならばもっと無駄を排除して次で十分だ
fn subsets(len: usize) -> impl Iterator<Item=usize> {
0..(1 << len)
}
これで各部分集合をビット表現で得られる
サイズも最小となりビット演算も可能で使い回しもよい
fn main() {
let input = ["a", "b", "c"];
let len = input.len();
for bits in subsets(len) {
println!("{:b} ({})", bits, (0..len).filter(|i| bits & (1 << i) != 0).map(|i| &input[i]).format(","));
}
}
このように文字列として必要になった場合に初めて変換すればよい
ついでにビット表現文字列も同時に表示できる
ガイガー君の無駄を無くす主張を認めるならばこのほうがさらに優れていることになる
したがってこの件もガイガー君の敗北だ
入力として集合をスライスとしてもらって
出力としてその部分集合をイテレータとして返す>>522は無駄で
出力としてその部分集合もイテレータで返し二段イテレータとなる>>632も無駄で
そもそも入力としての集合を関数に渡す必要がなく長さだけ渡してインデックスだけ返せばいいとの主張で>>650なんだろ
それならばもっと無駄を排除して次で十分だ
fn subsets(len: usize) -> impl Iterator<Item=usize> {
0..(1 << len)
}
これで各部分集合をビット表現で得られる
サイズも最小となりビット演算も可能で使い回しもよい
fn main() {
let input = ["a", "b", "c"];
let len = input.len();
for bits in subsets(len) {
println!("{:b} ({})", bits, (0..len).filter(|i| bits & (1 << i) != 0).map(|i| &input[i]).format(","));
}
}
このように文字列として必要になった場合に初めて変換すればよい
ついでにビット表現文字列も同時に表示できる
ガイガー君の無駄を無くす主張を認めるならばこのほうがさらに優れていることになる
したがってこの件もガイガー君の敗北だ
663デフォルトの名無しさん
2022/03/20(日) 02:58:15.92ID:1+CNf8az バカだなw コードにしなくてもそんなのは分かってんだよwwww
それじゃ意味が不明である上にI/Fとしても稚拙極まりないと言ってるんだよw
返ってくる数字が何なのか意味不明だろうにw
今回は元作者がアホなために30個そこそこしか作成できないわけで、まあそれでもなんとかなるわけだが、いずれロジックを修正して無限に生成できるようにしたときにまだそんなビット列に拘るのかい?
敗北はお前wwww
それじゃ意味が不明である上にI/Fとしても稚拙極まりないと言ってるんだよw
返ってくる数字が何なのか意味不明だろうにw
今回は元作者がアホなために30個そこそこしか作成できないわけで、まあそれでもなんとかなるわけだが、いずれロジックを修正して無限に生成できるようにしたときにまだそんなビット列に拘るのかい?
敗北はお前wwww
664デフォルトの名無しさん
2022/03/20(日) 03:15:01.33ID:fen0VFs0665デフォルトの名無しさん
2022/03/20(日) 03:23:47.90ID:1+CNf8az >>664
お猿さんの妄想が事実と食い違ってたところで俺にはどうでもいいんだけど、事実はC、P、階乗みたいな計算や集合みたいなのは俺小学校時代から知ってるw
だから冪集合と聞くだけで、君のようにカンニングすることなく答えに辿りついてしまうんだよw
ビット表現から生成する方法を必死に提唱してたのは俺一人しか知らないけど、この手の処理は原則変更可能な元データのセットを用意すればスワップするだけで生成出来るものだよw
可哀想にねw
お猿さんの妄想が事実と食い違ってたところで俺にはどうでもいいんだけど、事実はC、P、階乗みたいな計算や集合みたいなのは俺小学校時代から知ってるw
だから冪集合と聞くだけで、君のようにカンニングすることなく答えに辿りついてしまうんだよw
ビット表現から生成する方法を必死に提唱してたのは俺一人しか知らないけど、この手の処理は原則変更可能な元データのセットを用意すればスワップするだけで生成出来るものだよw
可哀想にねw
666デフォルトの名無しさん
2022/03/20(日) 03:33:20.84ID:fen0VFs0 ガイガー君はsubsets関数をプログラミングする時になぜか非常に遠回りとなるitertools.combinationsを使った ソース>>463
この事実からガイガー君はアルゴリズムや数学などが不得意であると断言できる
ここまでコピペ改変しか披露できていないことからプログラミングが不得意なのだろう
この事実からガイガー君はアルゴリズムや数学などが不得意であると断言できる
ここまでコピペ改変しか披露できていないことからプログラミングが不得意なのだろう
667デフォルトの名無しさん
2022/03/20(日) 03:58:13.20ID:1+CNf8az668デフォルトの名無しさん
2022/03/20(日) 05:21:36.47ID:1V6eoYkY >>460を見てみたけど
最終的ににべき集合のべき集合が欲しいみたいよ
MathematicaだとSubsets[Subsets[{a, b, c}]]で済むと言ってるね
それに対して>>463はitertools.combinationsを使ってsubsetsを実装
今回のケースでわざわざcombinationsを用いた実装が必要なのかどうかは不明
そして空集合が出力されないバグ実装
rangeを1開始でなくて0開始にしないと駄目ですよ
それはさておき元と同じインタフェースならばRust版は>>656の実装でOK
subsets(subsets(&["a", "b", "c"])) でべき集合のべき集合がちゃんと得られますね
最終的ににべき集合のべき集合が欲しいみたいよ
MathematicaだとSubsets[Subsets[{a, b, c}]]で済むと言ってるね
それに対して>>463はitertools.combinationsを使ってsubsetsを実装
今回のケースでわざわざcombinationsを用いた実装が必要なのかどうかは不明
そして空集合が出力されないバグ実装
rangeを1開始でなくて0開始にしないと駄目ですよ
それはさておき元と同じインタフェースならばRust版は>>656の実装でOK
subsets(subsets(&["a", "b", "c"])) でべき集合のべき集合がちゃんと得られますね
669デフォルトの名無しさん
2022/03/20(日) 11:54:10.51ID:1+CNf8az まだ言ってんのかよw 空集合はお茶目なバグだ許せw
combinationを使わない実装の方が珍しいわw
同じI/Fにする必要はないし、それが必要なら簡単に実装出来るw
fn subsets_collect<T>(s: &Vec<T>) -> Vec<Vec<&T>> {
subsets(s.len()).map(|iter| iter.map(|i| &s[i]).collect::<Vec<&T>>()).collect::<Vec<Vec<&T>>>()
}
fn main() {
let input = vec!["a", "b", "c"];
println!("{:?}", subsets_collect(&subsets_collect(&input)));
}
始めから同じ実装にしてないからなw
そして>>656の実装でsubsets(subsets(&["a", "b", "c"]))はエラーwwww
combinationを使わない実装の方が珍しいわw
同じI/Fにする必要はないし、それが必要なら簡単に実装出来るw
fn subsets_collect<T>(s: &Vec<T>) -> Vec<Vec<&T>> {
subsets(s.len()).map(|iter| iter.map(|i| &s[i]).collect::<Vec<&T>>()).collect::<Vec<Vec<&T>>>()
}
fn main() {
let input = vec!["a", "b", "c"];
println!("{:?}", subsets_collect(&subsets_collect(&input)));
}
始めから同じ実装にしてないからなw
そして>>656の実装でsubsets(subsets(&["a", "b", "c"]))はエラーwwww
670デフォルトの名無しさん
2022/03/20(日) 17:12:41.85ID:URBujIbQ ストレス発散オナニーRusterスレッド
671デフォルトの名無しさん
2022/03/20(日) 17:36:53.71ID:1+CNf8az いや、Rusterは尽く俺にやられてるんだがw
しかもC++できないただの駆け出しw
しかもC++できないただの駆け出しw
672デフォルトの名無しさん
2022/03/20(日) 17:51:03.84ID:HHTijYmK >>669は嘘つき
やってみたら>>656の実装で動いた
fn main() {
println!("{:?}", subsets(&subsets(&["a"])));
println!("{:?}", subsets(&subsets(&["a", "b"])));
println!("{:?}", subsets(&subsets(&["a", "b", "c"])));
}
ちゃんとべき集合のべき集合が出力されている
1つ目
[[], [[]], [["a"]], [[], ["a"]]]
2つ目
[[], [[]], [["a"]], [[], ["a"]], [["b"]], [[], ["b"]], [["a"], ["b"]], [[], ["a"], ["b"]], [["a", "b"]], [[], ["a", "b"]], [["a"], ["a", "b"]],
[[], ["a"], ["a", "b"]], [["b"], ["a", "b"]], [[], ["b"], ["a", "b"]], [["a"], ["b"], ["a", "b"]], [[], ["a"], ["b"], ["a", "b"]]]
3つ目は長いので略
やってみたら>>656の実装で動いた
fn main() {
println!("{:?}", subsets(&subsets(&["a"])));
println!("{:?}", subsets(&subsets(&["a", "b"])));
println!("{:?}", subsets(&subsets(&["a", "b", "c"])));
}
ちゃんとべき集合のべき集合が出力されている
1つ目
[[], [[]], [["a"]], [[], ["a"]]]
2つ目
[[], [[]], [["a"]], [[], ["a"]], [["b"]], [[], ["b"]], [["a"], ["b"]], [[], ["a"], ["b"]], [["a", "b"]], [[], ["a", "b"]], [["a"], ["a", "b"]],
[[], ["a"], ["a", "b"]], [["b"], ["a", "b"]], [[], ["b"], ["a", "b"]], [["a"], ["b"], ["a", "b"]], [[], ["a"], ["b"], ["a", "b"]]]
3つ目は長いので略
673デフォルトの名無しさん
2022/03/20(日) 18:08:01.19ID:1+CNf8az >>672
嘘つきはお前w &が余計についてるやんけw やはり駆け出しRust使いは嘘付きしかいないw
嘘つきはお前w &が余計についてるやんけw やはり駆け出しRust使いは嘘付きしかいないw
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【音楽】Perfume・あ~ちゃんの結婚相手「一般男性」は吉田カバンの社長・吉田幸裕氏(41) 高身長で山本耕史似 [Ailuropoda melanoleuca★]
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★4 [ぐれ★]
- 【サッカー】U-17日本代表、激闘PK戦制す 北朝鮮撃破で6大会ぶり8強入り U17W杯 [久太郎★]
- 【インバウンド】中国人観光客の日本での消費額は年間約2兆円超…中国政府は公務員の出張取り消し [1ゲットロボ★]
- 【サッカー】日本代表、ボリビアに3発快勝 森保監督通算100試合目を飾る…鎌田、町野、中村がゴール [久太郎★]
- XやChatGPTで広範囲の通信障害 投稿や閲覧できず [蚤の市★]
- 毒親「働かないでいつもゴロゴロして!」俺「…」毒親「あっ近隣に熊が出たって!」俺「ふぅ」毒親「どこ行くんだ」
- アンケート調査で「高市発言は問題なし」 93.5%wwwwwwwwwwwwwwwwwwwwwwwww [279254606]
- 生活保護の受給額ってなんでこんなに安いの?
- お前らは“スカイマイルタワー”建設計画を知っているか?
- これ誰か分かるか?
- 支払い詰まってインターネット止まった
