Qiita 7 - キータぞ、来たぞ、キータだぞー (768レス)
上下前次1-新
37: 2025/09/16(火)09:08 ID:zaWo9xwV(1) AAS
Qiitaのコメ欄で有意義な議論ができない問題、バカなこと言ってる側が複垢使うとかで相手を攻撃的と通報する可能性までありそうだなw
38(1): 2025/09/16(火)19:41 ID:Wr/gNYaO(1) AAS
>>9や>>24のコードがダサくて>>19がシンプルなのは再帰の有無ではなくコードの抽象的な度合いが原因だと思う
39: 2025/09/17(水)08:59 ID:JW/5kEOI(1) AAS
数学的に言うと Σ(Sigma) は
再帰の方が抽象的なんか?
ループでも等価だと思うんだが
40: 2025/09/17(水)09:21 ID:0mQm0ojt(1/3) AAS
>>38
再帰を使わないシンプルな版を書いて主張すれば良い
41(1): 2025/09/17(水)09:26 ID:MzfCTW9l(1) AAS
>>9
arr[n - i - 1]が不格好ではあるな
42: 2025/09/17(水)10:55 ID:0mQm0ojt(2/3) AAS
>>41
func ReverseArray(arr []int) []int {
n := len(arr)
result := make([]int, n)
for i, j := 0, n - 1; i < n; i, j = i + 1, j - 1 {
result[i] = arr[j]
}
return result
}
43(1): 2025/09/17(水)21:20 ID:0mQm0ojt(3/3) AAS
しまったー!
ElixirChip初お目見え会今日だったじゃーん
忘れてたわー!ざーんねーん!
とか言ったりして。
44(2): 2025/09/17(水)22:01 ID:+QFNSyi5(1) AAS
配列などの各要素を巡る抽象化はイテレータだよ
抽象化の役割分担がわかりやすいRustで説明すると
今回の各要素の順番を逆順にしたベクタを作る関数はこうなる
fn reverse_value<T: Clone>(input: &[T]) -> Vec<T> {
input
.iter() // 各要素への参照を巡るイテレータ
.rev() // それを逆順に巡る
.cloned() // 各要素への参照から値を複製して値を得る
.collect() // それらの値を今回は返り型で指定のVecへ収集
}
省11
45: 2025/09/17(水)22:14 ID:Iu+PtAN6(1/2) AAS
改行CRとLFの真実:MS-DOS・BIOS・WIN10での挙動比較
外部リンク:qiita.com
> Windows10
> '\r'で行頭に戻ることは確認できましたが、'\n'では下の行に下がるだけでなく行頭に自動的に戻されてしまうようです。
'\n'で行頭に移動するのはC言語の仕様で「\n 改行(new line)現表示位置を次の行の最初の位置に移動する。」となってるからで、WindowsではユニバーサルCランタイム (UCRT)が標準出力をテキストモードでオープンしてるため '\n' が '\r' + '\n' に変換されるからで、さらに最近の Windows Terminal は '\n' の動作が行頭に移動するようなってるので、とか説明せんといかんのかな、メンドい。
46(1): 2025/09/17(水)22:54 ID:Iu+PtAN6(2/2) AAS
せっかくなので>>44の関数のベンチマークをしてみた。
外部リンク:godbolt.org
reverse_value() のほうがちょっと速いのかな。
Rustって知らんけどblack_boxなんてあんのは面白いな。
47: 2025/09/17(水)23:13 ID:2et8KGNs(1) AAS
>>46
参照型つまりアドレスたぶん64bitを収容と
i32型つまり32bitを収容のサイズの異なる比較になってしまってないかね?
48: 2025/09/18(木)00:40 ID:sD2s9VAq(1/2) AAS
for でぐるぐる回すとこんな感じかな。
fn reverse_array<T: Clone>(input: &[T]) -> Vec<T> {
let mut result = Vec::with_capacity(input.len());
for i in (0..input.len()).rev() {
result.push(input[i].clone());
}
result
}
外部リンク:godbolt.org
49: 2025/09/18(木)01:41 ID:sD2s9VAq(2/2) AAS
出力の関数名間違ってたので訂正
外部リンク:godbolt.org
50(1): 2025/09/18(木)16:56 ID:E/kzpuoF(1) AAS
>>44
元のGoのコードがintの配列扱ってるのにジェネリック化してCloneで効率下げてるのなんで??
51: 2025/09/18(木)17:45 ID:530bwAJW(1) AAS
>>50
Rustのジェネリックは効率を下げなくて従来の型指定した時と全く同じように動作することが特徴です
RustのCloneとは参照先から値を複製することです
例えば32bit数値の場合ならばCPUによるメモリ/レジスタ⇔メモリ/レジスタ間のロードやセーブが複製であって必ず行われることなので効率が下がることはありません
52(2): 2025/09/18(木)23:44 ID:aCgogNys(1) AAS
Rustが広まってる理由はC並みの高速実行をゼロコスト抽象化によるコードの可読性・保守性・開発効率の高さで実現したことにあるからね
安全性などはついでのオマケ
53: 2025/09/21(日)18:14 ID:MlvLaXh2(1) AAS
再帰派、息してる?
54: 2025/09/21(日)19:59 ID:kxRRh56H(1) AAS
もれちんは再吃不能
55: 2025/09/21(日)19:59 ID:hyRHfdTv(1) AAS
天才すぎて再起不能
56(1): 2025/09/21(日)23:24 ID:wsaoMzy7(1) AAS
>>52
Rustは冗長なくせに変な略語や記号を多用するから可読性は低いよ。JavaとPerlの悪い所取り。
上下前次1-新書関写板覧索設栞歴
あと 712 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.020s