闘え
※前スレ
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
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
674デフォルトの名無しさん
2022/03/20(日) 18:22:11.71ID:6IwS75Da675デフォルトの名無しさん
2022/03/20(日) 18:28:57.25ID:1+CNf8az676デフォルトの名無しさん
2022/03/20(日) 18:37:30.55ID:GV4qdrT7 実際に>>672で動作してるのだからRustの勝利
C++はコードの片鱗すら出てこない
C++はコードの片鱗すら出てこない
677デフォルトの名無しさん
2022/03/20(日) 18:44:09.03ID:1+CNf8az678デフォルトの名無しさん
2022/03/20(日) 19:01:47.10ID:eXUaH9c5 C++20を使いこなせる人がいないことが敗北原因
Rustよりも利用者少ない
だからこのスレにもC++で書ける人が誰もいない
Rustよりも利用者少ない
だからこのスレにもC++で書ける人が誰もいない
679デフォルトの名無しさん
2022/03/20(日) 19:03:19.57ID:1+CNf8az 俺は書けるけどねwwwww
というかお前が書けないのに書き込んでるからこんな変な話になってるだけで、本来は書ける前提でああでもないこうでもないやるスレだろwwww
というかお前が書けないのに書き込んでるからこんな変な話になってるだけで、本来は書ける前提でああでもないこうでもないやるスレだろwwww
680デフォルトの名無しさん
2022/03/20(日) 19:05:31.63ID:DiBIkIVz それ、昔のコンパイラを今でも使ってる人達にも言えるの?
681デフォルトの名無しさん
2022/03/20(日) 19:11:26.79ID:1+CNf8az は?俺だって必要なら昔のコンパイラ使うぞw
特定CPU用のなんて安定したバージョンでないとバグ踏むからなw
特定CPU用のなんて安定したバージョンでないとバグ踏むからなw
682デフォルトの名無しさん
2022/03/20(日) 19:59:25.97ID:kJ/tleYc C++使えなくてRustは使えますとか、
あと10年はなんの価値もないんじゃ...
あと10年はなんの価値もないんじゃ...
683デフォルトの名無しさん
2022/03/20(日) 22:31:20.58ID:271cfGdl そんな妄想をしても場所によりけり
うちはC++以外の諸言語からRustへ移行したので
Rust使えずC++使える人は価値ゼロ
といったように
うちはC++以外の諸言語からRustへ移行したので
Rust使えずC++使える人は価値ゼロ
といったように
684デフォルトの名無しさん
2022/03/20(日) 23:04:08.64ID:1+CNf8az それは最高にやばそうだなw
685デフォルトの名無しさん
2022/03/20(日) 23:25:08.78ID:Ftc+D3LS 業界標準ツールのRust化も激しいよな
例えばJavaScriptでおなじみのトランスパイラBabel
遅いので当然ながらRust版のSWCというのが作成されて
React/Next.jp環境でもBabelからそのRust版へと移行された
例えばJavaScriptでおなじみのトランスパイラBabel
遅いので当然ながらRust版のSWCというのが作成されて
React/Next.jp環境でもBabelからそのRust版へと移行された
686デフォルトの名無しさん
2022/03/20(日) 23:39:52.49ID:1+CNf8az 全部であるかのごとくに書いてるけどごくごく一部だし、しかも期待したほど速度が上がらずに困ってたよねw
JavaScriptに比べてだぞ?w
JavaScriptに比べてだぞ?w
687デフォルトの名無しさん
2022/03/20(日) 23:57:33.12ID:jG5ySy9q >>686
swcはbabelより20〜50倍速い
swcはbabelより20〜50倍速い
688デフォルトの名無しさん
2022/03/21(月) 00:09:57.25ID:BAdp3agq 公称だろ?w 実際試した人がそうでもなかった(忘れたけど1.x倍くらい)って言ってたよw
689デフォルトの名無しさん
2022/03/21(月) 00:10:28.20ID:BAdp3agq しかも場合によっては遅くなるって言ってたw
690デフォルトの名無しさん
2022/03/21(月) 00:53:26.08ID:1rsJ1Bxd691デフォルトの名無しさん
2022/03/21(月) 01:13:09.95ID:BAdp3agq まあ自分で試したわけじゃないから、そう言われても何とも言えんけどなw
692デフォルトの名無しさん
2022/03/21(月) 03:44:24.39ID:qXBNR9Nr >>669
> fn subsets_collect<T>(s: &Vec<T>)
ガイガー君は相変わらず素人のままだな
そこは&Vec<T>ではなく&[T]と書くのだよ
Vec自体の固有機能に関する動作の場合を除き
狭くVecのみを対象にするのはバカげている
スライスを対象にするのが鉄則
&Vec<T> ←Vecしか受け付けられない
&[T] ←Vecも配列もスライスも受け付ける
> fn subsets_collect<T>(s: &Vec<T>)
ガイガー君は相変わらず素人のままだな
そこは&Vec<T>ではなく&[T]と書くのだよ
Vec自体の固有機能に関する動作の場合を除き
狭くVecのみを対象にするのはバカげている
スライスを対象にするのが鉄則
&Vec<T> ←Vecしか受け付けられない
&[T] ←Vecも配列もスライスも受け付ける
693デフォルトの名無しさん
2022/03/21(月) 04:14:12.72ID:BAdp3agq >>692
そんなこと言われなくても知っとるわwwww
それは俺のポリシーとして、可能ならVecを返すならVecを受けたいだけw
今回のケースではメリットとかないよw
同様にsliceで受けたらArrayで返したいし、iteratorを受けたらiteratorを返したいw
そんなこと言われなくても知っとるわwwww
それは俺のポリシーとして、可能ならVecを返すならVecを受けたいだけw
今回のケースではメリットとかないよw
同様にsliceで受けたらArrayで返したいし、iteratorを受けたらiteratorを返したいw
694デフォルトの名無しさん
2022/03/21(月) 04:24:26.11ID:Czlt7YRo695デフォルトの名無しさん
2022/03/21(月) 04:53:35.01ID:BAdp3agq >>694
[i32] ... Array
&[i32] ... スライス
T ... T
&T ... Tの参照
という理解で、
・特定の型の参照はスライスとして扱える
・Arrayの参照はスライスと区別できない
と思ってて
→スライスで渡されたらArrayで返す
という発想なんだが、違うの?
[i32] ... Array
&[i32] ... スライス
T ... T
&T ... Tの参照
という理解で、
・特定の型の参照はスライスとして扱える
・Arrayの参照はスライスと区別できない
と思ってて
→スライスで渡されたらArrayで返す
という発想なんだが、違うの?
696デフォルトの名無しさん
2022/03/21(月) 05:13:22.29ID:Czlt7YRo697デフォルトの名無しさん
2022/03/21(月) 05:32:43.26ID:BAdp3agq >>696
なん。。だと!?!?そんな基本的なところを気付いていなかったのかw
では
・Arrayの参照(&[T;N])はスライス([T])と区別できる
let a = &[1,2,3];
のaは俺はずっとスライスと思ってたけど、そうではなく、
let a = &[1,2,3] as &[i32];
とかでないとスライス(の参照)にはならんってことかwwww
これはすまんかったw
ちょっともう一度最初から整理し直さないといかんかもw
ありがとw
なん。。だと!?!?そんな基本的なところを気付いていなかったのかw
では
・Arrayの参照(&[T;N])はスライス([T])と区別できる
let a = &[1,2,3];
のaは俺はずっとスライスと思ってたけど、そうではなく、
let a = &[1,2,3] as &[i32];
とかでないとスライス(の参照)にはならんってことかwwww
これはすまんかったw
ちょっともう一度最初から整理し直さないといかんかもw
ありがとw
698デフォルトの名無しさん
2022/03/21(月) 06:00:44.84ID:Czlt7YRo >>697
そこはコアースされます
配列とスライスの違いをわかりやすく使用例で示しましょう
まず「配列を受け取り」その各値を2倍にした「配列を返す」関数twice()です
fn twice<const N: usize>(input: &[isize; N]) -> [isize; N] {
let mut output: [isize; N] = [0; N];
for i in 0..N {
output[i] = input[i] * 2;
}
output
}
わかりやすいようforで回して代入しています
fn main() {
let input = [1, 2, 3];
println!("{:?}", twice(&input));
}
もちろんちゃんと動いて[2, 4, 6]となりますね
この関数の引数をスライスを受け取るように型を&[isize]へ変えても大丈夫なのですが
ただし関数を使う時にちょっと状況が変わってきます
そこには様々な違いと問題が生じますので実体験しましょう
これがスライスと配列の違いを理解するためのあなたへの宿題です
そこはコアースされます
配列とスライスの違いをわかりやすく使用例で示しましょう
まず「配列を受け取り」その各値を2倍にした「配列を返す」関数twice()です
fn twice<const N: usize>(input: &[isize; N]) -> [isize; N] {
let mut output: [isize; N] = [0; N];
for i in 0..N {
output[i] = input[i] * 2;
}
output
}
わかりやすいようforで回して代入しています
fn main() {
let input = [1, 2, 3];
println!("{:?}", twice(&input));
}
もちろんちゃんと動いて[2, 4, 6]となりますね
この関数の引数をスライスを受け取るように型を&[isize]へ変えても大丈夫なのですが
ただし関数を使う時にちょっと状況が変わってきます
そこには様々な違いと問題が生じますので実体験しましょう
これがスライスと配列の違いを理解するためのあなたへの宿題です
699デフォルトの名無しさん
2022/03/21(月) 06:10:12.41ID:BAdp3agq700デフォルトの名無しさん
2022/03/21(月) 06:18:10.57ID:Czlt7YRo701デフォルトの名無しさん
2022/03/21(月) 06:22:52.71ID:BAdp3agq >>700
一応配列で渡されたら配列で返したい心理の説明をしておくと、例えばベクタなど配列と同じような構造で動的に拡張可能なコレクションをずっと持ち回っていると、そいつが過去に持っていたデータなどが後ろにくっついてる可能性があったり、余計なメモリを確保していたり、gcなどが効きにくくなったりするので、内部処理で使ったオブジェクトではない、綺麗な生成データを固定で作って返す風習があるんだよw
一応配列で渡されたら配列で返したい心理の説明をしておくと、例えばベクタなど配列と同じような構造で動的に拡張可能なコレクションをずっと持ち回っていると、そいつが過去に持っていたデータなどが後ろにくっついてる可能性があったり、余計なメモリを確保していたり、gcなどが効きにくくなったりするので、内部処理で使ったオブジェクトではない、綺麗な生成データを固定で作って返す風習があるんだよw
702デフォルトの名無しさん
2022/03/21(月) 06:32:23.88ID:Czlt7YRo703デフォルトの名無しさん
2022/03/21(月) 06:33:56.07ID:BAdp3agq >>702
できるし頼んでないのでwwwww
できるし頼んでないのでwwwww
704デフォルトの名無しさん
2022/03/21(月) 06:40:05.89ID:Czlt7YRo705デフォルトの名無しさん
2022/03/21(月) 06:42:57.16ID:BAdp3agq706デフォルトの名無しさん
2022/03/21(月) 06:50:01.91ID:Czlt7YRo707デフォルトの名無しさん
2022/03/21(月) 06:53:37.67ID:BAdp3agq708デフォルトの名無しさん
2022/03/21(月) 06:57:16.08ID:Czlt7YRo709デフォルトの名無しさん
2022/03/21(月) 06:59:16.07ID:BAdp3agq710デフォルトの名無しさん
2022/03/21(月) 07:00:45.10ID:BAdp3agq こういう輩は確かに煽ってみるに限るなw 面白いしw
711デフォルトの名無しさん
2022/03/21(月) 07:04:34.69ID:Czlt7YRo712デフォルトの名無しさん
2022/03/21(月) 07:05:47.35ID:BAdp3agq 他の可能性があるんだ〜へぇ〜それは思いつかなかったなw
どうでもいいけどwwwwwwww
どうでもいいけどwwwwwwww
713デフォルトの名無しさん
2022/03/21(月) 07:14:14.39ID:Czlt7YRo714デフォルトの名無しさん
2022/03/21(月) 07:16:48.53ID:BAdp3agq はいはい、嘘乙wwwww
715デフォルトの名無しさん
2022/03/21(月) 07:18:49.08ID:BAdp3agq ってもう終わりなのかよwwwww
夜までまだ長いぞw
夜までまだ長いぞw
716デフォルトの名無しさん
2022/03/21(月) 07:36:36.37ID:cgJvFkX3 フレームワークのドキュメントは読むのに言語につきてのドキュメントは読まないで雰囲気でやっていたのか
717デフォルトの名無しさん
2022/03/21(月) 07:58:11.85ID:BAdp3agq 早速転生してきたのかw いい心がけだw
いや読んだけど一度切りだよw
俺は必要がなければ読み返さないし、明確にsliceの定義をしているものがなかったので、誤った解釈のままだっただけw
Rustのドキュメントって例ばっかりで、あんまり定義が明確じゃないんだよなw
arrayは定義はあるんだけど、今まで初期化にしか使わなかったから、使わなすぎて間違って覚えてたw
immutableがデフォだとわざわざarrayを使う意味があんまりないんだよねw
いや読んだけど一度切りだよw
俺は必要がなければ読み返さないし、明確にsliceの定義をしているものがなかったので、誤った解釈のままだっただけw
Rustのドキュメントって例ばっかりで、あんまり定義が明確じゃないんだよなw
arrayは定義はあるんだけど、今まで初期化にしか使わなかったから、使わなすぎて間違って覚えてたw
immutableがデフォだとわざわざarrayを使う意味があんまりないんだよねw
718デフォルトの名無しさん
2022/03/21(月) 23:29:47.68ID:5Szv6JZQ719デフォルトの名無しさん
2022/03/22(火) 02:53:53.03ID:ZDHdo9X7720デフォルトの名無しさん
2022/03/22(火) 09:25:40.89ID:VA79WEBN なんだかRustってマウント取り合いのキモイ連中ばかりなんだな。
721デフォルトの名無しさん
2022/03/22(火) 09:53:23.73ID:BbUMgG6B >>720
これ
これ
722デフォルトの名無しさん
2022/03/22(火) 11:11:44.38ID:cPdOMca8 そう。学習時間が増えるのは仕方ないしそれはそれでいいんだが、
その副作用としてマウンターがイナゴレベルで発生するのがな。
その副作用としてマウンターがイナゴレベルで発生するのがな。
723デフォルトの名無しさん
2022/03/22(火) 11:33:10.12ID:8EjbgNwb そろそろRust版毛の壁が誕生するのかな
724デフォルトの名無しさん
2022/03/22(火) 12:18:47.19ID:ZDHdo9X7 Rustごときにそんなものは生まれないし、マウントとか気にしてるからそういう空気になるだけw
気をつけるべきは、
・言葉の定義に関する揚げ足取りだけとか
・関係ないことを誰も聞いてもないのに話し始めるとか
・スレ違いの話題とか
そういうのくらいw
気をつけるべきは、
・言葉の定義に関する揚げ足取りだけとか
・関係ないことを誰も聞いてもないのに話し始めるとか
・スレ違いの話題とか
そういうのくらいw
725デフォルトの名無しさん
2022/03/22(火) 13:35:20.32ID:pdrrbcyh 以下のサイトによるとrust製ソフトで一番有名なfirefoxでさえC言語のコードの方がまだ多いらしい
正直、まだまだC/C++に代わるって議論する段階じゃなさそう
https://4e6.github.io/firefox-lang-stats/
正直、まだまだC/C++に代わるって議論する段階じゃなさそう
https://4e6.github.io/firefox-lang-stats/
726デフォルトの名無しさん
2022/03/22(火) 14:09:58.25ID:l3SAD7eY727デフォルトの名無しさん
2022/03/22(火) 14:36:30.97ID:CigmH2/4 Firefoxは超巨大プロダクトの1つだからね
数千万行ものコードで書かれてるみたい
さすがに全部書き換えられなくても仕方ないでしょ
毎日順調に1万行を書き換えても10年とかかかるよ
数千万行ものコードで書かれてるみたい
さすがに全部書き換えられなくても仕方ないでしょ
毎日順調に1万行を書き換えても10年とかかかるよ
728デフォルトの名無しさん
2022/03/22(火) 14:39:46.62ID:oqIjUDQq 新規追加分はどういう割合かしらん。
729デフォルトの名無しさん
2022/03/22(火) 15:27:56.84ID:q+lZbjeY Netscape6の頃から数えると20年以上の歴史があるプロダクトだから数年で10%置き換えられたのはなかなか良いペースなのでは
730デフォルトの名無しさん
2022/03/22(火) 20:15:02.78ID:ZDHdo9X7 https://wiki.mozilla.org/Oxidation
"...
Rust Weaknesses
One major issue with Rust relates to personnel.
There is a wide variety of experience levels within Mozilla, for both coding and reviewing.
Rust's learning curve is steep at the start, which can be intimidating. (The new borrow checker released in Rust 1.31 helped greatly with this.)
There are also technical challenges.
Compilation is slow.
Crossing the C++/Rust boundary can be difficult.
See "Blockers and obstacles" below for more details about work being done to remedy these weaknesses.
..."
"...
Rust Weaknesses
One major issue with Rust relates to personnel.
There is a wide variety of experience levels within Mozilla, for both coding and reviewing.
Rust's learning curve is steep at the start, which can be intimidating. (The new borrow checker released in Rust 1.31 helped greatly with this.)
There are also technical challenges.
Compilation is slow.
Crossing the C++/Rust boundary can be difficult.
See "Blockers and obstacles" below for more details about work being done to remedy these weaknesses.
..."
731デフォルトの名無しさん
2022/03/24(木) 13:49:05.58ID:A9GFlV37732460
2022/03/24(木) 14:52:36.70ID:A9GFlV37 なんかちょっと見ないうちにえらく盛り上がってるのな
んで、SubSets[Subsets*]]の話になってるが、本質はそこじゃなく
SubSets[Subsets[{a,b,c}]]におけ要素が合併(U)、結合演算に閉じている集合族選び出して位相空間を作り出すってのが到達目標なんだわ。
羃集合の羃集合なんて、なんの工夫もなく実装できるもんだと思ってたらPythonはそれすら出来なかったということで、
集合演算においてはMathematicaレベルにすらない。
位相空間を選び出すには、さらにそこから演算規則にそぐわない集合族は排除しなきゃいけない。
3要素から作り出した位相空間は29個に及ぶんだけど、
Python は既に羃集合の羃集合すら簡単に書けないことが確定した時点で数学研究には使えないってことが明らかなんよね。
それなりのプログラム組んだらいけるってことならC++でもC#でもいけるんですわ。www
ちなみに数学科の初年度でドロップアウトするのがまさにここらしいので、
信学会正員の俺が試しに流行のPython調べてみたって話ですわ、
間違いないのは
・数学の研究に寄与するのはPythonじゃなく素直にMathematica
・Excelファイル外部からいじくりたければOpenpyxelじゃなくC#+EPPLUS
ってこってすわ
ちなみに、数値演算ってことならハナからPythonなんて検討するような対象じゃなく単なるゴミ糞レベルwww
素直にA100でも用意してCUDAでも使えばいい。
なんでゴミ糞Pythonとか流行ってんの?さっぱり理解できんわ。
こんなんWebScrapingとかWeb侵入以外とういうメリットあるの?
あほが使う言語 == Python でFA?
んで、SubSets[Subsets*]]の話になってるが、本質はそこじゃなく
SubSets[Subsets[{a,b,c}]]におけ要素が合併(U)、結合演算に閉じている集合族選び出して位相空間を作り出すってのが到達目標なんだわ。
羃集合の羃集合なんて、なんの工夫もなく実装できるもんだと思ってたらPythonはそれすら出来なかったということで、
集合演算においてはMathematicaレベルにすらない。
位相空間を選び出すには、さらにそこから演算規則にそぐわない集合族は排除しなきゃいけない。
3要素から作り出した位相空間は29個に及ぶんだけど、
Python は既に羃集合の羃集合すら簡単に書けないことが確定した時点で数学研究には使えないってことが明らかなんよね。
それなりのプログラム組んだらいけるってことならC++でもC#でもいけるんですわ。www
ちなみに数学科の初年度でドロップアウトするのがまさにここらしいので、
信学会正員の俺が試しに流行のPython調べてみたって話ですわ、
間違いないのは
・数学の研究に寄与するのはPythonじゃなく素直にMathematica
・Excelファイル外部からいじくりたければOpenpyxelじゃなくC#+EPPLUS
ってこってすわ
ちなみに、数値演算ってことならハナからPythonなんて検討するような対象じゃなく単なるゴミ糞レベルwww
素直にA100でも用意してCUDAでも使えばいい。
なんでゴミ糞Pythonとか流行ってんの?さっぱり理解できんわ。
こんなんWebScrapingとかWeb侵入以外とういうメリットあるの?
あほが使う言語 == Python でFA?
733デフォルトの名無しさん
2022/03/24(木) 15:06:02.22ID:A9GFlV37 >>705
1=1==3と定義することに近いのがδ関数って知ってる?
そう、数学科以外、測度論ってやらないんですよ
連続系の上に離散系を構築したりする。ラプラス変換の上にZ変換作ったりね
そこで使われるのが
∫δ(x)dx =1
本来1点だけが非0の関数なんて積分しても0にしかならない
δ関数ってのは
半直線の面積 == 1
にしますってわけわからん"約束"なんですよ
本来0においてのみ∞、それ以外0って関数は積分しても0にしかならない
それをδ関数に限って1と"約束"するのがポイントなんですね。物理においても工学においても
こういうフェイクでも破綻しないってこじつけが超関数論
1=1==3と定義することに近いのがδ関数って知ってる?
そう、数学科以外、測度論ってやらないんですよ
連続系の上に離散系を構築したりする。ラプラス変換の上にZ変換作ったりね
そこで使われるのが
∫δ(x)dx =1
本来1点だけが非0の関数なんて積分しても0にしかならない
δ関数ってのは
半直線の面積 == 1
にしますってわけわからん"約束"なんですよ
本来0においてのみ∞、それ以外0って関数は積分しても0にしかならない
それをδ関数に限って1と"約束"するのがポイントなんですね。物理においても工学においても
こういうフェイクでも破綻しないってこじつけが超関数論
734デフォルトの名無しさん
2022/03/24(木) 15:33:33.46ID:A9GFlV37 なんかPythonごとき使えるだけのPythonerがでしゃばってるけど
C/C++/C#使えるプログラマが能力的にPython使えないなんてことないからwww
ちょい使ってみてやっぱこりゃあかんってがっかりすることが多い
Cxx使ってて補助言語としてPerl使う、
プログラムランチャーやらお気軽シェルスクリプトとしてはbashもPowerShellを使う、
数値計算電卓にはMatlabもOctaveもScilabも使う、
数式計算ならMathematica もMapleも Mupadも使える、
こういうユーザにとっては
世間でPython流行ってるけどこれ使う意味あんの?って話ね
言語処理系として流行ってる以外にどこがアドバンテージなの?
ってこどですわ
C/C++/C#使えるプログラマが能力的にPython使えないなんてことないからwww
ちょい使ってみてやっぱこりゃあかんってがっかりすることが多い
Cxx使ってて補助言語としてPerl使う、
プログラムランチャーやらお気軽シェルスクリプトとしてはbashもPowerShellを使う、
数値計算電卓にはMatlabもOctaveもScilabも使う、
数式計算ならMathematica もMapleも Mupadも使える、
こういうユーザにとっては
世間でPython流行ってるけどこれ使う意味あんの?って話ね
言語処理系として流行ってる以外にどこがアドバンテージなの?
ってこどですわ
735デフォルトの名無しさん
2022/03/24(木) 15:46:03.00ID:iUQBARfO >>734
深層学習には何使うの?
深層学習には何使うの?
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★4 [ぐれ★]
- 中国の局長は「両手をポケット」で対峙 宣伝戦で国民に示す ★3 [蚤の市★]
- 【音楽】Perfume・あ~ちゃんの結婚相手「一般男性」は吉田カバンの社長・吉田幸裕氏(41) 高身長で山本耕史似 [Ailuropoda melanoleuca★]
- 【大分】佐賀関で大規模火災、170棟以上が延焼中 70代男性1人と連絡取れず [ぐれ★]
- 【サッカー】U-17日本代表、激闘PK戦制す 北朝鮮撃破で6大会ぶり8強入り U17W杯 [久太郎★]
- 「クマはなるべく山に返す努力を」「クマと戦争は間違っている」動物保護活動家の主張 棲み分けと学習放獣でクマ被害なくなるのか?★7 [ぐれ★]
- とらせん IPあり
- 巨専】
- こいせん 全レス転載禁止
- 【DAZN】ワールドカップ欧州予選総合 ★5
- 侍ジャパンシリーズ2025「日本vs韓国」その12
- 【J SPORTS】FIFA U-17ワールドカップ ★10
- 「世の中、バカが多くて疲れません?」👉1991年日本人大発狂 [543236886]
- アンケート調査で「高市発言は問題なし」 93.5%wwwwwwwwwwwwwwwwwwwwwwwww [279254606]
- 自閉症が「んなっしょい」と連呼するお🏡
- 寒い寒い寒い寒い寒い寒い寒い寒い寒い寒い寒い寒い寒い寒い寒い寒い寒い寒い
- マクラーレン、女性ドライバー3名を加入 [462275543]
- 【悲報】大分市佐賀関の火事、20軒→170軒に延焼🔥 [481941988]
