プログラミングのお題スレです。
前スレ
プログラミングのお題スレ Part8©2ch.net
http://echo.2ch.net/test/read.cgi/tech/1444216746/
【出題と回答例】
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/
宿題は宿題スレがあるのでそちらへ。
探検
プログラミングのお題スレ Part9 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
2016/12/01(木) 16:58:30.97ID:gTkHDluD
444デフォルトの名無しさん
2017/07/30(日) 12:53:04.00ID:EQKnHSgY まぁ、俺のもあってるかどうかはしらんけど。><;
445デフォルトの名無しさん
2017/07/30(日) 12:56:43.60ID:EQKnHSgY 頭悪くてゴメン。爆発しそう。。。
446デフォルトの名無しさん
2017/07/30(日) 13:01:05.96ID:EQKnHSgY 引っ込む。すまんかった。
447デフォルトの名無しさん
2017/07/30(日) 14:17:22.65ID:t+CfDp82448デフォルトの名無しさん
2017/07/30(日) 19:16:10.29ID:LizATlBz >>431 Ruby
def farey(n, k)
return [0r, 1r][k] if n == 1
farey(n - 1, 0..-1).each_cons(2).inject([0r]){|s, (a, b)|
x = a.denominator + b.denominator
s << 1r*(a.numerator + b.numerator)/x if x == n
s << b
}[k]
end
def farey(n, k)
return [0r, 1r][k] if n == 1
farey(n - 1, 0..-1).each_cons(2).inject([0r]){|s, (a, b)|
x = a.denominator + b.denominator
s << 1r*(a.numerator + b.numerator)/x if x == n
s << b
}[k]
end
449デフォルトの名無しさん
2017/08/03(木) 07:36:01.80ID:cLWzUq7C お題:ミンコフスキーの疑問符関数の実装
ttps://en.wikipedia.org/wiki/Minkowski%27s_question_mark_function
ttp://reference.wolfram.com/language/ref/MinkowskiQuestionMark.html
ttps://en.wikipedia.org/wiki/Minkowski%27s_question_mark_function
ttp://reference.wolfram.com/language/ref/MinkowskiQuestionMark.html
450デフォルトの名無しさん
2017/08/03(木) 10:39:36.15ID:ONmyLPuf WIKIぺにコード乗ってますが。
451デフォルトの名無しさん
2017/08/03(木) 10:48:34.50ID:ONmyLPuf >>449のWIKIより。
/* Minkowski's question mark function */
double minkowski(double x) {
long p=x; if ((double)p>x) --p; /* p=floor(x) */
long q=1, r=p+1, s=1, m, n;
double d=1, y=p;
if (x<(double)p||(p<0)^(r<=0)) return x; /* out of range ?(x) =~ x */
for (;;) /* invariants: q*r-p*s==1 && (double)p/q <= x && x < (double)r/s */
{
d/=2; if (y+d==y) break; /* reached max possible precision */
m=p+r; if ((m<0)^(p<0)) break; /* sum overflowed */
n=q+s; if (n<0) break; /* sum overflowed */
if (x<(double)m/n) r=m, s=n;
else y+=d, p=m, q=n;
}
return y+d; /* final round-off */
}
/* Minkowski's question mark function */
double minkowski(double x) {
long p=x; if ((double)p>x) --p; /* p=floor(x) */
long q=1, r=p+1, s=1, m, n;
double d=1, y=p;
if (x<(double)p||(p<0)^(r<=0)) return x; /* out of range ?(x) =~ x */
for (;;) /* invariants: q*r-p*s==1 && (double)p/q <= x && x < (double)r/s */
{
d/=2; if (y+d==y) break; /* reached max possible precision */
m=p+r; if ((m<0)^(p<0)) break; /* sum overflowed */
n=q+s; if (n<0) break; /* sum overflowed */
if (x<(double)m/n) r=m, s=n;
else y+=d, p=m, q=n;
}
return y+d; /* final round-off */
}
452デフォルトの名無しさん
2017/08/05(土) 17:44:11.83ID:40G0sflG >>375
のほかの実装はでてこないねぇ‥
のほかの実装はでてこないねぇ‥
453デフォルトの名無しさん
2017/08/12(土) 18:46:00.57ID:953va2dM 寿司のオーダーNのやつを理解しようとしたけどまだやってない。
その仕組みと、ほんとに正解してるのかとか。いたら誰が解説して。
その仕組みと、ほんとに正解してるのかとか。いたら誰が解説して。
454デフォルトの名無しさん
2017/08/12(土) 19:04:22.18ID:Bi4KH0eW455デフォルトの名無しさん
2017/08/12(土) 19:07:04.34ID:4r/z/Qd5 会社に帰ってこない巡回セールスマンだよね
寿司の乗った皿がノード、計算量はO(n!)
寿司の乗った皿がノード、計算量はO(n!)
456デフォルトの名無しさん
2017/08/12(土) 19:10:18.10ID:Bi4KH0eW それぞれの寿司を食べている期間をレーン上の線分で表します
この線の重なり具合をpileで表しました
効率良く食べられた場合はレーンがpile_max周するまでの間に食べきることが出来ます
170行目の判定がそれで、trueの場合は効率良く食べられない場合です
この線の重なり具合をpileで表しました
効率良く食べられた場合はレーンがpile_max周するまでの間に食べきることが出来ます
170行目の判定がそれで、trueの場合は効率良く食べられない場合です
457デフォルトの名無しさん
2017/08/12(土) 19:12:06.32ID:4r/z/Qd5 >>456
もしそれで最適解が得られるなら巡回セールスマンも可能じゃないかな?
もしそれで最適解が得られるなら巡回セールスマンも可能じゃないかな?
458デフォルトの名無しさん
2017/08/12(土) 19:17:11.73ID:6XNTCj+p 巡回セールスマン問題とけたら色々応用範囲アルヨ。
マジでどっかに売り込んでもいいくらい。
天才か。
マジでどっかに売り込んでもいいくらい。
天才か。
459デフォルトの名無しさん
2017/08/12(土) 19:18:34.85ID:6XNTCj+p 社会的に言うと交通統制とかもそれじゃないかな?
信号の待ち時間問題。よくしらんけど。
信号の待ち時間問題。よくしらんけど。
460デフォルトの名無しさん
2017/08/12(土) 19:19:17.76ID:Bi4KH0eW 効率良く食べられない方が簡単なのでその場合から
お寿司を以下のグループに分けます
----
各グループのお寿司は、レーンの特定の位置から食べ始めた場合、pile[グループ]周以内で食べ終わることが出来る
このとき、pile_max = Σ pile[グループ]
となる
---
このようなグループの分け方の最小の物が存在します
お寿司を以下のグループに分けます
----
各グループのお寿司は、レーンの特定の位置から食べ始めた場合、pile[グループ]周以内で食べ終わることが出来る
このとき、pile_max = Σ pile[グループ]
となる
---
このようなグループの分け方の最小の物が存在します
461デフォルトの名無しさん
2017/08/12(土) 19:22:56.16ID:Bi4KH0eW 同じグループのお寿司は連続して食べます
開始時と、各グループのお寿司を食べ終わった後、最初に来るお寿司から食べはじめ、pile[グループ]以内で食べられる食べ方でそのグループを食べ終える
ということを繰り返せば最小の時間で食べ終えることが出来ます
開始時と、各グループのお寿司を食べ終わった後、最初に来るお寿司から食べはじめ、pile[グループ]以内で食べられる食べ方でそのグループを食べ終える
ということを繰り返せば最小の時間で食べ終えることが出来ます
462デフォルトの名無しさん
2017/08/12(土) 19:26:29.79ID:Bi4KH0eW グループ分けした時に1個のグループになった場合は、
効率良く食べられることになります
つまり、pile_max周以下で食べ終えることが出来ます
この時は、コード上にあるダミーのお寿司を追加してから最小時間を求め、ダミーのお寿司を食べてる時間を引けば求められます
効率良く食べられることになります
つまり、pile_max周以下で食べ終えることが出来ます
この時は、コード上にあるダミーのお寿司を追加してから最小時間を求め、ダミーのお寿司を食べてる時間を引けば求められます
463デフォルトの名無しさん
2017/08/12(土) 19:28:18.79ID:4r/z/Qd5 うーん、よくわからん
セールスマンの巡回先を一次元にマッピングできれば同じことできそうな
無理か
セールスマンの巡回先を一次元にマッピングできれば同じことできそうな
無理か
464デフォルトの名無しさん
2017/08/12(土) 19:30:27.01ID:Bi4KH0eW グループの分け方は少し難しいです
レーンの各整数位置に対して、
お寿司の線の両端にあたる点同士
線の重なりがpile_max未満である区間の点(両端を含む)
を同じグループの点とし、
これらを続けることで最小のグループ分けが出来ます
線の両端の点のグループが、そのお寿司のグループになります
レーンの各整数位置に対して、
お寿司の線の両端にあたる点同士
線の重なりがpile_max未満である区間の点(両端を含む)
を同じグループの点とし、
これらを続けることで最小のグループ分けが出来ます
線の両端の点のグループが、そのお寿司のグループになります
465デフォルトの名無しさん
2017/08/12(土) 19:31:42.19ID:Bi4KH0eW それぞれ、証明は出来ているつもりです
466デフォルトの名無しさん
2017/08/12(土) 19:32:49.51ID:Bi4KH0eW もちろん、一般の巡回問題はこの方法では無理です
467デフォルトの名無しさん
2017/08/12(土) 19:37:29.23ID:4r/z/Qd5 全ノードを巡回する最短時間の問題だから、できそうな気がするけどね
468デフォルトの名無しさん
2017/08/12(土) 19:39:44.61ID:2Yw2XYfL 372仕様書無しさん2017/08/11(金) 10:31:43.41
フリーランスで検索すると引っかかる零細ITがやっているフリーランスのサイトはだめだ。
高額に見せているけど実際は50万前後
JIET加入した方がいいよ。案件は毎日千件以上末端価格は60万円 平凡な稼働時間の80万円の案件もある。
ユー子も求人をだしてる。名刺も渡せる。ユー子に名刺が渡せるんだぞ。夢のようだ
それらの案件まさぐってHPで転売していたのが零細ITがやるフリーランスサイト
473非決定性名無しさん2017/08/03(木) 15:21:30.71
JIETに加入すれば誰でも3次60万からスタートだ。フリーランスのサイトをやってる
自称エージェントもそこから案件情報を取得しきてる。サイトで60万で釣って40万から55万の
間でやらしている。
446非決定性名無しさん2017/08/02(水) 22:12:48.95
JIETに毎月5千円払えば3次から入場できるだろ?
高額をうたうフリーランスのサイトはだいたい5次から45万円
JIETで閲覧応募できる末端価格からさらに搾取するのが高額をみせつけるフリーランスサイトでした
高額案件をみせつけるフリーランスサイトも案件の取得はJIETでした
自称エージェントはJIETから流れてくる案件を転売してるだけだった。
JIETに加入すれば誰でも案件に応募することができた。収入が40万50万台にならなくて済む
フリーランスで検索すると引っかかる零細ITがやっているフリーランスのサイトはだめだ。
高額に見せているけど実際は50万前後
JIET加入した方がいいよ。案件は毎日千件以上末端価格は60万円 平凡な稼働時間の80万円の案件もある。
ユー子も求人をだしてる。名刺も渡せる。ユー子に名刺が渡せるんだぞ。夢のようだ
それらの案件まさぐってHPで転売していたのが零細ITがやるフリーランスサイト
473非決定性名無しさん2017/08/03(木) 15:21:30.71
JIETに加入すれば誰でも3次60万からスタートだ。フリーランスのサイトをやってる
自称エージェントもそこから案件情報を取得しきてる。サイトで60万で釣って40万から55万の
間でやらしている。
446非決定性名無しさん2017/08/02(水) 22:12:48.95
JIETに毎月5千円払えば3次から入場できるだろ?
高額をうたうフリーランスのサイトはだいたい5次から45万円
JIETで閲覧応募できる末端価格からさらに搾取するのが高額をみせつけるフリーランスサイトでした
高額案件をみせつけるフリーランスサイトも案件の取得はJIETでした
自称エージェントはJIETから流れてくる案件を転売してるだけだった。
JIETに加入すれば誰でも案件に応募することができた。収入が40万50万台にならなくて済む
469デフォルトの名無しさん
2017/08/12(土) 19:40:20.63ID:Bi4KH0eW pile_maxとその位置から下限が得られますが、
>>296 の例では98秒の物以外はすべてその下限になっています
一個その下限になるような例を見つければ答えがわかるのですが、
自力で検索してみればわかると思いますがそのような例はあっさり見つかります
98秒の例は効率良く食べられない場合になります
効率良く食べられる側のなかでも、pileから得られる下限値より大きくなる場合もあります
>>296 の例では98秒の物以外はすべてその下限になっています
一個その下限になるような例を見つければ答えがわかるのですが、
自力で検索してみればわかると思いますがそのような例はあっさり見つかります
98秒の例は効率良く食べられない場合になります
効率良く食べられる側のなかでも、pileから得られる下限値より大きくなる場合もあります
470デフォルトの名無しさん
2017/08/12(土) 19:43:06.99ID:Bi4KH0eW いずれの場合も、PCを使わなくても手計算で十分可能です
471デフォルトの名無しさん
2017/09/15(金) 10:14:33.05ID:lRMsxOf0 お題:
N次元で1辺のマス目がM個の魔法陣を作る
N>3(任意)、M>=3(任意)の超立方体
N次元で1辺のマス目がM個の魔法陣を作る
N>3(任意)、M>=3(任意)の超立方体
472デフォルトの名無しさん
2017/09/15(金) 10:20:33.77ID:lRMsxOf0473デフォルトの名無しさん
2017/09/17(日) 16:38:38.03ID:DSKC3zx4 魔方陣は1個作ればいいの?
Mが奇数か4の倍数は簡単
4で割って2余るのは検索するしかないのかな?
Mが奇数か4の倍数は簡単
4で割って2余るのは検索するしかないのかな?
474デフォルトの名無しさん
2017/09/17(日) 16:55:04.37ID:fthJj6jv バックトラックで組もうかと思ったけど、重そうだったからやめた。
数独より重そう。
それに一列合計をどの数字にするのかちょっとわからなかった。
数独より重そう。
それに一列合計をどの数字にするのかちょっとわからなかった。
475デフォルトの名無しさん
2017/09/17(日) 23:20:36.13ID:DSKC3zx4 一列合計は、M*[数字の平均]
になる
つまり
M*(M^N+1)/2
になる
つまり
M*(M^N+1)/2
476片山博文MZ ◆T6xkBnTXz7B0
2017/09/18(月) 21:53:54.06ID:iMidYxoH お題: URLから適当なサムネイルを生成するWebプログラム。
477デフォルトの名無しさん
2017/09/18(月) 23:06:01.10ID:FC5+Wne9 お題
0以上90未満の整数nを入力として
タンジェントn°の値が有理数ならば真
そうでなければ偽を返す
0以上90未満の整数nを入力として
タンジェントn°の値が有理数ならば真
そうでなければ偽を返す
478デフォルトの名無しさん
2017/09/18(月) 23:29:46.49ID:45aelXxs bool f(int n){return n==0 || n == 45;}
479デフォルトの名無しさん
2017/09/18(月) 23:33:52.62ID:ILsR+BHw sed -r -e "s/^(0|45)\$/True/" -e "s/[1-8][0-9]*/False/"
480デフォルトの名無しさん
2017/09/19(火) 01:13:30.78ID:zMNLdsjY tanの計算しないのはどうかと
481デフォルトの名無しさん
2017/09/19(火) 01:57:23.24ID:Ten4kOds 計算で有理数かどうか確認?
それは非常に難しいな
by 東大数学科卒
それは非常に難しいな
by 東大数学科卒
482デフォルトの名無しさん
2017/09/19(火) 02:28:36.10ID:SyuGyzWY >>480
そう思うなら他者を批判するより行動で示せばいいと思うよ
そう思うなら他者を批判するより行動で示せばいいと思うよ
483デフォルトの名無しさん
2017/09/19(火) 03:58:59.82ID:KVkpgN/c tan1°が無理数であることの証明すら面倒くせえのに一体どんな回答を求めているんだ
484デフォルトの名無しさん
2017/09/19(火) 06:37:25.45ID:Ten4kOds485デフォルトの名無しさん
2017/09/19(火) 07:41:26.64ID:KVkpgN/c486デフォルトの名無しさん
2017/09/19(火) 08:13:59.26ID:Ten4kOds487デフォルトの名無しさん
2017/09/19(火) 08:21:42.19ID:KVkpgN/c 何言ってんだこいつ
488デフォルトの名無しさん
2017/09/19(火) 08:49:35.38ID:q1kL6yRz 問題が悪いな
与えられた有理数rに対し、
tan(πr)が有理数かどうか判別するプログラムを書け
ならテーブルは使えない
与えられた有理数rに対し、
tan(πr)が有理数かどうか判別するプログラムを書け
ならテーブルは使えない
489デフォルトの名無しさん
2017/09/19(火) 09:06:24.19ID:emxMAzY1 また、多倍長精度演算のないC++にはきつい問題を・・・。
490デフォルトの名無しさん
2017/09/19(火) 11:09:01.37ID:q1kL6yRz491デフォルトの名無しさん
2017/09/19(火) 11:10:19.22ID:q1kL6yRz >>489
多倍長を使っても解決しないでしょ
多倍長を使っても解決しないでしょ
492デフォルトの名無しさん
2017/09/19(火) 12:53:02.28ID:RSOddfRB そもそも出題者はどういう回答を期待してるんだ?
数学の知識無しでは作れないし、数学の知識を使えば>>478になる
数学の知識無しでは作れないし、数学の知識を使えば>>478になる
493デフォルトの名無しさん
2017/09/19(火) 14:38:36.12ID:LvSRuVZD 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)
も無理数
証明終わり
tan(α+β)=(tanα+tanβ)/(1-tanαtanβ)
により
もしtan(α)が有理数なら
tan(nα) (n = 1,2,3,4・・・)
も全て有理数
このため
整数nにより
tan(n)が無理数なら
nの約数全てによるtan()が無理数
ここで
tan(60)=√3
が無理数なのは簡単に証明されるため、
tan(1)
も無理数
証明終わり
494デフォルトの名無しさん
2017/09/19(火) 14:54:56.80ID:RSOddfRB >>476を解くにはあとtan(18度)が無理数であることを証明しないと
495デフォルトの名無しさん
2017/09/19(火) 14:55:28.25ID:RSOddfRB496デフォルトの名無しさん
2017/09/19(火) 16:11:41.85ID:HSXd4/vW >>493
なるほど面白いねw
なるほど面白いねw
497デフォルトの名無しさん
2017/09/19(火) 19:41:00.46ID:Ten4kOds498デフォルトの名無しさん
2017/09/19(火) 20:13:34.35ID:KVkpgN/c tan1(rad)が超越数であることを証明せよ
499デフォルトの名無しさん
2017/09/19(火) 22:25:08.25ID:FbLYus+p500デフォルトの名無しさん
2017/09/19(火) 22:57:34.84ID:Ten4kOds xが有理数、tan(πx)が有理数 ====> xは1/4の倍数
って覚えてるだけかと
って覚えてるだけかと
501デフォルトの名無しさん
2017/09/20(水) 14:48:00.57ID:jgmli1ek >>493
は加法定理で(1-tanαtanβ)が0になってはまずいので
0度以上90未満の範囲内に限定しないといけないな。
tan()の加法定理
tan(α+β)=(tanα+tanβ)/(1-tanαtanβ)
により
もしtan(α)が有理数で、かつ 0 <= nα < 90なら
tan(nα) (n = 1,2,3,4・・・)
も全て有理数
このため
整数 n ( 0 <= n < 90 ) により
tan(n)が無理数なら
nの約数全てによるtan()が無理数
ここで
tan(60)=√3
が無理数なのは簡単に証明されるため、
tan(1)
も無理数
は加法定理で(1-tanαtanβ)が0になってはまずいので
0度以上90未満の範囲内に限定しないといけないな。
tan()の加法定理
tan(α+β)=(tanα+tanβ)/(1-tanαtanβ)
により
もしtan(α)が有理数で、かつ 0 <= nα < 90なら
tan(nα) (n = 1,2,3,4・・・)
も全て有理数
このため
整数 n ( 0 <= n < 90 ) により
tan(n)が無理数なら
nの約数全てによるtan()が無理数
ここで
tan(60)=√3
が無理数なのは簡単に証明されるため、
tan(1)
も無理数
502デフォルトの名無しさん
2017/09/20(水) 14:51:06.46ID:jgmli1ek503デフォルトの名無しさん
2017/09/20(水) 14:51:42.84ID:jgmli1ek 60の約数 はtan(n)無理数
1,2,3,4,5,6,10,12,15,20,30
これの45-n もtan(n)無理数
44,43,42,41,40,39,35,33,25,15
この約数で、まだ含まれていないもの
11,22,21,8,13,7
45-nにより
34,23,24,37,32,38
この約数で、まだ含まれていないもの
17,16,19
45-nにより
28,29,26
この約数で、まだ含まれていないもの
14
45-nにより
31
ここまでの数を並べると
01,02,03,04,05,06,07,08,**,10,
11,12,13,14,15,16,17,**,19,20,
21,22,23,24,25,26,**,28,29,30,
31,32,33,34,35,**,37,38,39,40,
41,42,43,44
9度の倍数の証明のみが残された
1,2,3,4,5,6,10,12,15,20,30
これの45-n もtan(n)無理数
44,43,42,41,40,39,35,33,25,15
この約数で、まだ含まれていないもの
11,22,21,8,13,7
45-nにより
34,23,24,37,32,38
この約数で、まだ含まれていないもの
17,16,19
45-nにより
28,29,26
この約数で、まだ含まれていないもの
14
45-nにより
31
ここまでの数を並べると
01,02,03,04,05,06,07,08,**,10,
11,12,13,14,15,16,17,**,19,20,
21,22,23,24,25,26,**,28,29,30,
31,32,33,34,35,**,37,38,39,40,
41,42,43,44
9度の倍数の証明のみが残された
504デフォルトの名無しさん
2017/09/20(水) 16:48:28.32ID:UU/UGcdT だから>>494と書いたんだけど
505デフォルトの名無しさん
2017/09/20(水) 21:20:48.49ID:8kWE0pQL tan(1 rad)が超越数であることは誰も証明できないの
506デフォルトの名無しさん
2017/09/20(水) 21:27:13.08ID:UU/UGcdT プログラムに証明させる問題?
507デフォルトの名無しさん
2017/09/20(水) 22:23:37.78ID:vEoThqNS なぜラジアン?
話の流れ的にはtan(1度)だろ
話の流れ的にはtan(1度)だろ
508デフォルトの名無しさん
2017/09/20(水) 22:25:37.42ID:vEoThqNS と思ったけど、簡単すぎた
509デフォルトの名無しさん
2017/09/21(木) 16:21:06.33ID:na02B6ss [1] 授業単元名:FizzBuzzクイズ
[2] 問題文(含コード&リンク):
[3] 環境
[3.1] OS: (Windows/Linux/等々)特に問わない
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)特に問わない
[3.3] 言語: (C/C++/どちらでも可 のいずれか)特に問わない
http://kohada.2ch.net/test/read.cgi/prog/1209467166/401
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" など)で。
[2] 問題文(含コード&リンク):
[3] 環境
[3.1] OS: (Windows/Linux/等々)特に問わない
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)特に問わない
[3.3] 言語: (C/C++/どちらでも可 のいずれか)特に問わない
http://kohada.2ch.net/test/read.cgi/prog/1209467166/401
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" など)で。
510デフォルトの名無しさん
2017/09/21(木) 19:58:51.31ID:+ykHPOb/ まともに仕様を書けない出題者
511デフォルトの名無しさん
2017/09/22(金) 07:02:49.79ID:aD9oWCn2 これ普通の発想では無理
512デフォルトの名無しさん
2017/09/22(金) 07:14:29.33ID:eEMHecr4513デフォルトの名無しさん
2017/09/22(金) 07:55:33.84ID:FtjqsiSd514デフォルトの名無しさん
2017/09/22(金) 08:00:39.43ID:pX6TouLp 仕様が謎
515デフォルトの名無しさん
2017/09/22(金) 08:13:32.67ID:FtjqsiSd516デフォルトの名無しさん
2017/09/22(金) 09:43:07.90ID:eeRMTLx0 外部出力を伴う関数(あるいはメソッド)なら簡単
たぶん関数(あるいはメソッド)の返値がそうなるようにって意味かと
(じゃないと普通に書けてクイズにならない)
たしか数理学的にはこういう関数は書けないことになっていたはず
たぶん関数(あるいはメソッド)の返値がそうなるようにって意味かと
(じゃないと普通に書けてクイズにならない)
たしか数理学的にはこういう関数は書けないことになっていたはず
517デフォルトの名無しさん
2017/09/22(金) 12:43:18.77ID:qmG6L9xB518デフォルトの名無しさん
2017/09/22(金) 12:43:56.86ID:qmG6L9xB 別に戻り値にしても大して変わらんけど
519デフォルトの名無しさん
2017/09/22(金) 12:51:02.25ID:qmG6L9xB C言語だとトリッキーな技を使わないと出来ない
同じ関数名で複数関数を作れないから
2段や3段重ねて、intを受けて文字列を返すのは普通には無理
C++だと簡単
大きく分けて2つの方法がある
C++でも数値によって戻り値の型を変えるのは無理
数値がconstexprで良いなら出来るだろうけど
同じ関数名で複数関数を作れないから
2段や3段重ねて、intを受けて文字列を返すのは普通には無理
C++だと簡単
大きく分けて2つの方法がある
C++でも数値によって戻り値の型を変えるのは無理
数値がconstexprで良いなら出来るだろうけど
520デフォルトの名無しさん
2017/09/22(金) 14:57:30.68ID:eEMHecr4521デフォルトの名無しさん
2017/09/22(金) 16:30:21.56ID:W1Y66+yK522デフォルトの名無しさん
2017/09/22(金) 16:41:43.04ID:W1Y66+yK >>516
戻り値を文字列にする方法
方法1
段階によって引数と戻り値の型を変える
S1 fizz(int n);
S2 fizz(S1 s);
std::string fizz(S2 s);
※テンプレートを使うと楽
方法2
戻り値をstd::string固定にしてなんとかする
方法2-1
戻り値は常に結果の文字列にし、パラメーター以外で情報を渡す
方法2-2
文字列に情報をエンコードして入れる
最終型段だけ結果を返すようにする
方法3
戻り値を結果文字列そのままではなく、文字列情報を含む情報とする
(これは反則かな?)
戻り値を文字列にする方法
方法1
段階によって引数と戻り値の型を変える
S1 fizz(int n);
S2 fizz(S1 s);
std::string fizz(S2 s);
※テンプレートを使うと楽
方法2
戻り値をstd::string固定にしてなんとかする
方法2-1
戻り値は常に結果の文字列にし、パラメーター以外で情報を渡す
方法2-2
文字列に情報をエンコードして入れる
最終型段だけ結果を返すようにする
方法3
戻り値を結果文字列そのままではなく、文字列情報を含む情報とする
(これは反則かな?)
523デフォルトの名無しさん
2017/09/22(金) 16:44:03.80ID:W1Y66+yK 方法2-1であれば >>520の問題は解決する
ただし、そのままだとスレッドセーフじゃなくて気持ち悪い
ただし、そのままだとスレッドセーフじゃなくて気持ち悪い
524デフォルトの名無しさん
2017/09/22(金) 16:48:22.63ID:eEMHecr4525デフォルトの名無しさん
2017/09/22(金) 18:17:47.82ID:eeRMTLx0 例えばRubyだと文字列を含め組み込み型にインスタンス変数を仕込めるので
たぶんそれで次のメソッドに情報を渡せる
たぶんそれで次のメソッドに情報を渡せる
526デフォルトの名無しさん
2017/09/22(金) 19:04:29.86ID:FtjqsiSd >>522 の方法2-1
C++版
https://ideone.com/ZavKGg
外部情報は「n」のみ
複数スレッドや割り込みハンドラからコールする時はこのnが問題になるんで
なんとかしてstd::stringに埋め込めれば良いんだけど
>>525
問題を変えちゃダメだよね
> [3.3] 言語: (C/C++/どちらでも可 のいずれか)特に問わない
C++版
https://ideone.com/ZavKGg
外部情報は「n」のみ
複数スレッドや割り込みハンドラからコールする時はこのnが問題になるんで
なんとかしてstd::stringに埋め込めれば良いんだけど
>>525
問題を変えちゃダメだよね
> [3.3] 言語: (C/C++/どちらでも可 のいずれか)特に問わない
527デフォルトの名無しさん
2017/09/22(金) 19:08:43.22ID:FtjqsiSd 8行目、なんとなく文字列から判別してみたけど、
素直にnと同じように外部にフラグを持てば条件が減る
(文字列の最後が数字にならないとか文字コードが連続してるとか)
素直にnと同じように外部にフラグを持てば条件が減る
(文字列の最後が数字にならないとか文字コードが連続してるとか)
528デフォルトの名無しさん
2017/09/22(金) 19:09:11.03ID:pX6TouLp 「(C/C++/どちらでも可 のいずれか)特に問わない」って日本語がまず謎
有限個の具体例しか与えられていないので仕様も謎
有限個の具体例しか与えられていないので仕様も謎
529デフォルトの名無しさん
2017/09/22(金) 19:26:24.34ID:FtjqsiSd 出題者の選択枝が [C/C++/どちらでも可] の3個あって、出題者がその「いずれか」を選ぶ
というフォーマットを使った出題
出題者は回答者に対し『その3個のどれでも良いよ』という意味で「特に問わない」と
と私は解釈した
つまり、回答者の選択枝はCかC++のどちらかだと
出力する文字列のルールはリンク先を見れば大体わかる
gizzが7の倍数かどうかは実際には不明で、実は14で割ると7余る数かもしれないが...
リンク先に「プリントする」とあるので
printfなどで標準出力に出せば良いのかと思ったが、
>>516の解釈は違うらしい
数値の場合だけ""でくくってないので、
文字列の場合は""をくっつける必要があるのか、
型を変えろと言っているのかはよくわからん
いずれにしろ、CやC++では値によって戻り値の型を変えるのは不可能
というフォーマットを使った出題
出題者は回答者に対し『その3個のどれでも良いよ』という意味で「特に問わない」と
と私は解釈した
つまり、回答者の選択枝はCかC++のどちらかだと
出力する文字列のルールはリンク先を見れば大体わかる
gizzが7の倍数かどうかは実際には不明で、実は14で割ると7余る数かもしれないが...
リンク先に「プリントする」とあるので
printfなどで標準出力に出せば良いのかと思ったが、
>>516の解釈は違うらしい
数値の場合だけ""でくくってないので、
文字列の場合は""をくっつける必要があるのか、
型を変えろと言っているのかはよくわからん
いずれにしろ、CやC++では値によって戻り値の型を変えるのは不可能
530デフォルトの名無しさん
2017/09/22(金) 19:32:11.08ID:FtjqsiSd531デフォルトの名無しさん
2017/09/22(金) 19:33:47.07ID:eEMHecr4532デフォルトの名無しさん
2017/09/22(金) 19:36:43.23ID:FtjqsiSd533デフォルトの名無しさん
2017/09/22(金) 19:39:18.64ID:FtjqsiSd 出題者なら0点
534デフォルトの名無しさん
2017/09/22(金) 19:43:00.43ID:pX6TouLp535デフォルトの名無しさん
2017/09/22(金) 19:51:22.72ID:FtjqsiSd536デフォルトの名無しさん
2017/09/22(金) 19:54:43.95ID:FtjqsiSd そろそろ
出題者の模範解答
よろしくね
出題者の模範解答
よろしくね
537デフォルトの名無しさん
2017/09/22(金) 20:00:08.36ID:eEMHecr4 え゛
0点の出題だしー模範解答の質も推して知るべし、なんじゃないでしょうか……:−)
0点の出題だしー模範解答の質も推して知るべし、なんじゃないでしょうか……:−)
538デフォルトの名無しさん
2017/09/22(金) 20:35:12.69ID:aD9oWCn2 >>526
↓この但し書きがあるってことは、問題作成者(≠出題者)としてはC/C++限定とは考えてはいないだろう
> メソッドのコールに()が必須の言語では 3.fizz().buzz() 形式でも構わない。
> オープンクラス機構やメソッドのない言語では関数(buzz(fizz(3)) #=> "Fizz" など)で。
そもそもここで出題する時点で [3] の縛りは意味をなさないよ
↓この但し書きがあるってことは、問題作成者(≠出題者)としてはC/C++限定とは考えてはいないだろう
> メソッドのコールに()が必須の言語では 3.fizz().buzz() 形式でも構わない。
> オープンクラス機構やメソッドのない言語では関数(buzz(fizz(3)) #=> "Fizz" など)で。
そもそもここで出題する時点で [3] の縛りは意味をなさないよ
539デフォルトの名無しさん
2017/09/22(金) 20:43:54.80ID:W1Y66+yK >>509に書いてある以上は、それに従うのが基本
540デフォルトの名無しさん
2017/09/22(金) 20:47:11.96ID:W1Y66+yK と思って私は回答しましたが、
他の人が他の解釈で回答することまで否定はしません
他の人が他の解釈で回答することまで否定はしません
541デフォルトの名無しさん
2017/09/22(金) 20:47:48.19ID:W1Y66+yK ということで、
>>538 よろしく!
>>538 よろしく!
542デフォルトの名無しさん
2017/09/23(土) 03:26:09.79ID:nBwtcNcI543デフォルトの名無しさん
2017/09/23(土) 05:00:15.00ID:FxaWa0db544デフォルトの名無しさん
2017/09/23(土) 09:40:19.02ID:9eQI4Qct■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 「脅迫だ」国分太一に同情論 音声データ削除要求など日テレの対応を疑問視する声ネットに噴出「それこそコンプラ違反では」★2 [muffin★]
- 【国際法を無視】日本での「中華人民共和国に台湾問題を論じる資格なし」との声に 中国外交部が厳しく反論… ★2 [BFU★]
- 【工作員】「X」のアカウント所在地公開機能が暴いた世論操作の実態 MAGA支持著名アカウントの多くが米国外から運営 日本にも波及 ★3 [ごまカンパチ★]
- 生クリームだけの真っ白なクリスマスケーキ 大手メーカーが販売、その理由は…フルーツなしで価格は半額以下に ★3 [おっさん友の会★]
- 【文春】元TOKIO・国分太一(51)「女性スタッフ2名への“わいせつ事案”」日テレ事情聴取の全貌が分かった! ★5 [Ailuropoda melanoleuca★]
- 首相答弁「スパイ防止法、外国代理人登録法、ロビー活動公開法などについて速やかに法案を策定する」 [1ゲットロボ★]
- 中国外務省「全く不十分だ。ごまかすような手口を使うべきではない」高市答弁を批判 [834922174]
- まったりまったりおじゃる丸待機スレ🏡
- ヤンジャン新人漫画大賞、入賞作品のAI絵疑惑で大荒れ😄😄😄 高市早苗要素あり [175344491]
- 高市応援団「都合よく解釈するな」「撤回すると言ってない」「中国と断交」「撤回する必要ない」「答弁変わってない」「武力行使しろ」 [931948549]
- 【急募】性欲抜きのまんこの魅力 [904880432]
- 合法の範囲でできることをやり尽くした人間は犯罪行為に興味を持ちがち
