[過去ログ] プログラミングのお題スレ Part9 [無断転載禁止]©2ch.net (1002レス)
前次1-
抽出解除 レス栞

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
1
(3): デフォルトの名無しさん [sage] 2016/12/01(木)16:58 ID:gTkHDluD(1)
プログラミングのお題スレです。

前スレ
プログラミングのお題スレ Part8©2ch.net
2chスレ:tech

【出題と回答例】
1 名前:デフォルトの名無しさん
  お題:お題本文

2 名前:デフォルトの名無しさん
  >>1 使用言語
  回答本文

【ソースコードが長くなったら】 (オンラインでコードを実行できる)
http://ideone.com/
http://codepad.org/
http://compileonline.com/
http://rextester.com/runcode
http://runnable.com/
http://code.hackerearth.com/
http://melpon.org/wandbox
https://paiza.io/

宿題は宿題スレがあるのでそちらへ。
9
(7): デフォルトの名無しさん [] 2016/12/07(水)14:23 ID:ltGABuaa(1)
景気付けにどうぞ

お題:以下の数列を出力するプログラム
[0, 10, 1110, 110, 2110, 122110, 11222110, 2122110, 1211222110, 11122122110,...]
31
(6): ◆QZschizo.iSO [sage] 2016/12/31(土)18:31 ID:nvhfPpJn(1)
瞬速年忘れ問題
2017は素数か?素数なら何番目か?
57
(11): 52 [sage] 2017/01/04(水)19:17 ID:y99Ue0/2(2/2)
では□に入れるのを2以上の自然数に変更させてください
123
(4): デフォルトの名無しさん [さげ] 2017/01/13(金)21:36 ID:A97spPPP(1)
お題:平面上に四つの点を二点間の距離が二種類になるように配置する
134
(6): デフォルトの名無しさん [sage] 2017/03/03(金)09:55 ID:SUJ1/PZz(1) AAS
AA省
167
(3): デフォルトの名無しさん [sage] 2017/03/28(火)09:57 ID:084k/T9f(1)
お題:格子点を1個だけ含む面積4の凸多角形を求める
180
(7): デフォルトの名無しさん [sage] 2017/04/11(火)22:35 ID:gMY8o6LW(1)
お題:
トランプの札のリストが文字列で与えられるので
同じマークor同じ数字のペアが最大何組できるか求めよ

D:ダイヤ、H:ハート、S:スペード、C:クラブ、
A:エース、2〜9:数字の2〜9、T:10、J:ジャック、Q:クイーン、K:キング

例:
"DAD2HAH3" -> 2
"DAD3D8D9DJH5H8HKSASKCAC5C8CK" -> 7
"SAS2S3S4S5S6S7S8S9C2C3C4C5C6C7C8C9CT" -> 9
218
(6): デフォルトの名無しさん [sage] 2017/04/25(火)23:23 ID:bgy6YsrD(1)
お題:自然数nのヤング図形をもとめる
227
(13): デフォルトの名無しさん [] 2017/05/24(水)21:48 ID:7oyfe1wq(1)
お題:以下を出力
857142
714285
571428
428571
285714
142857
247
(4): デフォルトの名無しさん [] 2017/06/01(木)13:12 ID:/fo1vNun(1)

c,o,v,f,e,f,eの7文字をランダムに出力し続け、covfefeが完成するまでの文字数をカウント
296
(13): デフォルトの名無しさん [] 2017/06/26(月)21:09 ID:92/cX5j1(1/2)
前にあったやつ。

回転寿司にやってきた私は、コンベア上の寿司をすべて食べて帰ることにしている。
コンベアは毎秒1皿分の速度で流れ、目の前の皿を取るか取らないかを選ぶことができる。
皿取ると同時に食べ始め、食べている間は次の皿を取ることができない。
私が取る以外、皿は追加されたり無くなったりしない。
コンベアの状態が次のような文字列で与えられる。 
"31_2"
数字はその皿を食べ終えるのにかかる秒数を表し、_は皿がないことを表す。1文字目が目の前にあり毎秒、左へ回転する。
例えば、"31_2"で最初の皿を食べたとき食べ終わった時の状態は、"2_1_"となる。

すべての寿司を食べ終えるまで最短何秒かかるか求めよ。
"12_3" > 6秒
"313__" > 8秒
"4_35_1264_23_434" > 60秒
"123456789123456789" > 98秒
"88967472612377988186" > 149秒
"19898693316679441672" > 170秒
"93769682716711132249893" > ?
299
(3): デフォルトの名無しさん [sage] 2017/06/26(月)23:40 ID:JhsaOf6q(1/3)
>>296 Perl
http://ideone.com/iUAYUy

