プログラミングのお題スレ Part22 (884レス)
上下前次1-新
653: 警備員[Lv.21] 2025/02/22(土)15:53 ID:nEyoRU5r(3/3) AAS
>>640
C
外部リンク:paiza.io
654: 2025/02/22(土)23:33 ID:k7PDvk0j(1) AAS
>>640
Haskell
外部リンク:ideone.com
655: 警備員[Lv.21] 2025/02/24(月)18:11 ID:Ikw9MrIX(1) AAS
>>608
>>651とかとアルゴリズムはほぼ同じ。これといった捻りはない。
よく分からないが5chに書き込みがブロックされたのでURLのコロンまでは削った。
Perl
//paiza.io/projects/zAqms-VVEWIMhcgr8AV6Pw
Kotlin
//paiza.io/projects/iu8mTSyKsxqWx_T51Wpj4Q
C
//paiza.io/projects/bDkj3tRF_KmiBL67miRxyA
656(5): 2025/02/26(水)21:33 ID:rkiIsmEI(1) AAS
お題: Python の int.bit_count()
65535 → 16
15 → 4
6 → 2
1 → 1
0 → 0
-1 → 1
-6 → 2
-15 → 4
-65535 → 16
657: 2025/02/26(水)23:29 ID:Gl9HHMVG(1) AAS
>>656
C++20
外部リンク:paiza.io
658: 2025/02/27(木)00:23 ID:TOGelnHV(1) AAS
>>656
Rust
fn bit_count(x: i64) -> usize {
const MAGIC_1: u64 = 0x5555555555555555; // 0101..0101
const MAGIC_2: u64 = 0x3333333333333333; // 0011..0011
const MAGIC_3: u64 = 0x0f0f0f0f0f0f0f0f;
const MAGIC_4: u64 = 0x00ff00ff00ff00ff;
const MAGIC_5: u64 = 0x0000ffff0000ffff;
const MAGIC_6: u64 = 0x00000000ffffffff;
let x = x.unsigned_abs();
省19
659: 2025/02/27(木)08:26 ID:LSRTW28H(1) AAS
>>656 Rust
trait BitCount {
fn bit_count(&self) -> usize;
}
impl BitCount for i32 {
fn bit_count(&self) -> usize {
self.unsigned_abs().count_ones() as usize
}
}
use num::{BigInt, One};
省12
660: 2025/02/28(金)01:30 ID:1HSOHgVq(1) AAS
intは処理単位のことなんだけどな
何ビットで表現できるかという意味ではない
661: 9 2025/02/28(金)03:12 ID:MEvV9q87(1) AAS
負の場合に表現可能なビット数を配慮しないとPython の int.bit_count()と同じ結果にならないんジャマイカじゃまいか
たぶんPythonの整数がbigintのせいだとおもう
絶対値とってpopcountとかやらないと意外とあれこれ書いてプチ長めのコードになりそうなおかん
662: 2025/02/28(金)23:07 ID:SRu+xdWw(1) AAS
よく見たらみんな絶対値をとったりbigintを使ったりしてるな
663(1): 2025/03/01(土)20:18 ID:H8RpZRUP(1/2) AAS
>>656
PowerShellのBigIntなら、
$b = @(0)
1..8 |% {$b += $b |% {$_ + 1}}
function bit_count([BigInt]$n)
{
($b[[BigInt]::Abs($n).ToByteArray()] | measure -sum).Sum
}
65535, 15, 6, 1, 0, -1, -6, -15, -65535, [BigInt]::Pow(123, 45) |% {
"$_ → $(bit_count $_)"
省12
664: 2025/03/01(土)20:19 ID:H8RpZRUP(2/2) AAS
お題:1からnまでの自然数のビット単位での総排他的論理和1 ⊕ 2 ⊕ 3 ⊕ … ⊕ nを求める
関数を作り、n = 123456789, 12345678901234567890のときの値を表示せよ。
665: 2025/03/01(土)21:19 ID:5VrbV50/(1) AAS
A003815かな
666: 2025/03/01(土)21:32 ID:UfbLQAky(1) AAS
数学の試験で中間式を省いて解答だけ書くタイプw
667: 2025/03/01(土)23:41 ID:+HRoh0yF(1) AAS
まあ数列の問題ならOEISを見てみるよな
668: 2025/03/02(日)01:21 ID:xdmIFouH(1) AAS
>> 664 Rust
fn f(n: u64) -> u64 {
// f(n) = 1⊕2⊕3⊕...⊕n とすると (2k)⊕(2k+1)=1 であるから 1⊕1=0 より
// f(4k+1) = (4k+1)⊕(4k)⊕(4k-1)⊕(4k-2)⊕f(4k-3) = f(4(k-1)+1) = ... = f(1) = 1
// f(4k+3) = (4k+3)⊕(4k+2)⊕f(4k+1) = 0
// f(4k) = (4k)⊕f(4k-1) = 4k
// f(4k+2) = (4k+2)⊕f(4k+1) = (4k+2)⊕1 = 4k+3
match n % 4 {
0 => n,
1 => 1,
省13
669: 2025/03/11(火)21:18 ID:Qmk3F8/1(1) AAS
>>656
PowerShellでもPopCountがいつの間にか使えるようになっていた。Version 7.5.0で動作確認。
function bit_count($n)
{
[BigInt]::PopCount([BigInt]::Abs($n))
}
65535, 15, 6, 1, 0, -1, -6, -15, -65535, [BigInt]::Pow(123, 45) |% {
"$_ → $(bit_count $_)"
}
実行結果は>>663と同じ。
670(6): 2025/03/13(木)20:35 ID:QP/8WHEA(1) AAS
お題:数列が入力される。元の数列に逆順にした数列を減算したときの値を出力せよ
In < 12345
OUt > -41976 (12345 - 54321)
671(2): 2025/03/13(木)21:13 ID:SRpNsp20(1) AAS
>>670
PowerShell
function f([BigInt]$n)
{
$c = [char[]][string]$n
$n - [BigInt]-join $c[-1..-$c.length]
}
12345, [BigInt]::Pow(12, 34) |% {"$_ → $(f $_)"}
[実行結果]
12345 → -41976
省1
672(1): 2025/03/14(金)02:10 ID:wjeVVi0w(1/2) AAS
>>671
12の34乗は合っているけどその後の差がおかしくない?
4922235242952026704037113243122008064 から
4608002213423117304076202592425322294 を引いて
314233029528909399960910650696685770 が正解のところ
314233029528909439273950854852378624 となっているよ
正解は1の位が「4 - 4 = 0」になるはずだよね
>>670 Rust 逆文字列を生成する版
use num::BigInt;
fn odai(input: &str) -> Option<String> {
省9
上下前次1-新書関写板覧索設栞歴
あと 212 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.015s