プログラミングのお題スレです。
【出題と回答例】
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
207デフォルトの名無しさん
2021/01/11(月) 03:09:40.17ID:H8GM2Hiz 無理です
チンパンカンプン
チンパンカンプン
208デフォルトの名無しさん
2021/01/11(月) 03:11:51.27ID:yhMi8PUx このスレの住人なら日本語分からなくても例だけ見れば普通に理解できるだろ
IQテストみたいなもんだ
IQテストみたいなもんだ
209デフォルトの名無しさん
2021/01/11(月) 03:26:31.03ID:yIQfxhn8 >>206
こういう事じゃない?
入力値が遡って比較する最大個数と値を兼ねてるんでしょ
同値ならindex(1始まり)の大きい方
入力:3 1 2 6 6 4
3 [(3)] →1
1 [3 (1)] →1
2 [3 (1 2)] →2
6 [(3 1 2 6)] →4
6 [(3 1 2 6 6)] →5
4 [3 1 (2 6 6 4)] →3
こういう事じゃない?
入力値が遡って比較する最大個数と値を兼ねてるんでしょ
同値ならindex(1始まり)の大きい方
入力:3 1 2 6 6 4
3 [(3)] →1
1 [3 (1)] →1
2 [3 (1 2)] →2
6 [(3 1 2 6)] →4
6 [(3 1 2 6 6)] →5
4 [3 1 (2 6 6 4)] →3
210デフォルトの名無しさん
2021/01/11(月) 03:36:50.19ID:yhMi8PUx >>209
最後の4違うぞ
入力:3 1 2 6 6 4
3 [(3)] →1
1 [3 (1)] →1
2 [3 (1 2)] →2
6 [(3 1 2 6)] →4
6 [(3 1 2 6 6)] →5
4 [3 1 2 6 6 (4)] →1
x_iは要素数。上の例でいうと()の中の数が何個あるかってこと。で、(右から)直近の要素の中での最大値が一番右の数字になるのは最大でいくつかってこと。
一番下の4のケースでは次の6を含んでしまうとMAXが4にはならないので要素数1で打ち止め。
最後の4違うぞ
入力:3 1 2 6 6 4
3 [(3)] →1
1 [3 (1)] →1
2 [3 (1 2)] →2
6 [(3 1 2 6)] →4
6 [(3 1 2 6 6)] →5
4 [3 1 2 6 6 (4)] →1
x_iは要素数。上の例でいうと()の中の数が何個あるかってこと。で、(右から)直近の要素の中での最大値が一番右の数字になるのは最大でいくつかってこと。
一番下の4のケースでは次の6を含んでしまうとMAXが4にはならないので要素数1で打ち止め。
211デフォルトの名無しさん
2021/01/11(月) 12:34:34.25ID:kY9pcTJO 現在地から前に遡って見ていって自分と同じか小さい要素が続く数を
最初から最後まで求めるだけ
もっと早く一発で求める方法があるかは分からないけど
最初から最後まで求めるだけ
もっと早く一発で求める方法があるかは分からないけど
212デフォルトの名無しさん
2021/01/11(月) 12:57:43.66ID:ySa6yihW >>206
長さ N の整数列 A が与えられる
A の連続した部分列であって、各 i (1≦i≦N) について次の条件を満たすものをすべて求めなさい
・整数 j (1≦j≦i) を max(A_j, A_{j+1}, ..., A_i) = A_i を満たす最小の j とし i - j + 1 の値
長さ N の整数列 A が与えられる
A の連続した部分列であって、各 i (1≦i≦N) について次の条件を満たすものをすべて求めなさい
・整数 j (1≦j≦i) を max(A_j, A_{j+1}, ..., A_i) = A_i を満たす最小の j とし i - j + 1 の値
213デフォルトの名無しさん
2021/01/11(月) 13:02:19.99ID:H8GM2Hiz 最高水準位アルゴリズムで
最高値更新したら発表?
最高値更新したら発表?
214デフォルトの名無しさん
2021/01/11(月) 14:52:41.81ID:SkhM8/Y0 >>196 C++ O(N log N)
セグメント木を使うと区間 max の二分探索を O(log N) で行える
atcoder の aclib を使用
https://wandbox.org/permlink/8rm8MsauDMJhvpAf
セグメント木を使うと区間 max の二分探索を O(log N) で行える
atcoder の aclib を使用
https://wandbox.org/permlink/8rm8MsauDMJhvpAf
215デフォルトの名無しさん
2021/01/11(月) 15:14:59.89ID:WVZOdukT >>214
しゅんごい
しゅんごい
216デフォルトの名無しさん
2021/01/14(木) 09:22:07.11ID:0HXe7q2K お題
将棋のルールで可能な最初の2手を全て求める。
将棋のルールで可能な最初の2手を全て求める。
217デフォルトの名無しさん
2021/01/14(木) 11:00:00.08ID:5lV9HJJA なるほど
(∞,0)のみからなるリストから始めて(-値、インデックス)についての辞書式順序(ただしインデックスは降順)でリストに追加していくと考えればいいのか
i番目の要素(v,i)が来た時(u,h)<(w,j)の間に入るならvより大きい最大のインデックスはjだからi番目の出力はi-jになるのか
(∞,0)のみからなるリストから始めて(-値、インデックス)についての辞書式順序(ただしインデックスは降順)でリストに追加していくと考えればいいのか
i番目の要素(v,i)が来た時(u,h)<(w,j)の間に入るならvより大きい最大のインデックスはjだからi番目の出力はi-jになるのか
>>216
すてきなお題ですね!
すてきなお題ですね!
219デフォルトの名無しさん
2021/01/14(木) 19:35:36.96ID:oX4ff6VG >>216
先手後手ともに可能性が30通りあるのでそれらを単純に組み合わせて出力すれば良い
先手後手ともに可能性が30通りあるのでそれらを単純に組み合わせて出力すれば良い
220デフォルトの名無しさん
2021/01/14(木) 19:43:46.53ID:HoJSCLGU 3手なら面白いけど2手ならつまらんな
221デフォルトの名無しさん
2021/01/16(土) 10:11:02.80ID:CT7MjBNX 最初の初期状態の配置ならつまらんね
途中経過のどの状態からでもすべての2手(3手でもいいよ!)を出力とかなら
本格的な将棋プログラム組まないと導き出せない
途中経過のどの状態からでもすべての2手(3手でもいいよ!)を出力とかなら
本格的な将棋プログラム組まないと導き出せない
222デフォルトの名無しさん
2021/01/16(土) 19:29:58.68ID:GH8NFez6 投了も一手ですか
223デフォルトの名無しさん
2021/01/19(火) 19:16:59.47ID:Sd54NdA6 iZ-Cでサンプルログラムを書き始めました見てね
https://sunasunax.hatenablog.com
https://sunasunax.hatenablog.com
224デフォルトの名無しさん
2021/01/22(金) 23:33:42.04ID:YvJFxrRj お題:sortしてreverseしてforeachせよ
https://ideone.com/35HTkC
List(7, 8, 3, 6, 4).sorted.reverse.foreach(print)
https://ideone.com/35HTkC
List(7, 8, 3, 6, 4).sorted.reverse.foreach(print)
225224
2021/01/22(金) 23:35:12.02ID:YvJFxrRj >>224 rust
https://ideone.com/SY2DMY
fn main() {
let mut v = [7, 8, 3, 6, 4];
v.sort();
v.reverse();
v.iter().for_each(|x| println!("{}", x));
}
>>224 dart
https://ideone.com/w26D8S
void main() {
var a = [7, 8, 3, 6, 4];
a.sort();
a.reversed.forEach(print);
}
https://ideone.com/SY2DMY
fn main() {
let mut v = [7, 8, 3, 6, 4];
v.sort();
v.reverse();
v.iter().for_each(|x| println!("{}", x));
}
>>224 dart
https://ideone.com/w26D8S
void main() {
var a = [7, 8, 3, 6, 4];
a.sort();
a.reversed.forEach(print);
}
226224
2021/01/22(金) 23:37:05.96ID:YvJFxrRj >>224 ocaml
https://ideone.com/bitFC6
List.iter print_int (List.rev (List.sort Pervasives.compare [7; 8; 3; 6; 4]))
>>224 ruby
https://ideone.com/K14REi
[7, 8, 3, 6, 4].sort.reverse.each(&method(:p))
>>224 octave
https://ideone.com/E2DoUr
arrayfun(@disp, flip(sort([7 8 3 6 4])))
https://ideone.com/bitFC6
List.iter print_int (List.rev (List.sort Pervasives.compare [7; 8; 3; 6; 4]))
>>224 ruby
https://ideone.com/K14REi
[7, 8, 3, 6, 4].sort.reverse.each(&method(:p))
>>224 octave
https://ideone.com/E2DoUr
arrayfun(@disp, flip(sort([7 8 3 6 4])))
227デフォルトの名無しさん
2021/01/23(土) 01:20:49.53ID:a67PVVr/ >>224 C++
for (auto i : multiset<int, greater<int>>({ 7, 8, 3, 6, 4 })) cout << i << endl;
for (auto i : multiset<int, greater<int>>({ 7, 8, 3, 6, 4 })) cout << i << endl;
2289
2021/01/23(土) 02:47:09.23ID:ujFWsLg62299
2021/01/23(土) 02:50:17.66ID:ujFWsLg6230デフォルトの名無しさん
2021/01/23(土) 08:37:55.12ID:Q7562aLA231デフォルトの名無しさん
2021/01/23(土) 09:17:41.00ID:hW9MnAUE232デフォルトの名無しさん
2021/01/23(土) 19:28:56.89ID:7cx92kva お題: 俺のチ〇コの長さ分だけfor文でカウントしてカウント変数を出力せよ
233デフォルトの名無しさん
2021/01/23(土) 19:32:36.06ID:MJXAM7AO print "9"
234デフォルトの名無しさん
2021/01/23(土) 20:01:06.10ID:iIWri5S9235蟻人間 ◆T6xkBnTXz7B0
2021/01/23(土) 21:37:12.62ID:b5t030Zm お題: 日付をYYYYMMDD形式で表したとき、それを表す整数が今日より後に素数になる日付を求めなさい。
236デフォルトの名無しさん
2021/01/23(土) 23:19:53.94ID:Itdr917H それを表す整数とは?
237デフォルトの名無しさん
2021/01/24(日) 22:28:15.93ID:M/FZzV8o >>224
Kotlin script
kotlinc コマンドで REPL にして直接入力して実行した時のコピー。(>>> はプロンプト)
出力は println() を使って1つづつ改行させた。
>>> listOf(7, 8, 3, 6, 4).sorted().reversed().forEach { println(it) }
8
7
6
4
3
>>>
Kotlin script
kotlinc コマンドで REPL にして直接入力して実行した時のコピー。(>>> はプロンプト)
出力は println() を使って1つづつ改行させた。
>>> listOf(7, 8, 3, 6, 4).sorted().reversed().forEach { println(it) }
8
7
6
4
3
>>>
238デフォルトの名無しさん
2021/01/25(月) 14:58:49.27ID:IfPISeNx お題:
整数 N が与えられます
長さ N の正整数列 A_1, ..., A_N であって以下の条件を満たす lcm(A_1, ..., A_N) が最小のものを求めなさい
・gcd(A_1, A_2) * gcd(A_2, A_3) * ... * gcd(A_{N-1}, A_N) * gcd(A_N, A_1) = lcm(A_1, ..., A_N)
制約:
3≦N≦4000
例:
入力: 5
出力: 6 15 35 77 22
整数 N が与えられます
長さ N の正整数列 A_1, ..., A_N であって以下の条件を満たす lcm(A_1, ..., A_N) が最小のものを求めなさい
・gcd(A_1, A_2) * gcd(A_2, A_3) * ... * gcd(A_{N-1}, A_N) * gcd(A_N, A_1) = lcm(A_1, ..., A_N)
制約:
3≦N≦4000
例:
入力: 5
出力: 6 15 35 77 22
239デフォルトの名無しさん
2021/01/25(月) 16:12:04.01ID:83sbARL7 逆じゃね
240デフォルトの名無しさん
2021/01/25(月) 17:27:32.13ID:+X0AlmLX >>238 perl
print join ' ', (1) x $ARGV[0];
print join ' ', (1) x $ARGV[0];
241デフォルトの名無しさん
2021/01/25(月) 17:53:44.58ID:7Hdxu6ox A の全ては互いに異なる
を入れ忘れた
を入れ忘れた
242デフォルトの名無しさん
2021/01/25(月) 17:58:02.52ID:4bSc4UCm Aiの制約で....
Aiが異なる正整数なら
N=5 [1,2,4,8,64] ->lcm=64
Ai>=3 なら
N=5 [5,7,14,6,15] -> lcm=210(=1*2*3*5*7)
(同じlcmで数列は複数作れる)
※あの例はどういう条件だろう
Aiが異なる正整数なら
N=5 [1,2,4,8,64] ->lcm=64
Ai>=3 なら
N=5 [5,7,14,6,15] -> lcm=210(=1*2*3*5*7)
(同じlcmで数列は複数作れる)
※あの例はどういう条件だろう
243デフォルトの名無しさん
2021/01/25(月) 18:08:39.30ID:gx6uUcGg >>238
gcd とか lcm って何?
gcd とか lcm って何?
244デフォルトの名無しさん
2021/01/25(月) 18:09:29.39ID:7Hdxu6ox すいません...
素数を小さい順に組み合わせて 2*3, 3*5, 5*7, 7*11, 11*2
とすると綺麗に数列が作れていいなーと思って投稿したのですが、最小ではなかったようです...
このお題は無かったことに
素数を小さい順に組み合わせて 2*3, 3*5, 5*7, 7*11, 11*2
とすると綺麗に数列が作れていいなーと思って投稿したのですが、最小ではなかったようです...
このお題は無かったことに
245デフォルトの名無しさん
2021/01/25(月) 18:10:17.78ID:gx6uUcGg あ、わかった。ググったら一発で出た。
246デフォルトの名無しさん
2021/01/25(月) 18:11:02.14ID:gx6uUcGg 分かった途端に終了、か・・・
247デフォルトの名無しさん
2021/01/25(月) 18:14:04.63ID:OnR5hlkf 没入感
248デフォルトの名無しさん
2021/01/25(月) 19:20:16.85ID:+q31tGtg お題、灘中入試っぽい問題
開始点S から、終点G まで、最短距離9 で移動する方法は、何通りあるか?
移動は右か下へ、1ずつ移動できるが、* は通れない所である。
数字は通れる所で、単に分かりやすくするために座標を書いただけで、移動コストではない
S23456
12*456
1234*6
123456
12345G
開始点S から、終点G まで、最短距離9 で移動する方法は、何通りあるか?
移動は右か下へ、1ずつ移動できるが、* は通れない所である。
数字は通れる所で、単に分かりやすくするために座標を書いただけで、移動コストではない
S23456
12*456
1234*6
123456
12345G
249デフォルトの名無しさん
2021/01/25(月) 19:34:10.13ID:0+9yE5E1 プログラムなら実際に駒動かしてかぞえるの?
なんか、足し算引き算で出来そうだよね、
なんか、足し算引き算で出来そうだよね、
250デフォルトの名無しさん
2021/01/25(月) 20:22:00.10ID:wN/P4Ly9 別名おねえさん問題
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
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 「日本が戦争に一歩踏み出す危機感」官邸前で抗議デモ 高市総理“台湾有事”発言の撤回求める 中国メディアの姿も [蚤の市★]
- 【沖縄】『ジャングリア沖縄』開業4か月で「ガラガラ」「当然の結果」衝撃の閑散ぶりで気になる来場者数 [煮卵★]
- 「風呂キャンセル界隈」の夫と離婚できる? 不潔すぎる配偶者に絶望する妻たちの切実な声 [少考さん★]
- 【クマ】「人間が優先で何をしてもいいとなったら、世の中はおかしなことになる」「クマがいる自然を自慢してもいい…」北海道獣医 [少考さん★]
- 日銀が円安進行を警戒 物価高に懸念、利上げ観測も きっかけは高市首相の経済対策で財政規律が悪化するとの懸念による「日本売り」★2 [ぐれ★]
- 【テレビ】片山さつき財務相 18兆円の補正予算案、財政規律派に「無駄にどこかに消えちゃうお金は一銭もない」 [少考さん★]
- 水道の水源、何水系なら当たりなの?(´・ω・`)【東京・横浜】 [399259198]
- 小林鷹之「経済の中国依存から脱却して将来的にはゼロに近づける。世論が高市首相を批判すれば誰が得をするか考えて欲しい」★2 [931948549]
- 小林鷹之「経済の中国依存から脱却して将来的にはゼロに近づける。世論が高市首相を批判すれば誰が得をするか考えて欲しい」 [931948549]
- んなぁ…🍬…んなたん起きたのらよぉ🍬✋…🏡
- 高市総理叩いてる人たちってじゃあ中国が突然日本を攻めてきたらどうするの? [268718286]
- Z世代「手取り月30万・リモート可・年休125・残業10h未満。これが最低ライン」 高市震える [177316839]