実行結果は

$ perl 9_296.pl
12_3: 6
313__: 10 (合わない…orz)
4_35_1264_23_434: 62 (合わない…orz)
123456789123456789: 98
88967472612377988186: 151 (合わない…orz)
19898693316679441672: 170
93769682716711132249893: 176

となり、半分が合わない。
そのうち 313__ を手で研鑽すると 10 になるのだが、
313__ は本当に8になるの?
318
(12): デフォルトの名無しさん [sage] 2017/07/04(火)21:28 ID:QK6Kginy(1/2)
>>296 >>299 Perl5
http://ideone.com/0yJ5U9

リスト処理ではなく、先ずは正規表現と文字列処理を使って書いてみた。

31…の3のように、食べているうちに後続の数値皿が通り過ぎてしまうような、
取りこぼしを起こし得る皿では、その数値を食べるか、あるいはスルーするか、
再帰的に両方に分岐し、木構造で計算しているが、
逆に食べている間に飛び越しを起こさないところでは、分岐が不要なので
来た順に直ちに食べることによって、枝分かれの過剰な細分化を抑制した。

それでも全探査すると、サンプルデータの三つ目まではすぐ解けるが、
四つめ以降は時間がかかりいつ終わるか分からない。

そこで、検索された食事秒数の最小値の更新状況を記録し、
同じ最小値が一定回数以上連続して繰り返し検出されるようになったら
最短値に収束したと見なし、探索を打ち切ることによって短時間で
解を出力できるようにした。打ち切り上限は10をハードコードしてあるが
今回のサンプルデータについては4か5で十分そうだ。

なお、23_ のような、2を食べることによって飛び越しを起こすポイントの
一番最後のものは,食べずにスルーして先に2を食べた方が、
次の周で早く食べ終わることは明らかだ。
これを演繹的に繰り返して、遡ってゆけば、上記のように木構造に
わたって動的に計算して探索しなくても、静的に求解できそうな気がしたが
難しそうなので、見送った。
321
(5): 318 [sage] 2017/07/06(木)00:31 ID:iCfNzc8Y(1/4)
>>320
誤解です。
枝刈りは、ある探索中の枝において始点から既に経過した秒数が
それまでの別の枝における探索で最後まで食べた最小秒数を超過したら、
現在の枝の探索はもうこれ以上進んでも秒数が増える一方なので打ち切って
別の枝の探索に移るというものなので大丈夫です。
"3324" の最短秒数を探索すると 15秒になります。
334
(8): デフォルトの名無しさん [sage] 2017/07/08(土)03:20 ID:hDxZO8qP(1/3)
お題: 自然数Nの平方根を整数部含めて(1000*N)桁求めたとき、出現する0の個数を数える
たとえば、N = 4の時ルート4を4000桁(整数部1桁+小数部3999桁)求めたとき、出現する0の個数は3999個

N = 3 => ?
N = 5 => ?
N = 7 => ?
375
(7): デフォルトの名無しさん [] 2017/07/16(日)16:33 ID:8ZBD9z9c(1/2)
お題:
自分用多倍長整数演算関数

…って思ったけど、処理系の標準ではないとか、仕事でGNU MP使っては駄目とかの
制約で、簡易的なもの(乗算くらいまでとか)を書いた事ある人は少なくないと見た。
394
(3): デフォルトの名無しさん [sage] 2017/07/23(日)11:26 ID:ipiEUPYV(1/6)
>>375
のほかの実装はでてこないねぇ‥
411
(5): デフォルトの名無しさん [] 2017/07/24(月)18:58 ID:5ve8i6tz(1)
お題:お題スレ3の>>170をファレイ数列を使って解く。
2chスレ:tech
422
(3): デフォルトの名無しさん [sage] 2017/07/26(水)23:26 ID:lPM9zwS7(1/3)
#include <list>
#include <iostream>
const int N_MAX = 10;
struct RATIONAL {
int num;
int den;
};
int main() {
std::list < RATIONAL > farey;
RATIONAL zero = {0, 1};
RATIONAL one = {1, 1};
farey.push_back(zero);
farey.push_back(one);
for (int n = 1; n <= N_MAX; n++){
for (std::list < RATIONAL > ::iterator i1 = farey.begin(), i0 = i1++; i1 != farey.end(); i0 = i1, i1++) {
if (i0->den + i1->den <= n) {
RATIONAL m = {i0->num + i1->num, i0->den + i1->den};
farey.insert(i1, m);
}
}
std::cout << n << " : ";
for (std::list < RATIONAL > ::iterator i = farey.begin(); i != farey.end(); i++) {
std::cout << i->num << "/" << i->den << " ";
}
std::cout << "\n";
}
return 0;
}
431
(3): デフォルトの名無しさん [] 2017/07/30(日)10:59 ID:A7gIx2b1(1)
お題:MathematicaのFareySequence[n,k](引数2つ)に相当するものの実装
http://reference.wolfram.com/language/ref/FareySequence.html
493
(4): デフォルトの名無しさん [] 2017/09/19(火)14:38 ID:LvSRuVZD(1)
tan()の加法定理
 tan(α+β)=(tanα+tanβ)/(1-tanαtanβ)
