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

リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
48
(1): デフォルトの名無しさん [sage] 2023/08/18(金) 11:07:33.13 ID:wx26N4AH(1) AAS
>>40
40(3): デフォルトの名無しさん [] 2023/08/15(火) 16:29:06.61 ID:eu+UdA0l(1) AAS
このサイトより
外部リンク:agora.ex.nii.ac.jp
2023/8/1/0/0 から 2023/8/16/23/0 まで
表示日時を変更しながら1時間毎の静止気象衛星画像(地球)を収集し
(衛星画像 は 可視光 2048x2048 程度 512x512 等も可 起動オプションで指定出来るとボーナス特典)
gif animation または png animation ファイルに変換せよ


8/14/0/0 画像リンク

8/15/0/0 画像リンク

8/15/15/0 画像リンク
UTC で答えてる人が多いみたいだけど
>例
>8
8(3): デフォルトの名無しさん [] 2023/08/07(月) 01:25:47.55 ID:dolrRGoi(1/2) AAS
>>6
それなんて言語?
/14/0/0 画像リンク

JST ですよね
268: 259 [sage] 2024/02/21(水) 23:06:20.13 ID:DX/jvS2m(1) AAS
>>259
259(1): デフォルトの名無しさん [sage] 2024/02/18(日) 19:41:35.69 ID:rWy6ZYAH(2/2) AAS
>>234 dart
外部リンク:ideone.com
void main() {
var rev = (n) => int.parse(n.toString().split('').reversed.join());
var f = (n) => Iterable.generate(n + 1).map((i) => [n - i, n + i].where((x) => x == rev(x))).firstWhere((a) => a.isNotEmpty).toSet().toList();
print([0, 17, 100].map((n) => [n, f(n)]));
}
Iterable.generate(n).map(f)は単に
Iterable.generate(n, f)で良かったと判明
270: デフォルトの名無しさん [] 2024/02/22(木) 00:34:50.13 ID:+mJgzEZf(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
>>266
266(3): デフォルトの名無しさん [sage] 2024/02/21(水) 13:54:29.89 ID:ve9Dz9D8(1) AAS
>>264
私は解答は提出していないが、ざっくりと自分が思いついた方法

まず、以下のような操作を考える
A. 1234という入力に対して1234321を返す
B. 1234という入力に対して12344321を返す
ここで、xという入力に対してA,Bが返す数をA(x),B(x)と表すことにする

次に、与えられた数の桁数で場合分け
(1)与えられた数字の桁数が奇数の場合
例として5桁の数字を考える
N=a*10000+b*1000+c*100+d*10+e*1 (a~eは1桁の自然数, aは0でない)
が与えられたとき、
M=a*100+b*10+c*1
とすると、N=10000の場合を除いて、Nに最も近い回文数は
A(M), A(M+1), A(M-1)
の3つの候補に絞られる(厳密にはA(M)とNとの大小比較からA(M±1)の何れかは明らかに候補にならないので2つを考えれば良い)
N=10000の場合は9999と10001が答え

(2)与えられた数の桁数が偶数の場合
例として6桁の数を考える
(1)と同様に
N=a*100000+b*10000+c*1000+d*100+e*10+f*1
に対して
M=a*100+b*10+c*1
とすると、N=100000の場合を除いて
B(M), B(M+1), B(M-1)
のどれかがNに最も近い回文数(厳密には以下略)
N=100000の場合は99999と100001が答え

十分大きな数に対しては虱潰しに回文判定していくより速く求まる
を参考に>>249
249(3): デフォルトの名無しさん [] 2024/02/17(土) 20:00:17.98 ID:k6cg1rdP(1) AAS
>>234
>>239のC#版
外部リンク:ideone.com

Julia版
外部リンク:ideone.com
(C#)を移植
外部リンク:ideone.com
418
(1): デフォルトの名無しさん [sage] 2024/09/03(火) 09:22:31.13 ID:HQsZJT0t(1/3) AAS
>>417
417(1): デフォルトの名無しさん [sage] 2024/09/03(火) 07:56:47.18 ID:Jxau6mSM(1/3) AAS
>>416 lisp
外部リンク:ideone.com
windowsを使ってるんですが>>417を実行するにはどのような環境を整えれば良いでしょうか?
566: デフォルトの名無しさん [sage] 2025/02/11(火) 16:40:21.13 ID:gFwXvlnz(1) AAS
>>561
561(15): デフォルトの名無しさん [] 2025/02/11(火) 10:54:21.93 ID:E5oVpL7o(1/5) AAS
お題
数列が入力されます
ニ番目に小さい数を出力してください

入力:4, 5, 1, 7, 1, 2, 8, 9, 2, 7
出力:2
#!ruby
puts $stdin.gets.chomp.split(",").map{|e| e.to_i}.uniq.sort[1]
700
(4): デフォルトの名無しさん [] 2025/03/23(日) 23:00:51.13 ID:pi1bImlR(1) AAS
>>680
680(5): デフォルトの名無しさん [] 2025/03/16(日) 23:01:39.52 ID:6JX6mCC/(1) AAS
お題:36桁以下の負でない整数で16進表記が10進表記の部分文字列であるものをすべて求めて下さい。

(例)
・1の16進表記1は10進表記1の部分文字列です
・123の16進表記7Bは10進表記123の部分文字列ではありません
・357440の16進表記57440は10進表記357440の部分文字列です

※遅い言語では15桁以下で解いても構いません
から1週間経ったので解答例を掲載

>>685
685(4): デフォルトの名無しさん [] 2025/03/18(火) 21:39:06.90 ID:9hwr8+MV(1) AAS
>>683
14桁と15桁には該当値がないので、そこに列挙された数に0を追加した72個が15桁以下の答で
結果的には合っているよ。

出題時に作ったC++プログラムはideoneで36桁以下を0.43秒で完了した。これをPowerShellに
移植したプログラムは15桁以下を0.5秒未満、36桁以下を数分で完了した。

その後、改良したC++プログラムではideoneで36桁以下を0.23秒に短縮できた。
を書いたときに作ってあった2つのC++プログラム
外部リンク:ideone.com
外部リンク:ideone.com

1番目ではsolve関数の再帰呼び出しの対象とするx[p]の下限と上限を線形探索するが、
2番目では二分探索する。要素数10では二分探索の効果は薄いと思いきや、大分速くなった。

2番目を読み返していたらバグを発見してしまった。i = N - 1のとき63行目のa[i + 1]はa[N]となり
配列の添字範囲外アクセス。0との比較だけだし、if文の評価がどっちでも以降の処理は結局同じだから、
実害も解への影響もないが、厳格さが必要ならif ((i + 1 < N ? a[i + 1] : 0) >= 0) {と書き換えるべきだな。
実行時間への影響は無視できる。

それぞれのPowerShellへの移植版
外部リンク:ideone.com
外部リンク:ideone.com

完全な逐語訳ではなく、PowerShellで書くと遅くなったり煩雑になったりする箇所は適宜改変した。
15桁以下の場合は64ビット整数でも桁溢れしないので、BigIntの代わりにInt64を使えば少し速くなる。
712
(4): デフォルトの名無しさん [] 2025/03/28(金) 21:33:35.13 ID:VDfNaTNz(1/3) AAS
お題:素因数の総和が2025である2000万以下の自然数をすべて求めて下さい。

例)
32272
 素因数分解すると32272 = 2 × 2 × 2 × 2 × 2017で、
 素因数の総和は2 + 2 + 2 + 2 + 2017 = 2025となります。

※20億以下でもC++で5秒以内に余裕で完了できますが、出力が長すぎるため2000万以下としました。
 その結果、Rでも5秒以内に余裕で完了できる問題になりました。
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.068s