プログラミングのお題スレ Part22 (857レス)
前次1-
抽出解除 レス栞

リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
76
(2): 蟻人間 ◆T6xkBnTXz7B0 [sage] 2023/08/26(土) 23:29:51.32 ID:JYg5slq9(2/3) AAS
>>71
71(3): デフォルトの名無しさん [sage] 2023/08/26(土) 20:03:48.42 ID:LJcWLtrE(1) AAS
文字列Sの中に含まれる回文をすべて列挙ってどうやったらいいですかね(*_*)
aとかbみたいな一文字でも回文とみなしますです
文字列Sは1文字以上100文字以下で、半角英字であることがわかってます

とんでもない計算量になる気がするのですが、鮮やかなやりかたってないものかと…トホ(ヽ´ω`)
C++
#include <stdio.h>
bool is_kaibun(const char *str, size_t len)
{
for (size_t i = 0; i < len/2; i++)
if (str[i] != str[len - i - 1]) return false;
return true;
}
void detect_kaibun(const char *str, size_t len)
{
for (size_t klen = 1; klen <= len; klen++)
{
for (size_t i = 0; i < len - klen + 1; i++)
if (is_kaibun(str + i, klen))
printf("%*s\n", (int)klen, str + i);
}
}
int main(void)
{
detect_kaibun("ABCBCXC", 7);
return 0;
}
126: デフォルトの名無しさん [sage] 2023/10/12(木) 12:31:12.32 ID:hnj5q8Ch(1) AAS
while (true) push(BUTTON_A)
235
(1): デフォルトの名無しさん [] 2024/02/14(水) 15:20:24.32 ID:VoM/Kva2(1) AAS
>>234
234(27): デフォルトの名無しさん [sage] 2024/02/14(水) 09:32:06.19 ID:JjlrBdlD(1) AAS
お題:数値が入力されるのでその数値に最も近い回分数を出力せよ
回分数とは回分になっている数(負数含まず)のことである
最も近い回分数が2つある場合は2つとも出力せよ

入力 0
出力 0

入力 17
出力 22

入力 100
出力 99
出力 101
lisp
外部リンク:ideone.com
315: デフォルトの名無しさん [sage] 2024/03/31(日) 11:58:50.32 ID:enek7T1c(2/2) AAS
n D1 D2 D3 = 25000 25003 25005 25006
false_positive = 171 / 25003 = 0.68%
total_t_pass1 = 1654.681 ms 2.647 ns/iter
total_t_pass2 = 1.407 ms 0.329 ns/iter
real 0m1.709s

false_positive = 2211 / 100005 = 2.21%
total_t_pass1 = 27338.298 ms 2.734 ns/iter
total_t_pass2 = 78.402 ms 0.355 ns/iter
real 0m27.692s

n D1 D2 D3 = 1000000 1000002 1000009 1000015
false_positive = 18 / 10000 = 0.18%
total_t_pass1 = 28674.338 ms 2.867 ns/iter
total_t_pass2 = 5.642 ms 0.313 ns/iter
real 0m28.897s

n D1 D2 D3 = 2000000 2000003 2000013 2000015
false_positive = 13 / 5000 = 0.26%
total_t_pass1 = 28777.424 ms 2.878 ns/iter
total_t_pass2 = 8.620 ms 0.332 ns/iter
real 0m29.015s

n D1 D2 D3 = 2642245 2642246 2642253 2642258
false_positive = 315 / 3785 = 8.32%
total_t_pass1 = 29210.857 ms 2.921 ns/iter
total_t_pass2 = 336.864 ms 0.405 ns/iter
real 0m29.800s
350: デフォルトの名無しさん [sage] 2024/06/01(土) 12:57:50.32 ID:M5I0DyuF(1) AAS
知らんがな
458: デフォルトの名無しさん [] 2025/01/01(水) 20:12:46.32 ID:ZpviU2f/(6/7) AAS
>>356
356(3): デフォルトの名無しさん [sage] 2024/06/07(金) 06:27:47.87 ID:ZJzD8UbY(1) AAS
お題:引数sとnを取りシーザー暗号化を行う関数を作れ
sは平文、nはずらす文字数(負数可)、返り値は暗号化後の文字列
同様の関数で「Hello, World!」を暗号化し復号化せよ
Java
外部リンク:paiza.io
716: デフォルトの名無しさん [] 2025/03/28(金) 23:19:47.32 ID:VDfNaTNz(3/3) AAS
>>714
714(4): デフォルトの名無しさん [] 2025/03/28(金) 22:12:15.09 ID:g08AymBh(1) AAS
お題
AさんがBさんに惚れてることを
A-B
と表します

両思いのペアを出力してください

入力
D-L,U-X,U-Y,U-R,Z-B,B-E,B-M,B-N,V-H,V-X,W-F,W-R,R-B,R-W,O-W,O-S,F-A,Q-X,P-E,P-L,X-X,Y-M,Y-C,L-U,L-V,I-X,E-B,H-M,A-S

出力
B,E
R,W
PowerShellでもう少し短く

$s = "D-L,U-X,U-Y,U-R,Z-B,B-E,B-M,B-N,V-H,V-X,W-F,W-R,R-B,R-W,O-W,O-S,F-A,Q-X,P-E,P-L,X-X,Y-M,Y-C,L-U,L-V,I-X,E-B,H-M,A-S"
$h = @{}
$s -split "," |% {
  $a, $b = $_ -split "-"
  $i, $t = if ($a -lt $b) {1, "$a,$b"} else {2, "$b,$a"}
  $h[$t] = $h[$t] -bor $i
}

$h.keys |? {$h[$_] -eq 3} | sort

-- 実行結果 --
B,E
R,W
857: デフォルトの名無しさん [] 2025/09/17(水) 23:39:47.32 ID:RlLGu0ST(2/2) AAS
>>856
856(1): デフォルトの名無しさん [] 2025/09/17(水) 22:43:48.03 ID:RlLGu0ST(1/2) AAS
>>845
C++
外部リンク:ideone.com

行列Aの計算で加減算・代入回数を>>849より減らした。実行時間の違いは分からなかった。
BigInt化してm = 2000, n = 2¹⁰²⁴で実行したら違いが明確になった。

(1) >>849
849(2): デフォルトの名無しさん [] 2025/09/14(日) 21:00:58.83 ID:Yva1i9w5(1/2) AAS
>>845
R
外部リンク:ideone.com

>>846より行列計算が速くなった。変数名mとnが逆だったのを直した。

C++に移植
外部リンク:ideone.com
のBigInt版
外部リンク:ideone.com
(2) >>856のBigInt版
外部リンク:ideone.com

加減算・代入回数を削減した(2)の方が確かに速く、(1)の約4分の3の実行時間。
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.040s