により

もしtan(α)が有理数なら
tan(nα) (n = 1,2,3,4・・・)
も全て有理数

このため
整数nにより
tan(n)が無理数なら
nの約数全てによるtan()が無理数

ここで
tan(60)=√3
が無理数なのは簡単に証明されるため、
tan(1)
も無理数

証明終わり
509
(15): デフォルトの名無しさん [sage] 2017/09/21(木)16:21 ID:na02B6ss(1)
[1] 授業単元名:FizzBuzzクイズ
[2] 問題文(含コード&リンク):
[3] 環境
 [3.1] OS: (Windows/Linux/等々)特に問わない
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)特に問わない
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)特に問わない

2chスレ:prog
FizzBuzzクイズ

1.fizz.buzz #=> 1
3.fizz.buzz #=> "Fizz"
5.fizz.buzz #=> "Buzz"
15.fizz.buzz #=> "FizzBuzz"
999.fizz.buzz #=> 999

となるようなメソッドfizz、buzzは定義可能か?
可能である場合、同様にgizzを追加定義し、
7.fizz.buzz.gizz #=> "Gizz"
21.fizz.buzz.gizz #=> "FizzGizz"
35.fizz.buzz.gizz #=> "BuzzGizz"
105.fizz.buzz.gizz #=> "FizzBuzzGizz"
105.fizz.gizz.buzz #=> "FizzGizzBuzz" と拡張・応用ができるか?

