プログラミングのお題スレ Part22 (863レス)
プログラミングのお題スレ Part22 http://mevius.5ch.net/test/read.cgi/tech/1691038333/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
1: デフォルトの名無しさん [] 2023/08/03(木) 13:52:13.20 ID:/xW45k0z プログラミングのお題スレです。 【出題と回答例】 1 名前:デフォルトの名無しさん お題:お題本文 2 名前:デフォルトの名無しさん >>1 使用言語 回答本文 結果がある場合はそれも 【ソースコードが長くなったら】 (オンラインでコードを実行できる) https://ideone.com/ http://codepad.org/ http://compileonline.com/ http://rextester.com/runcode https://runnable.com/ https://code.hackerearth.com/ http://melpon.org/wandbox https://paiza.io/ 宿題は宿題スレがあるのでそちらへ。 ※前スレ プログラミングのお題スレ Part21 https://mevius.5ch.net/test/read.cgi/tech/1668333636/ http://mevius.5ch.net/test/read.cgi/tech/1691038333/1
3: デフォルトの名無しさん [] 2023/08/06(日) 12:21:14.08 ID:/9zIb/V0 お題 1行につき一つの文章が入力されます アルファベット26文字がすべて含まれている文章をフィルタリングしてください 大文字小文字は区別しません そのうちもっとも短い文章を出力してください 入力 The quick brown fox jumps over a lazy dog. The jay, pig, fox, zebra and my wolves quack! Pack my box with seven dozen liquor jugs. The horse, pig, fox, zebra and my wolves quack! Jackdaws love my small sphinx of quartz. Jackdaws love my big sphinx of quartz. The quick brown fox jumps over a lazy cat. Pack my box with five dozen liquor jugs. 出力 Jackdaws love my big sphinx of quartz. http://mevius.5ch.net/test/read.cgi/tech/1691038333/3
8: デフォルトの名無しさん [] 2023/08/07(月) 01:25:47.55 ID:dolrRGoi >>6 それなんて言語? http://mevius.5ch.net/test/read.cgi/tech/1691038333/8
9: 9 [sage] 2023/08/07(月) 01:46:18.23 ID:PMO8D1QO >>3 Perl5 for (<DATA>) { my %h = map{$_ => 1} grep{/[a-z]/i} split ''; push @a, $_ if 26 == keys %h; } @s = sort{length($a) <=> length($b)} @a; print $s[0]; __DATA__ The quick brown fox jumps over a lazy dog. The jay, pig, fox, zebra and my wolves quack! Pack my box with seven dozen liquor jugs. The horse, pig, fox, zebra and my wolves quack! Jackdaws love my small sphinx of quartz. Jackdaws love my big sphinx of quartz. The quick brown fox jumps over a lazy cat. Pack my box with five dozen liquor jugs. ※ 見易くするためインデントを全角スペースに置換してあります。 実行結果: $ perl 22_3_az26.pl Jackdaws love my big sphinx of quartz. http://mevius.5ch.net/test/read.cgi/tech/1691038333/9
17: デフォルトの名無しさん [] 2023/08/10(木) 13:37:16.01 ID:YYBOmFjO >>3 Perl https://paiza.io/projects/05DzwASHT6-4bVjpenNDBQ http://mevius.5ch.net/test/read.cgi/tech/1691038333/17
40: デフォルトの名無しさん [] 2023/08/15(火) 16:29:06.61 ID:eu+UdA0l このサイトより http://agora.ex.nii.ac.jp/digital-typhoon/ 2023/8/1/0/0 から 2023/8/16/23/0 まで 表示日時を変更しながら1時間毎の静止気象衛星画像(地球)を収集し (衛星画像 は 可視光 2048x2048 程度 512x512 等も可 起動オプションで指定出来るとボーナス特典) gif animation または png animation ファイルに変換せよ 例 8/14/0/0 http://agora.ex.nii.ac.jp/digital-typhoon/globe/color/2023/512x512/HMW923081315.globe.1.jpg 8/15/0/0 http://agora.ex.nii.ac.jp/digital-typhoon/globe/color/2023/512x512/HMW923081415.globe.1.jpg 8/15/15/0 http://agora.ex.nii.ac.jp/digital-typhoon/globe/color/2023/512x512/HMW923081505.globe.1.jpg http://mevius.5ch.net/test/read.cgi/tech/1691038333/40
64: デフォルトの名無しさん [sage] 2023/08/24(木) 05:04:40.60 ID:UkV1PQmo お題:2Dゲームのスクロール処理 整数の二次元配列(高さ50, 横幅100)上にランダムに整数1〜9が200個配置される。 この配列を高さ20, 横幅40の矩形領域に切り取って表示したい。キーボードの入力(l, r, t, b)で矩形領域を移動させ切り取る領域を変化させよ。 http://mevius.5ch.net/test/read.cgi/tech/1691038333/64
71: デフォルトの名無しさん [sage] 2023/08/26(土) 20:03:48.42 ID:LJcWLtrE 文字列Sの中に含まれる回文をすべて列挙ってどうやったらいいですかね(*_*) aとかbみたいな一文字でも回文とみなしますです 文字列Sは1文字以上100文字以下で、半角英字であることがわかってます とんでもない計算量になる気がするのですが、鮮やかなやりかたってないものかと…トホ(ヽ´ω`) http://mevius.5ch.net/test/read.cgi/tech/1691038333/71
85: デフォルトの名無しさん [sage] 2023/09/20(水) 14:42:58.26 ID:I55f6i4N お題 abc1.mp4 abc2.mp4 .. abc20.mp4があるとします これを名前順でソートできるようにするため abc001.mp4 abc002.mp4 ... abc020.mp4 とリネームしてください http://mevius.5ch.net/test/read.cgi/tech/1691038333/85
101: デフォルトの名無しさん [sage] 2023/09/28(木) 08:18:15.29 ID:q8VwFY1b お題 文字列S=abcdefghij(10文字)が与えられて 配列[0,4,7]が与えられる このときSの0番目を4番目、4番目を7番目、7番目を0番目に移動した文字列を出力するプログラムを書いてください http://mevius.5ch.net/test/read.cgi/tech/1691038333/101
111: デフォルトの名無しさん [] 2023/09/30(土) 17:32:44.04 ID:xxjzuZuq お題 文字列が入力されます 赤と緑を入れ替えて 黒と白を入れ替えて 黄と青を入れ替えてください 例 入力: 緑のカバンに500万入れて白の紙で黄色のカバン言うて書きながら赤のカバン言いながら置いてくれたら俺黒のカバン言いながら取りに行くわ 出力: 赤のカバンに500万入れて黒の紙で青色のカバン言うて書きながら緑のカバン言いながら置いてくれたら俺白のカバン言いながら取りに行くわ http://mevius.5ch.net/test/read.cgi/tech/1691038333/111
127: デフォルトの名無しさん [sage] 2023/10/14(土) 00:00:08.85 ID:sMwx6jpS お題:角カッコの列が入力されるのでカッコの対応が取れていたら1,取れていなかったら0と表示せよ < [[]] > 1 < [[] > 0 http://mevius.5ch.net/test/read.cgi/tech/1691038333/127
134: デフォルトの名無しさん [sage] 2023/10/18(水) 20:40:59.79 ID:4ifgnZXl お題:Pythonのmath.ulp()と同機能の関数 引数が正規化数限定のサブセットでも可(その旨を明記)。 Pythonで実装する場合は(もちろん)math.ulp()を使ってはならない。 http://mevius.5ch.net/test/read.cgi/tech/1691038333/134
156: デフォルトの名無しさん [sage] 2023/11/25(土) 20:07:06.40 ID:zpqT0hBE お題:ランダムに1から9999までの整数を得た時、何回で全種類出揃うか確認せよ 擬似乱数列生成法については指定しないものとする ruby https://ideone.com/rucuHk require 'set' r = 1..9999 c = r.to_a.fill(0) s = r.to_set while !s.empty? n = rand(r) c[n - r.first] += 1 s.delete n end p c.sum ↓ 84736 http://mevius.5ch.net/test/read.cgi/tech/1691038333/156
171: デフォルトの名無しさん [sage] 2023/11/30(木) 06:46:26.20 ID:/rzYr39l お題:英字の羅列された文字列が与えられる。この文字列を分析して数字列を出力せよ。数字の表記ルールは、その文字の両隣の文字がASCIIコードにおける奇数だったら1、そうでなければ0. http://mevius.5ch.net/test/read.cgi/tech/1691038333/171
179: デフォルトの名無しさん [] 2023/12/13(水) 09:27:48.18 ID:NbIWTS6w お題 ビールの空きビンをN本集めると新品のビール1本と交換してもらえる あなたが新品のビールをP本持っている そのとき、あなたが飲めるビールはR本である N, Pを引数としてRを返す関数を定義してください http://mevius.5ch.net/test/read.cgi/tech/1691038333/179
187: デフォルトの名無しさん [] 2024/01/16(火) 00:33:05.98 ID:n8j0XaXx お題:時刻の文字列が与えられる。その時刻から1秒後の時刻を出力せよ。 例 入力:00:00:00 出力:00:00:01 入力:23:59:59 出力:00:00:00 http://mevius.5ch.net/test/read.cgi/tech/1691038333/187
206: デフォルトの名無しさん [] 2024/02/02(金) 06:41:15.23 ID:CC6U77IS お題 入力データをグループ分けして出力せよ 入力データの、= の左右は同じグループである。 出力する順番は、入力データの出現順とする UnionFind を使えば良いかも 入力データ ["a1=a2", "b1=b2", "b3=b2", "c1=c2", "e1=e2", "a3=a4", "c3=c4", "e1=e3", "a2=a4", "c3=c1", "b3=a4", "c2=d1", "a4=a5", "d2=c1", "b4=b3", "d3=c3"] 出力 [["a1", "a2", "b1", "b2", "b3", "a3", "a4", "a5", "b4"], ["c1", "c2", "c3", "c4", "d1", "d2", "d3"], ["e1", "e2", "e3"]] Ruby で、UnionFind を自作してみた。 下はユニットテストです https://paiza.io/projects/e6nk1EOu3utyWpV3iuWAFQ?language=ruby https://paiza.io/projects/kjeVtTKeDwEnWVrBU5_nbg?language=ruby http://mevius.5ch.net/test/read.cgi/tech/1691038333/206
234: デフォルトの名無しさん [sage] 2024/02/14(水) 09:32:06.19 ID:JjlrBdlD お題:数値が入力されるのでその数値に最も近い回分数を出力せよ 回分数とは回分になっている数(負数含まず)のことである 最も近い回分数が2つある場合は2つとも出力せよ 入力 0 出力 0 入力 17 出力 22 入力 100 出力 99 出力 101 http://mevius.5ch.net/test/read.cgi/tech/1691038333/234
249: デフォルトの名無しさん [] 2024/02/17(土) 20:00:17.98 ID:k6cg1rdP >>234 >>239のC#版 https://ideone.com/glAEMw Julia版 https://ideone.com/cbP5Dm http://mevius.5ch.net/test/read.cgi/tech/1691038333/249
266: デフォルトの名無しさん [sage] 2024/02/21(水) 13:54:29.89 ID:ve9Dz9D8 >>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が答え 十分大きな数に対しては虱潰しに回文判定していくより速く求まる http://mevius.5ch.net/test/read.cgi/tech/1691038333/266
282: ◆QZaw55cn4c [sage] 2024/02/24(土) 14:25:41.40 ID:NZEL8Kud 異なる自然数 a, b (a > b) における a^3 - b^3 を「a, b の三乗差」と呼ぶことにする。 異なる5通りの組(a, b) (c, d) ... (j, k) について三乗差がすべて相等しいとき その組(a, b)...(j, k) および三乗差自体を求めよ 異なる6通りの組で三乗差が相等しい場合があるかも検討せよ http://mevius.5ch.net/test/read.cgi/tech/1691038333/282
296: デフォルトの名無しさん [] 2024/03/01(金) 22:22:26.10 ID:6k2oCbjk >>282 C++ https://ideone.com/1c4s5I >>294はa, bの二重ループ内でa³ − b³をD = 5001で割った余りrにより区分していたが、 rのループ内でa, bを変化させるように変更したら、2次元配列がなくなってすっきりした。 その結果、メモリ使用量が激減し、nが大きい場合でも実行できるようになった。 http://mevius.5ch.net/test/read.cgi/tech/1691038333/296
301: デフォルトの名無しさん [] 2024/03/06(水) 22:35:52.23 ID:lIZep5aT >>282 C++ https://ideone.com/PG6UiY >>300の実行時間を分析すると、最も時間が掛かっているのは46〜と47行目だと判明した。 そこで配列ABの第1次元と第2次元を入れ替えてみると、n = 5000では変わらないが、 1万, 2万, 5万, 10万, 20万では35%前後高速になった。これは、改良前には第2次元の添字が 小さい要素に書き込みが集中しているため、改良後のように第1次元に入れ替えた方が 纏まったメモリ領域に書き込みが集中しキャッシュの効きが良くなるからだと考えられる。 一方、n = 100万で高速化しないのは、書き込み集中領域が大きすぎるからだろう。 https://ideone.com/6RzW0n n = 100万の場合にはr2の値によってデータを多数の列へ振り分けるのをやめ、列を1つにして、 その内部でr2の値により2種類に区分し、それぞれの内部で2種類にさらに区分し、…と再帰的に 区分していけば(要するにクイックソートの変形版)、1つの配列内での要素のスワップだけで済み、 キャッシュの効きが改善されるとの予想通り、n = 100万で実行速度は>>296より25%速くなった。 (原理的には>>300より非効率なのでn = 5000では>>300より当然遅い) http://mevius.5ch.net/test/read.cgi/tech/1691038333/301
304: デフォルトの名無しさん [sage] 2024/03/09(土) 22:47:01.30 ID:v99WCN19 お題 460円 580円 600円 の3種類の商品があります これらを組み合わせて合計10個買ったら5360円になりました 組み合わせを求めるプログラムを書いてください ちなみに答えの一つは ・600円×2 ・580円×4 ・460円×4 だそうです https://rio2016.5ch.net/test/read.cgi/cigaret/1706726196/56-57 http://mevius.5ch.net/test/read.cgi/tech/1691038333/304
321: デフォルトの名無しさん [] 2024/04/13(土) 23:01:22.75 ID:wFZkrOeZ >>319 https://ideone.com/YCi6qe ヘロンが作ったもう1つの式である平方根を加算と除算の繰り返しで求める式も使用。 sqrt関数を呼び出すより実行形式ファイルサイズがほんの少しだけ小さくなる。 http://mevius.5ch.net/test/read.cgi/tech/1691038333/321
343: 17 [] 2024/05/14(火) 05:34:03.62 ID:ou5vbzLn じゃあ10年前のこのお題(URLを書くとNGになるようなので書かない)。 プログラミングのお題スレ Part4 115 :デフォルトの名無しさん:2014/06/21(土) 18:36:45.72 ID:/fMJIWig.net お題:文字列Aを1回以上繰り返した文字列Bが与えられたとき 文字列Aを求める。ただしAの候補が複数ある場合は最短のものとする。 例 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -> a 123412312341231234123123412312341231234123 -> 1234123 oxoxoxoxoxoxoxoxxoxoxoxoxoxoxoxoxx -> oxoxoxoxoxoxoxoxx http://mevius.5ch.net/test/read.cgi/tech/1691038333/343
348: デフォルトの名無しさん [sage] 2024/06/01(土) 10:16:34.91 ID:hzaQXY32 お題: コロン区切りの時分秒の時刻が与えられるので時分秒をそれぞれ掛け算した結果を表示せよ 例: 04:05:06 120 http://mevius.5ch.net/test/read.cgi/tech/1691038333/348
349: デフォルトの名無しさん [sage] 2024/06/01(土) 11:08:12.83 ID:hzaQXY32 お題: バイト列が与えられる。先頭から解析した場合にバイトが1だったら次の4バイトを読み込んで整数として出力し、バイトが2だったら次のバイトを0が来るまで読み込んで文字列として出力せよ 入力 1 1 0 0 0 2 65 66 67 0 1 128 0 0 0 出力 1ABC128 http://mevius.5ch.net/test/read.cgi/tech/1691038333/349
356: デフォルトの名無しさん [sage] 2024/06/07(金) 06:27:47.87 ID:ZJzD8UbY お題:引数sとnを取りシーザー暗号化を行う関数を作れ sは平文、nはずらす文字数(負数可)、返り値は暗号化後の文字列 同様の関数で「Hello, World!」を暗号化し復号化せよ http://mevius.5ch.net/test/read.cgi/tech/1691038333/356
363: 9 [sage] 2024/06/13(木) 14:34:57.00 ID:XgNTPGgf >>349 > 「バイトが1だったら次の4バイトを読み込んで整数として出力し、」 正直、意味がわからんかった 例で見ると 1 1 0 0 0 → 1 1 128 0 0 0 → 128 ということだが 1に続く4バイトを加算して出力するって意味だったのかいな http://mevius.5ch.net/test/read.cgi/tech/1691038333/363
404: デフォルトの名無しさん [sage] 2024/08/20(火) 15:28:18.45 ID:YrWgN0+y お題:今日、または任意の日付から、もういくつ寝るとお正月かを求めよ。(昼寝は除く) http://mevius.5ch.net/test/read.cgi/tech/1691038333/404
416: デフォルトの名無しさん [sage] 2024/09/03(火) 07:13:35.79 ID:1bP400Ev お題 引数aから引数bまでの数列を返す関数がある。この関数を数列にゾロ目が含まれていた場合に空の数列を返すように実装せよ http://mevius.5ch.net/test/read.cgi/tech/1691038333/416
427: デフォルトの名無しさん [sage] 2024/10/08(火) 17:17:22.09 ID:CS1PHEoT お題:文字列を中央寄せする関数を作れ。 関数は文字列、全体の横幅(整数)、余白を埋める文字、を引数に取る。横幅分の文字列を引数の文字で作成し、その中央に引数の文字列を埋め込み戻り値として返せ。 http://mevius.5ch.net/test/read.cgi/tech/1691038333/427
435: デフォルトの名無しさん [sage] 2024/10/09(水) 01:45:35.37 ID:YvVjSPhZ 頑張って読んだけどこのままでは多分スレチ、ずっと条件を簡単にして出題し直してみる。 お題 勇者(HP1000)対魔王(HP5000)、先鋒勇者、サイコロ(目は1から6)を振って出た目だけ相手にダメージを与えられ、交互に攻撃しHP0となったら負け。魔王のサイコロは1個だけど勇者のサイコロはN個(N=1~10)の時の勇者の勝率を求めよ。 http://mevius.5ch.net/test/read.cgi/tech/1691038333/435
438: デフォルトの名無しさん [sage] 2024/10/11(金) 05:53:27.29 ID:EzY86rdr お題:文字列の中で1つ以上連続している空白をすべて空白4つに置換せよ。ただし正規表現は使ってはならない。 例: "abc def ghi" -> "abc def ghi" http://mevius.5ch.net/test/read.cgi/tech/1691038333/438
449: デフォルトの名無しさん [] 2024/12/31(火) 22:33:49.84 ID:5KitXLte ベクターにあるこれを解いてくれ 昔2ch、5chスレでやってたができず いまだと4x4はパワーで行けるとおもうが 4x4盤タイルゲーム for Windows 対戦するたびに学習して次第に強くなる「最善手探索+対戦学習型知能ゲーム」 http://mevius.5ch.net/test/read.cgi/tech/1691038333/449
464: デフォルトの名無しさん [] 2025/01/03(金) 13:22:57.82 ID:dEYOS8Dq お題 AのあとにAと同じ数だけBが続く言語エビがあるとします 文字列が入力されたときそれがエビ言語であるか判定するプログラムを作成してください → true A → false B → false AB → true ABB → false AAB → false AABB → true ABAABBAAABBB→ true http://mevius.5ch.net/test/read.cgi/tech/1691038333/464
474: デフォルトの名無しさん [] 2025/01/04(土) 21:19:41.74 ID:uiECOsgP お題 貨幣・銀行券を次の文字列で表すとします (1) (5) (10) (50) (100) (500) [1000] [5000] [10000] 貨幣・銀行券がランダムに次のような文字列で与えられます (100)(10)(1)[10000](5)(500)[1000][5000][1000][1000](10)(100)(50)(100)[1000] 与えられた貨幣・銀行券を分類して貨幣・銀行券の価値が高い順に次のように出力するプログラムを作成してください [10000] [5000] [1000][1000][1000][1000] (500) (100)(100)(100) (50) (10)(10) (5) (1) http://mevius.5ch.net/test/read.cgi/tech/1691038333/474
485: デフォルトの名無しさん [] 2025/01/22(水) 21:35:12.82 ID:JtEnwxKE お題 文字列と長さを入力として受け取り デカルト積のリストを出力してください 入力:ABC 1 出力:[A, B, C] 入力:ABC 2 出力:[AA, AB, AC, BA, BB, BC, CA, CB, CC] 入力:ABC 3 出力:[AAA, AAB, AAC, ABA, ABB, ABC, ACA, ACB, ACC, BAA, BAB, BAC, BBA, BBB, BBC, BCA, BCB, BCC, CAA, CAB, CAC, CBA, CBB, CBC, CCA, CCB, CCC] http://mevius.5ch.net/test/read.cgi/tech/1691038333/485
500: デフォルトの名無しさん [] 2025/01/27(月) 09:16:22.69 ID:rqFJtGlJ お題 入力された文字列から重複する文字を抽出してください T → CG → ATA → A CGGA → G ATGAT → AT GTTGCA → GT CCCCGGG → CG ACTGCGAG → ACG ATCAGAATA → AT TGCCATGACA → TGCA http://mevius.5ch.net/test/read.cgi/tech/1691038333/500
510: デフォルトの名無しさん [] 2025/01/30(木) 21:27:24.39 ID:te1+SH0T お題 ソース文字列と検索文字列が入力されます 検索文字列の文字をすべて含むソース文字列の部分文字列のうち 一番短い部分文字列を出力してください DHBICEJAFG EIC → ICE FDGJHCBIEA EIC → CBIE FBHDCIJGEA EIC → CIJGE JDIBGHCEAF EIC → IBGHCE JBCIAGDHEF EIC → CIAGDHE EJFBCAGIHD EIC → EJFBCAGI IADCGJFBEH EIC → IADCGJFBE IDFHBJGAEC EIC → IDFHBJGAEC http://mevius.5ch.net/test/read.cgi/tech/1691038333/510
537: 9 [sage] 2025/02/07(金) 21:20:22.98 ID:dMuAEB5V >510 Perl5 https://ideone.com/lceN9R http://mevius.5ch.net/test/read.cgi/tech/1691038333/537
561: デフォルトの名無しさん [] 2025/02/11(火) 10:54:21.93 ID:E5oVpL7o お題 数列が入力されます ニ番目に小さい数を出力してください 入力:4, 5, 1, 7, 1, 2, 8, 9, 2, 7 出力:2 http://mevius.5ch.net/test/read.cgi/tech/1691038333/561
594: デフォルトの名無しさん [sage] 2025/02/13(木) 12:04:43.08 ID:KGk2Z9bM お題:ランダムな数列から任意の並んでいる二つの数同士を足して、その二つの数の間に挿入せよ。 その新しい数が一桁ならそのまま挿入し二桁なら桁同士を足してその二桁の間に挿入せよ。 < 123456789 3 4 > 1237456789 (3+4=7) < 123456789 6 7 > 123456143789 (6+7=13 1+3=4) http://mevius.5ch.net/test/read.cgi/tech/1691038333/594
608: デフォルトの名無しさん [sage] 2025/02/14(金) 23:42:29.57 ID:PVqLPxMJ お題:ランダムな英文字列が与えられる。隣り合う英文字が同じ大文字だった場合、その間にその大文字の小文字を挿入せよ In < abcDDefGG Out > abcDdDefGgG http://mevius.5ch.net/test/read.cgi/tech/1691038333/608
621: デフォルトの名無しさん [] 2025/02/15(土) 21:06:37.89 ID:rssRTGdz >>561 C++ https://ideone.com/bQBKIM C#のヌル許容型と同じ挙動のnullable型を自作し、>>593のC#のmin2関数をジェネリック化、 ポインタ参照化して移植した。 https://ideone.com/p2LNC9 593のC++のmin2関数と実行速度を比較する¹と30%ほど遅い。文字列型や可変長数値型と 違って最大値が存在する固定長数値型では、それを利用するf593の方が良い。 ── ¹ Microsoft C++では100回繰り返しテストが最適化され1回しか実行されない http://mevius.5ch.net/test/read.cgi/tech/1691038333/621
640: デフォルトの名無しさん [sage] 2025/02/17(月) 13:08:08.60 ID:lz3iaMcC お題:ランダムな数列が与えられる。隣り合う数字が偶数同士の時、あいだに0を。奇数同士の時は1を挿入し、それ以外は何も挿入しない In < 123346 Out > 12313406 http://mevius.5ch.net/test/read.cgi/tech/1691038333/640
656: デフォルトの名無しさん [] 2025/02/26(水) 21:33:47.93 ID:rkiIsmEI お題: Python の int.bit_count() 65535 → 16 15 → 4 6 → 2 1 → 1 0 → 0 -1 → 1 -6 → 2 -15 → 4 -65535 → 16 http://mevius.5ch.net/test/read.cgi/tech/1691038333/656
670: デフォルトの名無しさん [] 2025/03/13(木) 20:35:03.45 ID:QP/8WHEA お題:数列が入力される。元の数列に逆順にした数列を減算したときの値を出力せよ In < 12345 OUt > -41976 (12345 - 54321) http://mevius.5ch.net/test/read.cgi/tech/1691038333/670
680: デフォルトの名無しさん [] 2025/03/16(日) 23:01:39.52 ID:6JX6mCC/ お題:36桁以下の負でない整数で16進表記が10進表記の部分文字列であるものをすべて求めて下さい。 (例) ・1の16進表記1は10進表記1の部分文字列です ・123の16進表記7Bは10進表記123の部分文字列ではありません ・357440の16進表記57440は10進表記357440の部分文字列です ※遅い言語では15桁以下で解いても構いません http://mevius.5ch.net/test/read.cgi/tech/1691038333/680
685: デフォルトの名無しさん [] 2025/03/18(火) 21:39:06.90 ID:9hwr8+MV >>683 14桁と15桁には該当値がないので、そこに列挙された数に0を追加した72個が15桁以下の答で 結果的には合っているよ。 出題時に作ったC++プログラムはideoneで36桁以下を0.43秒で完了した。これをPowerShellに 移植したプログラムは15桁以下を0.5秒未満、36桁以下を数分で完了した。 その後、改良したC++プログラムではideoneで36桁以下を0.23秒に短縮できた。 http://mevius.5ch.net/test/read.cgi/tech/1691038333/685
693: デフォルトの名無しさん [] 2025/03/19(水) 22:39:07.36 ID:P0JLFopv お題:単位分数のエジプト風分解(2進数風味) 1/aを、1/a=1/b+c/dを満たす1/bとc/dに分解する。 aは1以上の整数とする。 c, dは整数とし、bは2の整べき乗(1, 2, 4,...)とする。 c/dは絶対値が最小である事(負数であってもよい)。 例: 1/3→1/4+1/12 : b=4, c=1, d=12 1/7→1/8+1/56 : b=8, c=1, d=56 1/9→1/8-1/72 : b=8, c=-1, d=72(c=1, d=-72も可) 1/13→1/16+3/208 : b=16, c=3, d=288 1/60→1/64+1/960 : b=64, c=1, d=960 http://mevius.5ch.net/test/read.cgi/tech/1691038333/693
697: デフォルトの名無しさん [sage] 2025/03/21(金) 12:56:29.73 ID:CgJbZEAu >>680 Rust fn odai_680() -> Vec<i128> { let mut answer = vec![0]; let n_max = (0..).find(|&n| pow16(n + 1) > pow10(36)).unwrap(); for s in (0..).take_while(|&s| pow16(n_max) >= pow10(n_max + s + 1)) { let c = (0..=n_max).map(|i| pow16(i) - pow10(i + s)).collect::<Vec<_>>(); let rmax = c.iter().scan(0, |s, &c| { *s += if c > 0 { c * 9 } else { 0 }; Some(*s) }).collect::<Vec<_>>(); let rmin = c.iter().scan(0, |s, &c| { *s += if c < 0 { c * 9 } else { 0 }; Some(*s) }).collect::<Vec<_>>(); let (mut i, mut n, mut d, mut ct) = (0, 1, vec![0; c.len()], vec![0; c.len() + 1]); loop { d[i] += 1; if d[i] < 10 { let m = pow10(n as u32 + s); ct[i] = c[i] * d[i] + ct[i+1]; if i == 0 { if ct[0] >= 0 && ct[0] % m < pow10(s) { answer.push(d.iter().take(n).rev().fold(0, |sum, &d| sum * 16 + d)) } } else { let (max, min) = (ct[i] + rmax[i-1], ct[i] + rmin[i-1]); if max >= 0 && (max - min > m || pow10(s) > min % m || min % m > max % m) { i -= 1; } } } else { d[i] = -1; i += 1; if i == n { if n == d.len() { break; } n += 1; } } } } answer.sort(); answer } http://mevius.5ch.net/test/read.cgi/tech/1691038333/697
698: デフォルトの名無しさん [sage] 2025/03/21(金) 12:58:11.47 ID:CgJbZEAu >>697 // 略記 fn pow16(x: u32) -> i128 { 16_i128.pow(x) } fn pow10(x: u32) -> i128 { 10_i128.pow(x) } // 結果検証 fn main() { let answer = odai_680(); assert_eq!(167, answer.len()); for &a in &answer { assert!(a.to_string().contains(&format!("{a:x}"))); } assert_eq!(0, answer[0]); assert_eq!(1, answer[1]); assert_eq!(357440, answer[10]); assert_eq!(2182104649, answer[54]); assert_eq!(3927570397557, answer[71]); assert_eq!(38135630558262267902210, answer[99]); assert_eq!(331052794565713975838768757043267, answer[152]); assert_eq!(697786638998562641695629924526065234, answer[answer.len() - 1]); } http://mevius.5ch.net/test/read.cgi/tech/1691038333/698
700: デフォルトの名無しさん [] 2025/03/23(日) 23:00:51.13 ID:pi1bImlR >>680から1週間経ったので解答例を掲載 >>685を書いたときに作ってあった2つのC++プログラム https://ideone.com/KID2jR https://ideone.com/ysdd6b 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への移植版 https://ideone.com/vEGZ3D https://ideone.com/azzMa4 完全な逐語訳ではなく、PowerShellで書くと遅くなったり煩雑になったりする箇所は適宜改変した。 15桁以下の場合は64ビット整数でも桁溢れしないので、BigIntの代わりにInt64を使えば少し速くなる。 http://mevius.5ch.net/test/read.cgi/tech/1691038333/700
712: デフォルトの名無しさん [] 2025/03/28(金) 21:33:35.13 ID:VDfNaTNz お題:素因数の総和が2025である2000万以下の自然数をすべて求めて下さい。 例) 32272 素因数分解すると32272 = 2 × 2 × 2 × 2 × 2017で、 素因数の総和は2 + 2 + 2 + 2 + 2017 = 2025となります。 ※20億以下でもC++で5秒以内に余裕で完了できますが、出力が長すぎるため2000万以下としました。 その結果、Rでも5秒以内に余裕で完了できる問題になりました。 http://mevius.5ch.net/test/read.cgi/tech/1691038333/712
714: デフォルトの名無しさん [] 2025/03/28(金) 22:12:15.09 ID:g08AymBh お題 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 http://mevius.5ch.net/test/read.cgi/tech/1691038333/714
718: デフォルトの名無しさん [sage] 2025/03/30(日) 01:28:45.68 ID:KrBJAiIU お題:1〜10までの範囲の乱数生成をn回行ったとき出た値の積が20の倍数になる確率Pnを出力せよ n=2 2, 10 ... 20 4, 5 ... 20 Pn=??? n=3 2, 5, 2 ... 20 4, 5, 2 ... 40 Pn=??? http://mevius.5ch.net/test/read.cgi/tech/1691038333/718
738: デフォルトの名無しさん [sage] 2025/04/08(火) 23:28:40.30 ID:OzdBhfzQ >>712 Rust fn solve(n: usize, limit: usize) -> Vec<usize> { let mut answer = Vec::new(); let mut pnt = generate_primes(n).iter().skip(1).rev().map(|&p| (p, 0, 0)).collect::<Vec<_>>(); let (mut ci, mut cn, mut ct) = (0, n, 1_usize); 'advance: loop { pnt[ci..].iter_mut().for_each(|(_p, n, t)| (*n, *t) = (cn, ct)); if cn & 1 == 0 && ct.leading_zeros() >= (cn >> 1) as u32 { ct <<= cn >> 1; if ct <= limit { answer.push(ct as usize); } } for (i, (p, n, t)) in pnt.iter_mut().enumerate().rev() { if *n < *p { continue; } *n -= *p; *t *= *p; if *t > limit { continue; } if *n == 1 { continue; } if *n == 0 { answer.push(*t as usize); continue; } (ci, cn, ct) = (i, *n, *t); continue 'advance; }; break; } answer.sort(); answer } http://mevius.5ch.net/test/read.cgi/tech/1691038333/738
739: デフォルトの名無しさん [sage] 2025/04/08(火) 23:30:40.48 ID:OzdBhfzQ >>738 素因数の総和が2025になる問題を可能な素数の組合せ総当りで挑戦してみました 20億以下で約0.4秒と規定時間以内に実行できました 実行時間 solve(2025, 20000000): 22.638309ms 実行時間 solve(2025, 2000000000): 418.607978ms fn main() { for (n, limit) in [(2025, 2000_0000), (2025, 20_0000_0000)] { let start_time = std::time::Instant::now(); let answer = solve(n, limit); let end_time = std::time::Instant::now(); println!("実行時間 solve({n}, {limit}): {:?}", end_time - start_time); // 個数と最初と最後の検証 let (valid_len, valid_first, valid_last) = match (n, limit) { (2025, 2000_0000) => (1265, 30255, 19970000), (2025, 20_0000_0000) => (49942, 30255, 1999986740), _ => (0, 0, 0), }; assert_eq!(answer.len(), valid_len); assert_eq!(*answer.first().unwrap(), valid_first); assert_eq!(*answer.last().unwrap(), valid_last); } } http://mevius.5ch.net/test/read.cgi/tech/1691038333/739
741: デフォルトの名無しさん [] 2025/04/09(水) 22:22:33.83 ID:Ip5PiQSs >>738-739 出題時に作成した解答例 C++ https://ideone.com/y1YZlj R https://ideone.com/zvqAsg と解の個数と最小値・最大値が一致するので正解だろう。 ローカルでコンパイルしようとしたら、 error[E0425]: cannot find function `generate_primes` in this scope と表示されコンパイルできなかったので、実行時間の比較はできなかった。 http://mevius.5ch.net/test/read.cgi/tech/1691038333/741
750: デフォルトの名無しさん [sage] 2025/04/11(金) 07:38:20.09 ID:oaeJuxMT >>738 に手を加えて10倍速くしてみた fn solve(n: usize, limit: usize) -> Vec<usize> { let mut answer = Vec::new(); let mut pnt = generate_primes(n).windows(2).rev().map(|s| (s[1], s[0], 0, 0)).collect::<Vec<_>>(); let (mut ci, mut cn, mut ct) = (0, n, 1_usize); 'advance: loop { pnt[ci..].iter_mut().for_each(|(_p, _q, n, t)| (*n, *t) = (cn, ct)); if cn & 1 == 0 && ct.leading_zeros() >= (cn >> 1) as u32 { ct <<= cn >> 1; if ct <= limit { answer.push(ct); } } 'back: for (i, (p, q, n, t)) in pnt.iter_mut().enumerate().rev() { 'again: loop { if *n < *p { continue 'back; } *n -= *p; *t *= *p; if *n ==1 || *t > limit { continue 'back; } if *n == 0 { answer.push(*t); continue 'back; } if *q > 3 { let mut tt = *t * (*n % *q); for _ in 0..(*n / *q) { tt *= *q; if tt > limit { continue 'again; } } }; break 'again; }; (ci, cn, ct) = (i, *n, *t); continue 'advance; }; break 'advance; }; answer.sort(); answer } http://mevius.5ch.net/test/read.cgi/tech/1691038333/750
771: デフォルトの名無しさん [sage] 2025/07/25(金) 12:30:11.02 ID:CjDQVF2B 【問題】 整数のリストが与えられたとき、そのリストを昇順に安定ソートした時の各要素のインデクス(0開始)を対応させたリストを作成せよ 【例】 入力: 1 100 10 10000 1000 出力: 0 2 1 4 3 入力: 3 1 4 1 5 9 2 出力: 3 0 4 1 5 6 2 入力: 0 1 0 1 0 1 0 1 出力: 0 4 1 5 2 6 3 7 実際に必要になって実装したけどスマートな方法があったら知りたい http://mevius.5ch.net/test/read.cgi/tech/1691038333/771
799: デフォルトの名無しさん [sage] 2025/08/16(土) 01:44:59.97 ID:VU+jlz0U 【問題A】 1~9を1つずつ使用して表される9桁の数Anは全部で9!(=362880)個存在する。 整数n(1≦n≦362880)が与えられたとき、n番目に小さいAnを求めよ。 (例) 1 → 123456789 2 → 123456798 3 → 123456879 123456 → 416589732 234567 → 684753219 362880 → 987654321 【問題B】 1~4を3つずつ使用して表される12桁の数Bnは全部で12!/(3!)^4(=369600)個存在する。 整数n(1≦n≦369600)が与えられたとき、n番目に小さいBnを求めよ。 (例) 1 → 111222333444 2 → 111222334344 3 → 111222334434 123456 → 222331434114 234567 → 324424331112 369600 → 444333222111 ※求める数値は文字列または各桁の数の配列による表現も可能とする(123⇔"123"⇔[1,2,3]) http://mevius.5ch.net/test/read.cgi/tech/1691038333/799
802: デフォルトの名無しさん [] 2025/08/16(土) 20:29:06.33 ID:kN4EEg8M >>799 の問題B R https://ideone.com/SdWBKf C++ https://ideone.com/90BpGt http://mevius.5ch.net/test/read.cgi/tech/1691038333/802
812: デフォルトの名無しさん [] 2025/08/21(木) 23:15:48.39 ID:0KQ1xtxb >>799 の逆変換プログラム R https://ideone.com/TU73Yu C++ https://ideone.com/dmETd5 問題A, 問題Bとは違って、順列に出現するユニークな整数は1〜nの連番でなくても良いし、 出現回数はすべて同じでなくても良い。例えば、入力は [3, 1, 4, 1, 5, 9] でも良い (ユニークな整数は1, 3, 4, 5, 9で、出現回数は1が2回、その他が1回)。 http://mevius.5ch.net/test/read.cgi/tech/1691038333/812
845: デフォルトの名無しさん [sage] 2025/09/13(土) 12:21:51.23 ID:nVmVuqdT 退屈そうだからちょっと難易度高め 【問題】 各桁の数が1~5のいずれかで全ての桁の合計がMとなる正整数の集合をG[M]で表す。 例えば123、111111はG[6]の要素、255、222222はG[12]の要素となる。 整数M(1≦M≦32)、N(1≦N)が与えられたとき、N番目に小さいG[M]の要素を求めよ。 ただしNがG[M]の要素数より大きい場合の出力は0とする。 求める数値は文字列または各桁の数の配列による表現も可能とする(123⇔"123"⇔[1,2,3])。 【例】 #入力は(M,N) (2,1) → 2 (2,2) → 11 (2,3) → 0 (20,1) → 5555 (20,2) → 14555 (20,3) → 15455 (20,400096) → 11111111111111111111 (20,400097) → 0 (32,1) → 2555555 (32,2) → 3455555 (32,3) → 3545555 (32,1000) → 34355354 (32,1000000) → 11532334334 (32,1000000000) → 2141111311212411131 (32,1333610936) → 11111111111111111111111111111111 (32,1333610937) → 0 【ヒント(?)】 G[M]の要素数の数列は下記pentanacci数列a[n]から先頭の[0,0,0,0,1]を除いたものとなる(|G[M]| = a[M + 4])。 ・a[0,1,2,3,4] = [0,0,0,0,1] ・a[k] = a[k-1] + a[k-2] + a[k-3] + a[k-4] + a[k-5] (k≧5) ※a[37]までのリスト: https://oeis.org/A001591/list http://mevius.5ch.net/test/read.cgi/tech/1691038333/845
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.062s