プログラミングのお題スレ Part22 (880レス)
プログラミングのお題スレ Part22 http://mevius.5ch.io/test/read.cgi/tech/1691038333/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
634: デフォルトの名無しさん [] 2025/02/16(日) 08:09:49.66 ID:v+IcfGmt いるよねえ他人の回答に文句だけつけて自分では回答しないやつ http://mevius.5ch.io/test/read.cgi/tech/1691038333/634
635: デフォルトの名無しさん [] 2025/02/16(日) 08:16:54.29 ID:v+IcfGmt 他人の回答が間違いとなるようにお題を解釈するのは知的なことではないよバカの所業だよ http://mevius.5ch.io/test/read.cgi/tech/1691038333/635
636: デフォルトの名無しさん [sage] 2025/02/16(日) 08:20:29.71 ID:eNZyrnPC そんなことより>>616のワンライナーがカッコよくてほれぼれする http://mevius.5ch.io/test/read.cgi/tech/1691038333/636
637: デフォルトの名無しさん [sage] 2025/02/16(日) 10:58:48.51 ID:EXJYkLn8 帰ったと思ったらまたやってんのw http://mevius.5ch.io/test/read.cgi/tech/1691038333/637
638: デフォルトの名無しさん [sage] 2025/02/16(日) 15:14:38.18 ID:8bpH8MuA コンパイラ警告無視するのが知的な事だと思ってそうだな http://mevius.5ch.io/test/read.cgi/tech/1691038333/638
639: 9 [sage] 2025/02/16(日) 15:45:59.98 ID:GnMUCCm7 回答のコードでもって語ってほしいなぁ http://mevius.5ch.io/test/read.cgi/tech/1691038333/639
640: デフォルトの名無しさん [sage] 2025/02/17(月) 13:08:08.60 ID:lz3iaMcC お題:ランダムな数列が与えられる。隣り合う数字が偶数同士の時、あいだに0を。奇数同士の時は1を挿入し、それ以外は何も挿入しない In < 123346 Out > 12313406 http://mevius.5ch.io/test/read.cgi/tech/1691038333/640
641: デフォルトの名無しさん [sage] 2025/02/17(月) 13:47:54.59 ID:1CKZ5rpi >>640 ruby DATA.readlines(chomp:1).map{|e| a=e.split("").map{|f| f.to_i} (0..a.size-2).each{|n| a[n]=a[n]*10 if (a[n]%2==0 && a[n+1]%2==0) a[n+1]=a[n+1]+10 if (a[n]%2==1 && a[n+1]%2==1)} puts "IN < #{e}\nOUT > #{a.map{|f| f.to_s}.join}"} __END__ 123346 http://mevius.5ch.io/test/read.cgi/tech/1691038333/641
642: デフォルトの名無しさん [sage] 2025/02/17(月) 20:02:39.61 ID:SzDlV4TD >>640 lisp https://ideone.com/DV9DeR http://mevius.5ch.io/test/read.cgi/tech/1691038333/642
643: デフォルトの名無しさん [] 2025/02/17(月) 20:47:46.22 ID:2enU2rA/ >>640 PowerShell (一般的な文字コードを想定) function f([string]$s) { $rprev = 2 -join ([char[]]$s |% { $r = $_ % 2 if ($r -eq $rprev) {$r} $rprev = $r $_ }) } 123346, 12333468, 1, "" |% {"$_ → $(f $_)"} [実行結果] 123346 → 12313406 12333468 → 123131340608 1 → 1 → http://mevius.5ch.io/test/read.cgi/tech/1691038333/643
644: デフォルトの名無しさん [] 2025/02/17(月) 20:48:16.10 ID:2enU2rA/ 正規表現置換なら、 function f($s) { $s -replace "[02468](?=[02468])", "$&0" -replace "[13579](?=[13579])", "$&1" } 1回で済ますなら、 function f($s) { [RegEx]::Replace($s, "[02468](?=[02468])|[13579](?=[13579])", {$_ = $args[0].value[0]; "$_$($_ % 2)"}) } http://mevius.5ch.io/test/read.cgi/tech/1691038333/644
645: デフォルトの名無しさん [sage] 2025/02/17(月) 20:58:11.16 ID:UxhkW11K >>640 Rust fn f(input: &[u8]) -> Vec<u8> { input.windows(2).fold(Vec::new(), |mut vec, w| { if vec.is_empty() { vec.push(w[0]); } if (w[0] ^ w[1]) & 1 == 0 { vec.push(w[0] & 1 + b'0'); } vec.push(w[1]); vec }) } fn main() { assert_eq!(f(b"123346"), b"12313406"); assert_eq!(f(b"12333468"), b"123131340608"); } http://mevius.5ch.io/test/read.cgi/tech/1691038333/645
646: デフォルトの名無しさん [] 2025/02/18(火) 10:32:01.38 ID:Spp0fdd/ >>645 そうやればいいのか、なるほどね http://mevius.5ch.io/test/read.cgi/tech/1691038333/646
647: デフォルトの名無しさん [sage] 2025/02/18(火) 17:51:16.96 ID:ZRfTlf8i Vecのnewやpushなど普通にcollectに任せる手もあるね 条件付き挿入は汎用にOptionで取捨を示してflat_mapとflattenでも可能 前値など状態を保ちつつ1つにまとめるならfoldでイテレータに流すならscan 一例としてこんな感じ fn f(input: &[u8]) -> Vec<u8> { input .iter() .scan(None, |pre, &x| { Some([ pre.replace(x & 1) .and_then(|p| (p == x & 1).then_some(p + b'0')), Some(x), ]) }) .flat_map(|list| list.into_iter().flatten()) .collect() } >>640 Rust http://mevius.5ch.io/test/read.cgi/tech/1691038333/647
648: デフォルトの名無しさん [] 2025/02/19(水) 21:30:14.30 ID:LKzHskwz >>640 >>643-644の3つのfを上から順にf1, f2, f3とし、長い文字列を引数として呼び出したときの 実行時間を比較すると、 $s = -join (1..10000) $t = 1..3 |% {(iex "measure-command {f$_ $s}").ticks} $tmin = ($t | measure -min).minimum 1..3 |% {"f$_`: {0:0.00}倍" -f ($t[$_ - 1] / $tmin)} [実行結果の一例] f1: 34.78倍 f2: 1.00倍 f3: 14.93倍 大差でf2 < f3 < f1となった。インタプリタ言語のコード実行は遅いので、処理を自分で 書くほど遅くなり、ライブラリ関数等に丸投げすれば速くなることによる。 https://ideone.com/GVewWL コンパイラ言語のC#で同様の比較をすると (PowerShellより速いので文字列を長くし、 f1の改良版としてStringBuilder使用のf4を追加した)、当然f4< f1 < f2 < f3になった。 http://mevius.5ch.io/test/read.cgi/tech/1691038333/648
649: デフォルトの名無しさん [sage] 2025/02/19(水) 21:58:22.55 ID:Hs/awmG/ >>647 関数型でタブーの可変な変数宣言してもよいなら、もっと簡単になるね。 fn f(input: &[u8]) -> Vec<u8> { let mut pre = None; input .iter() .flat_map(|&x| { [ pre.replace(x & 1) .and_then(|p| (p == x & 1).then_some(p + b'0')), Some(x), ] .into_iter() .flatten() }) .collect() } http://mevius.5ch.io/test/read.cgi/tech/1691038333/649
650: デフォルトの名無しさん [sage] 2025/02/20(木) 23:25:43.81 ID:Zfo8kSSQ mutableの使用は必要最小限が望ましいが mutableを使えない言語は実用的ではない http://mevius.5ch.io/test/read.cgi/tech/1691038333/650
651: 警備員[Lv.21] [] 2025/02/22(土) 15:11:12.54 ID:nEyoRU5r >>640 Perl5 https://paiza.io/projects/gW_sI1_VqokddmYSJ6Lj2A http://mevius.5ch.io/test/read.cgi/tech/1691038333/651
652: 警備員[Lv.21] [] 2025/02/22(土) 15:42:54.65 ID:nEyoRU5r >>640 Kotlin https://paiza.io/projects/mAEXhhFdJiHVQWYtHvIP-g http://mevius.5ch.io/test/read.cgi/tech/1691038333/652
653: 警備員[Lv.21] [] 2025/02/22(土) 15:53:04.03 ID:nEyoRU5r >>640 C https://paiza.io/projects/7L9vpqOvFcbZfv9vO5GPvA http://mevius.5ch.io/test/read.cgi/tech/1691038333/653
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 227 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.638s*