[過去ログ]
プログラミングのお題スレ Part21 (1002レス)
プログラミングのお題スレ Part21 http://mevius.5ch.net/test/read.cgi/tech/1668333636/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
927: 蟻人間 ◆T6xkBnTXz7B0 [sage] 2023/07/13(木) 21:54:33.63 ID:pFytGTyV お題: 入力として32ビット整数のビットマスクが与えられる。 ビットマスクに含まれる有効なビットの組み合わせをブルートフォースせよ。 例) 0x13 →(0x1, 0x2, 0x3, 0x10, 0x11, 0x12, 0x13). 0x45 →(0x1, 0x4, 0x5, 0x40, 0x41, 0x44, 0x45). 0x92C →??? http://mevius.5ch.net/test/read.cgi/tech/1668333636/927
928: デフォルトの名無しさん [sage] 2023/07/13(木) 22:05:50.51 ID:zo6OijSK >>927 >→(0x1, 0x2, 0x3, 0x10, 0x11, 0x12, 0x13). 0x0 は含まないルール? http://mevius.5ch.net/test/read.cgi/tech/1668333636/928
930: デフォルトの名無しさん [] 2023/07/13(木) 23:34:46.42 ID:Gk3QqB7S >>927 Haskell https://ideone.com/FqDur8 http://mevius.5ch.net/test/read.cgi/tech/1668333636/930
932: デフォルトの名無しさん [] 2023/07/14(金) 00:29:53.20 ID:iQAPuZ6f >>927 R https://www.ideone.com/gL23rg http://mevius.5ch.net/test/read.cgi/tech/1668333636/932
935: 638 [sage] 2023/07/14(金) 16:41:43.17 ID:9h33JNqm >>927 Perl5 for (qw(0x13 0x45 0x92C)) { $n = eval; @a = map{sprintf "0x%x", $_} grep{($_ & $n) == $_} 0..$n; print "$_: @a\n"; } ※インデントは全角スペースに置換してあります。 実行結果 $ perl 21_927.pl 0x13: 0x0 0x1 0x2 0x3 0x10 0x11 0x12 0x13 0x45: 0x0 0x1 0x4 0x5 0x40 0x41 0x44 0x45 0x92C: 0x0 0x4 0x8 0xc 0x20 0x24 0x28 0x2c 0x100 0x104 0x108 0x10c 0x120 0x124 0x128 0x12c 0x800 0x804 0x808 0x80c 0x820 0x824 0x828 0x82c 0x900 0x904 0x908 0x90c 0x920 0x924 0x928 0x92c http://mevius.5ch.net/test/read.cgi/tech/1668333636/935
942: デフォルトの名無しさん [sage] 2023/07/15(土) 03:29:30.91 ID:deBIZu3e >>927 Ruby def solution( mk ) mb = 1 a = [0] print "0x%X\n→(" % mk while mk > 0 a.dup.each{|b| a << b + mb } if mk.odd? mb <<= 1 mk >>= 1 end puts a.map{|x| '0x%X' % x }.join(', ') + ')' end solution( 0 ) # 0の場合 0x0でいいのかな? solution( 0x13 ) solution( 0x45 ) solution( 0x92C ) http://mevius.5ch.net/test/read.cgi/tech/1668333636/942
964: デフォルトの名無しさん [sage] 2023/07/21(金) 07:58:12.84 ID:XtiUJMX6 >>927 Rust fn foo(input: u32) -> impl Iterator<Item = u32> { (0..=input).filter(move |n| n & input == *n) } ただしこれではループがO(n) ループをO(log N)にするならこちら fn foo(input: u32) -> impl Iterator<Item = u32> { let table: Vec<u32> = bits_iter(input).map(|p| 1 << p).collect(); (0..(1 << table.len())).map(move |bits| bits_iter(bits).map(|p| table[p as usize]).sum()) } 補助bitsイテレータ fn bits_iter(n: u32) -> impl Iterator<Item = u32> { let mut n = n; std::iter::from_fn(move || { (n != 0).then(|| { let p = n.trailing_zeros(); n &= !(1 << p); p }) }) } http://mevius.5ch.net/test/read.cgi/tech/1668333636/964
969: デフォルトの名無しさん [sage] 2023/07/22(土) 07:20:14.13 ID:Ya5NOP1D >>966 なるほど! 専ブラではなくWebブラウザから見るとインデントスペースが消えてしまうのですね >>927 Rust全文 https://play.rust-lang.org/?version=stable&mode=release&edition=2021&gist=f627f3a5de4a0c467f015a8b1527c141 抜粋 (全角スペース使用) fn foo(input: u32) -> impl Iterator<Item = u32> { let table: Vec<u32> = bits_iter(input) .map(|p| 1 << p) .collect(); (0..(1 << table.len())).map(move |bits| { bits_iter(bits) .map(|p| table[p as usize]) .sum() }) } http://mevius.5ch.net/test/read.cgi/tech/1668333636/969
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.039s