プログラミングのお題スレ Part22 (842レス)
上下前次1-新
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
1(4): デフォルトの名無しさん [] 2023/08/03(木) 13:52:13.20 ID:/xW45k0z(1) AAS
プログラミングのお題スレです。
【出題と回答例】
1 名前:デフォルトの名無しさん
お題:お題本文
2 名前:デフォルトの名無しさん
>>1 使用言語
回答本文
結果がある場合はそれも
【ソースコードが長くなったら】 (オンラインでコードを実行できる)
外部リンク:ideone.com
外部リンク:codepad.org
外部リンク:compileonline.com
外部リンク:rextester.com
外部リンク:runnable.com
外部リンク:code.hackerearth.com
外部リンク:melpon.org
外部リンク:paiza.io
宿題は宿題スレがあるのでそちらへ。
※前スレ
プログラミングのお題スレ Part21
2chスレ:tech
818: デフォルトの名無しさん [sage] 2025/08/23(土) 21:01:55.02 ID:gxRFdG35(1) AAS
>>799799(20): デフォルトの名無しさん [sage] 2025/08/16(土) 01:44:59.97 ID:VU+jlz0U(1/2) AAS
【問題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])
java
外部リンク:ideone.com
819(1): 817 [sage] 2025/08/23(土) 23:26:24.12 ID:uyhDG+iz(2/2) AAS
>>799 java
外部リンク:ideone.com
820(1): デフォルトの名無しさん [] 2025/08/24(日) 21:13:57.80 ID:ubCw2JoQ(1) AAS
>>812812(5): デフォルトの名無しさん [] 2025/08/21(木) 23:15:48.39 ID:0KQ1xtxb(1) AAS
>>799 の逆変換プログラム
R
外部リンク:ideone.com
C++
外部リンク:ideone.com
問題A, 問題Bとは違って、順列に出現するユニークな整数は1〜nの連番でなくても良いし、
出現回数はすべて同じでなくても良い。例えば、入力は [3, 1, 4, 1, 5, 9] でも良い
(ユニークな整数は1, 3, 4, 5, 9で、出現回数は1が2回、その他が1回)。
の逆変換プログラムは>>808の順変換プログラムを流用したから処理に無駄があった。
逆変換用に一から書き直したらすっきりした。
R
外部リンク:ideone.com
C++
外部リンク:ideone.com
821(1): 819 [sage] 2025/08/25(月) 00:28:39.45 ID:IbSJkZLt(1) AAS
>>799 java Iterable<int[]>
外部リンク:ideone.com
822: デフォルトの名無しさん [sage] 2025/08/27(水) 00:40:48.46 ID:AbNZa8yo(1/2) AAS
>>799 ocaml
外部リンク:ideone.com
>>799 scheme (chicken 4.13)
外部リンク:ideone.com
823: デフォルトの名無しさん [sage] 2025/08/27(水) 21:02:12.94 ID:AbNZa8yo(2/2) AAS
>>799 octave
外部リンク:ideone.com
824: デフォルトの名無しさん [] 2025/08/27(水) 21:46:51.59 ID:B7vE54ji(1) AAS
>>820の逆変換プログラムのC#版
外部リンク:ideone.com
LINQのTakeWhileメソッドとSumメソッドを組み合わせたらすっきり書けた。
825: 821 [sage] 2025/08/28(木) 21:01:46.43 ID:mnaa+hsk(1) AAS
>>799 java
外部リンク:ideone.com
・next()ごとに複製しない版。する版は >>821
・hasNext()側で次を準備。next()側なのは >>821
826: デフォルトの名無しさん [] 2025/08/29(金) 13:52:26.21 ID:xrZF+zBK(1) AAS
>>799
外部リンク:ideone.com
C++
827: デフォルトの名無しさん [sage] 2025/08/29(金) 20:09:32.40 ID:VEuLqGzD(1) AAS
>>812 ruby 2.5.5
外部リンク:ideone.com
・tallyあるのは2.7以降
>>812 octave
外部リンク:ideone.com
828: デフォルトの名無しさん [] 2025/08/29(金) 22:34:59.67 ID:uVFRnDIW(1/2) AAS
>>802をCMD (Windowsバッチファイル) に移植
@echo off & setlocal EnableDelayedExpansion
echo 【問題A】
for %%i in (1, 2, 3, 123456, 234567, 362880) do call :ithDuplicatedPermutation 9 1 %%i
echo.
echo 【問題B】
for %%i in (1, 2, 3, 123456, 234567, 369600) do call :ithDuplicatedPermutation 4 3 %%i
exit /b
:ithDuplicatedPermutation
set /a n = %1, m = %2, i = %3, L = 0, P = 1
for /l %%j in (1, 1, %n%) do (
set /a c%%j = %m%
for /l %%k in (1, 1, %m%) do set /a L += 1, P = P * L / %%k
)
set a=%i% →
for /l %%j in (1, 1, %L%) do (
set /a done = 0
for /l %%k in (1, 1, %n%) do (
if !done! equ 0 (
set /a "q = P * c%%k / (L - %%j + 1)"
if !i! leq !q! (
set a=!a!%%k
set /a c%%k -= 1, P = q, done = 1
) else (
set /a i -= q
)
)
)
)
echo %a%
829: デフォルトの名無しさん [] 2025/08/29(金) 22:35:22.12 ID:uVFRnDIW(2/2) AAS
-- 実行結果 --
【問題A】
1 → 123456789
2 → 123456798
3 → 123456879
123456 → 416589732
234567 → 684753219
362880 → 987654321
【問題B】
1 → 111222333444
2 → 111222334344
3 → 111222334434
123456 → 222331434114
234567 → 324424331112
369600 → 444333222111
830(1): デフォルトの名無しさん [sage] 2025/08/30(土) 17:37:04.21 ID:zI+bKiSo(1) AAS
>>812 ocaml
外部リンク:ideone.com
>>812 scheme (chicken 4.13)
外部リンク:ideone.com
831: 830 [sage] 2025/09/02(火) 21:36:10.92 ID:MM5Gazf9(1) AAS
>>812 scheme (chicken 4.13)
外部リンク:ideone.com
・集計部分をalistに変えてみただけ
832(1): デフォルトの名無しさん [sage] 2025/09/06(土) 23:05:19.87 ID:Z/aFZPi6(1) AAS
>>561561(15): デフォルトの名無しさん [] 2025/02/11(火) 10:54:21.93 ID:E5oVpL7o(1/5) AAS
お題
数列が入力されます
ニ番目に小さい数を出力してください
入力:4, 5, 1, 7, 1, 2, 8, 9, 2, 7
出力:2
scheme (chicken 4.13)
外部リンク:ideone.com
833(1): 832 [sage] 2025/09/07(日) 12:29:41.48 ID:O1zDlKW9(1/2) AAS
>>561 scheme (chicken 4.13)
外部リンク:ideone.com
・m1m2を不必要にリストにしてたのを廃止
834: 833 [sage] 2025/09/07(日) 14:22:59.56 ID:O1zDlKW9(2/2) AAS
>>561 scheme (chicken 4.13)
外部リンク:ideone.com
・letを自然な位置に移動
835(1): デフォルトの名無しさん [sage] 2025/09/08(月) 23:02:49.14 ID:4SI/cFAg(1/2) AAS
>>485485(20): デフォルトの名無しさん [] 2025/01/22(水) 21:35:12.82 ID:JtEnwxKE(1) AAS
お題
文字列と長さを入力として受け取り
デカルト積のリストを出力してください
入力: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]
scheme (chicken 4.13)
外部リンク:ideone.com
>>500500(11): デフォルトの名無しさん [] 2025/01/27(月) 09:16:22.69 ID:rqFJtGlJ(1) AAS
お題
入力された文字列から重複する文字を抽出してください
T →
CG →
ATA → A
CGGA → G
ATGAT → AT
GTTGCA → GT
CCCCGGG → CG
ACTGCGAG → ACG
ATCAGAATA → AT
TGCCATGACA → TGCA
scheme (chicken 4.13)
外部リンク:ideone.com
836(1): 835 [sage] 2025/09/08(月) 23:33:25.73 ID:4SI/cFAg(2/2) AAS
>>485 scheme (chicken 4.13)
外部リンク:ideone.com
・(product . lists)
・(product xs . rest) が >>835
837: デフォルトの名無しさん [sage] 2025/09/09(火) 21:56:29.91 ID:PCxKX9bv(1) AAS
>>438438(9): デフォルトの名無しさん [sage] 2024/10/11(金) 05:53:27.29 ID:EzY86rdr(1/2) AAS
お題:文字列の中で1つ以上連続している空白をすべて空白4つに置換せよ。ただし正規表現は使ってはならない。
例:
"abc def ghi" -> "abc def ghi"
scheme (chicken 4.13)
外部リンク:ideone.com
・まずまとまりに分割して処理
>>438 scheme (chicken 4.13)
外部リンク:ideone.com
・最初のを四つにして、残りはスキップ
838: デフォルトの名無しさん [] 2025/09/10(水) 21:21:57.38 ID:rb/tQvOM(1) AAS
>>438
C#で短く書けた
外部リンク:ideone.com
x.EndsWith(" ") でなく x.LastOrDefault() == ' ' の方が長くはなるが効率的かも知れない。
839(1): 836 [sage] 2025/09/10(水) 22:49:33.81 ID:NV1RL9MH(1) AAS
>>485 scheme (chicken 4.13)
外部リンク:ideone.com
・デカルト積の解釈を(勝手に)変更
840(1): 839 [sage] 2025/09/10(水) 23:35:38.95 ID:6JfM8ZLf(1) AAS
>>485 scheme (chicken 4.13)
外部リンク:ideone.com
・(cons y x)して最後にreverseする
・(list x y)して最後にflattenするのが >>839
841: 840 [sage] 2025/09/11(木) 23:05:23.09 ID:WPUXbxYH(1) AAS
>>485 scheme (chicken 4.13)
外部リンク:ideone.com
・reverse回数減らした版
842: デフォルトの名無しさん [sage] 2025/09/12(金) 15:41:31.15 ID:IRXhEt4s(1) AAS
お題
1行1単語のリストが、しりとりとして成立しているか判定するコードを書きなさい
成立していたら◯、不成立なら☓をしゅつりょくすること
【入力】
りんご
ごりら
らっぱ
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.028s