プログラミングのお題スレ Part22 (854レス)
上下前次1-新
抽出解除 レス栞
2: デフォルトの名無しさん [] 2023/08/03(木) 14:04:23.10 ID:Lr04Zjag(1) AAS
>>1O2
18: 蟻人間 ◆T6xkBnTXz7B0 [sage] 2023/08/10(木) 19:00:30.10 ID:kqXaMgBC(1) AAS
お題: ちょっとした画像処理。
赤い丸がいくつか描画された不透明な画像ファイル「input.png」を読み込んで、赤い丸を緑の丸に描き変えたものを画像ファイル「output.png」に保存するプログラム。
ここに「赤い」とは、HSV色空間において、色相が0度~60度か300度~360度の範囲にあり、彩度が30%以上で、明度が50%以上の色であると定義する。
「丸」とは、円形度が0.7~1.3の範囲の単一色の図形であると定義する。
「緑」とはRGBで#008000の色であると定義する。
130: デフォルトの名無しさん [sage] 2023/10/14(土) 10:19:17.10 ID:BRbCCPQd(1) AAS
>>127127(4): デフォルトの名無しさん [sage] 2023/10/14(土) 00:00:08.85 ID:sMwx6jpS(1) AAS
お題:角カッコの列が入力されるのでカッコの対応が取れていたら1,取れていなかったら0と表示せよ
< [[]]
> 1
< [[]
> 0
Ruby
%W( [[]] [[] [[[[]][[]]] [[[[]][[]]]] ][ #{} ).each{|s|
w = s.dup
{} while w.sub!( /\[\]/, '' )
puts "#{(s != '' && w == '')? 1 : 0} #{s.inspect}"
}
# 1 "[[]]"
# 0 "[[]"
# 0 "[[[[]][[]]]"
# 1 "[[[[]][[]]]]"
# 0 "]["
# 0 ""
195: デフォルトの名無しさん [sage] 2024/01/17(水) 01:45:50.10 ID:xvgJymQe(1) AAS
>>187187(17): デフォルトの名無しさん [] 2024/01/16(火) 00:33:05.98 ID:n8j0XaXx(1) AAS
お題:時刻の文字列が与えられる。その時刻から1秒後の時刻を出力せよ。
例
入力:00:00:00
出力:00:00:01
入力:23:59:59
出力:00:00:00
Rust (date/timeライブラリ不使用版)
fn next_time(cur: &str) -> String {
let [sec, min, hour] = cur
.rsplitn(3, ':')
.map(|s| s.parse().unwrap())
.zip([60, 60, 24])
.scan(1, |carry, (mut value, limit)| {
value += *carry;
(*carry, value) = if value == limit { (1, 0) } else { (0, value) };
Some(value)
})
.collect::<ArrayVec<_, 3>>()[..] else { unreachable!() };
format!("{hour:02}:{min:02}:{sec:02}")
}
fn main() {
assert_eq!(next_time("00:00:00"), "00:00:01");
assert_eq!(next_time("23:59:59"), "00:00:00");
}
296(4): デフォルトの名無しさん [] 2024/03/01(金) 22:22:26.10 ID:6k2oCbjk(1/3) AAS
>>282282(16): ◆QZaw55cn4c [sage] 2024/02/24(土) 14:25:41.40 ID:NZEL8Kud(1) AAS
異なる自然数 a, b (a > b) における a^3 - b^3 を「a, b の三乗差」と呼ぶことにする。
異なる5通りの組(a, b) (c, d) ... (j, k) について三乗差がすべて相等しいとき
その組(a, b)...(j, k) および三乗差自体を求めよ
異なる6通りの組で三乗差が相等しい場合があるかも検討せよ
C++
外部リンク:ideone.com
>>294294(1): デフォルトの名無しさん [] 2024/02/28(水) 23:21:09.16 ID:FCtvUtiC(1) AAS
>>282
>>292とは別の方法で>>290を高速化
外部リンク:ideone.com
1³, 2³, 3³, …, 5000³をD = 5001で割った余りはすべて異なる値になるから、d = a³ − b³を
Dで割った余りはどれか1つの値に偏ることなく均等に分布する。dをDで割った余りによりdを
区分すれば、各区分に入る個数はどれも多すぎないのでソートに時間が余りかからない。
Dの値はconstexpr関数によりコンパイラに計算させている。n = 10000, 15000のときは
それぞれD = 10002, 15009になる。
はa, bの二重ループ内でa³ − b³をD = 5001で割った余りrにより区分していたが、
rのループ内でa, bを変化させるように変更したら、2次元配列がなくなってすっきりした。
その結果、メモリ使用量が激減し、nが大きい場合でも実行できるようになった。
441: デフォルトの名無しさん [] 2024/10/11(金) 20:58:31.10 ID:BlO5cFoG(2/2) AAS
>>440splitのあとの$"は不要だった。
どちらにしてもタブも置換してまうのでアウトかも。
521: デフォルトの名無しさん [sage] 2025/01/31(金) 23:44:08.10 ID:mLWOFznj(2/2) AAS
全て自分で出来る気付くミスらない
って自己過信な人がセキュリティホールを招いてるからね
自動的にサポートしてくれる言語を使うのが安全で開発効率もいいよ
615(1): 614 [sage] 2025/02/15(土) 10:02:25.10 ID:UI50KRFJ(1) AAS
>>608608(10): デフォルトの名無しさん [sage] 2025/02/14(金) 23:42:29.57 ID:PVqLPxMJ(1) AAS
お題:ランダムな英文字列が与えられる。隣り合う英文字が同じ大文字だった場合、その間にその大文字の小文字を挿入せよ
In < abcDDefGG
Out > abcDdDefGgG
dart
外部リンク:ideone.com
644(1): デフォルトの名無しさん [] 2025/02/17(月) 20:48:16.10 ID:2enU2rA/(2/2) AAS
正規表現置換なら、
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)"})
}
658: デフォルトの名無しさん [sage] 2025/02/27(木) 00:23:41.10 ID:TOGelnHV(1) AAS
>>656656(5): デフォルトの名無しさん [] 2025/02/26(水) 21:33:47.93 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
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();
let x = (x & MAGIC_1) + ((x >> 1) & MAGIC_1);
let x = (x & MAGIC_2) + ((x >> 2) & MAGIC_2);
let x = (x & MAGIC_3) + ((x >> 4) & MAGIC_3);
let x = (x & MAGIC_4) + ((x >> 8) & MAGIC_4);
let x = (x & MAGIC_5) + ((x >> 16) & MAGIC_5);
let x = (x & MAGIC_6) + ((x >> 32) & MAGIC_6);
x as usize
}
fn main() {
assert_eq!(bit_count(65535), 16);
assert_eq!(bit_count(15), 4);
assert_eq!(bit_count(6), 2);
assert_eq!(bit_count(1), 1);
assert_eq!(bit_count(0), 0);
assert_eq!(bit_count(-1), 1);
assert_eq!(bit_count(-6), 2);
assert_eq!(bit_count(-15), 4);
assert_eq!(bit_count(-65535), 16);
}
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.042s