プログラミングのお題スレです。
【出題と回答例】
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
251デフォルトの名無しさん
2021/01/25(月) 20:24:55.52ID:xOoQiCMv ∴>>250
その心は?
その心は?
252デフォルトの名無しさん
2021/01/25(月) 21:25:54.70ID:+X0AlmLX253248
2021/01/25(月) 21:35:28.96ID:+q31tGtg お姉さん問題なら、
Ruby で、そのライブラリを使って解いてみて
Ruby で、そのライブラリを使って解いてみて
254248
2021/01/25(月) 21:48:23.33ID:+q31tGtg 超高速グラフ列挙アルゴリズム 〈フカシギの数え方〉おねえさん問題
BDD/ZDD の湊真一が、北大から京大大学院の教授へと出世してる
BDD/ZDD の湊真一が、北大から京大大学院の教授へと出世してる
255デフォルトの名無しさん
2021/01/25(月) 21:53:57.03ID:p4r3cpqk https://ideone.com/b2CQ5a
48ってなったからあってるのかな適当に作ったけど
48ってなったからあってるのかな適当に作ったけど
256デフォルトの名無しさん
2021/01/26(火) 00:35:19.40ID:rfDeWxg0 お題:
これ出題してみるか。
黒板に1〜nの自然数が一つずつ書かれている。
二人でかわりばんこに次のルールで黒板に書かれた自然数を消していくゲームをする:
・自分の番のとき、黒板に残っている数から一つ選び、
その数及びその数の約数をすべて消す。
・自分の番で黒板の数をすべて消し去ったとき勝者となる。
実はこのゲームはnによらず先攻必勝であるが、初手をどう打つかを判断するのは簡単でない。
1〜30のすべての自然数nについて、後攻を勝たせないために初手で先攻が選ぶことができる数をプログラム中で5秒以内に計算し、すべて列挙せよ。
これ出題してみるか。
黒板に1〜nの自然数が一つずつ書かれている。
二人でかわりばんこに次のルールで黒板に書かれた自然数を消していくゲームをする:
・自分の番のとき、黒板に残っている数から一つ選び、
その数及びその数の約数をすべて消す。
・自分の番で黒板の数をすべて消し去ったとき勝者となる。
実はこのゲームはnによらず先攻必勝であるが、初手をどう打つかを判断するのは簡単でない。
1〜30のすべての自然数nについて、後攻を勝たせないために初手で先攻が選ぶことができる数をプログラム中で5秒以内に計算し、すべて列挙せよ。
257デフォルトの名無しさん
2021/01/26(火) 00:44:35.83ID:3iTHw7RX 1〜30ならデータベース化してしまえばなんとかなるな
258デフォルトの名無しさん
2021/01/26(火) 01:03:48.09ID:c6DHU6bT259デフォルトの名無しさん
2021/01/26(火) 05:34:51.12ID:a1XSwUuB >>248
9C4 - 3C1 * 6C3 - 6C2 * 3C1 + 3C1 * 3C1 * 3C1 = 48
9C4 - 3C1 * 6C3 - 6C2 * 3C1 + 3C1 * 3C1 * 3C1 = 48
260デフォルトの名無しさん
2021/01/26(火) 12:22:51.81ID:V3RlvyIn >>248
お受験風にdpで数え上げる
Haskell
test1 = ""
++ "┏┳━┳┳┓\n"
++ "┣┫ ┣┻┫\n"
++ "┣╋┳┫ ┃\n"
++ "┣╋╋╋┳┫\n"
++ "┗┻┻┻┻┛\n"
to01 = let
parseC c = if c == '\x2001' then 0 else 1
parseL = map ( parseC )
in map parseL . lines
cntRoots posCrs = let
z y x = zipWith ( * ) y $ zipWith ( + ) x $ ( 0 : ) $ z y x
rs = id
$ ( ( 1 : ( repeat 0 ) ) : )
$ zipWith z posCrs rs
in rs
nRoots = last . last . cntRoots
main = print $ nRoots $ to01 test1
----
48
お受験風にdpで数え上げる
Haskell
test1 = ""
++ "┏┳━┳┳┓\n"
++ "┣┫ ┣┻┫\n"
++ "┣╋┳┫ ┃\n"
++ "┣╋╋╋┳┫\n"
++ "┗┻┻┻┻┛\n"
to01 = let
parseC c = if c == '\x2001' then 0 else 1
parseL = map ( parseC )
in map parseL . lines
cntRoots posCrs = let
z y x = zipWith ( * ) y $ zipWith ( + ) x $ ( 0 : ) $ z y x
rs = id
$ ( ( 1 : ( repeat 0 ) ) : )
$ zipWith z posCrs rs
in rs
nRoots = last . last . cntRoots
main = print $ nRoots $ to01 test1
----
48
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:6wDZP3ri■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 🇺🇸🇨🇳米中関係は「極めて強固」とトランプ氏… ★6 [BFU★]
- 【足立区暴走11人死傷】歩行者はねた後も減速せず…精神疾患がある37歳男「車で神奈川の山の方に行きたいと思った」 [ぐれ★]
- 【フジ】クリスマスイブ恒例の「明石家サンタ」見送りへ 今年は「お笑い向上委員会」SP放送 [征夷大将軍★]
- SuicaとPASMOのコード決済「teppay(テッペイ)」26年秋開始 🐧🤖 [少考さん★]
- 琵琶湖の水位低下が進行 滋賀県が2年ぶり、国に対策要望 [少考さん★]
- 「ホストに貢ぎたい」と海外で売春する日本人女性 2カ月で2千万円稼ぐケースも [1ゲットロボ★]
- 【悲報】高市がG20に遅刻した理由、未だに分からない🤔 [359965264]
- 防衛省「台湾有事にロシア参戦するかも」 [177178129]
- 中国は早く日本へのレアアース供給を停止しろ!!ネトウヨと高市早苗に思い知らせてやってよ中国父さん!! [817148728]
- 【高市悲報】小野田紀美大臣(35)、マウントの取れる勝負衣装を叩かれツイッターでブチギレwmwmwmwmmwmwmwmww [517459952]
- 台湾「習主席がトランプ大統領との電話会談で台湾問題を言及しなかったことは台湾にとって最良の結果」高市ハシゴ外されるwwwww [931948549]
- 【高市速報】コンバースのスニーカーが再びブームに🔥🔥wwwwwwwwwwwwwwww ここに着て履いてるやつが爆増 [573041775]