メソッドのコールに()が必須の言語では 3.fizz().buzz() 形式でも構わない。
オープンクラス機構やメソッドのない言語では関数(buzz(fizz(3)) #=> "Fizz" など)で。
516
(3): デフォルトの名無しさん [sage] 2017/09/22(金)09:43 ID:eeRMTLx0(1/2)
外部出力を伴う関数(あるいはメソッド)なら簡単
たぶん関数(あるいはメソッド)の返値がそうなるようにって意味かと
(じゃないと普通に書けてクイズにならない)
たしか数理学的にはこういう関数は書けないことになっていたはず
542
(3): デフォルトの名無しさん [sage] 2017/09/23(土)03:26 ID:nBwtcNcI(1)
>>509 Ruby >>525の方針で
https://ideone.com/B6E8ig
547
(5): デフォルトの名無しさん [sage] 2017/09/23(土)11:29 ID:w6RxEhSu(1)
>>509
https://ideone.com/4p67HE
C++。題意は満たしてないけど、自分が書くとこんな感じだな。
末尾判定難しい。
564
(3): デフォルトの名無しさん [sage] 2017/10/18(水)15:51 ID:+Osy4cjh(1)
お題:顔文字(^o^)があります。この(^o^)を左右に動かしながら出力します。(^o^)は左から右へ一文字ずつ動き、端に到達した瞬間だけ(^o^)から(>_<)に変化し、また(^o^)に戻って左端へ行き、同じように繰り返します。
端から端までは最初80文字分の幅がありますが、(^o^)が端に達した回数だけ1文字ずつ狭くなっていき、最終的に(^o^)の端まで狭くなり、(^o^)が動けなくなります。(^o^)が動けなくなったらプログラムを終了してください。
583
(6): デフォルトの名無しさん [] 2017/10/25(水)20:13 ID:gieh1Z5o(1)
お題
())())のように括弧のみからなる文字列が与えられるので
すべての括弧が正しく対応付けされるためには
最低で何箇所の括弧を逆向きに変更すればよいか求めよ
例えば上の例では2文字目か3文字目を変更すればよいので1を出力せよ
何文字変更しても正しく対応付けできない場合は-1を出力せよ

) -> -1
())()) -> 1
)()()( -> 2
)))((( -> 4
(())())((())(()( -> 3
())((())()))()(((()))()((((((((()()(())) -> ?
591
(3): デフォルトの名無しさん [sage] 2017/11/04(土)00:05 ID:4+O3ouw4(1)
Quineの派生ということで、コードそれ自身を反転させたものを出力せよ
反転とは文字列"abc\ndef"を"fed\ncba"にすること
606
(6): デフォルトの名無しさん [sage] 2017/11/14(火)21:49 ID:yEmE0LhS(1)
コード中でa-zA-Z0-9の文字を一切使わずに
Hello World!!
と出力せよ。
"!"の後ろの改行の有無は問わない。
614
(3): デフォルトの名無しさん [] 2017/11/15(水)01:23 ID:0AqsUHvD(1)
今日は七五三ということで
7,5,3,+,-,×,÷,(),^2を使った式(ただし7,5,3は一個しか使えない)で1から連続でいくつまで数を作れるか

1=3+5-7
2=5-3
3=3
4=(5-3)^2
5=5
6=(7-5)×3

645
(3): デフォルトの名無しさん [] 2017/11/18(土)17:51 ID:6foiYhRZ(1/2)
ABC4D
-E3FG
-----
77777

A〜G は、1〜9 の異なる数字。
ただし、3, 4 ではない
658
(13): デフォルトの名無しさん [] 2017/11/23(木)10:05 ID:zWeuVerg(1)
お題
1から99を表示する
お題:1から999を出力する

ただし0を含む数は除く
680
(7): デフォルトの名無しさん [sage] 2017/11/24(金)20:42 ID:G34PGfZh(1)
log 2 を2進数表記した時の小数点第 n 位から n + 9 位までを求めよ. (1 ≦ n ≦ 10^10)
cf. log 2 = 0.10110001...

*Sample input*
1
11
10000
31415926
314159265

*Sample output*
1011000101
1100100001
0010110110
1001010110
0111101001
696
(3): デフォルトの名無しさん [sage] 2017/11/25(土)23:38 ID:yyAYDlfh(2/2)
>>680
log 2 = Σ_[i=1, 2, ...] { 1 / (2^i × i) }
冪剰余

でいける気がしてきた

しばらく暇がない
時間が空いたら
アセンブラ & C++ & OpenMP
でやってみる
728
(3): デフォルトの名無しさん [] 2017/11/28(火)19:45 ID:jzUFRHpN(2/2)
これが収束速いようだ。

log(2) = 3log(81/80) + 5log(25/24) + 7log(16/15)

log((x+1)/(x-1))
= log((1+1/x)/(1-1/x))
= 2 Σ 1/((2n+1)*x^(2n+1))
768
(10): デフォルトの名無しさん [sage] 2017/12/03(日)02:47 ID:QazTjKaA(1/7)
お題ってこういうのでもいいのかな
a[10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }
このように10個の整数を要素に持つ配列がある(整数の値は不定)
b = エントリーポイント
c = 移動する数量
d = 移動する距離
を与えることにより、配列の要素を移動させるプログラムを作りなさい
ただし配列の右端の要素を一つ移動させると、配列の左端に移動するものとする


a = 3, b = 1, c = 5, a = 0124567839
b = 1, c = 3, d = 1, a = 0412356789
b = 7, c = 1, d = 5, a = 1273456890
b = 0, c = 8, d = 1, a = 8012345679
b = 4, c = 5, d = 4, a = 6783901245
b = 9, c = 5, d = 4, a = 5679012384
b = 7, c = 3, d = 1, a = 9123456078
770
(3): デフォルトの名無しさん [sage] 2017/12/03(日)09:00 ID:ucQfMVKf(1/3)
>>768
https://ideone.com/zZdIlU
C++。なかなか素直な問題なのに邪悪な思念で見ていたため手間取った。
マニュアルを熟知していると簡単かもしれない。
789
(3): デフォルトの名無しさん [sage] 2017/12/05(火)21:48 ID:32LsMTj+(1)
>>768
僕の頭だとどうしても右端から左端に行くときの動きがイメージできないので、解答締め切ったあとでもいいのでちょろっと教えてもらえると嬉しいです
上3つまではわかるけどそこから先がそもそも答えにたどり着けない……
801
(6): デフォルトの名無しさん [] 2017/12/06(水)17:48 ID:T95E7suL(1)
log2だけど、これ使うといいらしいよ。分割統治法のBSA法というやつらしい。
2個ずつの積を繰り返すことで計算回数が減らせる。

{{1, a0}, {0, r}}*{{1, a1}, {0, r}}を[ [○,P], [○,Q] ]とおくと
r*P/Qはa0 + a1/rであり、

{{1, a0}, {0, r}}*{{1, a1}, {0, r}}*{{1, a2}, {0, r}}を[ [○,P], [○,Q] ]とおくと
r*P/Qはa0 + a1/r + a2/r^2。

上の式を実際に計算してみる。
http://www.wolframalpha.com/input/?i=%7B%7B1,+a0%7D,+%7B0,+r%7D%7D*%7B%7B1,+a1%7D,+%7B0,+r%7D%7D*%7B%7B1,+a2%7D,+%7B0,+r%7D%7D
807
(7): デフォルトの名無しさん [] 2017/12/07(木)18:15 ID:wGY0QmnN(1)
お題
辺の長さが10,000以下の整数である直方体について
すべての面の対角線も整数となるものを全て求める
833
(6): デフォルトの名無しさん [] 2017/12/09(土)09:05 ID:WAlxvB4a(1)
お題
10,000以下の三角形数をもとめる
871
(3): デフォルトの名無しさん [sage] 2017/12/12(火)22:52 ID:38dJ/vud(1)
以下のURLのように、同じ色の点同士をつなぐゲームがある。
https://play.google.com/store/apps/details?id=com.bigduckgames.flow

N×Mの2次元配列が与えられる。配列の各要素は半角英字('a'-'z')または'*'である。
半角英字は色付きの点を表し、'*'は空のマスを表す。
'*'以外の文字は、配列中に必ず2個ずつ存在する。

このパズルの解を一つ出力せよ。
・'-'は左右のマスをつなぐ
・'|'は上下のマスをつなぐ
・'.'はマスをつながない

解がない場合は"No solution"と出力せよ。

[input]
***rg
**bg*
r****
ob*yo
****y

[output]
*-*-*-r.g
|.......|
*.*-b.g-*
|.|......
r.*.*-*-*
..|.|...|
o.b.*.y.o
|...|.|..
*-*-*.*-y
883
(3): デフォルトの名無しさん [] 2017/12/22(金)19:30 ID:PPoMR9m8(1/2)
お題
22の分割(たとえば3+3+5+8)のうち
分割したそれぞれの数の逆数の和が1になるものを求める
909
(9): デフォルトの名無しさん [sage] 2017/12/24(日)23:49 ID:HHMC0VFW(1)
では簡単なお題を
bを底とする値vを、2〜36進数に変換し表示してください。
なお、bは2〜36の整数、vは0以上の整数とし、不正な入力はないものとしてよい。
また、底と値の区切り文字は入出力ともに特に問わない。
[入力例]
16 deadbabe
[出力例]
2#11011110101011011011101010111110
3#100122100210210001200
4#3132223123222332
5#30122344134421
6#1414413520330
7#161402600604
8#33653335276
9#10570723050
10#3735927486
11#1647919685
(略)
27#9h9ll1i
28#7l225hi
29#6842o9l
30#53m7kg6
31#46f9hir
32#3farelu
33#2tf7mor
34#2e7m366
35#214kbpb
36#1ps9w3i
918
(3): デフォルトの名無しさん [sage] 2017/12/28(木)04:53 ID:N8L362th(1/8)
お題を捏造してやるぜ。
アンサーが42になる式を捏造せよ。という数学パズル。
小難しい式をでっち上げた人が優勝。
算数から数学、物理まで式になってればすべての手法が使用可能。統計とかでもいいよ。
制約は答えが42になることのみ。
解けるものはいるか?
935
(5): デフォルトの名無しさん [sage] 2017/12/29(金)02:28 ID:IV3yH5ho(1/2)
お題:入力があったら6面のサイコロを振って出た目を出力してください
ただし数字を使ってはならない
946
(3): デフォルトの名無しさん [] 2017/12/29(金)22:22 ID:1z8qBjEb(1)
お題
自然数 n を入力とし, a と b を乗ずると n になるような自然数 a と b を出力する.
a と b の侯補が複数存在する場合は, a と b の和がもっとも小さなものを出力すること.
959
(6): デフォルトの名無しさん [] 2017/12/30(土)12:46 ID:ZPxTZMGf(1/3)
お題
要素が素数, かつ要素の総和が2018になる集合のうち, 要素数がもっとも大きい集合を出力する.
981
(4): ◆QZaw55cn4c [sage] 2017/12/31(日)00:33 ID:UjqOw9qv(1/2)
お題:指定した複数の wav フォーマットを連結して一つ wav ファイルを作成するプログラムを書け
・ファイルの指定方法はコマンドライン引数指定でかまわない
・wav ファイルフォーマットの仕様上の上限である 4GiB まで正常に結合できることを必須の最低条件とする
・PCM フォーマット・ステレオ2ch・サンプリング周波数 44.1kHz に対応しておればよい
・GUI に対応しておればなおよい

背景:いや、いろいろダウンロードして試しているのだけれども、4GiB まで正常に結合できるソフトウェアが見つからないのです‥
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.070s