プログラミングのお題スレです。
【出題と回答例】
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/
宿題は宿題スレがあるのでそちらへ。
※前スレ
プログラミングのお題スレ Part18
https://mevius.5ch.net/test/read.cgi/tech/1594702426/
探検
プログラミングのお題スレ Part19
■ このスレッドは過去ログ倉庫に格納されています
2020/11/30(月) 00:04:05.21ID:TF2Czp0y
261デフォルトの名無しさん
2021/01/26(火) 12:40:16.61ID:PXbbWA9f >>248
再帰で全パターンやらせるようなのは誰もがやりそうなので他の人に任せるとして、後はやるとしたらスレッド使ってやるぐらいかねえ。再帰は再帰だけど、うまくいけば速く動きそう。(スレッド作るコストが高くて遅くなるかも知れんが)。
ま、しかし、今は麻婆豆腐定食食ってる最中なのでできない。後で時間が空いた時にまだ覚えてたら作ろう。
再帰で全パターンやらせるようなのは誰もがやりそうなので他の人に任せるとして、後はやるとしたらスレッド使ってやるぐらいかねえ。再帰は再帰だけど、うまくいけば速く動きそう。(スレッド作るコストが高くて遅くなるかも知れんが)。
ま、しかし、今は麻婆豆腐定食食ってる最中なのでできない。後で時間が空いた時にまだ覚えてたら作ろう。
263デフォルトの名無しさん
2021/01/26(火) 13:12:00.37ID:V3RlvyIn ちなみに>>260はお受験で出てくる
1 1 1 1 1 1
1 2 x 1 2 3
1 3 3 4 x 3
1 4 7 11 11 14
1 5 2 23 34 48
と上から順に数える方法です
Haskellのdpは読みにくい
オレの書き方が下手なだけか?orz
1 1 1 1 1 1
1 2 x 1 2 3
1 3 3 4 x 3
1 4 7 11 11 14
1 5 2 23 34 48
と上から順に数える方法です
Haskellのdpは読みにくい
オレの書き方が下手なだけか?orz
264デフォルトの名無しさん
2021/01/26(火) 13:41:22.80ID:FaqYA5ze 最短でなくどんな経路でもいいんならこれになる
http://www.lab2.kuis.kyoto-u.ac.jp/minato/index-j.html
http://www.lab2.kuis.kyoto-u.ac.jp/minato/index-j.html
265248
2021/01/26(火) 14:07:30.69ID:qsHPBWwm 開始点から数え上げるので良かったのか
漏れは、終点から数え上げる方法を考えていた
漏れは、終点から数え上げる方法を考えていた
266デフォルトの名無しさん
2021/01/26(火) 14:49:25.39ID:tY36E7UA267デフォルトの名無しさん
2021/01/26(火) 16:29:06.62ID:5FaXTtsh お題:以下のパイプを実現するプログラムprogを作りなさい
$ echo "1 + a" | prog
1a
$ echo "b + 3" | prog
3b
$ echo "2 + d + 1 + c" | prog
12cd
$ echo "1 + a" | prog
1a
$ echo "b + 3" | prog
3b
$ echo "2 + d + 1 + c" | prog
12cd
268デフォルトの名無しさん
2021/01/26(火) 19:45:05.53ID:PXbbWA9f269デフォルトの名無しさん
2021/01/26(火) 20:34:09.94ID:a1XSwUuB >>267 Ruby
$ echo "1 + a" | ruby -e"$><<gets.scan(/\w+/).sort.join"
1a
$ echo "b + 3" | ruby -e"$><<gets.scan(/\w+/).sort.join"
3b
$ echo "2 + d + 1 + c" | ruby -e"$><<gets.scan(/\w+/).sort.join"
12cd
$ echo "1 + a" | ruby -e"$><<gets.scan(/\w+/).sort.join"
1a
$ echo "b + 3" | ruby -e"$><<gets.scan(/\w+/).sort.join"
3b
$ echo "2 + d + 1 + c" | ruby -e"$><<gets.scan(/\w+/).sort.join"
12cd
270デフォルトの名無しさん
2021/01/26(火) 20:56:27.12ID:MpuUt4AN >>267
echo "1 + a" | perl -pe 's/[ +]+/\n/g'|sort|perl -pe 's/\n//'
1a
echo "b + 3" | perl -pe 's/[ +]+/\n/g'|sort|perl -pe 's/\n//'
3b
echo "2 + d + 1 + c" | perl -pe 's/[ +]+/\n/g'|sort|perl -pe 's/\n//'
12cd
echo "1 + a" | perl -pe 's/[ +]+/\n/g'|sort|perl -pe 's/\n//'
1a
echo "b + 3" | perl -pe 's/[ +]+/\n/g'|sort|perl -pe 's/\n//'
3b
echo "2 + d + 1 + c" | perl -pe 's/[ +]+/\n/g'|sort|perl -pe 's/\n//'
12cd
271デフォルトの名無しさん
2021/01/26(火) 21:08:55.48ID:a1XSwUuB272デフォルトの名無しさん
2021/01/26(火) 21:28:58.74ID:DzTvwUl0 ソートだなんて書いてないのに
273デフォルトの名無しさん
2021/01/26(火) 21:32:05.97ID:AKScmGgq >>272
は?
は?
274デフォルトの名無しさん
2021/01/27(水) 00:42:48.41ID:3F+KDe6B275デフォルトの名無しさん
2021/01/27(水) 01:36:50.37ID:1jPkLKqx 先手必勝が分かってるのに具体的な勝つ手は簡単に分からないもんなの?
276デフォルトの名無しさん
2021/01/27(水) 07:22:52.84ID:uxRgmm/E277デフォルトの名無しさん
2021/01/27(水) 07:33:58.36ID:6jP5tNbs 必勝手を指すのと必勝パターン数を計算するのはまた別物だしな
278デフォルトの名無しさん
2021/01/29(金) 22:14:35.80ID:vFJJH28K お題:
H×Wのマス目が与えられます。
始点'S'、終点'G'、通路'.'、壁'#'であり、壁や範囲外のマスは通ることができません。
また、始点と終点は隣り合っていないものとします。
いくつかの通路を壁に変更して、始点から終点に到達できなくするには
最小でいくつ壁が必要でしょうか?
[入力]
H W
(マス目を表す文字列)
[入出力例]
1 5
S...G
=> 1
3 3
S#.
#..
..G
=> 0
4 4
....
.S..
..G.
....
=> 4
H×Wのマス目が与えられます。
始点'S'、終点'G'、通路'.'、壁'#'であり、壁や範囲外のマスは通ることができません。
また、始点と終点は隣り合っていないものとします。
いくつかの通路を壁に変更して、始点から終点に到達できなくするには
最小でいくつ壁が必要でしょうか?
[入力]
H W
(マス目を表す文字列)
[入出力例]
1 5
S...G
=> 1
3 3
S#.
#..
..G
=> 0
4 4
....
.S..
..G.
....
=> 4
279デフォルトの名無しさん
2021/02/02(火) 12:20:18.38ID:Enz7FJce お題:ニセコインを見つけよ
半年毎に数学板で出てくるお題
n枚のコイン(n≧3)の中から重さの違うニセコインを見つけには何回天秤つかえばよいか
なおどのコインも最低一回は天秤に乗せてニセコインが重いか軽いかも判定するものとする
答えは
e = ceiling( logBase 3 ( 2*n+2 ) )
さてさてこの回数で可能はそんなに難しくない
実際e行n列の1,0,-1からなる配列で
@どの行も1の数と-1の数が等しい(右の皿と左の皿に同じ数乗せる)
Aどの相異なる行u,vをとってもu ≠ ±v
となる配列が作れる
そこで n≧3 にたいしてこのような配列を出力するプログラムを作って下さい
例
3->
[[-1,0,1],[0,1,-1]]
10->
[[-1,0,1,-1,0,-1,1,1,-1,1],[0,1,-1,-1,0,0,0,-1,1,1],[0,0,0,0,-1,1,1,-1,-1,1]]
12->
[[-1,0,1,-1,0,-1,1,1,-1,0,0,1],[0,1,-1,-1,0,0,0,-1,1,-1,1,1],[0,0,0,0,-1,1,1,-1,-1,1,1,-1]
39->
[[-1,0,1,-1,0,-1,1,1,-1,0,0,-1,1,0,1,-1,-1,1,0,0,1,-1,-1,1,0,0,1,-1,-1,1,0,0,1,-1,-1,1,0,0,1],[0,1,-1,-1,0,0,0,-1,1,-1,1,-1,1,0,0,0,1,-1,1,-1,1,-1,-1,1,-1,1,-1,1,0,0,0,0,0,0,1,-1,1,-1,1],[0,0,0,0,-1,1,1,-1,-1,1,1,-1,-1,0,0,0,0,0,0,0,0,0,1,-1,1,-1,1,-1,1,-1,1,-1,1,-1,1,-1,1,-1,1],[0,0,0,0,0,0,0,0,0,0,0,0,0,1,-1,-1,1,1,-1,-1,1,1,-1,-1,1,1,-1,-1,1,1,-1,-1,1,1,-1,-1,1,1,-1]]
半年毎に数学板で出てくるお題
n枚のコイン(n≧3)の中から重さの違うニセコインを見つけには何回天秤つかえばよいか
なおどのコインも最低一回は天秤に乗せてニセコインが重いか軽いかも判定するものとする
答えは
e = ceiling( logBase 3 ( 2*n+2 ) )
さてさてこの回数で可能はそんなに難しくない
実際e行n列の1,0,-1からなる配列で
@どの行も1の数と-1の数が等しい(右の皿と左の皿に同じ数乗せる)
Aどの相異なる行u,vをとってもu ≠ ±v
となる配列が作れる
そこで n≧3 にたいしてこのような配列を出力するプログラムを作って下さい
例
3->
[[-1,0,1],[0,1,-1]]
10->
[[-1,0,1,-1,0,-1,1,1,-1,1],[0,1,-1,-1,0,0,0,-1,1,1],[0,0,0,0,-1,1,1,-1,-1,1]]
12->
[[-1,0,1,-1,0,-1,1,1,-1,0,0,1],[0,1,-1,-1,0,0,0,-1,1,-1,1,1],[0,0,0,0,-1,1,1,-1,-1,1,1,-1]
39->
[[-1,0,1,-1,0,-1,1,1,-1,0,0,-1,1,0,1,-1,-1,1,0,0,1,-1,-1,1,0,0,1,-1,-1,1,0,0,1,-1,-1,1,0,0,1],[0,1,-1,-1,0,0,0,-1,1,-1,1,-1,1,0,0,0,1,-1,1,-1,1,-1,-1,1,-1,1,-1,1,0,0,0,0,0,0,1,-1,1,-1,1],[0,0,0,0,-1,1,1,-1,-1,1,1,-1,-1,0,0,0,0,0,0,0,0,0,1,-1,1,-1,1,-1,1,-1,1,-1,1,-1,1,-1,1,-1,1],[0,0,0,0,0,0,0,0,0,0,0,0,0,1,-1,-1,1,1,-1,-1,1,1,-1,-1,1,1,-1,-1,1,1,-1,-1,1,1,-1,-1,1,1,-1]]
280デフォルトの名無しさん
2021/02/02(火) 12:31:29.80ID:Enz7FJce 訂正
× Aどの相異なる行u,vをとってもu ≠ ±v
◯ Aどの相異なる列u,vをとってもu ≠ ±v
× Aどの相異なる行u,vをとってもu ≠ ±v
◯ Aどの相異なる列u,vをとってもu ≠ ±v
>>279
偽コインは1枚ですか?複数ですか?
偽コインは1枚ですか?複数ですか?
282デフォルトの名無しさん
2021/02/02(火) 20:40:30.09ID:uLQAjwWk >>279
最初しか読んでないが、その条件では軽い方が偽物なのか重い方が偽物なのか決定することが不可能
最初しか読んでないが、その条件では軽い方が偽物なのか重い方が偽物なのか決定することが不可能
283デフォルトの名無しさん
2021/02/02(火) 22:41:03.50ID:LQ6cge6d >>281
ニセコインは一枚です
ニセコインは一枚です
284デフォルトの名無しさん
2021/02/02(火) 22:52:21.15ID:LQ6cge6d >>282
今確かめてみたら合ってるようです
main = print $ [ ( n, ceiling $ logBase 3 $ fromInteger $ 2*n +2) | n<- [3..16] ++ [38..42]]
[(3,2),(4,3),(5,3),(6,3),(7,3),(8,3),(9,3),(10,3),(11,3),(12,3),(13,4),(14,4),(15,4),(16,4),(38,4),(39,4),(40,5),(41,5),(42,5)]
ちなみに軽重が確定しない=一度も乗せないのもありにすれば13枚でも3回で可能です
12回のときの解に「一度も乗せないコイン」を入れればいいだけなので
ちなみにn=12とn=39のときの解でそれぞれ3回、4回で可能
[[1,0,1,-1,0,1,-1,0,0,1,-1,-1],[0,1,-1,-1,0,0,0,1,-1,1,-1,1],[0,0,0,0,1,-1,-1,1,1,-1,-1,1]]
[[1,0,1,-1,0,1,-1,0,0,1,-1,1,-1,0,1,-1,-1,1,0,0,1,-1,-1,1,0,0,-1,1,0,0,1,-1,-1,1,0,0,1,-1,-1],[0,1,-1,-1,0,0,0,1,-1,1,-1,-1,1,0,0,0,1,-1,1,-1,1,-1,-1,1,-1,1,0,0,0,0,0,0,1,-1,1,-1,1,-1,1],[0,0,0,0,1,-1,-1,1,1,-1,-1,1,1,0,0,0,0,0,0,0,0,0,1,-1,1,-1,1,-1,1,-1,1,-1,1,-1,1,-1,1,-1,-1],[0,0,0,0,0,0,0,0,0,0,0,0,0,1,-1,-1,1,1,-1,-1,1,1,-1,-1,1,1,-1,-1,1,1,-1,-1,1,1,-1,-1,1,1,-1]]
今確かめてみたら合ってるようです
main = print $ [ ( n, ceiling $ logBase 3 $ fromInteger $ 2*n +2) | n<- [3..16] ++ [38..42]]
[(3,2),(4,3),(5,3),(6,3),(7,3),(8,3),(9,3),(10,3),(11,3),(12,3),(13,4),(14,4),(15,4),(16,4),(38,4),(39,4),(40,5),(41,5),(42,5)]
ちなみに軽重が確定しない=一度も乗せないのもありにすれば13枚でも3回で可能です
12回のときの解に「一度も乗せないコイン」を入れればいいだけなので
ちなみにn=12とn=39のときの解でそれぞれ3回、4回で可能
[[1,0,1,-1,0,1,-1,0,0,1,-1,-1],[0,1,-1,-1,0,0,0,1,-1,1,-1,1],[0,0,0,0,1,-1,-1,1,1,-1,-1,1]]
[[1,0,1,-1,0,1,-1,0,0,1,-1,1,-1,0,1,-1,-1,1,0,0,1,-1,-1,1,0,0,-1,1,0,0,1,-1,-1,1,0,0,1,-1,-1],[0,1,-1,-1,0,0,0,1,-1,1,-1,-1,1,0,0,0,1,-1,1,-1,1,-1,-1,1,-1,1,0,0,0,0,0,0,1,-1,1,-1,1,-1,1],[0,0,0,0,1,-1,-1,1,1,-1,-1,1,1,0,0,0,0,0,0,0,0,0,1,-1,1,-1,1,-1,1,-1,1,-1,1,-1,1,-1,1,-1,-1],[0,0,0,0,0,0,0,0,0,0,0,0,0,1,-1,-1,1,1,-1,-1,1,1,-1,-1,1,1,-1,-1,1,1,-1,-1,1,1,-1,-1,1,1,-1]]
285デフォルトの名無しさん
2021/02/05(金) 20:30:58.14ID:VEUKRJUV 偽物が1枚ならそら可能だわな
286デフォルトの名無しさん
2021/02/06(土) 00:55:18.45ID:pOHNi9wO >>279
ちょっと盛り上がらないのでアルゴリズムの一例例示してみます
まぁここはプログラミングのスレだから数学部分はどうでもいいでしょう
構成法はほかにもいくつかあります
なお{1,0,-1}はうるさいので{1,0,2}にします
---
以下において{ }で囲まれた数は3進数表示とする
以下3進数表示した時
最高位が1でそれ以外が0であるものを10型、
最高位が2でそれ以外が0であるものを20型、
最高位が2で次に来る0でない数も1であるものを11型
‥
と定めていき、自然数全体を10型、20型、11型、12型、21型、22型と6型に分類する
与えられた自然数のうち
@何もしない
A最高位のみ1⇔2の交換をする
B最高位以外1⇔2の交換をする
C全桁1⇔2の交換をする
で11型の変換できる
例えば{2201}=73であればCを適用して
f11(73)={1102}=38となる
同様にしてf12,f21,f22を定義しておく
では自然数eと3≦n≦(3^e-3)/2を満たす自然数nについて条件を満たす組みを構成する
まずn-eが奇数のときn-a-1をm、そうでないときはn-eをmとおく
前者のときケースA、後者のときケースBと呼ぶ
次にe桁以下の11型の数からケースAでは{111‥11}(e桁)を取り除いたものを、ケースBでは{111‥10}(e桁)を取り除いたものを並べたものを考える
(続く)
ちょっと盛り上がらないのでアルゴリズムの一例例示してみます
まぁここはプログラミングのスレだから数学部分はどうでもいいでしょう
構成法はほかにもいくつかあります
なお{1,0,-1}はうるさいので{1,0,2}にします
---
以下において{ }で囲まれた数は3進数表示とする
以下3進数表示した時
最高位が1でそれ以外が0であるものを10型、
最高位が2でそれ以外が0であるものを20型、
最高位が2で次に来る0でない数も1であるものを11型
‥
と定めていき、自然数全体を10型、20型、11型、12型、21型、22型と6型に分類する
与えられた自然数のうち
@何もしない
A最高位のみ1⇔2の交換をする
B最高位以外1⇔2の交換をする
C全桁1⇔2の交換をする
で11型の変換できる
例えば{2201}=73であればCを適用して
f11(73)={1102}=38となる
同様にしてf12,f21,f22を定義しておく
では自然数eと3≦n≦(3^e-3)/2を満たす自然数nについて条件を満たす組みを構成する
まずn-eが奇数のときn-a-1をm、そうでないときはn-eをmとおく
前者のときケースA、後者のときケースBと呼ぶ
次にe桁以下の11型の数からケースAでは{111‥11}(e桁)を取り除いたものを、ケースBでは{111‥10}(e桁)を取り除いたものを並べたものを考える
(続く)
287デフォルトの名無しさん
2021/02/06(土) 00:55:35.94ID:pOHNi9wO (続き)
この列の最初のm/2個を2個ずつ並べてm個にした列
{11},{11},{101},{101},{110},{101},{111}‥
にf11,f12,r21,f22を順に作用させていく
ただし桁が上がるごとにf11に戻す
最初の方を例示すれば11型の数を2個ずつ並べたものが
{11},{11}
{101},{101},{110},{110},{111},{111},{112},{112},
{1001},{1001},{1010},{1010},{1011},{1011},‥
だから
{11},{12}
{101},{102},{210},{220},{111},{122},{212},{221},
{1001},{1002},{2010},{2020},{1011},{1022},‥
となる
この列は偶数番目のどこで切っても各桁に現れる1の個数と2の個数は同数か1の方が2個多い事に注意する
また最低位では常に1の個数と2の個数は同数になる
よってケースAではe個の10型、もしくは20型の数を追加する事によって全てのくらいで1の個数がちょうど一個多くなるようにできる
またこの時列の長さはm+e=n-1個である
最後に{222‥22}を追加して条件を満たす列ができる
また同じくケースBではe-1個の10型、20型の数を追加して最低位だけ同数でそれ以外の桁では1の個数がちょうど一個多くなるようにできる
この時の列の長さはm+e-1=n-1個である
最後に{222‥20}を追加すれば良い
この列の最初のm/2個を2個ずつ並べてm個にした列
{11},{11},{101},{101},{110},{101},{111}‥
にf11,f12,r21,f22を順に作用させていく
ただし桁が上がるごとにf11に戻す
最初の方を例示すれば11型の数を2個ずつ並べたものが
{11},{11}
{101},{101},{110},{110},{111},{111},{112},{112},
{1001},{1001},{1010},{1010},{1011},{1011},‥
だから
{11},{12}
{101},{102},{210},{220},{111},{122},{212},{221},
{1001},{1002},{2010},{2020},{1011},{1022},‥
となる
この列は偶数番目のどこで切っても各桁に現れる1の個数と2の個数は同数か1の方が2個多い事に注意する
また最低位では常に1の個数と2の個数は同数になる
よってケースAではe個の10型、もしくは20型の数を追加する事によって全てのくらいで1の個数がちょうど一個多くなるようにできる
またこの時列の長さはm+e=n-1個である
最後に{222‥22}を追加して条件を満たす列ができる
また同じくケースBではe-1個の10型、20型の数を追加して最低位だけ同数でそれ以外の桁では1の個数がちょうど一個多くなるようにできる
この時の列の長さはm+e-1=n-1個である
最後に{222‥20}を追加すれば良い
288デフォルトの名無しさん
2021/02/08(月) 23:53:36.54ID:rr62o0iF 数学は盛り上がらんねえ
2899
2021/02/09(火) 00:45:13.92ID:TwMhWx5Q 難問だけど
これ数学?
これ数学?
290デフォルトの名無しさん
2021/02/09(火) 01:03:59.69ID:pN3N76M5 盛り上がりませんね
解答例
https://ideone.com/cHEv2n
見栄え考えて"+ -"の三文字で表現してます
まぁ数学というわけでもないです
ただ数学板にはもう半年に一回くらい上がってくる
意外にネットでちゃんと解説してるサイトがない
解答例
https://ideone.com/cHEv2n
見栄え考えて"+ -"の三文字で表現してます
まぁ数学というわけでもないです
ただ数学板にはもう半年に一回くらい上がってくる
意外にネットでちゃんと解説してるサイトがない
291デフォルトの名無しさん
2021/02/10(水) 21:47:17.15ID:rSkriPOW お題
整数 a_i が n_i 個ある。(1 <= i <= K)
このデータの中央値を求めよ。
[入力]
K
a_1 n_1
...
a_K n_K
[入出力例]
3
1 2
2 2
3 4
=> 2.5
{1, 1, 2, 2, 3, 3, 3, 3}の中央値は(2+3)/2=2.5
2
0 1000000000
1 999999999
=> 0
整数 a_i が n_i 個ある。(1 <= i <= K)
このデータの中央値を求めよ。
[入力]
K
a_1 n_1
...
a_K n_K
[入出力例]
3
1 2
2 2
3 4
=> 2.5
{1, 1, 2, 2, 3, 3, 3, 3}の中央値は(2+3)/2=2.5
2
0 1000000000
1 999999999
=> 0
292デフォルトの名無しさん
2021/02/10(水) 21:54:19.38ID:/QRbjylB こわれてる
K=3
i=4
K=3<4=i と i<=Kが矛盾
K=3
i=4
K=3<4=i と i<=Kが矛盾
293デフォルトの名無しさん
2021/02/11(木) 04:13:33.16ID:s1BJw1Nt >>292
ちゃんと問題文読め阿呆
ちゃんと問題文読め阿呆
294デフォルトの名無しさん
2021/02/11(木) 04:22:35.31ID:JqJNLwXz お題:機械翻訳しなさい
入力:this is a pen
出力:これはペンです
入力:is this a pen?
出力:これはペンですか?
入力:this is a pen
出力:これはペンです
入力:is this a pen?
出力:これはペンですか?
295デフォルトの名無しさん
2021/02/13(土) 04:50:07.93ID:qefqzAth296デフォルトの名無しさん
2021/02/13(土) 16:08:30.01ID:PEYbXliH297デフォルトの名無しさん
2021/02/13(土) 16:54:01.75ID:DnXSiThA298デフォルトの名無しさん
2021/02/16(火) 02:44:28.56ID:pZ2rkUjf >>296
それだと3になるが、何か間違ってる?
それだと3になるが、何か間違ってる?
299デフォルトの名無しさん
2021/02/16(火) 13:29:07.53ID:OrljmRcx 中央値は出現順の中央の値じゃないよ値の順の中央の値だよ
300デフォルトの名無しさん
2021/02/16(火) 15:39:23.69ID:kKLrubPe 1,2,3,100 の場合
中央値は 2.5 ですか?
それとも 2 または 3 ですか?
中央値は 2.5 ですか?
それとも 2 または 3 ですか?
301デフォルトの名無しさん
2021/02/16(火) 15:54:56.12ID:jXvMbypa 2.5
302デフォルトの名無しさん
2021/02/16(火) 16:24:23.86ID:9rD/rOgw floor(n/2) 番目の値とceiling(n/2)番目の値の平均
303デフォルトの名無しさん
2021/02/16(火) 16:26:57.56ID:9rD/rOgw 違う
floor ((n+1)/2)番目とceiling (n+1)/2)番目だ
floor ((n+1)/2)番目とceiling (n+1)/2)番目だ
304デフォルトの名無しさん
2021/02/16(火) 19:27:34.69ID:pa+9fqBa まぁ zero-based indices だと思えばどちらでも
305デフォルトの名無しさん
2021/02/16(火) 21:39:21.44ID:DqsYLnr9 要するにindexがa〜bならその中央値はfloor((a+b)/2)番目とceiling((a+b)/2)番目の平均
306デフォルトの名無しさん
2021/02/17(水) 02:38:49.68ID:wnjdp4RQ お題:数字をスワップせよ
時刻とスワップ対象が以下のフォーマットで与えられる
yyyy/mm/dd hh:MM:ss
a
b
a,bに指定された数字をスワップせよ
例:
入力
2021/02/17 02:37:41
yyyy
MM
出力
37/02/17 02:2021:41
時刻とスワップ対象が以下のフォーマットで与えられる
yyyy/mm/dd hh:MM:ss
a
b
a,bに指定された数字をスワップせよ
例:
入力
2021/02/17 02:37:41
yyyy
MM
出力
37/02/17 02:2021:41
308デフォルトの名無しさん
2021/02/17(水) 02:59:25.65ID:0wQZl1Sa そーっと修正
ソートだけに。
ソートだけに。
309デフォルトの名無しさん
2021/02/17(水) 18:52:45.47ID:XDfwrYfq310デフォルトの名無しさん
2021/02/17(水) 23:22:08.77ID:ELK1LugG311デフォルトの名無しさん
2021/02/18(木) 14:48:20.04ID:8Wc99cSo312デフォルトの名無しさん
2021/02/19(金) 21:01:44.21ID:mG/x1W/7 最近のC++って連想配列やら正規表現やらが標準で使えるんか
>>312
連想配列はプラプライレブン以前の旧C++ ですら map で扱えていました、正規表現はどうなのか私はよく知りません‥‥
連想配列はプラプライレブン以前の旧C++ ですら map で扱えていました、正規表現はどうなのか私はよく知りません‥‥
314デフォルトの名無しさん
2021/02/19(金) 22:26:39.65ID:YHwRlgSx 昔は正規表現つったらboost入れて使ってたよね(ヽ´ω`)
315デフォルトの名無しさん
2021/02/20(土) 14:40:24.94ID:ae+c9ZFQ 言われてみればmapはあってもおかしくないな
316デフォルトの名無しさん
2021/02/21(日) 05:12:22.50ID:LH12tPKD3179
2021/02/21(日) 17:08:49.59ID:0STFsetd >>306 Perl5
$f = 'yyyy/mm/dd hh:MM:ss';
@w = $f =~ /(\w+)/g;
%h = map{$_ => [index($f, $_), length $_]} @w;
$f =~ s/\w+/\$$&/g;
$f = 'print "'.$f.'\n"';
($s, $p, $v) = <>; chomp ($p, $v);
@g = map{substr $s, $h{$_}[0], $h{$_}[1]} @w;
${$w[$_]} = $g[$_] for 0..@w;
($$p, $$v) = ($$v, $$p);
eval $f;
実行結果
https://ideone.com/5ZWolC
$f = 'yyyy/mm/dd hh:MM:ss';
@w = $f =~ /(\w+)/g;
%h = map{$_ => [index($f, $_), length $_]} @w;
$f =~ s/\w+/\$$&/g;
$f = 'print "'.$f.'\n"';
($s, $p, $v) = <>; chomp ($p, $v);
@g = map{substr $s, $h{$_}[0], $h{$_}[1]} @w;
${$w[$_]} = $g[$_] for 0..@w;
($$p, $$v) = ($$v, $$p);
eval $f;
実行結果
https://ideone.com/5ZWolC
3189
2021/02/21(日) 17:45:26.06ID:0STFsetd >>317 もっとコンパクトに書けるんだった…orz
$f = 'yyyy/mm/dd hh:MM:ss';
@w = $f =~ /(\w+)/g;
($s, $p, $v) = <>; chomp ($p, $v);
@g = $s =~ /(\d+)/g;
${$w[$_]} = $g[$_] for 0..@w;
($$p, $$v) = ($$v, $$p);
print "$yyyy/$mm/$dd $hh:$MM:$ss\n";
あるいはもっと
@w = qw{yyyy mm dd hh MM ss};
($s, $p, $v) = <>; chomp ($p, $v);
@g = $s =~ /(\d+)/g;
${$w[$_]} = $g[$_] for 0..@w;
($$p, $$v) = ($$v, $$p);
print "$yyyy/$mm/$dd $hh:$MM:$ss\n";
$f = 'yyyy/mm/dd hh:MM:ss';
@w = $f =~ /(\w+)/g;
($s, $p, $v) = <>; chomp ($p, $v);
@g = $s =~ /(\d+)/g;
${$w[$_]} = $g[$_] for 0..@w;
($$p, $$v) = ($$v, $$p);
print "$yyyy/$mm/$dd $hh:$MM:$ss\n";
あるいはもっと
@w = qw{yyyy mm dd hh MM ss};
($s, $p, $v) = <>; chomp ($p, $v);
@g = $s =~ /(\d+)/g;
${$w[$_]} = $g[$_] for 0..@w;
($$p, $$v) = ($$v, $$p);
print "$yyyy/$mm/$dd $hh:$MM:$ss\n";
3199
2021/02/21(日) 23:56:18.66ID:9rEvZiNw >>306 Perl5、もっと素直にすんなり書けるんだった…><
%h = qw{yyyy 0 mm 2 dd 4 hh 6 MM 8 ss 10};
($s, $p, $v) = <>; chomp ($p, $v);
@f = $s =~ /(?:(\w+)(\W?))/g;
@f[@h{$p, $v}] = @f[@h{$v, $p}];
print @f;
実行結果
https://ideone.com/ROZTJ8
%h = qw{yyyy 0 mm 2 dd 4 hh 6 MM 8 ss 10};
($s, $p, $v) = <>; chomp ($p, $v);
@f = $s =~ /(?:(\w+)(\W?))/g;
@f[@h{$p, $v}] = @f[@h{$v, $p}];
print @f;
実行結果
https://ideone.com/ROZTJ8
320デフォルトの名無しさん
2021/02/24(水) 20:43:37.44ID:9WyyCWj2 お題:正の整数を入力として、後ろにアルファベットを2文字足して英語の基数詞を出力せよ
例) 入力=3 → 出力=3rd
入力=19 → 出力=19th
入力=2021 → 出力=2021st
ガイシュツかしら?
例) 入力=3 → 出力=3rd
入力=19 → 出力=19th
入力=2021 → 出力=2021st
ガイシュツかしら?
321デフォルトの名無しさん
2021/02/24(水) 20:47:15.38ID:CLu4HI+L 残念ながらガイシュツで、
海外のスゲー短いゴルフコードも紹介されてた希ガス
海外のスゲー短いゴルフコードも紹介されてた希ガス
322蟻人間 ◆T6xkBnTXz7B0
2021/02/24(水) 21:11:00.49ID:kiS4oMYm 既出(きしゅつ)
スゴい
貴ガス
スゴい
貴ガス
323デフォルトの名無しさん
2021/02/24(水) 21:11:11.90ID:MS8741jM >>320 Ruby
f = ->n{n.to_s + %w[th st nd rd][n % 10 > 3 || n / 10 % 10 == 1 ? 0 : n % 10]}
puts (0..27).map{f[_1]} # =>
0th
1st
2nd
3rd
4th
5th
6th
7th
8th
9th
10th
11th
12th
13th
14th
15th
16th
17th
18th
19th
20th
21st
22nd
23rd
24th
25th
26th
27th
f = ->n{n.to_s + %w[th st nd rd][n % 10 > 3 || n / 10 % 10 == 1 ? 0 : n % 10]}
puts (0..27).map{f[_1]} # =>
0th
1st
2nd
3rd
4th
5th
6th
7th
8th
9th
10th
11th
12th
13th
14th
15th
16th
17th
18th
19th
20th
21st
22nd
23rd
24th
25th
26th
27th
3249
2021/02/24(水) 22:18:34.47ID:h//dFdby >>320
プログラミングのお題スレ Part15
ttp://mevius.5ch.net/test/read.cgi/tech/1564310397/520
で回答したcode
%h = qw{1 st 2 nd 3 rd};
for (1..4,11,12,13,21,22,23,101,102,103,111,112,113,121,122,123, 2021) {
/(\d?)(\d)$/;
printf "$_ => $_%s\n", $1 eq 1 ? 'th' : $h{$2}//'th';
}
プログラミングのお題スレ Part15
ttp://mevius.5ch.net/test/read.cgi/tech/1564310397/520
で回答したcode
%h = qw{1 st 2 nd 3 rd};
for (1..4,11,12,13,21,22,23,101,102,103,111,112,113,121,122,123, 2021) {
/(\d?)(\d)$/;
printf "$_ => $_%s\n", $1 eq 1 ? 'th' : $h{$2}//'th';
}
325デフォルトの名無しさん
2021/02/25(木) 00:19:08.49ID:0ZJc0gxC 名題って感じはある
326デフォルトの名無しさん
2021/02/25(木) 00:20:19.11ID:0ZJc0gxC 命題じゃなくて名作なお題って意味な
327デフォルトの名無しさん
2021/02/25(木) 08:26:43.63ID:zwLHSsIw >>320
haskell
showOrd x = let
[ a, b ] = map ( mod ( x - 10 ) ) [ 10, 100 ]
s = show x
in case () of
_ | b < 10 -> s ++ "th"
_ | a == 1 -> s ++ "st"
_ | a == 2 -> s ++ "nd"
_ | a == 3 -> s ++ "rd"
_ -> s ++ "th"
main = mapM_ putStrLn [ showOrd x | x <- [ 1..30 ] ]
haskell
showOrd x = let
[ a, b ] = map ( mod ( x - 10 ) ) [ 10, 100 ]
s = show x
in case () of
_ | b < 10 -> s ++ "th"
_ | a == 1 -> s ++ "st"
_ | a == 2 -> s ++ "nd"
_ | a == 3 -> s ++ "rd"
_ -> s ++ "th"
main = mapM_ putStrLn [ showOrd x | x <- [ 1..30 ] ]
328デフォルトの名無しさん
2021/02/25(木) 19:39:59.07ID:mInD5Gs5 そもそも序数のルールがわからん
329デフォルトの名無しさん
2021/02/25(木) 21:07:06.25ID:AjdVnyQn お題:解析不能なでたらめな計算を行いなさい。
330デフォルトの名無しさん
2021/02/25(木) 22:20:10.63ID:2DtRWZ66331デフォルトの名無しさん
2021/02/26(金) 20:41:12.87ID:VIwm/s4p お題:1から100までFizzBuzzせよ
1から100までの数字を印刷するプログラムを作成します。
ただし、3の倍数の場合は数字の代わりに「Fizz」を出力し、
5の倍数の場合は「Buzz」を出力します。
3と5の両方の倍数である数の場合は「FizzBuzz」を出力します。
ocaml
https://ideone.com/cPM0O8
1から100までの数字を印刷するプログラムを作成します。
ただし、3の倍数の場合は数字の代わりに「Fizz」を出力し、
5の倍数の場合は「Buzz」を出力します。
3と5の両方の倍数である数の場合は「FizzBuzz」を出力します。
ocaml
https://ideone.com/cPM0O8
332デフォルトの名無しさん
2021/02/26(金) 21:17:58.20ID:X01OY8kD333デフォルトの名無しさん
2021/02/26(金) 22:03:32.89ID:FAHvqO9W >>331
haskell
fizzbuzz x = case () of
_ | mod x 15 == 0 -> "FizzBuzz"
_ | mod x 3 == 0 -> "Fizz"
_ | mod x 5 == 0 -> "Buzz"
_ | otherwise -> show x
main = mapM_ putStrLn $ [ fizzbuzz x | x <- [ 1..100 ] ]
https://ideone.com/XbOOp2
haskell
fizzbuzz x = case () of
_ | mod x 15 == 0 -> "FizzBuzz"
_ | mod x 3 == 0 -> "Fizz"
_ | mod x 5 == 0 -> "Buzz"
_ | otherwise -> show x
main = mapM_ putStrLn $ [ fizzbuzz x | x <- [ 1..100 ] ]
https://ideone.com/XbOOp2
334デフォルトの名無しさん
2021/02/27(土) 03:04:34.23ID:Npk4kHio335デフォルトの名無しさん
2021/02/27(土) 04:03:19.58ID:Npk4kHio >>331
Kotlin script
(1..100).forEach{n->println("${((if(n%3==0)"Fizz" else "")+(if(n%5==0)"Buzz" else "")).let{if(it=="")n.toString()else it}}")}
Kotlin script
(1..100).forEach{n->println("${((if(n%3==0)"Fizz" else "")+(if(n%5==0)"Buzz" else "")).let{if(it=="")n.toString()else it}}")}
336デフォルトの名無しさん
2021/02/27(土) 06:20:22.65ID:Npk4kHio337デフォルトの名無しさん
2021/02/27(土) 22:02:11.68ID:Odeyd4+A >>331 Ruby
(1..100).each{|i| puts ({1=>i, 3=>"Fizz", 5=>"Buzz", 15=>"FizzBuzz"})[i.gcd(15)]}
(1..100).each{|i| puts ({1=>i, 3=>"Fizz", 5=>"Buzz", 15=>"FizzBuzz"})[i.gcd(15)]}
338デフォルトの名無しさん
2021/02/27(土) 23:23:14.12ID:o4Z1lfzB >>331 Ruby
a = [0] * 100
2.step( 100, 3 ){|i| a[i] = 1 }
4.step( 100, 5 ){|i| a[i] += 2 }
100.times{|i|
puts (a[i] == 0)? i+1 : [ 'Fizz', 'Buzz', 'FizzBuzz' ][ a[i]-1 ]
}
a = [0] * 100
2.step( 100, 3 ){|i| a[i] = 1 }
4.step( 100, 5 ){|i| a[i] += 2 }
100.times{|i|
puts (a[i] == 0)? i+1 : [ 'Fizz', 'Buzz', 'FizzBuzz' ][ a[i]-1 ]
}
339デフォルトの名無しさん
2021/02/28(日) 01:09:45.97ID:XDGQU8wr >>337
それだ
gcdか
Haskell
fizzbuzz x = case gcd x 15 of
3 -> "Fizz"
5 -> "Buzz"
15 -> "FizzBuzz"
_ -> show x
main = mapM_ putStrLn $ [ fizzbuzz x | x <- [ 1..100 ] ]
思いつかなかったorz
それだ
gcdか
Haskell
fizzbuzz x = case gcd x 15 of
3 -> "Fizz"
5 -> "Buzz"
15 -> "FizzBuzz"
_ -> show x
main = mapM_ putStrLn $ [ fizzbuzz x | x <- [ 1..100 ] ]
思いつかなかったorz
340デフォルトの名無しさん
2021/02/28(日) 04:20:52.22ID:IOkXkIHX341デフォルトの名無しさん
2021/02/28(日) 16:05:25.11ID:fTSKNjoz342デフォルトの名無しさん
2021/02/28(日) 18:07:34.78ID:IOkXkIHX お題
連続する文字列を抽出してください
入力: むかしむかし、あるところにワッフルワッフルがありました
出力: むかし, ワッフル
連続する文字列を抽出してください
入力: むかしむかし、あるところにワッフルワッフルがありました
出力: むかし, ワッフル
343デフォルトの名無しさん
2021/02/28(日) 18:21:17.82ID:CE4rzHHA344デフォルトの名無しさん
2021/02/28(日) 19:55:53.64ID:TzXN37YB むかしむかしむかし、あるところにワッフルワッフルワッフルがありました
345デフォルトの名無しさん
2021/03/01(月) 00:40:25.00ID:p5xNM3/l >>341
なるほど。さすが。
なるほど。さすが。
346デフォルトの名無しさん
2021/03/01(月) 00:53:54.32ID:p5xNM3/l347デフォルトの名無しさん
2021/03/01(月) 01:26:40.92ID:p5xNM3/l348デフォルトの名無しさん
2021/03/01(月) 01:52:05.52ID:p5xNM3/l >>346>>347は4連続だとうまく行かなかったのでちょっと直した。
(.+)\1+ じゃなくて (.+?)\1+ でないと4連続が2連続で一塊になってしまった。
(.+)\1+ じゃなくて (.+?)\1+ でないと4連続が2連続で一塊になってしまった。
349デフォルトの名無しさん
2021/03/01(月) 06:09:35.91ID:qZSBj0Ir >>348
aabbccaabbcc
aabbccaabbcc
350デフォルトの名無しさん
2021/03/01(月) 09:45:20.56ID:6wDZP3ri351デフォルトの名無しさん
2021/03/01(月) 09:54:04.38ID:cH5Ajc9f そもそも問題の解釈が色々あるよな
ワッフルワッフルワッフルワッフル
が入力に入ってるとき最長の
ワッフルワッフル
を出力するのか2通りの読み方の
ワッフル、ワッフルワッフル
の両方を出力するのか
ワッフルワッフルうまいワッフルうまい
の場合出力は
ワッフル、ワッフルうまい
両方なのかどっちか消すのか
試験じゃないんだから好きに解釈していいのかもしれんけど
ワッフルワッフルワッフルワッフル
が入力に入ってるとき最長の
ワッフルワッフル
を出力するのか2通りの読み方の
ワッフル、ワッフルワッフル
の両方を出力するのか
ワッフルワッフルうまいワッフルうまい
の場合出力は
ワッフル、ワッフルうまい
両方なのかどっちか消すのか
試験じゃないんだから好きに解釈していいのかもしれんけど
352デフォルトの名無しさん
2021/03/01(月) 10:22:04.90ID:cH5Ajc9f353デフォルトの名無しさん
2021/03/01(月) 10:32:22.18ID:Mo8KnFXk > 2通りの読み方の ワッフル、ワッフルワッフル の両方を出力するのか
これは辞書持たせないと無理だから現実的では無いでしょ
最長解(複数あるなら全てか最初の一つ)、或いは最短、全パターン列挙でないと
ワッフル,ッフルワ,フルワッ,ルワッフ,ワッフルワッフル
これは辞書持たせないと無理だから現実的では無いでしょ
最長解(複数あるなら全てか最初の一つ)、或いは最短、全パターン列挙でないと
ワッフル,ッフルワ,フルワッ,ルワッフ,ワッフルワッフル
354デフォルトの名無しさん
2021/03/01(月) 10:39:57.80ID:cH5Ajc9f >>353
どのみち計算量はn^2で定数分しか差ないのでは?
どのみち計算量はn^2で定数分しか差ないのでは?
355デフォルトの名無しさん
2021/03/01(月) 14:37:12.97ID:cH5Ajc9f お題 ルートとガウス
数学板より
c = 50 + √2501 とする
整数列anが漸化式
a0 = 1
a(n+1) = [ ca(n) ]
で与えられているときa(n)の下2桁をn:0〜100の範囲で表示しなさい
----
ちなみに理詰めなら答えはすぐ出ます
しかしFloatやDoubleでは最初の10項位で桁溢れで詰みます
どうしますかというお題
数学板より
c = 50 + √2501 とする
整数列anが漸化式
a0 = 1
a(n+1) = [ ca(n) ]
で与えられているときa(n)の下2桁をn:0〜100の範囲で表示しなさい
----
ちなみに理詰めなら答えはすぐ出ます
しかしFloatやDoubleでは最初の10項位で桁溢れで詰みます
どうしますかというお題
356デフォルトの名無しさん
2021/03/02(火) 19:32:58.96ID:g3RlIqNH 数学、か・・・
357デフォルトの名無しさん
2021/03/02(火) 20:32:51.08ID:uJxPOgJJ 数学の知識がなくても
計算の精度をあげれば解けなくもない
計算の精度をあげれば解けなくもない
3589
2021/03/02(火) 22:27:40.30ID:ZQFUTTJw >>357
a0はa(0)のこと?
ca(n)はc*a(n)?
[ ] でくくっている意味は?
整数列ってことは整数化すると思うけど切り捨て?四捨五入?
以上素朴な疑問。
なお回答コードを書くかは、未定です
a0はa(0)のこと?
ca(n)はc*a(n)?
[ ] でくくっている意味は?
整数列ってことは整数化すると思うけど切り捨て?四捨五入?
以上素朴な疑問。
なお回答コードを書くかは、未定です
359デフォルトの名無しさん
2021/03/02(火) 22:32:43.53ID:zfPXLdcN >>358
ガウス記号しらんのか?
ガウス記号しらんのか?
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国、日本渡航に再警告 「侮辱や暴行で複数の負傷報告」★2 [ぐれ★]
- トランプ氏、日中の対立を懸念 首相に「エスカレート回避を」-日本政府関係者(共同) [蚤の市★]
- 高市早苗氏「“裏金問題”の調査をすると約束しましたが調査結果を公表するとは約束してません」 [バイト歴50年★]
- 【テレビ】玉川徹「これ天災じゃなくて人災でしょ。責任どうするんだ」 日本のホテル、中国人観光客からのキャンセルが相次ぐ [冬月記者★]
- 【台湾有事】トランプ氏 電話会談で高市総理に発言抑制を要求か 米メディア報道… ★11 [BFU★]
- 高市総理の「そんなことよりも」発言を釈明 木原官房長官「急いで話題転換する趣旨」 [ぐれ★]
- 【実況】博衣こよりのえちえち4周年カウントダウン🧪★4
- 【高市悲報】中国、世界中に是非を問うwwwwwwwwwwwwwwwwwww [308389511]
- 日本人、値上げで準チョコすら買えなくなりココアパウダーを固めたチョコもどきがで回り始める [931948549]
- 加工肉はやめろおじさん「加工肉はやめろ」
- 【実況】博衣こよりのえちえち4周年カウントダウン🧪★5
- 中国政府、非常にしつこい。本日も改めて「高市が正式に答弁を撤回するまで決して受け入れない」と表明。 [271912485]
