プログラミングのお題スレです。
【出題と回答例】
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/
宿題は宿題スレがあるのでそちらへ。
※前スレ
プログラミングのお題スレ Part20
https://mevius.5ch.net/test/read.cgi/tech/1624028577/
探検
プログラミングのお題スレ Part21
レス数が1000を超えています。これ以上書き込みはできません。
2022/11/13(日) 19:00:36.84ID:ZCYlhUwL
2デフォルトの名無しさん
2022/11/13(日) 19:38:30.54ID:5vwp7vxt https://mobile.twitter.com/mashino8
小中学校教諭はマクドナルドのアルバイトと同じ最低賃金でかつ資格は不要。
プログラミングを他人に教えるなら、まず自作プログラミングを模範として開陳すること。
形式よりもデザインの独自性を追求する。「車輪の再発明」はいらない。
https://twitter.com/5chan_nel (5ch newer account)
小中学校教諭はマクドナルドのアルバイトと同じ最低賃金でかつ資格は不要。
プログラミングを他人に教えるなら、まず自作プログラミングを模範として開陳すること。
形式よりもデザインの独自性を追求する。「車輪の再発明」はいらない。
https://twitter.com/5chan_nel (5ch newer account)
2022/11/13(日) 20:02:45.09ID:9nPd4Cxf
乙
4デフォルトの名無しさん
2022/11/13(日) 20:28:09.14ID:/iUKLzwe >>2
日本語でおk
日本語でおk
5デフォルトの名無しさん
2022/11/14(月) 07:52:53.78ID:p8dKwuQs それじゃあこのスレがどれだけ実力があるのかお題だすね
物体認識で手を認識させたときの指先のトラッキングをやってみてください
物体認識のモデルはすでに学習済みと仮定あとはカメラで写ってる指先の特徴点のポイントを取得するだけです
物体認識で手を認識させたときの指先のトラッキングをやってみてください
物体認識のモデルはすでに学習済みと仮定あとはカメラで写ってる指先の特徴点のポイントを取得するだけです
2022/11/14(月) 07:58:49.75ID:pZNm0HpP
じゃあその学習済みモデルくれよ…
7デフォルトの名無しさん
2022/11/14(月) 09:49:45.14ID:p8dKwuQs >>6
たしかに…無いとテストとかもできんもんな…
たしかに…無いとテストとかもできんもんな…
2022/11/14(月) 20:06:53.85ID:mWdJBHQd
お題:自然数nが奇数かどうかチェックする関数oddを定義せよ
c
https://ideone.com/gdiEYq
//int odd(int n) {return n & 1;}
int odd(int);
int even(int n) {return n == 0 ? 1 : odd(n - 1);}
int odd(int n) {return n == 0 ? 0 : even(n - 1);}
ocaml
https://ideone.com/LYsHsF
let rec even = function 0 -> true | n -> odd (n - 1)
and odd = function 0 -> false | n -> even (n - 1)
c
https://ideone.com/gdiEYq
//int odd(int n) {return n & 1;}
int odd(int);
int even(int n) {return n == 0 ? 1 : odd(n - 1);}
int odd(int n) {return n == 0 ? 0 : even(n - 1);}
ocaml
https://ideone.com/LYsHsF
let rec even = function 0 -> true | n -> odd (n - 1)
and odd = function 0 -> false | n -> even (n - 1)
9デフォルトの名無しさん
2022/11/14(月) 20:10:03.72ID:p8dKwuQs >>8
自分で書くのかよ
自分で書くのかよ
2022/11/14(月) 20:46:27.81ID:77ck4Qph
かなり昔に寿司問題というのがあってそれが難しかった記憶だが
問題を忘れた
問題を忘れた
2022/11/14(月) 20:49:33.61ID:77ck4Qph
検索したら見つかった、これ
回転寿司にやってきた私は、コンベア上の寿司をすべて食べて帰ることにしている。
コンベアは毎秒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" > ?
回転寿司にやってきた私は、コンベア上の寿司をすべて食べて帰ることにしている。
コンベアは毎秒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" > ?
2022/11/14(月) 22:20:48.72ID:bi78lbTB
1から3999までのローマ数字が与えられるのでそれを算用数字で表示する
例
IV -> 4
XLIX -> 49
CDXLIII -> 443
例
IV -> 4
XLIX -> 49
CDXLIII -> 443
2022/11/15(火) 06:20:24.94ID:JkHLyKfV
2022/11/15(火) 08:17:52.42ID:nxwaFDXa
2022/11/15(火) 12:07:08.40ID:Er9Q2z1T
寿司問題はやり方考えたが確認はしてない
再帰的に解けると想定
寿司2個を食べ終わる時間で寿司1個であるかのようにみなす (寿司セット)
たとえば寿司3個の場合なら、最も最短時間の寿司セットを作って寿司2個の場合に帰着させたら解けるはず
最も最短時間の寿司セットというは合ってるか不明だが、そういうやり方で少ない寿司の場合にもっていけるはず
再帰的に解けると想定
寿司2個を食べ終わる時間で寿司1個であるかのようにみなす (寿司セット)
たとえば寿司3個の場合なら、最も最短時間の寿司セットを作って寿司2個の場合に帰着させたら解けるはず
最も最短時間の寿司セットというは合ってるか不明だが、そういうやり方で少ない寿司の場合にもっていけるはず
2022/11/15(火) 12:09:32.73ID:Er9Q2z1T
とりあえず寿司3個の場合をランダムか総当りで生成して、2個を連結させる方法が正しいのか確認できそうだがしていない
2022/11/15(火) 12:25:07.74ID:ufTdawnB
>>14
たしかリニアオーダーでいける
たしかリニアオーダーでいける
2022/11/15(火) 13:28:00.47ID:ufTdawnB
Part9-413にコードがある
いろんな定義と証明が書いてあるメモが見つかったけど意味わからん
いろんな定義と証明が書いてあるメモが見つかったけど意味わからん
2022/11/15(火) 14:16:46.10ID:Er9Q2z1T
>>15はべつの言い方でいうと与えられたレーンで食べる順を確定させられるペアを見つけるってことだが
総時間が短いものか、空き時間が短いものか、空き時間が短いうちで最も最長のものか、そういういった組み合わせが考えられるが
正解があるかは不明
総時間が短いものか、空き時間が短いものか、空き時間が短いうちで最も最長のものか、そういういった組み合わせが考えられるが
正解があるかは不明
2019
2022/11/15(火) 16:22:52.97ID:Er9Q2z1T 単に空の時間が少ないようにペアをあわせていけば解ける気がしてきた
空は0として "313__"の場合はこうなって解ける
2行目への変化だと1秒と3秒の寿司を食べるとして4秒の寿司へ変わる
次は4秒寿司と3秒寿司が続けて食べられて7秒寿司へ
最後は一秒まって7秒寿司をたべて8秒で終わる
31300
34000
07000
空は0として "313__"の場合はこうなって解ける
2行目への変化だと1秒と3秒の寿司を食べるとして4秒の寿司へ変わる
次は4秒寿司と3秒寿司が続けて食べられて7秒寿司へ
最後は一秒まって7秒寿司をたべて8秒で終わる
31300
34000
07000
2119
2022/11/15(火) 16:42:03.18ID:Er9Q2z1T これもやってみたら手動で正解できた "123456789123456789" > 98秒
123456789123456789
303456789303456789
703056789703056789
709050789709050789
0090C07890090C0789
009000J89009000J89
0090000X90090000X9
00I0000XI0000000X0
00I0000YI000000000
00I0000Z0000000000
00W000000000000000
10以上の数値は英字で置き換えた
C 12
J 19
X 27
Y 54
Z 73
W 96
123456789123456789
303456789303456789
703056789703056789
709050789709050789
0090C07890090C0789
009000J89009000J89
0090000X90090000X9
00I0000XI0000000X0
00I0000YI000000000
00I0000Z0000000000
00W000000000000000
10以上の数値は英字で置き換えた
C 12
J 19
X 27
Y 54
Z 73
W 96
2022/11/15(火) 17:18:07.63ID:T423Zp9g
食べる、食べない=パス、の2択で再帰じゃないの?
食う カレントが値分後方へ移動、パス連続中フラグdisable
パス カレントが1つ後方へ移動、パス連続中フラグenable、パス連続可能回数セット
パスが連続出来る回数に制限があるので有限
9からパスし続けて良いのは8回まで。9回パスしたら9を食えてるよねって話
パスした次がより少ない値ならばパス連続可能回数は少ない方で上書き
> "93769682716711132249893"
だと1番目の9はパス連続可能回数8でパスした場合、2番目の3にカレントが移りパス連続可能回数は-1されて7
3のパス連続可能回数は2、7と比較し少ない方の2が上書きされる
パスした場合3番目の7へカレントを移しパス連続可能回数1
7のパス連続可能回数6と比較し少ない1
更にパスした場合、4番目の6
6の5と0を比較しパス連続可能回数0となり、ここではパスは選べない
パス連続中フラグとパス連続可能回数の2つのステータスが要る
フラグは能動的にパスしたのか食うものが無くて次に移動したかの区別
という解釈なんだけど間違ってる?もっと良い方法あるの?
食う カレントが値分後方へ移動、パス連続中フラグdisable
パス カレントが1つ後方へ移動、パス連続中フラグenable、パス連続可能回数セット
パスが連続出来る回数に制限があるので有限
9からパスし続けて良いのは8回まで。9回パスしたら9を食えてるよねって話
パスした次がより少ない値ならばパス連続可能回数は少ない方で上書き
> "93769682716711132249893"
だと1番目の9はパス連続可能回数8でパスした場合、2番目の3にカレントが移りパス連続可能回数は-1されて7
3のパス連続可能回数は2、7と比較し少ない方の2が上書きされる
パスした場合3番目の7へカレントを移しパス連続可能回数1
7のパス連続可能回数6と比較し少ない1
更にパスした場合、4番目の6
6の5と0を比較しパス連続可能回数0となり、ここではパスは選べない
パス連続中フラグとパス連続可能回数の2つのステータスが要る
フラグは能動的にパスしたのか食うものが無くて次に移動したかの区別
という解釈なんだけど間違ってる?もっと良い方法あるの?
2022/11/15(火) 18:45:27.83ID:1vmb6i3V
2択で再帰なら必然的に指数オーダーになるんじゃね
2419
2022/11/15(火) 19:36:17.27ID:Er9Q2z1T2022/11/15(火) 19:43:49.49ID:Er9Q2z1T
可能性としては、このアルゴリズム自体が最小値を出す可能性があるだけでかならずしも最小値ではないだとおもう
2022/11/15(火) 19:49:17.64ID:JkHLyKfV
27デフォルトの名無しさん
2022/11/15(火) 19:57:19.27ID:fFtAGper Pythonって{}がないの見ずらいよな
2022/11/15(火) 21:23:24.85ID:JkHLyKfV
>>25
可能性だけならただの乱数でもある
可能性だけならただの乱数でもある
2022/11/15(火) 21:35:09.43ID:Er9Q2z1T
2022/11/15(火) 21:45:59.70ID:Er9Q2z1T
大局的なこと、試行錯誤はやらずに空レーンでの待ちが少なくなるように2個セットをつくり続けて寿司個数が少ない場合に帰着させるだけ
これで正解が出させるほうが不思議
これで正解が出させるほうが不思議
2022/11/15(火) 21:59:09.72ID:JkHLyKfV
2_22
とか合う?
とか合う?
2022/11/15(火) 22:11:55.75ID:Er9Q2z1T
2022/11/15(火) 22:47:43.33ID:Ohwd0nE1
>>32
これじゃダメ?
1: *_22(取る)
2: _*22(食べる)
3: __22(休み)
4: __2*(取る)
5: *_2_(食べる)
6: _*2_(休み)
7: __*_(取る)
8: ___*(食べる)
これじゃダメ?
1: *_22(取る)
2: _*22(食べる)
3: __22(休み)
4: __2*(取る)
5: *_2_(食べる)
6: _*2_(休み)
7: __*_(取る)
8: ___*(食べる)
2022/11/15(火) 23:06:20.13ID:Er9Q2z1T
>>33
8を確認できたよ
8を確認できたよ
2022/11/15(火) 23:13:48.23ID:sZoewxQg
今上がってる
24
26
29
が線形時間で動くコード?
24
26
29
が線形時間で動くコード?
2022/11/15(火) 23:14:58.48ID:Er9Q2z1T
空なしで連続して食べれるなら食べてしまうやり方で失敗する例が2_22か
これがあるならば待ちで0か1で食べれるのに2以上待たないと駄目な例もありそうだ
ややこしい
これがあるならば待ちで0か1で食べれるのに2以上待たないと駄目な例もありそうだ
ややこしい
2022/11/15(火) 23:57:32.70ID:2AYn/DUp
これリニアオーダーで動くアルゴリズムがある事実証できてるの?
>>22はリニアになるの?
>>22はリニアになるの?
38デフォルトの名無しさん
2022/11/16(水) 00:21:37.28ID:G5qDJNLu リニアは完成しません
2022/11/16(水) 03:02:11.82ID:NCFSxcTe
連続食いアルゴリズムだと
2_22 よりも3_22や3_23の簡単だが
9以下が言えたら8では出来ないかチェックするために
寿司の総和時間が7、8となるように元の寿司を巨大化させ再チェックすればいいか
計算量はちょっと増えるがこれで見逃しはなくなるはず
2_22 よりも3_22や3_23の簡単だが
9以下が言えたら8では出来ないかチェックするために
寿司の総和時間が7、8となるように元の寿司を巨大化させ再チェックすればいいか
計算量はちょっと増えるがこれで見逃しはなくなるはず
2022/11/16(水) 05:56:24.40ID:oFhcaWBW
2022/11/16(水) 06:53:13.58ID:EsdxIXYC
2022/11/16(水) 12:57:24.30ID:NCFSxcTe
寿司をわざとデカくして連続食い優先アルゴリズムで、食べ飛ばしに対応させようとしたけど
たとえばこれだと今の寿司の時間の合計は41で、
合計が59になるように寿司増量するやり方は相当あって、その組み合わせを生成するだけでも困難な数だった
この方針は断念すべきか
"4_35_1264_23_434" > 60秒
たとえばこれだと今の寿司の時間の合計は41で、
合計が59になるように寿司増量するやり方は相当あって、その組み合わせを生成するだけでも困難な数だった
この方針は断念すべきか
"4_35_1264_23_434" > 60秒
2022/11/16(水) 13:03:55.89ID:NCFSxcTe
>>29と同じアルゴリズムと同じPythonだが
重複するコードとforを別の記述してコンパクト化
最小値候補を見つけるにすぎない、最小値を確定させるのは断念するか
https://ideone.com/1Y1x6Y
重複するコードとforを別の記述してコンパクト化
最小値候補を見つけるにすぎない、最小値を確定させるのは断念するか
https://ideone.com/1Y1x6Y
2022/11/16(水) 16:16:26.72ID:NCFSxcTe
2022/11/16(水) 17:53:26.07ID:c8CIrVo9
今のところ>>26が最小解をリニアオーダーで与える事の証明上がってこないけど5年前は誰かその証明つけてたん?
2022/11/16(水) 18:08:13.75ID:0SRtJZkl
寿司問題ってもう5年前か
時間が経つのはあっという間だな
時間が経つのはあっという間だな
2022/11/16(水) 18:09:58.47ID:73mUL53O
https://ideone.com/qPsn3a
5年前のメモです
証明が非常に簡略化して書いてあります
(書いた本人でも解読に時間がかかる)
またコードにコメントで計算量が書いてあります
参考にしてください
5年前のメモです
証明が非常に簡略化して書いてあります
(書いた本人でも解読に時間がかかる)
またコードにコメントで計算量が書いてあります
参考にしてください
2022/11/16(水) 18:16:29.54ID:KrTfkbbL
コレはわかんないな
なんかの基準で候補を絞ってその中で1番短いの見つけてるっぽいけど、その絞り込んだ候補の中に必ず最小元がある事の証明はコードだけではわからないよ
なんかの基準で候補を絞ってその中で1番短いの見つけてるっぽいけど、その絞り込んだ候補の中に必ず最小元がある事の証明はコードだけではわからないよ
2022/11/16(水) 18:34:21.69ID:oFhcaWBW
寿司をグループに分けるまでが肝 (メモに書いてある同値関係)
あとは簡単
2通りに場合分けして簡単な計算をするだけ
あとは簡単
2通りに場合分けして簡単な計算をするだけ
50デフォルトの名無しさん
2022/11/16(水) 18:48:37.15ID:+z5R74k6 よくわからんけど全通り計算して最短出すだけじゃね?
2022/11/16(水) 19:07:16.92ID:cFPybB+5
>>50
それだと多項式時間も無理やろ
それだと多項式時間も無理やろ
2022/11/16(水) 19:12:57.18ID:cFPybB+5
ダメだ
完備からわからん
完備からわからん
2022/11/16(水) 19:15:39.75ID:cFPybB+5
まずレーンからわからん
数学の世界でない用語でしかも定義がないとわからん
ちゃんと文章になってたら前後の文脈から推定できたりもするけど文章じゃないからエスパーのしょうがない
数学の世界でない用語でしかも定義がないとわからん
ちゃんと文章になってたら前後の文脈から推定できたりもするけど文章じゃないからエスパーのしょうがない
2022/11/16(水) 19:23:09.38ID:NCFSxcTe
ざっとみて正解を確信できん
平易な説明文であってるだろうと思わせることはできないか
平易な説明文であってるだろうと思わせることはできないか
2022/11/16(水) 19:26:49.63ID:cFPybB+5
どやろ
あってるっぽい香りはするけど
多分本人の備忘録に過ぎないもので元から他人に理解してもらうつもりに書いてないな
あってるっぽい香りはするけど
多分本人の備忘録に過ぎないもので元から他人に理解してもらうつもりに書いてないな
2022/11/16(水) 20:48:00.35ID:e9wPR8OQ
2022/11/16(水) 21:17:22.81ID:4txMvLbY
>>12 octave
https://ideone.com/In2JqK
function n = f(s)
k = 'IVXLCDM';
v = [1 5 10 50 100 500 1000];
h = @(x) v(k == x);
n = sum(arrayfun(@(c, d) [h(c) -h(c)](1 + (h(c) < h(d))), s, [s(2:end) s(end)]));
end
https://ideone.com/In2JqK
function n = f(s)
k = 'IVXLCDM';
v = [1 5 10 50 100 500 1000];
h = @(x) v(k == x);
n = sum(arrayfun(@(c, d) [h(c) -h(c)](1 + (h(c) < h(d))), s, [s(2:end) s(end)]));
end
2022/11/16(水) 21:21:09.43ID:cmcq5fdu
やっぱり無理やな
おそらく“最小完備閉路”なるものが存在してその中で最小であるものは線形時間で見つかるを示すんだろうけど“最小解は必ず最小完備閉路”である事の証明が1ミリもない
せめてその証明があれば逆にその証明から“完備閉路”の意味をエスパーもできるかもしれないけど
おそらく“最小完備閉路”なるものが存在してその中で最小であるものは線形時間で見つかるを示すんだろうけど“最小解は必ず最小完備閉路”である事の証明が1ミリもない
せめてその証明があれば逆にその証明から“完備閉路”の意味をエスパーもできるかもしれないけど
2022/11/16(水) 21:35:17.30ID:oFhcaWBW
最小完備閉路分解
×「最小完備閉路」への分解
○完備閉路分解のうち(完備閉路の)個数が最小の物
×「最小完備閉路」への分解
○完備閉路分解のうち(完備閉路の)個数が最小の物
2022/11/16(水) 21:38:21.99ID:oFhcaWBW
閉路 : (開始位置はどこでもいいけど)丁度n周でお寿司をたべる食べ方
完備閉路 : 効率の良い閉路
完備閉路 : 効率の良い閉路
2022/11/16(水) 21:40:24.42ID:oFhcaWBW
最小完備閉路分解 = お寿司のグループ分け ( >>49 )
2022/11/16(水) 22:24:11.29ID:w7g1vMWn
2022/11/16(水) 22:56:20.32ID:oFhcaWBW
私の中では解決済みの問題ですので
時間をかけて厳密な記述や分かりやすい記述にしようという気力はありませんし
多くの人に理解してもらおうとも思っていません
メモは私用に書いたもので
グラフ理論の用語や独自定義の言葉などが混ざっています
気に入らないなら見なかったことにしてご自分でゼロから考えてください
しばらく消えます
では
時間をかけて厳密な記述や分かりやすい記述にしようという気力はありませんし
多くの人に理解してもらおうとも思っていません
メモは私用に書いたもので
グラフ理論の用語や独自定義の言葉などが混ざっています
気に入らないなら見なかったことにしてご自分でゼロから考えてください
しばらく消えます
では
2022/11/16(水) 23:12:25.33ID:w7g1vMWn
あらら
ま、しょうがないですね
私は撤退
ま、しょうがないですね
私は撤退
2022/11/17(木) 01:13:18.40ID:KcdxatnU
2022/11/17(木) 02:10:10.21ID:KcdxatnU
んー最後にループをまたぐものが残ることがあってだめなのか
2022/11/17(木) 03:38:45.18ID:o2xnx2y6
2022/11/17(木) 05:44:20.80ID:o2xnx2y6
2022/11/17(木) 05:48:59.97ID:cnoQIz8b
いくつかの例でうまく行ったとしてホントにそのアルゴリズムで“常に”上手くいくとは限らないからな
“常に”上手くいく事を主張するには結局数学的に証明するしかない
“常に”上手くいく事を主張するには結局数学的に証明するしかない
2022/11/17(木) 06:04:15.66ID:cnoQIz8b
例えば寿司が連続9個空の部分があってそのいずれかからスタートする場合を考えるなら全ての周回で元の位置に戻ってくる時には口に何も入ってない状態になる
その場合に全ての周回で毎回「寿司を常に可能な限りとれるだけ取る」事で最小な解を与えるとは限らないやろ
あえてそのような最小解でない解をうまく組み合わせると全体としては最小になる可能性もある
その場合に全ての周回で毎回「寿司を常に可能な限りとれるだけ取る」事で最小な解を与えるとは限らないやろ
あえてそのような最小解でない解をうまく組み合わせると全体としては最小になる可能性もある
2022/11/17(木) 09:44:24.90ID:o2xnx2y6
2022/11/17(木) 09:51:09.17ID:Az3fhAqF
一般での証明を解説するのは諦めたけど
具体例であればアルゴリズムと証明を書いて差し上げます
1周20秒以内で1問出してくださいな
具体例であればアルゴリズムと証明を書いて差し上げます
1周20秒以内で1問出してくださいな
2022/11/17(木) 10:15:04.69ID:o2xnx2y6
2022/11/17(木) 10:15:54.14ID:o2xnx2y6
2022/11/17(木) 10:29:29.68ID:o2xnx2y6
2022/11/17(木) 12:55:12.66ID:PrtZybxD
とりあえず証明はできた
今晩家帰ったら書きます
今晩家帰ったら書きます
2022/11/17(木) 13:59:21.26ID:o2xnx2y6
2022/11/17(木) 14:38:50.13ID:ExpEnY6p
例えば寿司の配置が
┓ ┏━━━━
┏━┓
┏━━━━┓
┏━━┓
┏━━┓
2122121233211
のような場合10番目のところが3なので最低でも3週目の10秒目までは絶対に終了し得ない
ミソはこの10番目で必ず食べ終えることができる寿司、上の例では上から2番目の寿司があって、必ず3週目の10秒の時点でこの寿司を食べ終える解が存在する事を示すことですな
┓ ┏━━━━
┏━┓
┏━━━━┓
┏━━┓
┏━━┓
2122121233211
のような場合10番目のところが3なので最低でも3週目の10秒目までは絶対に終了し得ない
ミソはこの10番目で必ず食べ終えることができる寿司、上の例では上から2番目の寿司があって、必ず3週目の10秒の時点でこの寿司を食べ終える解が存在する事を示すことですな
2022/11/17(木) 14:53:14.71ID:o2xnx2y6
2022/11/17(木) 15:02:26.95ID:ExpEnY6p
とりあえずザックリ説明
(i)多重度最大、最後尾に寄与する寿司を取り除いても最大多重度が変化しない時
(下図のような場合2番目、3番目寿司を取り除いても最大多重度は3のままである)
┓ ┏━━━━
┏━┓
┏━━━┓
┏━━┓
┏┓
┏━━┓
2232121233111
この場合、多重度最大、最後尾に寄与する寿司を取り除いた状態における最大多重度、最後尾(例えば上の例で2番目の寿司を取り除くと、最高多重度、最後尾は多重度3、最後尾は3番目の位置となる)に寄与する寿司(上の例だと5番目の寿司)を最後に食べる解が存在する、その解にいま取り除いた寿司を最後にさらに食べる事にすれば良い
(ii)多重度最大、最後尾に寄与する寿司を取り除くと最大多重度が1下がるとき
(下図のような場合2番目、3番目の寿司を取り除くと最大多重度は2になる)
┓ ┏━━━━
┏━┓
┏━━━┓
┏━━┓
┏━━┓
2122121233111
この場合、多重度最大、最後尾に寄与する寿司を取り除いた状態における最大多重度、最後尾(例えば上の例で2番目の寿司を取り除くと、最高多重度、最後尾は多重度2、最後尾は10番目の位置となる)に寄与する寿司(上の例だと3番目の寿司)を最後に食べる解が存在する、その解にいま取り除いた寿司を最後にさらに食べる事にすれば良い
(i)多重度最大、最後尾に寄与する寿司を取り除いても最大多重度が変化しない時
(下図のような場合2番目、3番目寿司を取り除いても最大多重度は3のままである)
┓ ┏━━━━
┏━┓
┏━━━┓
┏━━┓
┏┓
┏━━┓
2232121233111
この場合、多重度最大、最後尾に寄与する寿司を取り除いた状態における最大多重度、最後尾(例えば上の例で2番目の寿司を取り除くと、最高多重度、最後尾は多重度3、最後尾は3番目の位置となる)に寄与する寿司(上の例だと5番目の寿司)を最後に食べる解が存在する、その解にいま取り除いた寿司を最後にさらに食べる事にすれば良い
(ii)多重度最大、最後尾に寄与する寿司を取り除くと最大多重度が1下がるとき
(下図のような場合2番目、3番目の寿司を取り除くと最大多重度は2になる)
┓ ┏━━━━
┏━┓
┏━━━┓
┏━━┓
┏━━┓
2122121233111
この場合、多重度最大、最後尾に寄与する寿司を取り除いた状態における最大多重度、最後尾(例えば上の例で2番目の寿司を取り除くと、最高多重度、最後尾は多重度2、最後尾は10番目の位置となる)に寄与する寿司(上の例だと3番目の寿司)を最後に食べる解が存在する、その解にいま取り除いた寿司を最後にさらに食べる事にすれば良い
2022/11/17(木) 17:27:46.12ID:o2xnx2y6
2022/11/17(木) 17:32:27.60ID:o2xnx2y6
>>80はいまいちわかってないけど
終了位置にある寿司を取り除くというのはやってみた、かんがえてみたけど進展なし
終了位置にある寿司を取り除くというのはやってみた、かんがえてみたけど進展なし
2022/11/17(木) 19:38:45.23ID:gFftq2Y+
┓ ┏━━━━ ‥①
┏━┓ ‥②
┏━━━┓ ‥③
┏━━┓ ‥④
┏┓ ‥⑤
┏━━┓ ‥⑥
2232121233111
②番目を取り除く
┓ ┏━━━━ ‥①
┏━━━┓ ‥③
┏━━┓ ‥④
┏┓ ‥⑤
┏━━┓ ‥⑥
2232121122111
⑤番目を取り除く
┓ ┏━━━━ ‥①
┏━━━┓ ‥③
┏━━┓ ‥④
┏━━┓ ‥⑥
2122121122111
③番目を取り除く
┏━┓ ‥②
┏━━━┓ ‥③
┏━━┓ ‥④
┏┓ ‥⑤
┏━━┓ ‥⑥
2232121233111
②番目を取り除く
┓ ┏━━━━ ‥①
┏━━━┓ ‥③
┏━━┓ ‥④
┏┓ ‥⑤
┏━━┓ ‥⑥
2232121122111
⑤番目を取り除く
┓ ┏━━━━ ‥①
┏━━━┓ ‥③
┏━━┓ ‥④
┏━━┓ ‥⑥
2122121122111
③番目を取り除く
2022/11/17(木) 19:39:05.19ID:gFftq2Y+
┓ ┏━━━━ ‥①
┏━━┓ ‥④
┏━━┓ ‥⑥
2122110011111
⑥番目を取り除く
┓ ┏━━━━ ‥①
┏━━┓ ‥④
1011110011111
④番目を取り除く
┓ ┏━━━━ ‥①
1000000011111
よって①④⑥③⑤②と食べれば3週目の10秒目で完食できる解が見つかる
これより早く完食する解はない
┏━━┓ ‥④
┏━━┓ ‥⑥
2122110011111
⑥番目を取り除く
┓ ┏━━━━ ‥①
┏━━┓ ‥④
1011110011111
④番目を取り除く
┓ ┏━━━━ ‥①
1000000011111
よって①④⑥③⑤②と食べれば3週目の10秒目で完食できる解が見つかる
これより早く完食する解はない
2022/11/17(木) 20:25:14.64ID:o2xnx2y6
2022/11/17(木) 21:07:09.32ID:YQ0wrIBf
確認してみる
行けるはずだけど
行けるはずだけど
2022/11/17(木) 21:17:34.64ID:gay+lHsH
その98は絶対正しいの?
全数検査かなんかで確認済み?
全数検査かなんかで確認済み?
2022/11/17(木) 21:44:23.04ID:KK3w9Zce
VBA + Selenium + Chrome で自動ログインをツールを作っています。
Dim Driver As New Selenium.WebDriver
ログインした後にパスワードを保存しますか?
というダイアログが出て邪魔でしょうがないです。
それを削除する為に
credentials_enable_service false
profile.password_manager_enabled false
を使うのは分かったのですが、pythonやjavaのコードばかりブログに乗っていて
VBAの文法でどう書けば良いか分かりません。
詳しい方がいたら教えてください。
Dim Driver As New Selenium.WebDriver
ログインした後にパスワードを保存しますか?
というダイアログが出て邪魔でしょうがないです。
それを削除する為に
credentials_enable_service false
profile.password_manager_enabled false
を使うのは分かったのですが、pythonやjavaのコードばかりブログに乗っていて
VBAの文法でどう書けば良いか分かりません。
詳しい方がいたら教えてください。
2022/11/17(木) 21:55:43.57ID:Wlu1Qlnf
すまん
確かに98やな
ちょっと直せるか考えてみる
確かに98やな
ちょっと直せるか考えてみる
2022/11/17(木) 22:23:15.24ID:o2xnx2y6
短縮したこれでも同じだな
これと同様に最後は末尾の3を引いて12ではなく、14が正解か
"123123"
これと同様に最後は末尾の3を引いて12ではなく、14が正解か
"123123"
2022/11/17(木) 22:26:58.70ID:o2xnx2y6
123123を変形した
303303とか306300も答えは14のはず
303303とか306300も答えは14のはず
2022/11/17(木) 23:14:57.70ID:o2xnx2y6
これはわかりやすいが
食べ終わりは2週目ラストではなく、
3週目の6がカウントする部分までだな
306300
食べ終わりは2週目ラストではなく、
3週目の6がカウントする部分までだな
306300
2022/11/18(金) 00:46:49.06ID:Jf5+Eiz/
試行錯誤の途中経過をメモ代わりに書くな
じゃま
じゃま
2022/11/18(金) 02:12:11.66ID:DAdKu+db
もともと過疎スレなんだし別にええわ
2022/11/18(金) 02:26:30.92ID:UFs4jVzI
この板じゃ勢い有る方なんだが
2022/11/18(金) 08:48:56.46ID:e00YeA2g
お題でないと過疎るんだよなこのスレ
当たり前だが
当たり前だが
2022/11/18(金) 11:28:52.19ID:Vwvz9k4H
まぁ今の問題が片付かないと次の問題出しにくいはあるから、こういう中々片付きそうもない話題が出てしまうと次が出てきにくくなる
もう寿司はやりたい人が各々考える事にして一旦保留でいいんじゃないかな
もう寿司はやりたい人が各々考える事にして一旦保留でいいんじゃないかな
2022/11/18(金) 12:20:43.66ID:e00YeA2g
しかし5年経っても話題がつきないお題と言うのはなかなか珍しいな
2022/11/18(金) 12:22:59.15ID:Y7aJwgmv
ネタが尽きないな、回転寿司だけに(ドャ
100デフォルトの名無しさん
2022/11/18(金) 12:48:38.66ID:oGVOwjfU 普通に次のネタ振ってそれが興味深けりゃそっちに移るでしょ
次のネタもない状態で保留にしろとか過疎らせようとしてるのか?
次のネタもない状態で保留にしろとか過疎らせようとしてるのか?
101デフォルトの名無しさん
2022/11/18(金) 13:21:27.34ID:Vwvz9k4H しかし実際難しいやん
言ってる人のも怪しいしな
少なくとも数学科卒なら自分のアイデアちゃんと証明できないなんてことはないし、そうでないならできてないか、できたと勘違いしてるかもしれないし
答え出ない問題なんか数学の世界には死ぬほどあるしな
言ってる人のも怪しいしな
少なくとも数学科卒なら自分のアイデアちゃんと証明できないなんてことはないし、そうでないならできてないか、できたと勘違いしてるかもしれないし
答え出ない問題なんか数学の世界には死ぬほどあるしな
102デフォルトの名無しさん
2022/11/18(金) 13:23:15.17ID:e00YeA2g たぶん寿司問題のレベルが高くて付いていけない人が多いんだと思う
俺も付いていけてないが別に保留しなくても良いと思う
俺も付いていけてないが別に保留しなくても良いと思う
103デフォルトの名無しさん
2022/11/18(金) 13:33:26.86ID:Vwvz9k4H >>102
だって解ける気配なんかしないのに意味あるんかそれってレスばっかり連発してるやん
だって解ける気配なんかしないのに意味あるんかそれってレスばっかり連発してるやん
104デフォルトの名無しさん
2022/11/18(金) 16:29:31.41ID:e00YeA2g >>103
寿司問題スレか難問専門スレが必要ってことかな
寿司問題スレか難問専門スレが必要ってことかな
105デフォルトの名無しさん
2022/11/18(金) 16:40:21.60ID:Lrs4Z8Ag106デフォルトの名無しさん
2022/11/18(金) 16:40:39.24ID:e00YeA2g 難問でスレが消費されるならこっちのスレから難問スレに輸入していくって手もあるが
それだとこっちのスレが過疎るかな?
それだとこっちのスレが過疎るかな?
107デフォルトの名無しさん
2022/11/18(金) 16:43:38.78ID:Lrs4Z8Ag >>105
後半部分(配列が全一致)のとき、2週目へ進む寿司が存在しないなら、足すものはゼロ
後半部分(配列が全一致)のとき、2週目へ進む寿司が存在しないなら、足すものはゼロ
108デフォルトの名無しさん
2022/11/18(金) 17:02:28.23ID:3mfi4Y0d109デフォルトの名無しさん
2022/11/18(金) 17:24:10.91ID:Lrs4Z8Ag110デフォルトの名無しさん
2022/11/18(金) 17:41:04.58ID:3mfi4Y0d 正しいかどうが自分で判定できませんか?
111デフォルトの名無しさん
2022/11/18(金) 18:31:42.48ID:3mfi4Y0d このスレこいつの日記で埋まる
112デフォルトの名無しさん
2022/11/18(金) 21:16:31.80ID:MjVe3VuH 数学の天才が1週間で作ったコード
5年たっても誰も理解出来ない
5年たっても誰も理解出来ない
113デフォルトの名無しさん
2022/11/18(金) 21:38:54.52ID:lXZZLQm+114デフォルトの名無しさん
2022/11/18(金) 21:41:07.64ID:8xkwlGkz 多分
>>72
> 一般での証明を解説するのは諦めたけど
> 具体例であればアルゴリズムと証明を書いて差し上げます
>
> 1周20秒以内で1問出してくださいな
コレ作った本人の談なんだろうけどコレは数学便所した人間なら事実上の「私できませんでした」宣言に等しい
>>72
> 一般での証明を解説するのは諦めたけど
> 具体例であればアルゴリズムと証明を書いて差し上げます
>
> 1周20秒以内で1問出してくださいな
コレ作った本人の談なんだろうけどコレは数学便所した人間なら事実上の「私できませんでした」宣言に等しい
115デフォルトの名無しさん
2022/11/18(金) 22:50:50.53ID:Lrs4Z8Ag116デフォルトの名無しさん
2022/11/18(金) 23:19:36.02ID:4CkGjyUN だから「証明できそうだ」とかはもういいよ
117デフォルトの名無しさん
2022/11/19(土) 05:06:14.80ID:0goRG+W2 寿司問題 コードと問題と証明
https://ideone.com/3Uq6Ee
https://ideone.com/3Uq6Ee
118デフォルトの名無しさん
2022/11/19(土) 05:58:43.22ID:vhoNUC3b 1_3
119デフォルトの名無しさん
2022/11/19(土) 06:02:22.90ID:vhoNUC3b アホの証明休むに似たり
120デフォルトの名無しさん
2022/11/19(土) 09:39:16.17ID:0goRG+W2121デフォルトの名無しさん
2022/11/19(土) 09:44:42.86ID:EU6zSqMI 33
122デフォルトの名無しさん
2022/11/19(土) 09:47:02.19ID:EU6zSqMI 自分で検証する気ゼロ?
123デフォルトの名無しさん
2022/11/19(土) 09:49:19.47ID:EU6zSqMI まだまだ全然遠いから
勘じゃ当たらんよ
勘じゃ当たらんよ
124デフォルトの名無しさん
2022/11/19(土) 10:36:45.85ID:0goRG+W2125デフォルトの名無しさん
2022/11/19(土) 11:38:20.21ID:0goRG+W2126デフォルトの名無しさん
2022/11/19(土) 11:41:28.24ID:32x8j3xb まぁもういいのかもしれない
大体この手の“最小値を出す関数を求めよ”系は本当にそれが最小値出してくれる事は“コード”ではなく“証明”が要求される
でもココ数学板じゃないし、それを面白いと思う奴ほとんどいないやろ
そもそもできんくさいし
じゃあ数学板に持っていったらもダメやろ
数学的に面白いのは「ちゃんと答えがある」問題でないとダメ、数学の世界なんか一見解けそうに見えて実は超難題で答え出せない問題なんか山ほどある
数学的才能ってその手の解けない問題をいつまでも解けない解けないってウンウン唸る事じゃなくて数ある解けない問題の中から“解ける奴”を嗅ぎ分けて解く能力やしな
大体この手の“最小値を出す関数を求めよ”系は本当にそれが最小値出してくれる事は“コード”ではなく“証明”が要求される
でもココ数学板じゃないし、それを面白いと思う奴ほとんどいないやろ
そもそもできんくさいし
じゃあ数学板に持っていったらもダメやろ
数学的に面白いのは「ちゃんと答えがある」問題でないとダメ、数学の世界なんか一見解けそうに見えて実は超難題で答え出せない問題なんか山ほどある
数学的才能ってその手の解けない問題をいつまでも解けない解けないってウンウン唸る事じゃなくて数ある解けない問題の中から“解ける奴”を嗅ぎ分けて解く能力やしな
127デフォルトの名無しさん
2022/11/19(土) 11:50:21.72ID:c1VeRjNF もういいと思うならレスしなきゃいいのに...
128デフォルトの名無しさん
2022/11/19(土) 13:06:43.58ID:hH2yPCCm お題
座標リストと幅が渡されます
座標リストは線で結ばれるとしてその線に与えられた幅をつけた時の両側の線を作る座標リストを出力せよ
座標リストと幅が渡されます
座標リストは線で結ばれるとしてその線に与えられた幅をつけた時の両側の線を作る座標リストを出力せよ
129デフォルトの名無しさん
2022/11/19(土) 13:10:59.95ID:hH2yPCCm お題
座標リストが与えられます
それを文字列で描画せよ
座標リストが与えられます
それを文字列で描画せよ
130デフォルトの名無しさん
2022/11/19(土) 13:26:40.38ID:hH2yPCCm ↑
追記:線で結べ
追記:線で結べ
131デフォルトの名無しさん
2022/11/19(土) 13:36:43.67ID:tJiCev1f >>125
222
222
132デフォルトの名無しさん
2022/11/19(土) 13:38:35.63ID:X3p9xnB+133デフォルトの名無しさん
2022/11/19(土) 13:40:40.84ID:X3p9xnB+134デフォルトの名無しさん
2022/11/19(土) 14:28:33.69ID:0goRG+W2135デフォルトの名無しさん
2022/11/20(日) 01:49:27.59ID:0QwXT6tM >>11
なんで 313__ が8秒になるのか? 10秒ではないのか?
コンベアの状態と経過秒数を1秒づつ書くとこうなるよな?
コンベア 経過秒数 状態
313__ 0 3を取る
13___ 1 3を食事中
3___1 2 3を食事中
___13 3 3を食事中
__13_ 4 空なので取れない
_13__ 5 空なので取れない
13___ 6 1を取る
3____ 7 1を食べて3を取る
_____ 8 3を食事中
_____ 9 3を食事中
_____ 10 3を食事中
なんで 313__ が8秒になるのか? 10秒ではないのか?
コンベアの状態と経過秒数を1秒づつ書くとこうなるよな?
コンベア 経過秒数 状態
313__ 0 3を取る
13___ 1 3を食事中
3___1 2 3を食事中
___13 3 3を食事中
__13_ 4 空なので取れない
_13__ 5 空なので取れない
13___ 6 1を取る
3____ 7 1を食べて3を取る
_____ 8 3を食事中
_____ 9 3を食事中
_____ 10 3を食事中
136デフォルトの名無しさん
2022/11/20(日) 02:33:46.69ID:Me3BvU6b137デフォルトの名無しさん
2022/11/20(日) 04:21:10.31ID:0QwXT6tM >>136
意味がわからない。少なくとも最初に手に取るのは1番左の3だろう。空ではない。
意味がわからない。少なくとも最初に手に取るのは1番左の3だろう。空ではない。
138デフォルトの名無しさん
2022/11/20(日) 04:36:31.25ID:awzhVuxm139デフォルトの名無しさん
2022/11/20(日) 07:30:10.81ID:Me3BvU6b140デフォルトの名無しさん
2022/11/20(日) 16:59:26.03ID:DZV1aQ64 >>11 C https://ideone.com/TRDGP8
https://ideone.com/uupLNI
寿司、正解に関係あるか分からんが、こうしてみるとデフラグのあれみたい
ということで、あらかじめ最後にとる皿だけ決めといて、ほかの皿を順番にとっていくという方法でやってみました。せっかくなのであげさせてください。証明は分かりませんorz
https://ideone.com/uupLNI
寿司、正解に関係あるか分からんが、こうしてみるとデフラグのあれみたい
ということで、あらかじめ最後にとる皿だけ決めといて、ほかの皿を順番にとっていくという方法でやってみました。せっかくなのであげさせてください。証明は分かりませんorz
141デフォルトの名無しさん
2022/11/20(日) 19:41:22.91ID:0QwXT6tM >>139
あー。なるほど。3を取らないのもありか。
あー。なるほど。3を取らないのもありか。
142デフォルトの名無しさん
2022/11/20(日) 19:43:16.32ID:0QwXT6tM じゃあ取ったパターンと取らなかったパターンを再帰でやるのが良さそうってことかな。
143デフォルトの名無しさん
2022/11/20(日) 20:53:57.84ID:91juhZfp144デフォルトの名無しさん
2022/11/20(日) 20:56:16.50ID:+jNisdaJ 231__
145デフォルトの名無しさん
2022/11/20(日) 20:57:33.90ID:6hu778VI >>142
しかしその方法では当然指数時間かかる
しかしその方法では当然指数時間かかる
146デフォルトの名無しさん
2022/11/20(日) 21:02:27.16ID:DZV1aQ64147デフォルトの名無しさん
2022/11/20(日) 21:04:31.98ID:6hu778VI イヤでも実際できそうでできない
実はNPとかいうオチもあり得る
実はNPとかいうオチもあり得る
148デフォルトの名無しさん
2022/11/20(日) 21:08:19.41ID:+jNisdaJ いや
答えあるし
答えあるし
149デフォルトの名無しさん
2022/11/20(日) 21:12:44.80ID:6hu778VI イヤ、数学的に証明された理論に基づかないコード並べても答えにならない
コードは証明の代わりにはならない
コードは証明の代わりにはならない
150デフォルトの名無しさん
2022/11/20(日) 21:15:19.65ID:+jNisdaJ 証明したわけだけど
理解する努力くらいすれば
理解する努力くらいすれば
151デフォルトの名無しさん
2022/11/20(日) 21:15:30.82ID:79zBHkdo おかしい
152デフォルトの名無しさん
2022/11/20(日) 21:18:29.97ID:+jNisdaJ153デフォルトの名無しさん
2022/11/20(日) 21:22:11.99ID:6hu778VI >>152
できんよ
多分できてる言ってるやつもできてないんだろ
つまり現時点で世界のどこにも寿司問題の証明は存在しない
よって現時点では証明不能、すなわちそもそも線形時間で解けるアルゴリズム自体存在しない可能性もある
できんよ
多分できてる言ってるやつもできてないんだろ
つまり現時点で世界のどこにも寿司問題の証明は存在しない
よって現時点では証明不能、すなわちそもそも線形時間で解けるアルゴリズム自体存在しない可能性もある
154デフォルトの名無しさん
2022/11/20(日) 21:23:54.84ID:+jNisdaJ155デフォルトの名無しさん
2022/11/20(日) 21:24:24.09ID:6hu778VI156デフォルトの名無しさん
2022/11/20(日) 21:29:39.26ID:+jNisdaJ 理解する努力くらいすれば?
157デフォルトの名無しさん
2022/11/20(日) 21:33:41.06ID:6hu778VI >>156
そんな義務はない
数学の世界で証明できたできないの問題がでたら常に証明できたと言ってる人間の側にしか責任は生じない
前の方にあったコードについてたメモ書きは証明として数学の世界で認められる類のものじゃない
おまえの言ってるのは数学板で名物になってる高木つていう糖質の言ってるのとおんなじだよ
そんな義務はない
数学の世界で証明できたできないの問題がでたら常に証明できたと言ってる人間の側にしか責任は生じない
前の方にあったコードについてたメモ書きは証明として数学の世界で認められる類のものじゃない
おまえの言ってるのは数学板で名物になってる高木つていう糖質の言ってるのとおんなじだよ
158デフォルトの名無しさん
2022/11/20(日) 21:35:12.48ID:+jNisdaJ アホに証明するのは不可能
159デフォルトの名無しさん
2022/11/20(日) 21:36:29.31ID:79zBHkdo VBA+Seleniumで自動ログイン機能を実装しています。
ログインすると
「パスワードを保存しますか?」というダイアログが表示されてしまって困っています。
ネットで調べて以下の様なコードを記述していますが、出ます。
Dim Driver As New Selenium.WebDriver
Driver.AddArgument "credentials_enable_service=False"
Driver.AddArgument "profile.password_manager_enabled=False"
記述が間違っているのでしょうか?
ログインすると
「パスワードを保存しますか?」というダイアログが表示されてしまって困っています。
ネットで調べて以下の様なコードを記述していますが、出ます。
Dim Driver As New Selenium.WebDriver
Driver.AddArgument "credentials_enable_service=False"
Driver.AddArgument "profile.password_manager_enabled=False"
記述が間違っているのでしょうか?
160デフォルトの名無しさん
2022/11/20(日) 21:36:40.75ID:6hu778VI161デフォルトの名無しさん
2022/11/20(日) 21:41:54.30ID:+jNisdaJ アホに対して証明するのは不可能
という意味
という意味
162デフォルトの名無しさん
2022/11/20(日) 21:44:51.79ID:+jNisdaJ ・理解しようとする強い意志がある
・ある程度以上の頭がある
両方を満たす人ならわからない部分を説明しようとも思うが
全く理解しようという努力もなく頭も悪い人に対して証明するのは不可能
・ある程度以上の頭がある
両方を満たす人ならわからない部分を説明しようとも思うが
全く理解しようという努力もなく頭も悪い人に対して証明するのは不可能
163デフォルトの名無しさん
2022/11/20(日) 21:48:17.89ID:PdO8SXSe >>161
言い訳はいい
あんなもんただのメモ書き
もちろん数学の世界じゃ通用しないのもお前わかってるやろ?
そしてその場合証明したと言ってる側と証明できてないと言ってる側のどちらの主張が通るわかってるやろ
まぁそれがわかるレベルまでは勉強してないのかもしれんが
言い訳はいい
あんなもんただのメモ書き
もちろん数学の世界じゃ通用しないのもお前わかってるやろ?
そしてその場合証明したと言ってる側と証明できてないと言ってる側のどちらの主張が通るわかってるやろ
まぁそれがわかるレベルまでは勉強してないのかもしれんが
164デフォルトの名無しさん
2022/11/20(日) 21:53:55.24ID:+jNisdaJ お前の理論だと
「証明できてない」とただ単に主張するだけで
証明を無効化できるわけだ
「証明できてない」とただ単に主張するだけで
証明を無効化できるわけだ
165デフォルトの名無しさん
2022/11/20(日) 21:54:26.63ID:PdO8SXSe >>164
小学生か
小学生か
166デフォルトの名無しさん
2022/11/20(日) 21:54:43.12ID:+jNisdaJ 少なくとも
いくら煽った所で
お前に何かしてやるつもりはないから
いくら煽った所で
お前に何かしてやるつもりはないから
167デフォルトの名無しさん
2022/11/20(日) 21:56:01.89ID:AxU0uBeT 証明出来てないと言う奴は間違ってる箇所を示すなり反例出すなりしろよ
168デフォルトの名無しさん
2022/11/20(日) 21:56:59.85ID:PdO8SXSe169デフォルトの名無しさん
2022/11/20(日) 21:57:03.71ID:+jNisdaJ 証明は出来ている
教えないけど
これで満足?
お前に教える義務はないから
教えないけど
これで満足?
お前に教える義務はないから
170デフォルトの名無しさん
2022/11/20(日) 21:58:08.07ID:PdO8SXSe171デフォルトの名無しさん
2022/11/20(日) 21:59:32.58ID:PdO8SXSe >>169
それは数学学んだ人間なら誰もがわかる“敗北宣言”ですな
それは数学学んだ人間なら誰もがわかる“敗北宣言”ですな
172デフォルトの名無しさん
2022/11/20(日) 22:02:07.35ID:PdO8SXSe >>169
ここに数学界の未解決問題9個解いたって言ってる糖質のレスが並んでるよ
雑談はここに書け!【65】
https://rio2016.5ch.net/test/read.cgi/math/1662116299/
お前の言ってるのはコイツが言ってるのと同じだよ
わからないのはお前のせいwwwww
アホ〜wwwwww
ここに数学界の未解決問題9個解いたって言ってる糖質のレスが並んでるよ
雑談はここに書け!【65】
https://rio2016.5ch.net/test/read.cgi/math/1662116299/
お前の言ってるのはコイツが言ってるのと同じだよ
わからないのはお前のせいwwwww
アホ〜wwwwww
173デフォルトの名無しさん
2022/11/20(日) 22:03:33.26ID:+jNisdaJ うざいから数学板行って
174デフォルトの名無しさん
2022/11/20(日) 22:04:31.75ID:wl9Kfk8d175デフォルトの名無しさん
2022/11/20(日) 22:08:03.79ID:AxU0uBeT >>170
頭大丈夫?w
頭大丈夫?w
176デフォルトの名無しさん
2022/11/20(日) 22:13:40.93ID:wl9Kfk8d177デフォルトの名無しさん
2022/11/20(日) 22:21:03.28ID:AxU0uBeT178デフォルトの名無しさん
2022/11/20(日) 22:23:01.03ID:wl9Kfk8d179デフォルトの名無しさん
2022/11/20(日) 22:23:38.94ID:wl9Kfk8d このレベルの知能か
180デフォルトの名無しさん
2022/11/20(日) 22:34:15.75ID:AxU0uBeT181デフォルトの名無しさん
2022/11/20(日) 22:41:08.12ID:wl9Kfk8d >>180
「正しい可能性がある」など証明の代わりにならない
数学の世界には“証明された”、“反論が見つかった”、“証明されてない”の3つの状態がある
寿司問題は“証明されていない”
反証がないから“証明されている状態”であるなどと言えない
“証明できた”と主張できるのはある程度以上数学学んだ人間ならきちんと理解できるレベルの証明をあげた時のみ
あんなメモ書きでは証明とも、アウトラインであるとすら認めてもらえない
「正しい可能性がある」など証明の代わりにならない
数学の世界には“証明された”、“反論が見つかった”、“証明されてない”の3つの状態がある
寿司問題は“証明されていない”
反証がないから“証明されている状態”であるなどと言えない
“証明できた”と主張できるのはある程度以上数学学んだ人間ならきちんと理解できるレベルの証明をあげた時のみ
あんなメモ書きでは証明とも、アウトラインであるとすら認めてもらえない
182デフォルトの名無しさん
2022/11/20(日) 22:47:41.48ID:AxU0uBeT >>181
> 「正しい可能性がある」など証明の代わりにならない
だれもそんなアホな事は言ってない
> 寿司問題は“証明されていない”
だから証明されてない(=否定もされてない)状態で証明出来てないと言うだけならなんの意味もないレスだろ
そんなレスして楽しいのか?
> 「正しい可能性がある」など証明の代わりにならない
だれもそんなアホな事は言ってない
> 寿司問題は“証明されていない”
だから証明されてない(=否定もされてない)状態で証明出来てないと言うだけならなんの意味もないレスだろ
そんなレスして楽しいのか?
183デフォルトの名無しさん
2022/11/20(日) 22:54:02.49ID:KF0WedBL >>182
証明できてない状態でしかないのに「証明はできてる、しかし書かない」とか言ってるやつがいるんだからしょうがない
自分1人のチラ裏ワールドで証明できたと思ってる分には好きにすればいい
しかしいかに便所の落書きでも「証明はできてる、信じてくれ」など通用しない
証明できてない状態でしかないのに「証明はできてる、しかし書かない」とか言ってるやつがいるんだからしょうがない
自分1人のチラ裏ワールドで証明できたと思ってる分には好きにすればいい
しかしいかに便所の落書きでも「証明はできてる、信じてくれ」など通用しない
184デフォルトの名無しさん
2022/11/20(日) 23:09:36.07ID:AxU0uBeT >>183
まあ証明自体を書かないアホは無視するとしてメモ書きだからダメとか言ってないでどこがダメなのかを書けって話
まあ証明自体を書かないアホは無視するとしてメモ書きだからダメとか言ってないでどこがダメなのかを書けって話
185デフォルトの名無しさん
2022/11/20(日) 23:19:52.84ID:Z+w66nI6 >>184
メモ書きというのが証明のアウトラインと呼べるものならともかく、到底そんなレベルではない
たとえばSₙ₊₁の互換の生成元σ₁‥σₙによるreduced expressionを見つけるアルゴリズムの話とかだと
定理 g∈Sₙ₊₁に対してg(i)>g(i+1)である任意のiに対してgσᵢのreduced expression の長さがgのそれより真に1小さくなるものが存在する
とかがキーになる
そしてこれが証明できれば確かに線形時間で証明ができるのは数学ちょっと学んだ人間ならすぐわかる
前の方のレスで「最後の寿司で場合分け」といっていたけどそれでは指数時間になる、ミソは“g(i)>g(i+1)である任意のiに対して”言えてるのがミソで場合分けの必要がなく以下gσᵢのreduced expressionを求める問題に還元されるので線形時間とわかる
逆に言えばこの定理の証明のキーだけ書いてあれば“アウトライン”と呼べるし、オレはこの定理の勉強した時、“なるほどそうか、なら後は自分で挑戦!”と思ってやっていい練習になったのを覚えてる
そういうのが数学の世界でアウトラインと呼んでもらえるやつ
あのメモはそのレベルにない
メモ書きというのが証明のアウトラインと呼べるものならともかく、到底そんなレベルではない
たとえばSₙ₊₁の互換の生成元σ₁‥σₙによるreduced expressionを見つけるアルゴリズムの話とかだと
定理 g∈Sₙ₊₁に対してg(i)>g(i+1)である任意のiに対してgσᵢのreduced expression の長さがgのそれより真に1小さくなるものが存在する
とかがキーになる
そしてこれが証明できれば確かに線形時間で証明ができるのは数学ちょっと学んだ人間ならすぐわかる
前の方のレスで「最後の寿司で場合分け」といっていたけどそれでは指数時間になる、ミソは“g(i)>g(i+1)である任意のiに対して”言えてるのがミソで場合分けの必要がなく以下gσᵢのreduced expressionを求める問題に還元されるので線形時間とわかる
逆に言えばこの定理の証明のキーだけ書いてあれば“アウトライン”と呼べるし、オレはこの定理の勉強した時、“なるほどそうか、なら後は自分で挑戦!”と思ってやっていい練習になったのを覚えてる
そういうのが数学の世界でアウトラインと呼んでもらえるやつ
あのメモはそのレベルにない
186デフォルトの名無しさん
2022/11/20(日) 23:31:54.12ID:AxU0uBeT 長々書いてる割には結論は
> あのメモはそのレベルにない
かよw
お前のレベルがよくわかるわ
> あのメモはそのレベルにない
かよw
お前のレベルがよくわかるわ
187デフォルトの名無しさん
2022/11/20(日) 23:37:04.67ID:Z+w66nI6 >>186
ないやん?
まず他人に読ませる気なら数学の世界で一般的な用語の定義から入らんと読めない
少なくともひとつの主張の証明でもその用語を使った議論が有ればエスパーできなくはないが、あの文章にはそもそも証明と呼べるレベルの議論が何ひとつない、もちろん意味不明
なんかある性質を持ってる経路を探索するアルゴリズムらしいが、
「最短経路→その性質を持つ」の議論ゼロで以下その性質を持つ経路の探索アルゴリズムの話にはいつてる
アホかと
ないやん?
まず他人に読ませる気なら数学の世界で一般的な用語の定義から入らんと読めない
少なくともひとつの主張の証明でもその用語を使った議論が有ればエスパーできなくはないが、あの文章にはそもそも証明と呼べるレベルの議論が何ひとつない、もちろん意味不明
なんかある性質を持ってる経路を探索するアルゴリズムらしいが、
「最短経路→その性質を持つ」の議論ゼロで以下その性質を持つ経路の探索アルゴリズムの話にはいつてる
アホかと
188デフォルトの名無しさん
2022/11/20(日) 23:51:16.20ID:Z+w66nI6 一般的でない用語の説明ね
まぁ論文レベルの文章読んだ事ないんやろ
読まなきゃ書き方わからんわな
まぁ論文レベルの文章読んだ事ないんやろ
読まなきゃ書き方わからんわな
189デフォルトの名無しさん
2022/11/20(日) 23:56:18.36ID:AxU0uBeT しつこいね、具体的な指摘を出来ない事はよくわかったからそろそろ黙ったら?
190デフォルトの名無しさん
2022/11/20(日) 23:58:03.57ID:Z+w66nI6 >>189
具体的な不備の指摘ができないなら黙っとけと言うのがバカだと言ってるんだよ能無し君
具体的な不備の指摘ができないなら黙っとけと言うのがバカだと言ってるんだよ能無し君
191デフォルトの名無しさん
2022/11/21(月) 00:00:02.87ID:oZ+5sjSm もっと言うなら用語の説明がない、最小の解→なんとか言う性質持ってるの証明のアウトラインすらないというのは具体的ではないのかね?能無し君?
192デフォルトの名無しさん
2022/11/21(月) 00:02:13.80ID:pQOpt44b お前らw
193デフォルトの名無しさん
2022/11/21(月) 00:45:48.82ID:KDDXOYAA194デフォルトの名無しさん
2022/11/21(月) 00:52:37.60ID:ucxm7Spr >>193
もう読み返してみるのもアホらしいから読み返さないけど数学の勉強多少なりともした人間が自分が使った用語のどれか数学の世界でなんの説明もしないでいいかわからない時点でもうダメダメなんだよ
もう読み返してみるのもアホらしいから読み返さないけど数学の勉強多少なりともした人間が自分が使った用語のどれか数学の世界でなんの説明もしないでいいかわからない時点でもうダメダメなんだよ
195デフォルトの名無しさん
2022/11/21(月) 00:56:14.01ID:ucxm7Spr196デフォルトの名無しさん
2022/11/21(月) 01:14:55.48ID:KDDXOYAA 結局具体的指摘はできずにダメダメ言うだけの人でしたw
197デフォルトの名無しさん
2022/11/21(月) 01:15:51.20ID:3oP21bP+198デフォルトの名無しさん
2022/11/21(月) 01:33:23.43ID:KDDXOYAA はいはいw
199デフォルトの名無しさん
2022/11/21(月) 01:44:40.12ID:3oP21bP+200デフォルトの名無しさん
2022/11/21(月) 01:47:11.47ID:EfM99hS7 簡潔明瞭なレス書かないで、ダラダラ雑談してる人は
プログラムや証明も似たようなもんだろう
プログラムや証明も似たようなもんだろう
201デフォルトの名無しさん
2022/11/21(月) 01:58:04.34ID:KDDXOYAA202デフォルトの名無しさん
2022/11/21(月) 06:55:55.90ID:ak7EpJOk うちの研究室にもキチガイおじさんから未解決問題といたぞ!!とかいう長文封書が数年に一回来るわw
それを思い出したw
それを思い出したw
203デフォルトの名無しさん
2022/11/21(月) 07:22:29.95ID:wLhd6Pjl >>199
こういうレスはさすがに恥ずかしい
こういうレスはさすがに恥ずかしい
204デフォルトの名無しさん
2022/11/21(月) 10:12:20.62ID:Hn1skre5 仮にあってたとしても証明が伝わらない、理解されないなら
インドの魔術師ラマヌジャンみたいなもの
インドの魔術師ラマヌジャンみたいなもの
205デフォルトの名無しさん
2022/11/21(月) 10:53:00.16ID:KDDXOYAA ”真に驚くべき証明を見つけたが、それを書くには余白が狭すぎる...”
206デフォルトの名無しさん
2022/11/21(月) 21:25:40.26ID:n1Au4Wog >>205
私は、本当に「驚くべき証明」が今でも未発掘であると妄想しているのです…ハノン
私は、本当に「驚くべき証明」が今でも未発掘であると妄想しているのです…ハノン
207デフォルトの名無しさん
2022/11/21(月) 22:51:28.14ID:vZPRDM15 ラマヌジャンでもフェルマーでもない
普通の人が1週間で考えたアルゴリズム
アルゴリズムの理解は難しくないし
理解すれば最小性の証明も簡単に思い付く
特別な事は何もない
自力でいろいろな問題を解けば
必然的にアルゴリズムが思い浮かぶ
っていうくらいの感覚
普通の人が1週間で考えたアルゴリズム
アルゴリズムの理解は難しくないし
理解すれば最小性の証明も簡単に思い付く
特別な事は何もない
自力でいろいろな問題を解けば
必然的にアルゴリズムが思い浮かぶ
っていうくらいの感覚
208デフォルトの名無しさん
2022/11/23(水) 14:01:36.50ID:7Qp+m7RP209デフォルトの名無しさん
2022/11/23(水) 16:05:13.46ID:U6TEG1mT 正六角形の各頂点に椅子がある
各椅子に P, Q, R, S, T, U と順不同でラベルを付けるとき
P と Q が向かい合わない組み合わせは何通りあるか
ラベルの重複は無し
各椅子に P, Q, R, S, T, U と順不同でラベルを付けるとき
P と Q が向かい合わない組み合わせは何通りあるか
ラベルの重複は無し
210デフォルトの名無しさん
2022/11/23(水) 16:42:40.78ID:gB3NJ+gJ211デフォルトの名無しさん
2022/11/23(水) 16:44:46.69ID:gB3NJ+gJ212デフォルトの名無しさん
2022/11/23(水) 19:37:49.36ID:OkrKt+ei >>208
Haskell
https://ideone.com/ciCXSG
fibs = 0 : 1 : zipWith ( + ) fibs ( tail fibs )
main = print $ take 100 $ fibs
Haskell
https://ideone.com/ciCXSG
fibs = 0 : 1 : zipWith ( + ) fibs ( tail fibs )
main = print $ take 100 $ fibs
213デフォルトの名無しさん
2022/11/23(水) 19:56:22.68ID:OkrKt+ei >>209
Haskell
https://ideone.com/7mv08x
import Data.List
import Data.Maybe
xs = [ x | x <- permutations [ 'P' .. 'U' ],
let i e es = fromJust $ elemIndex e es ,
mod ( ( i 'P' x ) - ( i 'Q' x ) ) 6 == 3 ]
main = print $ length xs
Haskell
https://ideone.com/7mv08x
import Data.List
import Data.Maybe
xs = [ x | x <- permutations [ 'P' .. 'U' ],
let i e es = fromJust $ elemIndex e es ,
mod ( ( i 'P' x ) - ( i 'Q' x ) ) 6 == 3 ]
main = print $ length xs
214デフォルトの名無しさん
2022/11/23(水) 23:31:10.31ID:q2LNEKVG215デフォルトの名無しさん
2022/11/24(木) 10:58:50.49ID:+WLoo/sn >>209
4 * 4! = 96
4 * 4! = 96
216デフォルトの名無しさん
2022/11/24(木) 11:38:21.44ID:5MNsXfkj ユークリッド平面上の六角形ですか?
そうでなければ向かい合う組み合わせがひとつもないかもしれない
そうでなければ向かい合う組み合わせがひとつもないかもしれない
217デフォルトの名無しさん
2022/11/24(木) 18:43:02.54ID:OYbHbN8A >>209
6 * 4 * 4! = 576
6 * 4 * 4! = 576
218デフォルトの名無しさん
2022/11/24(木) 18:48:51.57ID:m+x+kPsJ >>209
6! - 6*4! = 576
6! - 6*4! = 576
219デフォルトの名無しさん
2022/11/25(金) 09:08:55.49ID:PV2ZG9bu >>214
ほんそれ
ほんそれ
220デフォルトの名無しさん
2022/11/25(金) 15:55:15.09ID:f221QBdQ カカロット予想みたいな名に懸賞金がでてた記憶
221デフォルトの名無しさん
2022/11/25(金) 17:46:32.10ID:pYHT3oH4 お題:アラレちゃんに出てくるウンコみたいなASCIIアートを数値処理で描画せよ
手段は問わない
手段は問わない
222デフォルトの名無しさん
2022/11/25(金) 18:34:08.82ID:VOfQDcty お題:C言語のfrexp()に相当する処理を、基数が10の場合について実装する。
(入力x>0を、
1≦y<10、nを整数として、
y*10^nに変換する。)
回答者の主観で、「素朴」と思われるやり方と、「技巧的」と思われるやり方の2つを実装し、
どこら辺が素朴/技巧的なのかを付記する事。
(入力x>0を、
1≦y<10、nを整数として、
y*10^nに変換する。)
回答者の主観で、「素朴」と思われるやり方と、「技巧的」と思われるやり方の2つを実装し、
どこら辺が素朴/技巧的なのかを付記する事。
223デフォルトの名無しさん
2022/11/25(金) 20:10:20.65ID:UZlFL5FW logを使うのと
10^2^nのテーブルを使うの
10^2^nのテーブルを使うの
224デフォルトの名無しさん
2022/11/25(金) 20:36:02.09ID:UZlFL5FW 普通の倍精度程度の範囲なら
10^n そのまま持つのもあり
工夫しなくても精度が保てる
10^n そのまま持つのもあり
工夫しなくても精度が保てる
225デフォルトの名無しさん
2022/11/26(土) 01:05:17.47ID:ECY3ydQd >>222
Perl
ワンライナー。bashから実行。
自分では文字列変換しかしてなくて肝心な所は sprintf の %e にお任せ。
これは素朴なのか技巧的なのか分からない。手抜きであるとは言えるかも知れないが。
$ perl -ne '$s=sprintf("%e", $_); $s=~s/e([\+\-])?0*(\d+)/"*10^".($1eq"-"?"-":"").$2/e; print "$s\n"'
12345
1.234500*10^4
0.000000567
5.670000*10^-7
100000000000000000000
1.000000*10^20
Perl
ワンライナー。bashから実行。
自分では文字列変換しかしてなくて肝心な所は sprintf の %e にお任せ。
これは素朴なのか技巧的なのか分からない。手抜きであるとは言えるかも知れないが。
$ perl -ne '$s=sprintf("%e", $_); $s=~s/e([\+\-])?0*(\d+)/"*10^".($1eq"-"?"-":"").$2/e; print "$s\n"'
12345
1.234500*10^4
0.000000567
5.670000*10^-7
100000000000000000000
1.000000*10^20
226デフォルトの名無しさん
2022/11/26(土) 01:11:23.77ID:ECY3ydQd sprintf() で %e で元の文字列を作る形式で良いならばCやJava(及びJavaと同じライブラリを使っているKotlin等)でも似たような書き方が可能。
e±NNN の部分の文字列変換を分かり易く書けるかどうかぐらいの違いしかない。
e±NNN の部分の文字列変換を分かり易く書けるかどうかぐらいの違いしかない。
227デフォルトの名無しさん
2022/11/26(土) 10:20:35.91ID:B3T+QFuS228デフォルトの名無しさん
2022/11/30(水) 00:24:31.16ID:dHf1VAwB229デフォルトの名無しさん
2022/11/30(水) 01:40:57.50ID:dHf1VAwB230デフォルトの名無しさん
2022/12/05(月) 14:44:28.58ID:Q41LHkn2 お題
ループを使って次の文字列を出力してください
ABCDEDCBA
ABCD DCBA
ABC CBA
AB BA
A A
ループを使って次の文字列を出力してください
ABCDEDCBA
ABCD DCBA
ABC CBA
AB BA
A A
231デフォルトの名無しさん
2022/12/05(月) 14:46:16.49ID:oclBynCf ループとは?
232デフォルトの名無しさん
2022/12/05(月) 18:00:20.95ID:mCZbwtsD >>230
拙いですが、一応できました。
s = "ABCDE"
l = len(s)
for i in range(l-1, -1, -1):
____if i == l-1:
________print(s[:4]+s[::-1])
____else:
________print(s[:i+1] + " " + s[i::-1])
拙いですが、一応できました。
s = "ABCDE"
l = len(s)
for i in range(l-1, -1, -1):
____if i == l-1:
________print(s[:4]+s[::-1])
____else:
________print(s[:i+1] + " " + s[i::-1])
233デフォルトの名無しさん
2022/12/05(月) 19:01:19.27ID:oyhsvFWd234デフォルトの名無しさん
2022/12/05(月) 19:02:17.14ID:oyhsvFWd235デフォルトの名無しさん
2022/12/07(水) 00:01:38.47ID:bF0Kfo20 const char* str[] = {
"ABCDEDCBA\n",
"ABCD DCBA\n",
"ABC CBA\n",
"AB BA\n",
"A A\n"
};
for (auto s : str) printf(s);
"ABCDEDCBA\n",
"ABCD DCBA\n",
"ABC CBA\n",
"AB BA\n",
"A A\n"
};
for (auto s : str) printf(s);
236デフォルトの名無しさん
2022/12/07(水) 01:22:11.45ID:7vTXTAwc >>230
ChatGPTにお願いしたら↓のコードができた
for i in range(4):
print("A" * (4 - i) + "B" * (2 * i + 1) + "A" * (4 - i))
結果は間違ってた(笑
ChatGPTにお願いしたら↓のコードができた
for i in range(4):
print("A" * (4 - i) + "B" * (2 * i + 1) + "A" * (4 - i))
結果は間違ってた(笑
238デフォルトの名無しさん
2022/12/07(水) 18:37:00.40ID:qXWVWSpq 「ループとは?」
って聞いたのに答えないから
って聞いたのに答えないから
239デフォルトの名無しさん
2022/12/07(水) 19:32:50.85ID:s/nrPmn+ アスペごっこに付き合ってる暇はないの
240デフォルトの名無しさん
2022/12/08(木) 01:41:39.70ID:KF4XFHeJ241デフォルトの名無しさん
2022/12/12(月) 11:52:56.49ID:qdPeVaaE 説明不足のアスペとんちゲーが好きな人もいるので
242デフォルトの名無しさん
2022/12/12(月) 12:05:39.45ID:gVHqb1BB 出題者の心を読むスレじゃないんだから
出題者は紛れを減らす努力をしろ
出題者は紛れを減らす努力をしろ
243デフォルトの名無しさん
2022/12/12(月) 22:41:32.20ID:bhcjN5ma アスペごっこに付き合ってる暇はないので
244デフォルトの名無しさん
2022/12/12(月) 23:26:30.74ID:oeW82PXj まともに出題文を書けないアホは出題禁止
245デフォルトの名無しさん
2022/12/12(月) 23:31:34.31ID:bhcjN5ma 繰り返しってなに??!これでもいいいのぉ??!!!
アスペごっこに付き合ってる暇はないので
アスペごっこに付き合ってる暇はないので
246デフォルトの名無しさん
2022/12/13(火) 02:37:48.51ID:o0RtwZg0247デフォルトの名無しさん
2022/12/13(火) 03:31:50.55ID:LNDs19G9 お題:リンクの値を解決するsolve_path関数を作れ
第1引数にはブラウザのアドレスバーの今現在のURLが渡される
第2引数にはリンクの値(aタグのhref値)が渡される
返り値は解決したパス(文字列)とする
解決したパスはURLとして機能するように整形すること
つまり「http://xxxx.xxx/yyy/zzz」のようなURLにすること
絶対パス、相対パス、URLの直接指定に対応できるように作ること
第1引数にはブラウザのアドレスバーの今現在のURLが渡される
第2引数にはリンクの値(aタグのhref値)が渡される
返り値は解決したパス(文字列)とする
解決したパスはURLとして機能するように整形すること
つまり「http://xxxx.xxx/yyy/zzz」のようなURLにすること
絶対パス、相対パス、URLの直接指定に対応できるように作ること
248デフォルトの名無しさん
2022/12/13(火) 06:31:19.82ID:RVT68Vp1249デフォルトの名無しさん
2022/12/13(火) 09:14:58.09ID:NyTgee9l >>248
アスペごっこに付き合ってる暇はないので。
アスペごっこに付き合ってる暇はないので。
250デフォルトの名無しさん
2022/12/14(水) 03:35:53.49ID:SCwOJhsV251デフォルトの名無しさん
2022/12/14(水) 18:00:30.95ID:StYEEYQ5 >>250
日本語も読めないでググってんのか?URL貼れなんて言ってないだろ、ごみ野郎
日本語も読めないでググってんのか?URL貼れなんて言ってないだろ、ごみ野郎
252デフォルトの名無しさん
2022/12/14(水) 18:58:37.46ID:Y6rgBuPW アホは出題するな
253デフォルトの名無しさん
2022/12/14(水) 19:40:15.63ID:vTcjU98f254デフォルトの名無しさん
2022/12/14(水) 19:41:59.18ID:Y6rgBuPW それは失礼
255デフォルトの名無しさん
2022/12/14(水) 21:24:56.35ID:gavZHO0P 真面目にやろうとすればRFC参照してクソデカregexp作るだけだから誰もやる気にならないわな
256デフォルトの名無しさん
2022/12/14(水) 23:40:11.41ID:7jUV+yGa やりたくなきゃやらないで黙ってれば良いのに。
257デフォルトの名無しさん
2022/12/14(水) 23:51:20.49ID:MH9vv9Il258デフォルトの名無しさん
2022/12/15(木) 00:14:05.10ID:X6sYk5yb アルゴリズムのお題ばっかでつまらんからこういうのも好き
259蟻人間 ◆T6xkBnTXz7B0
2022/12/15(木) 01:05:04.79ID:nl5DhriG お題: トマトの分類。
一個のトマトが画像フレームいっぱいに撮影された画像ファイルが入力として与えられる。画像全体の平均色を求め、それが赤っぽいならYesを、赤っぽくなければNoを出力せよ。
一個のトマトが画像フレームいっぱいに撮影された画像ファイルが入力として与えられる。画像全体の平均色を求め、それが赤っぽいならYesを、赤っぽくなければNoを出力せよ。
260デフォルトの名無しさん
2022/12/15(木) 01:13:04.05ID:YuqRQs18 赤っぽいの定義は?
261蟻人間 ◆T6xkBnTXz7B0
2022/12/15(木) 01:21:36.94ID:nl5DhriG262デフォルトの名無しさん
2022/12/15(木) 01:26:05.58ID:47Ejv2xg sum=[0,0,0]
for(i=0;i<data.length;i++)
for(j=0;j<data[i].length;j++)
for(k=0;k<3;k++)
sum[k]+=data[i][j][k]
for(k=0;k<3;k++)
sum[k]/=data.length*data[0].length
rgb2hsv(sum).H
for(i=0;i<data.length;i++)
for(j=0;j<data[i].length;j++)
for(k=0;k<3;k++)
sum[k]+=data[i][j][k]
for(k=0;k<3;k++)
sum[k]/=data.length*data[0].length
rgb2hsv(sum).H
263蟻人間 ◆T6xkBnTXz7B0
2022/12/15(木) 01:53:25.08ID:nl5DhriG 適正なトマトの色の範囲は、おそらくRGBやHSVなどの色空間上の範囲として表現するのが適切かも知れない。
それから全ピクセルの平均を求めるのは時間の掛かる処理に思える。
それから全ピクセルの平均を求めるのは時間の掛かる処理に思える。
264デフォルトの名無しさん
2022/12/15(木) 01:56:34.74ID:7eXwHgCG で赤っぽいの定義は?
265デフォルトの名無しさん
2022/12/15(木) 01:59:58.02ID:NC87g1Wm これはっ緑健の完熟トマト…
266蟻人間 ◆T6xkBnTXz7B0
2022/12/15(木) 02:04:32.67ID:nl5DhriG 赤っぽいトマトの定義。
HSV色空間において、Hが-45度~+45度の範囲で、かつSが70%以上、かつVが50%以上(テキトーに決めてます)。しらんけど。
HSV色空間において、Hが-45度~+45度の範囲で、かつSが70%以上、かつVが50%以上(テキトーに決めてます)。しらんけど。
267蟻人間 ◆T6xkBnTXz7B0
2022/12/15(木) 02:14:50.86ID:nl5DhriG 画像の解像度はVGA。
処理は0.5秒以内。
処理は0.5秒以内。
268デフォルトの名無しさん
2022/12/15(木) 08:07:47.54ID:YuqRQs18269デフォルトの名無しさん
2022/12/15(木) 10:06:23.94ID:D8+s3udF おいおい、そうじゃないだろ
アホな出題者を優良な出題者に育てる
それもお前らの仕事だぞ
アホな出題者を優良な出題者に育てる
それもお前らの仕事だぞ
270デフォルトの名無しさん
2022/12/15(木) 12:37:06.80ID:uzoxWFqF >>269
お前にまかせた
お前にまかせた
272デフォルトの名無しさん
2022/12/15(木) 16:38:57.45ID:ylmQ78W0 処理時間とかいうなら動作環境と画像のフォーマットくらい示しとけよアホ
273デフォルトの名無しさん
2022/12/15(木) 17:37:06.49ID:uzoxWFqF >>271
仕様を書けないところ
仕様を書けないところ
274デフォルトの名無しさん
2022/12/15(木) 17:39:04.49ID:uzoxWFqF 仕様作成のお題じゃなくて
プログラミングのお題なんだから
仕様はちゃんと紛れが無いように書いて
回答も用意しておけ
プログラミングのお題なんだから
仕様はちゃんと紛れが無いように書いて
回答も用意しておけ
275デフォルトの名無しさん
2022/12/15(木) 22:12:02.63ID:47Ejv2xg どうせ仕様書いたところでやらないんだろうな
文句言いたいだけ
黙ってれば良いのに
文句言いたいだけ
黙ってれば良いのに
276デフォルトの名無しさん
2022/12/15(木) 22:31:31.40ID:XntkKj9A でも明らかに誰もやらない問題だろうなってのはあるじゃん
277デフォルトの名無しさん
2022/12/16(金) 00:39:45.94ID:jyj3FCsV if文使うお題は人気ないよな
278デフォルトの名無しさん
2022/12/18(日) 01:20:58.32ID:JbTYiIQv279デフォルトの名無しさん
2022/12/18(日) 01:22:33.33ID:JbTYiIQv あ、ごめん。最初の import 要らない。
280蟻人間 ◆T6xkBnTXz7B0
2022/12/25(日) 18:38:10.18ID:X2xjup2e お題: 在庫管理。
最初は在庫ゼロ。
何個か在庫変動の内容が一行ごとに入力される。
「商品「A」が3個入荷しました」
「商品「A」を2個消費しました」
「商品「B」を5個入荷しました」
。。。
最後に在庫状況を報告する。
「商品「A」が1個、商品「B」が5個あります」
在庫変動は、入荷か消費のどちらか。
商品名は任意の文字列。
最初は在庫ゼロ。
何個か在庫変動の内容が一行ごとに入力される。
「商品「A」が3個入荷しました」
「商品「A」を2個消費しました」
「商品「B」を5個入荷しました」
。。。
最後に在庫状況を報告する。
「商品「A」が1個、商品「B」が5個あります」
在庫変動は、入荷か消費のどちらか。
商品名は任意の文字列。
281蟻人間 ◆T6xkBnTXz7B0
2022/12/25(日) 19:01:23.15ID:X2xjup2e お題: 感染者数の集計。
FAXで日本語の表として感染者のリストが某所から大量に送信されてくる。
それをOCRで読み取り、エクセルファイルにした後でPDFに変換した後、集計して印刷してFAXで報道機関に送信するプログラム。
FAXで日本語の表として感染者のリストが某所から大量に送信されてくる。
それをOCRで読み取り、エクセルファイルにした後でPDFに変換した後、集計して印刷してFAXで報道機関に送信するプログラム。
282デフォルトの名無しさん
2022/12/31(土) 11:24:19.30ID:zpGLZKZe #include <stdio.h>
int main(void)
{
int a, b, c;
int x, y, z;
printf("a = %zu\n",sizeof(unsigned short));
printf("b = %zu\n",sizeof(unsigned int));
printf("c = %zu\n",sizeof(unsigned long));
printf("x = %zu\n",sizeof(short));
printf("y = %zu\n",sizeof(int));
printf("z = %zu\n",sizeof(long));
if (a == x)
printf("等しい\n");
else
printf("等しくない\n");
if (b == y)
printf("等しい\n");
else
printf("等しくない\n");
if (c == z)
printf("等しい\n");
else
printf("等しくない\n");
return 0;
}
上記プログラムで実行結果がすべて「等しくない」で出力されるんですが、なぜなのかわかりません。等価演算子の使い方が間違っているのでしょうか?
int main(void)
{
int a, b, c;
int x, y, z;
printf("a = %zu\n",sizeof(unsigned short));
printf("b = %zu\n",sizeof(unsigned int));
printf("c = %zu\n",sizeof(unsigned long));
printf("x = %zu\n",sizeof(short));
printf("y = %zu\n",sizeof(int));
printf("z = %zu\n",sizeof(long));
if (a == x)
printf("等しい\n");
else
printf("等しくない\n");
if (b == y)
printf("等しい\n");
else
printf("等しくない\n");
if (c == z)
printf("等しい\n");
else
printf("等しくない\n");
return 0;
}
上記プログラムで実行結果がすべて「等しくない」で出力されるんですが、なぜなのかわかりません。等価演算子の使い方が間違っているのでしょうか?
283デフォルトの名無しさん
2022/12/31(土) 11:45:03.82ID:Xd9+Lz33 なんでだろ~
284デフォルトの名無しさん
2022/12/31(土) 12:31:19.53ID:zpGLZKZe 282ですけど、原因がわかりました。直接sizeを比較してないからでした。
if (sizeof(unsigned short int) == sizeof(short))
とすれば比較になります。
if (sizeof(unsigned short int) == sizeof(short))
とすれば比較になります。
285デフォルトの名無しさん
2023/01/01(日) 04:14:40.02ID:k0DSm/Wv >>282
a, b, c, x, y, z に何も代入しておらず全て不定値のままで比較をおこなっているため。
つまり「等しくない」0しか出力されなかった理由は偶然。たまたま自動変数がそのような結果になる値になっていただけ。
a, b, c, x, y, z に何も代入しておらず全て不定値のままで比較をおこなっているため。
つまり「等しくない」0しか出力されなかった理由は偶然。たまたま自動変数がそのような結果になる値になっていただけ。
286デフォルトの名無しさん
2023/01/01(日) 07:54:11.35ID:3UYI3pmj 実行環境で、warning=警告 だらけになりますよね
初学者は、先ずそこを気にしないといけません
初学者は、先ずそこを気にしないといけません
287デフォルトの名無しさん
2023/01/02(月) 23:05:26.01ID:QgUCruY4 昔、ircで外人が質問してきた
c言語のエラーが取れないと
コンパイル結果を見たらwarningだらけだった
俺は「warningを取れ」と言ってやった
そいつは「それは大した問題じゃない」と言ってきた
c言語のエラーが取れないと
コンパイル結果を見たらwarningだらけだった
俺は「warningを取れ」と言ってやった
そいつは「それは大した問題じゃない」と言ってきた
288デフォルトの名無しさん
2023/01/03(火) 08:20:25.77ID:NMKmf8kd >>261
赤っぽいの定義=赤RGB(255, 0, 0)に近く、出荷に適したトマトの色 っておい!
赤っぽいの定義=赤RGB(255, 0, 0)に近く、出荷に適したトマトの色 っておい!
289デフォルトの名無しさん
2023/01/03(火) 09:39:10.10ID:UBjvnfn5 バカは出題禁止にしたいけど
バカは自分がバカな事がわからないんだよな
バカは自分がバカな事がわからないんだよな
290デフォルトの名無しさん
2023/01/04(水) 02:17:42.12ID:Ur39ORao ChatGPT
Q: 出荷に適したトマトの色をRGB値で教えて
A: トマトの色は、その種類や栽培方法、成熟度によって異なります。一般的に、完全に成熟したトマトは、赤い色をしています。ですから、RGB値としては、赤(R)が255、緑(G)が0、青(B)が0になると思われます。ただし、それは概略的な指針であり、実際の色は、異なる品種や栽培条件によって異なるかもしれません。
255,0,0が出荷に適したトマトだそうだぞ
Q: 出荷に適したトマトの色をRGB値で教えて
A: トマトの色は、その種類や栽培方法、成熟度によって異なります。一般的に、完全に成熟したトマトは、赤い色をしています。ですから、RGB値としては、赤(R)が255、緑(G)が0、青(B)が0になると思われます。ただし、それは概略的な指針であり、実際の色は、異なる品種や栽培条件によって異なるかもしれません。
255,0,0が出荷に適したトマトだそうだぞ
291蟻人間 ◆T6xkBnTXz7B0
2023/01/04(水) 14:26:13.02ID:n+FvG6ug 具体的な仕様がない案件をやってみるのもプログラミングの冒険だと思うが。
緑がかったジャガイモ、芽の出たジャガイモを取り除くとか、不発のポップコーンを取り除くとか。
緑がかったジャガイモ、芽の出たジャガイモを取り除くとか、不発のポップコーンを取り除くとか。
292デフォルトの名無しさん
2023/01/04(水) 14:31:53.59ID:fkh/W6sK 仕様を考えるお題は他のスレでやって
293蟻人間 ◆T6xkBnTXz7B0
2023/01/04(水) 19:28:40.37ID:n+FvG6ug お題: UUID文字列を出力せよ。
294デフォルトの名無しさん
2023/01/06(金) 05:08:07.01ID:M8Yj8K4Q295デフォルトの名無しさん
2023/01/06(金) 05:17:11.97ID:M8Yj8K4Q296蟻人間 ◆T6xkBnTXz7B0
2023/01/06(金) 13:50:28.95ID:comZLRpx お題: 「お金」を回転させよ。
297デフォルトの名無しさん
2023/01/06(金) 17:43:57.43ID:XVNiIKyd お題:「蟻人間」を削除せよ。
298蟻人間 ◆T6xkBnTXz7B0
2023/01/06(金) 18:20:34.96ID:faoYgN4s >>296
C++/Win32
https://ideone.com/WjFMbj
>>297
C++
#include <cstdio>
int main(void)
{
std::remove("蟻人間");
return 0;
}
C++/Win32
https://ideone.com/WjFMbj
>>297
C++
#include <cstdio>
int main(void)
{
std::remove("蟻人間");
return 0;
}
299デフォルトの名無しさん
2023/01/06(金) 23:37:06.38ID:fhx1KoPh お題:
キーと値のリストがあります。
そのうちキーが0のものを除いてグループ化した結果を出力せよ。
ただし0のものについてもそれぞれの値をリストとすること。
[[0, "a"], [0, "b"], [0, "c"], [1, "d"], [2, "e"], [2, "f"], [3, "g"]]
→ [[0, ["a"]], [0, ["b"]], [0, ["c"]], [1, ["d"]], [2, ["e", "f"]], [3, ["g"]]]
キーと値のリストがあります。
そのうちキーが0のものを除いてグループ化した結果を出力せよ。
ただし0のものについてもそれぞれの値をリストとすること。
[[0, "a"], [0, "b"], [0, "c"], [1, "d"], [2, "e"], [2, "f"], [3, "g"]]
→ [[0, ["a"]], [0, ["b"]], [0, ["c"]], [1, ["d"]], [2, ["e", "f"]], [3, ["g"]]]
300デフォルトの名無しさん
2023/01/08(日) 23:11:39.41ID:H/llE4PY お題
数列が入力されます
最も大きな値をHighestに変換してください
最も小さな値をLowestに変換してください
最も大きくもなく最も小さくもない値をMiddleに変換してください
例
7
5.1
4.8
5.5
6.3
5.8
6.1
5.8
4.7
5.6
7.1
Middle
Middle
Middle
Middle
Middle
Middle
Middle
Middle
Lowest
Middle
Highest
数列が入力されます
最も大きな値をHighestに変換してください
最も小さな値をLowestに変換してください
最も大きくもなく最も小さくもない値をMiddleに変換してください
例
7
5.1
4.8
5.5
6.3
5.8
6.1
5.8
4.7
5.6
7.1
Middle
Middle
Middle
Middle
Middle
Middle
Middle
Middle
Lowest
Middle
Highest
301デフォルトの名無しさん
2023/01/08(日) 23:19:00.38ID:H/llE4PY お題
数列が入力されます
連続する3つの数字(A, B, C)のうち
A <= B <= C
この条件を満たす(A, B, C)を出力してください
例
9.1
8.1
8.8
12.1
10.4
10.3
10.1
8.5
11.5
10.6
(8.1, 8.8, 12.1)
数列が入力されます
連続する3つの数字(A, B, C)のうち
A <= B <= C
この条件を満たす(A, B, C)を出力してください
例
9.1
8.1
8.8
12.1
10.4
10.3
10.1
8.5
11.5
10.6
(8.1, 8.8, 12.1)
302デフォルトの名無しさん
2023/01/08(日) 23:59:01.77ID:H/llE4PY303デフォルトの名無しさん
2023/01/10(火) 01:54:23.75ID:BgZKYyvJ >>299
Kotlin
ライブラリ使ってグループ分けしてから0のやつだけ一つづつに作り直しているのでやってることは >>302 のJavaのやつとほぼ同じだと思う。
入出力に凝った所が違うがそこは肝心な所ではない。
https://paiza.io/projects/XKaj8JlMZrlxh3J0bveRlg
Kotlin
ライブラリ使ってグループ分けしてから0のやつだけ一つづつに作り直しているのでやってることは >>302 のJavaのやつとほぼ同じだと思う。
入出力に凝った所が違うがそこは肝心な所ではない。
https://paiza.io/projects/XKaj8JlMZrlxh3J0bveRlg
304デフォルトの名無しさん
2023/01/10(火) 02:09:52.84ID:BgZKYyvJ305デフォルトの名無しさん
2023/01/10(火) 02:24:54.71ID:BgZKYyvJ306蟻人間 ◆T6xkBnTXz7B0
2023/01/10(火) 23:39:37.16ID:PQFcH8F6 お題: グラフ理論において、あるグラフGの頂点が頂点番号の集合として、Gの辺が頂点番号の順序対の集合として与えられる。ケーニヒスベルクの橋の問題を解け。
307デフォルトの名無しさん
2023/01/11(水) 10:43:19.48ID:8ImpuJOv よくわかんないなあ
調べるの面倒臭いなあ
俺はパスする
調べるの面倒臭いなあ
俺はパスする
308デフォルトの名無しさん
2023/01/11(水) 13:41:08.95ID:6xJiw1N1 int v[] = {1, 2, 3, 4, 5, 6, 7};
int p[][2] = {{1, 2}, {2, 3}, {1, 4}, {4, 5}, {2, 6}, {4, 6}, {3, 7}, {5, 7}, {6, 7}};
あとはまかせた
↓
int p[][2] = {{1, 2}, {2, 3}, {1, 4}, {4, 5}, {2, 6}, {4, 6}, {3, 7}, {5, 7}, {6, 7}};
あとはまかせた
↓
309デフォルトの名無しさん
2023/01/11(水) 16:39:17.08ID:GAGx1xu5 1/11 向け問題
[お題] 1位 + 11位 + 111位 + ...
整数 F, T が与えられる。F以上 T以下の異なる素数を 11個 選び和をとる。
全通りは、NCR(素数の個数, 11) 種類ある。
全通りを, 以下の優先順位で並べ、一意の順位をつけたと考える。
・優先1 和が多い順
・優先2 選んだ11素数を昇順に並べた辞書順
順位の数字が'1'のみであらわせる順位の和を合計し、出力する。
(1位, 11位, 111位, 1111位, ...と存在する順位まで)
制約) 0< F < T <= 4000 かつ T - F <= 1400
参考) この制約下で素数の最大個数は222個。最大順位は64bit整数におさまる
1) 2 39 --> 361
素数は12個あり、12C11で12通りある、1位は195で11位は166 合計して361
2) 123 231 --> 12600
素数20個 20C11 = 167960, [1位,11位, ... , 111111位] と6個分の和を加算
3) 1111 2222 --> ?
4) 2 1402 --> 243741
5) 2600 4000 --> ?
[お題] 1位 + 11位 + 111位 + ...
整数 F, T が与えられる。F以上 T以下の異なる素数を 11個 選び和をとる。
全通りは、NCR(素数の個数, 11) 種類ある。
全通りを, 以下の優先順位で並べ、一意の順位をつけたと考える。
・優先1 和が多い順
・優先2 選んだ11素数を昇順に並べた辞書順
順位の数字が'1'のみであらわせる順位の和を合計し、出力する。
(1位, 11位, 111位, 1111位, ...と存在する順位まで)
制約) 0< F < T <= 4000 かつ T - F <= 1400
参考) この制約下で素数の最大個数は222個。最大順位は64bit整数におさまる
1) 2 39 --> 361
素数は12個あり、12C11で12通りある、1位は195で11位は166 合計して361
2) 123 231 --> 12600
素数20個 20C11 = 167960, [1位,11位, ... , 111111位] と6個分の和を加算
3) 1111 2222 --> ?
4) 2 1402 --> 243741
5) 2600 4000 --> ?
310デフォルトの名無しさん
2023/01/11(水) 16:59:19.37ID:LrbNabxf なんか趣旨が理解出来なくてすべってる人が多いのな
プログラミングの観点から何か興味を引くようなお題じゃないとこの板じゃ反応ないと思うよ
プログラミングの観点から何か興味を引くようなお題じゃないとこの板じゃ反応ないと思うよ
311デフォルトの名無しさん
2023/01/11(水) 17:49:08.53ID:lx9Ag9Yr >>306
頂点番号の対だけで情報足りてるじゃん
頂点番号の対だけで情報足りてるじゃん
312デフォルトの名無しさん
2023/01/11(水) 17:52:38.47ID:lx9Ag9Yr313デフォルトの名無しさん
2023/01/11(水) 19:20:10.27ID:rEwL+Sf1 >>311
は?
は?
314デフォルトの名無しさん
2023/01/11(水) 20:03:43.15ID:2InRpmeN 一筆書き可能の判定法の有向グラフ版ってこと?
すべての頂点について、そこに向かう辺とそこから出る辺が共に偶数であるかどうかと同値かな
すべての頂点について、そこに向かう辺とそこから出る辺が共に偶数であるかどうかと同値かな
315デフォルトの名無しさん
2023/01/11(水) 20:08:58.20ID:2InRpmeN >>311
情報与えるんじゃなくて定義の話じゃね
情報与えるんじゃなくて定義の話じゃね
316デフォルトの名無しさん
2023/01/11(水) 20:09:36.17ID:2InRpmeN 前半は
317デフォルトの名無しさん
2023/01/11(水) 20:10:29.64ID:2InRpmeN まぁ定義も情報か
318デフォルトの名無しさん
2023/01/11(水) 20:27:59.86ID:Ew0xxktJ319デフォルトの名無しさん
2023/01/11(水) 20:31:06.96ID:Ew0xxktJ 蟻の出題はただの思いつきでまともなお題になってないから時間をかける価値は無い
320デフォルトの名無しさん
2023/01/11(水) 20:32:04.74ID:2InRpmeN >>308はそいつが勝手に入力扱いしただけやろ。
321デフォルトの名無しさん
2023/01/11(水) 20:33:14.80ID:2InRpmeN 無効でも順序対である必要あるん?
322デフォルトの名無しさん
2023/01/11(水) 20:37:29.73ID:Yn2pvCxf ケーニヒスベルクの橋の問題だから無向と思ったが
確かに順序対と書いてある
真意は蟻しかわからない
確かに順序対と書いてある
真意は蟻しかわからない
323デフォルトの名無しさん
2023/01/11(水) 20:38:27.83ID:Yn2pvCxf いずれにしろ>>314ではダメ
324デフォルトの名無しさん
2023/01/11(水) 20:39:54.20ID:2InRpmeN 何でダメなん?
325デフォルトの名無しさん
2023/01/11(水) 20:40:33.42ID:2InRpmeN ダメだね
326デフォルトの名無しさん
2023/01/11(水) 20:41:43.31ID:2InRpmeN いや、これは偶数じゃないか
グルグル回るだけのものは奇数で成り立つな
グルグル回るだけのものは奇数で成り立つな
327デフォルトの名無しさん
2023/01/11(水) 20:42:38.38ID:2InRpmeN 入と出が同数、ならどうだろう
328デフォルトの名無しさん
2023/01/11(水) 20:45:29.02ID:jpaYiZfD329デフォルトの名無しさん
2023/01/11(水) 20:48:29.09ID:tUKEbXZD >>311
は??
は??
330デフォルトの名無しさん
2023/01/11(水) 21:01:38.01ID:IvsI+U0J >>327
勘じゃなくてちゃんと考えてから書きなさい
勘じゃなくてちゃんと考えてから書きなさい
331デフォルトの名無しさん
2023/01/11(水) 21:06:32.39ID:IvsI+U0J 連結
全ての点で入と出の差が1以下
入と出が同数じゃない点が2個以下
全ての点で入と出の差が1以下
入と出が同数じゃない点が2個以下
332デフォルトの名無しさん
2023/01/11(水) 21:56:38.66ID:2InRpmeN お前さんには言われたくなかったねぇ
問題文もよく読んでなかったし思い込みで入力扱いして不要な情報だとかなんだとかしていたわけだからね。
問題文もよく読んでなかったし思い込みで入力扱いして不要な情報だとかなんだとかしていたわけだからね。
333デフォルトの名無しさん
2023/01/11(水) 22:09:56.53ID:NOiNk1Lr >全ての点で入と出の差が1以下
つまり次数が奇数の場合もありということか。
有向グラフになったらオイラーグラフの「全ての頂点の次数が偶数」よりも条件が緩くなるのかね。
そんなことあるかね
それとも準オイラーグラフも許されているのか?
ケーニヒスベルクの橋はオイラーグラフだからてっきりそれはないかと。
つまり次数が奇数の場合もありということか。
有向グラフになったらオイラーグラフの「全ての頂点の次数が偶数」よりも条件が緩くなるのかね。
そんなことあるかね
それとも準オイラーグラフも許されているのか?
ケーニヒスベルクの橋はオイラーグラフだからてっきりそれはないかと。
334デフォルトの名無しさん
2023/01/11(水) 22:13:53.37ID:8g/qDi9U すまない、橋の問題はオイラーグラフではなく閉路と言いたかった。
335デフォルトの名無しさん
2023/01/11(水) 22:17:34.30ID:xV7vDRTi あぁ、出題文の問題は一筆書きだけではなくて一筆書きで元の場所に戻るんだ
336デフォルトの名無しさん
2023/01/11(水) 22:21:52.27ID:smM4RS1r 草
アイツほんと問題文読んでないんだね
ドヤ顔で指摘しちゃって恥ずかしいたらありゃしない
アイツほんと問題文読んでないんだね
ドヤ顔で指摘しちゃって恥ずかしいたらありゃしない
337デフォルトの名無しさん
2023/01/11(水) 22:31:14.68ID:IvsI+U0J ケーニヒスベルクの橋って閉路なのか
ただの知識問題でプログラミング全く関係ないけど
ただの知識問題でプログラミング全く関係ないけど
338デフォルトの名無しさん
2023/01/11(水) 22:37:09.41ID:IvsI+U0J >>332
不要だろ
不要だろ
339デフォルトの名無しさん
2023/01/11(水) 22:39:09.52ID:zWDWCyHE 恥ゲージMAXやね
340デフォルトの名無しさん
2023/01/11(水) 22:46:10.73ID:IvsI+U0J341デフォルトの名無しさん
2023/01/11(水) 22:50:28.23ID:IvsI+U0J342デフォルトの名無しさん
2023/01/11(水) 22:58:19.00ID:SA6KxbU7 ( T_T)\(^-^ )ADHDって生きづらいよね
343デフォルトの名無しさん
2023/01/11(水) 23:07:37.17ID:2InRpmeN 違うんだよなぁ。
>>313の意図は知らんけど俺が言ってるのは頂点リストをプログラムの入力にするとは明記されてないということ。
単に「グラフの頂点番号の順序対のリストを与える」と言ったときに頂点番号ってなんだ?とならないようにその説明として「頂点に番号を付けたもの」という文言をつけてるだけの可能性もあるだろうということ。
まぁ、分からないか
>>313の意図は知らんけど俺が言ってるのは頂点リストをプログラムの入力にするとは明記されてないということ。
単に「グラフの頂点番号の順序対のリストを与える」と言ったときに頂点番号ってなんだ?とならないようにその説明として「頂点に番号を付けたもの」という文言をつけてるだけの可能性もあるだろうということ。
まぁ、分からないか
344デフォルトの名無しさん
2023/01/11(水) 23:12:57.97ID:IvsI+U0J 「AがBとして、CがDとして与えられる」
両方与えられるという文にみえる
両方与えられるという文にみえる
345デフォルトの名無しさん
2023/01/11(水) 23:14:31.62ID:IvsI+U0J そうじゃない解釈も確かにある
346デフォルトの名無しさん
2023/01/11(水) 23:14:42.49ID:2InRpmeN 「AはBとして、CはBのD」って意味じゃない?ってこと
347デフォルトの名無しさん
2023/01/11(水) 23:15:33.99ID:IvsI+U0J348デフォルトの名無しさん
2023/01/11(水) 23:15:34.98ID:2InRpmeN いや、BはAとしてCはBのDか
まぁどうでもいいけどね。
まぁどうでもいいけどね。
349デフォルトの名無しさん
2023/01/11(水) 23:16:10.44ID:2InRpmeN そそ、お前さんは先入観とそのレスに惑われてたってこと。
350デフォルトの名無しさん
2023/01/11(水) 23:18:58.91ID:IvsI+U0J >>311に対して「そうだね」で終わる話なのに
351デフォルトの名無しさん
2023/01/11(水) 23:19:23.16ID:IvsI+U0J 変に絡まれた
352デフォルトの名無しさん
2023/01/11(水) 23:19:59.30ID:2InRpmeN いやいや、まるで無駄な入力付けるなよって言ってるかのようじゃん…
まだあんまりわかってないかぁ
そもそも入力とは言ってないんだよね
まだあんまりわかってないかぁ
そもそも入力とは言ってないんだよね
353デフォルトの名無しさん
2023/01/11(水) 23:21:32.80ID:SA6KxbU7 あんぽんターン(^O^☆♪
354デフォルトの名無しさん
2023/01/11(水) 23:21:51.74ID:IvsI+U0J 結局プログラミング以外の話になるのが蟻のお題
355デフォルトの名無しさん
2023/01/11(水) 23:23:33.77ID:qgXhIU8i 【悲報】アスペクトガイジ、先入観でドヤ顔で指摘するも開き直る
356デフォルトの名無しさん
2023/01/11(水) 23:23:52.74ID:IvsI+U0J ケーニヒスベルクの橋の問題なんだから無向に決まってんだろ
これも1個の解釈
これも1個の解釈
357デフォルトの名無しさん
2023/01/11(水) 23:25:37.67ID:hvXrP5Qh 決まってないので指摘するのは間違いよ~
そもそも順序対に気付いていなかったのでそうだと思ってしまったのは仕方ないねぇ
そもそも順序対に気付いていなかったのでそうだと思ってしまったのは仕方ないねぇ
358デフォルトの名無しさん
2023/01/11(水) 23:29:01.68ID:IvsI+U0J 単発君、まだ勘違いしてるのか
アホ
アホ
359デフォルトの名無しさん
2023/01/11(水) 23:32:24.06ID:iLygO0TL 効いてる♪
効いてる♪
効いてる♪
効いてる♪
イライラしちゃって♪顔真っ赤♪
(妖怪ウォッチのリズムで)
効いてる♪
効いてる♪
効いてる♪
イライラしちゃって♪顔真っ赤♪
(妖怪ウォッチのリズムで)
360蟻人間 ◆T6xkBnTXz7B0
2023/01/12(木) 00:27:34.37ID:2cbw5EZQ お題: オブジェクト指向でお絵描きプログラム。
各図形は、描画に必要な座標などを保持する、オブジェクト指向に準じたクラスとして定義する。描画対象のキャンバスは画面、画像、テキスト文字列などを好きに選んでも構わない。
キャンバスでは長方形Rectangle、円Circleの2種類の図形をメモリーの許す限り複数個、追加ができ、また削除できる。色が指定できる場合は塗りつぶしは黄色とし、線の色は青色とする。線の太さは1ピクセル以上とする。
図形を描画する関数は多態性を持ったdraw関数とする。
各図形に図形の位置をずらすmove関数(平行移動)を追加せよ。
複数の図形をグループ化した図形GroupShapeを追加し、GroupShapeにもdraw関数、move関数を追加せよ。
サイズ80x25の空白キャンバスに対して以下の操作を行え。
1. 長方形(8, 10)~(10, 15)を追加。
2. 半径5の円(10, 10)を追加。
3. 1と2をグループ化して+(2, 7)だけmove関数でずらす。
4. キャンバスをdraw関数で描画する。
各図形は、描画に必要な座標などを保持する、オブジェクト指向に準じたクラスとして定義する。描画対象のキャンバスは画面、画像、テキスト文字列などを好きに選んでも構わない。
キャンバスでは長方形Rectangle、円Circleの2種類の図形をメモリーの許す限り複数個、追加ができ、また削除できる。色が指定できる場合は塗りつぶしは黄色とし、線の色は青色とする。線の太さは1ピクセル以上とする。
図形を描画する関数は多態性を持ったdraw関数とする。
各図形に図形の位置をずらすmove関数(平行移動)を追加せよ。
複数の図形をグループ化した図形GroupShapeを追加し、GroupShapeにもdraw関数、move関数を追加せよ。
サイズ80x25の空白キャンバスに対して以下の操作を行え。
1. 長方形(8, 10)~(10, 15)を追加。
2. 半径5の円(10, 10)を追加。
3. 1と2をグループ化して+(2, 7)だけmove関数でずらす。
4. キャンバスをdraw関数で描画する。
361デフォルトの名無しさん
2023/01/12(木) 03:40:18.96ID:+C22HBL8 お題: 電子レンジのワット数に応じた時間計算
例えば500Wでしか暖められない電子レンジがあったとして、600W 2分30秒と書かれた弁当を温める場合に何分何秒にセットするのが良いかを計算して出す。
プログラムの入力はワット数、時間、変換ワット数のように引数で指定でも良いし標準入力から入力しても良いしその辺はご自由に。
出力は何分何秒になるかが分かるように出力されれば良い。
例えば500Wでしか暖められない電子レンジがあったとして、600W 2分30秒と書かれた弁当を温める場合に何分何秒にセットするのが良いかを計算して出す。
プログラムの入力はワット数、時間、変換ワット数のように引数で指定でも良いし標準入力から入力しても良いしその辺はご自由に。
出力は何分何秒になるかが分かるように出力されれば良い。
362デフォルトの名無しさん
2023/01/12(木) 04:31:32.73ID:SDSfV1tN お題:画面左から右に放物線を描け
放物線の大きさは自由とする
放物線の大きさは自由とする
363デフォルトの名無しさん
2023/01/12(木) 17:46:47.17ID:0N8k5ccV もうちょっと解きたくなる問題にしてよ
364デフォルトの名無しさん
2023/01/12(木) 20:01:45.06ID:SDSfV1tN 解きたくなる問題っていわゆる競技プログラミング的な問題?
365デフォルトの名無しさん
2023/01/12(木) 22:39:30.54ID:NydLThiR 辺のリストとして順序のない頂点番号のペアのリストが与えられます
すべての頂点についてそこに接続される辺の数が偶数であるか判定するプログラムを記述せよ
すべての頂点についてそこに接続される辺の数が偶数であるか判定するプログラムを記述せよ
366デフォルトの名無しさん
2023/01/13(金) 07:12:10.26ID:yfNIHWIT お題:2023と出力せよ
ただしソースコードに使う記号とアルファベットと数字の文字数は同じでなければならない
ただしソースコードに使う記号とアルファベットと数字の文字数は同じでなければならない
367デフォルトの名無しさん
2023/01/13(金) 07:28:17.46ID:yfNIHWIT368デフォルトの名無しさん
2023/01/13(金) 08:40:12.03ID:nvi3rj0H printf("%04d",03747);
369デフォルトの名無しさん
2023/01/13(金) 14:36:20.69ID:+TkXA4uq >>365
digraph "koenigsberg" {
graph [rankdir=LR]
A [label="い"]
B [label="ろ"]
C [label="は"]
D [label="に"]
A -> B; A -> C; A -> D
C -> B; C -> B
C -> D; C -> D
}
屁が臭い
digraph "koenigsberg" {
graph [rankdir=LR]
A [label="い"]
B [label="ろ"]
C [label="は"]
D [label="に"]
A -> B; A -> C; A -> D
C -> B; C -> B
C -> D; C -> D
}
屁が臭い
370デフォルトの名無しさん
2023/01/15(日) 00:08:46.23ID:FV+qvPCN >>366
C
https://paiza.io/projects/i1c5DPBXZ1G-wd1QHitTQA
記号、アルファベット、数字は全て45文字になっている。空白文字はカウントしていない。
まあでも、C言語だからこれでエラーなくコンパイルできたというだけだな。
(paiza.ioのCコンパイラは警告出しまくりではあるが)。
他の言語だと変数に文字列代入するとかコメント使うとかしないと文字数の調整が出来ないかも知れない。
C
https://paiza.io/projects/i1c5DPBXZ1G-wd1QHitTQA
記号、アルファベット、数字は全て45文字になっている。空白文字はカウントしていない。
まあでも、C言語だからこれでエラーなくコンパイルできたというだけだな。
(paiza.ioのCコンパイラは警告出しまくりではあるが)。
他の言語だと変数に文字列代入するとかコメント使うとかしないと文字数の調整が出来ないかも知れない。
371デフォルトの名無しさん
2023/01/15(日) 01:00:27.85ID:FV+qvPCN >>361
Kotlin
https://paiza.io/projects/5CeeHK2CT8yX9ExfzW5N8A
実はこのお題を作ったのは俺だ。
計算そのものはとても簡単なのでこういう機能は電子レンジに内蔵して欲しいな。
ワット数一つでダイヤル式の安い電子レンジでもそういう目盛りを書いておいてくれれば出来る。
Kotlin
https://paiza.io/projects/5CeeHK2CT8yX9ExfzW5N8A
実はこのお題を作ったのは俺だ。
計算そのものはとても簡単なのでこういう機能は電子レンジに内蔵して欲しいな。
ワット数一つでダイヤル式の安い電子レンジでもそういう目盛りを書いておいてくれれば出来る。
372デフォルトの名無しさん
2023/01/15(日) 02:14:30.17ID:gPxpLXY1 普通の知能を有した人間なら簡単に暗算出来るから必要ない
重度知能障害のガイジにはその機能すら使えない
つまり
極一部の軽度知能障害ガイジにだけ求められるニッチすぎる機能
そんなバカ向け機能搭載するくらいなら必要な温め時間を商品から読み取る機能を規格化して全(半)自動化すべきだろう
重度知能障害のガイジにはその機能すら使えない
つまり
極一部の軽度知能障害ガイジにだけ求められるニッチすぎる機能
そんなバカ向け機能搭載するくらいなら必要な温め時間を商品から読み取る機能を規格化して全(半)自動化すべきだろう
373デフォルトの名無しさん
2023/01/15(日) 05:24:15.26ID:HfW5N73n 理屈があるのは分かるがまあ普段なら目分量的なイメージで適当に加減するわな
大体でいいんだし暗算っていうか計算すらしてないと思うが
大体でいいんだし暗算っていうか計算すらしてないと思うが
374デフォルトの名無しさん
2023/01/15(日) 06:42:56.97ID:jfEFDcL5 電子レンジにQRコード読み取り部作って弁当のラベルのQRコードで自動的にあっため時間セットしてくれるとかなら便利かな?
375デフォルトの名無しさん
2023/01/15(日) 08:11:24.04ID:mSV32aUO >>366 Ruby
puts 2_0_2_3
puts 2_0_2_3
376デフォルトの名無しさん
2023/01/15(日) 17:19:38.70ID:WCY+XZ1J377デフォルトの名無しさん
2023/01/15(日) 17:48:39.72ID:WCY+XZ1J378蟻人間 ◆T6xkBnTXz7B0
2023/01/15(日) 21:44:15.23ID:vbe9Mh4B お題: エラトステネスのふるいによる素数計算。ただし、発見した素数は
一行ごとにテキストファイルに保存し、途中で中断したり、途中から再開できるようにせよ。
一行ごとにテキストファイルに保存し、途中で中断したり、途中から再開できるようにせよ。
380デフォルトの名無しさん
2023/01/16(月) 01:01:20.29ID:dNVpKyvJ 蟻人間ってこんなスレにも湧くのか
381デフォルトの名無しさん
2023/01/16(月) 15:39:46.71ID:MsfEWWA2 行についての説明が欠如
382デフォルトの名無しさん
2023/01/16(月) 15:41:07.03ID:MsfEWWA2 >>374
電子レンジの中のトレイの下の台って重さ測れるの?
電子レンジの中のトレイの下の台って重さ測れるの?
383デフォルトの名無しさん
2023/01/16(月) 22:39:09.16ID:iuZ1R8qg お題
4桁のダイヤルロックの全パターン(0000~9999)を試すときの
最小手数の手順を一つ構成せよ。一つの桁の数字を1だけずらすことを1手とする。
[出力例]
0000
0001
0002
…
0008
0009
0019
…
…
4桁のダイヤルロックの全パターン(0000~9999)を試すときの
最小手数の手順を一つ構成せよ。一つの桁の数字を1だけずらすことを1手とする。
[出力例]
0000
0001
0002
…
0008
0009
0019
…
…
384デフォルトの名無しさん
2023/01/16(月) 23:31:00.58ID:aXflKE34 >>374
それできると便利だね。レンジの庫内の上にカメラ付けておいて読ませれば弁当入れてスタートさせるだけで良くなる。
それできると便利だね。レンジの庫内の上にカメラ付けておいて読ませれば弁当入れてスタートさせるだけで良くなる。
385蟻人間 ◆T6xkBnTXz7B0
2023/01/20(金) 00:01:32.51ID:9QULq18e お題: マイドキュメントの中から「secret.txt」というファイルを探して、
見つかったら、そのフルパスと中身を出力するプログラム。
見つかったら、そのフルパスと中身を出力するプログラム。
386デフォルトの名無しさん
2023/01/20(金) 01:04:08.85ID:ZAb8Aj+J 仕様があいまい
387デフォルトの名無しさん
2023/01/20(金) 08:07:46.26ID:QPqgERsk わざとやってんのか
ズレてるの自覚してないのか
ズレてるの自覚してないのか
388デフォルトの名無しさん
2023/01/20(金) 08:26:44.32ID:4FDe58aX アホだからわからないんでしょ
389デフォルトの名無しさん
2023/01/21(土) 06:38:17.48ID:LtuQH3eG >>385
Windows 限定?
Windows 限定?
390デフォルトの名無しさん
2023/01/21(土) 09:24:11.19ID:65q2x7kt アホの相手すんな
391デフォルトの名無しさん
2023/01/21(土) 20:04:10.41ID:JTA3Ya2G392蟻人間 ◆T6xkBnTXz7B0
2023/01/21(土) 20:29:41.73ID:F/Hlc0t0393デフォルトの名無しさん
2023/01/21(土) 22:48:16.95ID:PxhUXXTz >>392
Linux のコンサバなディストリは今はなにがお勧めですか、もうそろそろ Linux に乗り換えようかと
Linux のコンサバなディストリは今はなにがお勧めですか、もうそろそろ Linux に乗り換えようかと
394蟻人間 ◆T6xkBnTXz7B0
2023/01/21(土) 23:10:37.02ID:F/Hlc0t0 >>393
一般のデスクトップ向けの無料Linuxなら、利用者と情報の多いUbuntuやXubuntuがいい。
工業製品向けとなるとAndroidとかPuppy Linuxかな。私はLinuxは専門外だけど。
一般のデスクトップ向けの無料Linuxなら、利用者と情報の多いUbuntuやXubuntuがいい。
工業製品向けとなるとAndroidとかPuppy Linuxかな。私はLinuxは専門外だけど。
395デフォルトの名無しさん
2023/01/22(日) 06:43:14.23ID:1NpPY/pK WSL2, Ubuntu 20.04 か22.04。
まあ素人は、20.04が無難
VSCode の拡張機能・Remote Development(Remote WSL, Remote SSH, Remote Containers)
これで、WSL2, Docker Desktop も使える
多言語バージョンマネージャーは、日本人が作ったanyenv とか、asdf もある。
それか、Docker
まあ素人は、20.04が無難
VSCode の拡張機能・Remote Development(Remote WSL, Remote SSH, Remote Containers)
これで、WSL2, Docker Desktop も使える
多言語バージョンマネージャーは、日本人が作ったanyenv とか、asdf もある。
それか、Docker
396デフォルトの名無しさん
2023/01/22(日) 07:22:51.14ID:LkY3mVDz 純粋関数型言語触るかテスト駆動開発入門してセンス磨いてくれ
397デフォルトの名無しさん
2023/01/22(日) 14:44:09.50ID:4qkUXg4j お題
月、名前、金額が入力されます
月が2022-12〜2023-01の期間で
金額の合計が最も大きい人の名前と合計の金額を出力してください
2022-10 加藤 10
2022-12 柳沢 10000
2022-10 柳沢 26
2023-01 伊東 10
2022-12 柳沢 151288
2022-11 加藤 10000
2023-02 伊東 257900
2022-12 柳沢 12600
2022-10 伊東 12600
2023-01 伊東 70000
2022-11 加藤 40000
2023-01 伊東 150000
2022-11 加藤 60000
2022-12 柳沢 257900
2023-02 柳沢 40000
2022-11 加藤 26
2023-02 加藤 10000
月、名前、金額が入力されます
月が2022-12〜2023-01の期間で
金額の合計が最も大きい人の名前と合計の金額を出力してください
2022-10 加藤 10
2022-12 柳沢 10000
2022-10 柳沢 26
2023-01 伊東 10
2022-12 柳沢 151288
2022-11 加藤 10000
2023-02 伊東 257900
2022-12 柳沢 12600
2022-10 伊東 12600
2023-01 伊東 70000
2022-11 加藤 40000
2023-01 伊東 150000
2022-11 加藤 60000
2022-12 柳沢 257900
2023-02 柳沢 40000
2022-11 加藤 26
2023-02 加藤 10000
398デフォルトの名無しさん
2023/01/22(日) 16:15:12.29ID:kK2ZzIVu >>397
Haskell
mport Data.List
makeReport ls = id
$ (\x -> ( minimum x, maximum x ))
$ map (\x -> ( sum $ map (read.(!!2)) x, (head x)!!1))
$ groupBy (\x y -> x!!1 == y!!1 )
$ filter ( \x -> head x >= "2022-12" && head x <= "2023-01" )
$ map words
$ ls
main = do
cont <- getContents
let ls = lines cont
print $ makeReport ls
Haskell
mport Data.List
makeReport ls = id
$ (\x -> ( minimum x, maximum x ))
$ map (\x -> ( sum $ map (read.(!!2)) x, (head x)!!1))
$ groupBy (\x y -> x!!1 == y!!1 )
$ filter ( \x -> head x >= "2022-12" && head x <= "2023-01" )
$ map words
$ ls
main = do
cont <- getContents
let ls = lines cont
print $ makeReport ls
399デフォルトの名無しさん
2023/01/23(月) 01:10:57.11ID:PlrAEUgr >>397
awk, sort, head
元データをコピペで odai_397.txt に入れておいて Linux で bash から以下を実行した。
awk '$1>="2022-12"&&$1<="2023-01"{t[$2]+=$3}END{for(i in t)print i,t[i]}' odai_397.txt | sort -k 2nr | head -1
結果はこう出た。
柳沢 431788
awk, sort, head
元データをコピペで odai_397.txt に入れておいて Linux で bash から以下を実行した。
awk '$1>="2022-12"&&$1<="2023-01"{t[$2]+=$3}END{for(i in t)print i,t[i]}' odai_397.txt | sort -k 2nr | head -1
結果はこう出た。
柳沢 431788
400デフォルトの名無しさん
2023/01/23(月) 02:39:02.46ID:PlrAEUgr401デフォルトの名無しさん
2023/01/31(火) 06:31:47.98ID:ozTESx1d お題
顧客番号・商品番号・小計のCSV を、
商品番号が連番の場合には、その分だけ行数を増やし、
小計を等分割しろ(1円未満は切り捨て)
入力
1,1,100
2,1-3,200
3,1,500
3,2-3,400
出力
1,1,100
2,1,66
2,2,66
2,3,66
3,1,500
3,2,200
3,3,200
空白行に意味はない。見やすくしただけ
顧客番号・商品番号・小計のCSV を、
商品番号が連番の場合には、その分だけ行数を増やし、
小計を等分割しろ(1円未満は切り捨て)
入力
1,1,100
2,1-3,200
3,1,500
3,2-3,400
出力
1,1,100
2,1,66
2,2,66
2,3,66
3,1,500
3,2,200
3,3,200
空白行に意味はない。見やすくしただけ
402デフォルトの名無しさん
2023/02/01(水) 03:34:10.44ID:7Z3xMS0R >>401
Haskell
https://ideone.com/ESZHys
ただし入力はすべての行が
整数,整数,整数
または
整数,整数-整数,整数
のみの形と仮定、エラー処理やそれ以外の形式でが混じっている(空行など)が混じることは想定せず
Haskell
https://ideone.com/ESZHys
ただし入力はすべての行が
整数,整数,整数
または
整数,整数-整数,整数
のみの形と仮定、エラー処理やそれ以外の形式でが混じっている(空行など)が混じることは想定せず
403デフォルトの名無しさん
2023/02/01(水) 22:55:53.80ID:8+TAxA89404デフォルトの名無しさん
2023/02/02(木) 02:55:58.24ID:lvlxzCHr405デフォルトの名無しさん
2023/02/03(金) 20:44:23.48ID:KJ3h+c6Z >>397
Elixir で作った。これは、ややこしかった
{ :ok, input_data } = File.read( "input_data.csv" )
# IO.inspect input_data
# 末尾の改行を削除してから、1行ずつ処理する。空白で区切る。
# 2022-12 〜 2023-01 の期間内のデータだけに絞り込む。
# 名前でグルーピングしてから、金額を取り出す。
# 各人の金額を、数値に変換してから合計する。
# 合計が最も大きい人を求める
tuple = input_data
|> String.trim
|> String.split( "\n" )
|> Enum.map( fn( line ) -> String.split( line, " " ) end )
|> Enum.filter( fn [ head | _ ] -> "2022-12" <= head and head <= "2023-01" end )
# |> IO.inspect
|> Enum.group_by( fn [ _, name, _ ] -> name end, fn [ _, _, money ] -> money end )
# |> IO.inspect
|> Enum.map( fn { key, val } -> { key,
Enum.sum( Enum.map( val, &String.to_integer( &1 ) ) )
}
end )
# |> IO.inspect
|> Enum.max_by( &elem( &1, 1 ) )
# |> IO.inspect
{ name, money } = tuple
IO.puts "#{ name }, #{ money }"
#=> 柳沢, 431788
Elixir で作った。これは、ややこしかった
{ :ok, input_data } = File.read( "input_data.csv" )
# IO.inspect input_data
# 末尾の改行を削除してから、1行ずつ処理する。空白で区切る。
# 2022-12 〜 2023-01 の期間内のデータだけに絞り込む。
# 名前でグルーピングしてから、金額を取り出す。
# 各人の金額を、数値に変換してから合計する。
# 合計が最も大きい人を求める
tuple = input_data
|> String.trim
|> String.split( "\n" )
|> Enum.map( fn( line ) -> String.split( line, " " ) end )
|> Enum.filter( fn [ head | _ ] -> "2022-12" <= head and head <= "2023-01" end )
# |> IO.inspect
|> Enum.group_by( fn [ _, name, _ ] -> name end, fn [ _, _, money ] -> money end )
# |> IO.inspect
|> Enum.map( fn { key, val } -> { key,
Enum.sum( Enum.map( val, &String.to_integer( &1 ) ) )
}
end )
# |> IO.inspect
|> Enum.max_by( &elem( &1, 1 ) )
# |> IO.inspect
{ name, money } = tuple
IO.puts "#{ name }, #{ money }"
#=> 柳沢, 431788
406405
2023/02/03(金) 20:45:35.25ID:KJ3h+c6Z >>405
の続き。データの変遷
[
["2022-12", "柳沢", "10000"],
["2023-01", "伊東", "10"],
["2022-12", "柳沢", "151288"],
["2022-12", "柳沢", "12600"],
["2023-01", "伊東", "70000"],
["2023-01", "伊東", "150000"],
["2022-12", "柳沢", "257900"]
]
%{
"伊東" => ["10", "70000", "150000"],
"柳沢" => ["10000", "151288", "12600", "257900"]
}
[{"伊東", 220010}, {"柳沢", 431788}]
{"柳沢", 431788}
の続き。データの変遷
[
["2022-12", "柳沢", "10000"],
["2023-01", "伊東", "10"],
["2022-12", "柳沢", "151288"],
["2022-12", "柳沢", "12600"],
["2023-01", "伊東", "70000"],
["2023-01", "伊東", "150000"],
["2022-12", "柳沢", "257900"]
]
%{
"伊東" => ["10", "70000", "150000"],
"柳沢" => ["10000", "151288", "12600", "257900"]
}
[{"伊東", 220010}, {"柳沢", 431788}]
{"柳沢", 431788}
407デフォルトの名無しさん
2023/02/14(火) 09:18:44.14ID:NQYE/eke >>397
C#
public static void Main(String[] args) {
var m = ReadLines()
.Select(x => {
var a = x.Split(" ");
return new { Month = a[0], Name = a[1], Money = int.Parse(a[2]) };
})
.Where(x => "2022-12".CompareTo(x.Month) <= 0 && x.Month.CompareTo("2023-01") <= 0)
.GroupBy(x => x.Name)
.Select(g => new { Name = g.Key, Total = g.Select(x => x.Money).Sum() })
.MaxBy(x => x.Total);
Console.WriteLine(m);
}
static IEnumerable<string> ReadLines() {
while (true) {
var line = Console.ReadLine();
if (line == null) {
yield break;
}
yield return line;
}
}
C#
public static void Main(String[] args) {
var m = ReadLines()
.Select(x => {
var a = x.Split(" ");
return new { Month = a[0], Name = a[1], Money = int.Parse(a[2]) };
})
.Where(x => "2022-12".CompareTo(x.Month) <= 0 && x.Month.CompareTo("2023-01") <= 0)
.GroupBy(x => x.Name)
.Select(g => new { Name = g.Key, Total = g.Select(x => x.Money).Sum() })
.MaxBy(x => x.Total);
Console.WriteLine(m);
}
static IEnumerable<string> ReadLines() {
while (true) {
var line = Console.ReadLine();
if (line == null) {
yield break;
}
yield return line;
}
}
408デフォルトの名無しさん
2023/02/14(火) 09:59:44.90ID:K2Y3lAZv お題:与えられた文字列が回文であるかどうかを判定するプログラムを作成してください。 (例: "racecar"は回文)
409デフォルトの名無しさん
2023/02/14(火) 17:10:57.35ID:Dc+ThI52 >>408
Haskell
isPalindrome x = x == reverse x
main = do
print $ isPalindrome "DVD"
print $ isPalindrome "TOMATO"
print $ isPalindrome "しんぶんし"
------
True
False
True
Haskell
isPalindrome x = x == reverse x
main = do
print $ isPalindrome "DVD"
print $ isPalindrome "TOMATO"
print $ isPalindrome "しんぶんし"
------
True
False
True
410デフォルトの名無しさん
2023/02/18(土) 20:06:32.64ID:7FIuY7Pp >>401
C#
public static void Main(String[] args) {
var xs = ReadLines()
.Select(x => {
var a = x.Split(",");
return new { UserId = a[0], ItemIdRange = a[1], Amount = int.Parse(a[2]) };
})
.SelectMany(x => {
var range = x.ItemIdRange.Split("-")
.Select(y => int.Parse(y))
.ToArray();
var from = range[0];
var to = range.Length == 1 ? from : range[1];
var count = to - from + 1;
var amount = x.Amount / count;
return Enumerable.Range(from, count)
.Select(id => new { UserId = x.UserId, ItemId = id, Amount = amount });
});
foreach (var x in xs) {
Console.WriteLine(x);
}
}
static IEnumerable<string> ReadLines() {
while (true) {
var line = Console.ReadLine();
if (line == null) {
yield break;
}
yield return line;
}
}
C#
public static void Main(String[] args) {
var xs = ReadLines()
.Select(x => {
var a = x.Split(",");
return new { UserId = a[0], ItemIdRange = a[1], Amount = int.Parse(a[2]) };
})
.SelectMany(x => {
var range = x.ItemIdRange.Split("-")
.Select(y => int.Parse(y))
.ToArray();
var from = range[0];
var to = range.Length == 1 ? from : range[1];
var count = to - from + 1;
var amount = x.Amount / count;
return Enumerable.Range(from, count)
.Select(id => new { UserId = x.UserId, ItemId = id, Amount = amount });
});
foreach (var x in xs) {
Console.WriteLine(x);
}
}
static IEnumerable<string> ReadLines() {
while (true) {
var line = Console.ReadLine();
if (line == null) {
yield break;
}
yield return line;
}
}
411デフォルトの名無しさん
2023/02/18(土) 20:21:20.76ID:7FIuY7Pp >>408
C#
static bool IsPalindrome(string s) {
var i = -1;
var j = s.Length;
while (++i < --j) if (s[i] != s[j]) return false;
return true;
}
C#
static bool IsPalindrome(string s) {
var i = -1;
var j = s.Length;
while (++i < --j) if (s[i] != s[j]) return false;
return true;
}
412蟻人間 ◆T6xkBnTXz7B0
2023/02/18(土) 21:57:36.50ID:VTzLeszJ お題: 漢字かな混じり文をひらがなにする。
「親子丼を食べたい。」→「おやこどんをたべたい。」
「チャーハン美味しい!」→「ちゃーはんおいしい!」
「電話に出んわ」→「でんわにでんわ」
「親子丼を食べたい。」→「おやこどんをたべたい。」
「チャーハン美味しい!」→「ちゃーはんおいしい!」
「電話に出んわ」→「でんわにでんわ」
413デフォルトの名無しさん
2023/02/18(土) 23:37:48.45ID:MFomzfEL そんなんライブラリ使えば簡単
ちなコードは書かない
ちなコードは書かない
414デフォルトの名無しさん
2023/02/19(日) 11:38:22.32ID:IvV72Gup ChatGPTに聞いてみた。
プロンプト
漢字とひらがなを含む日本語の文をひらがなに変換するプログラムをPythonで書いて下さい。以下は入出力例です。
「親子丼を食べたい。」→「おやこどんをたべたい。」
「チャーハン美味しい!」→「ちゃーはんおいしい!」
「電話に出んわ」→「でんわにでんわ」
回答
Pythonでは、「janome」という形態素解析ライブラリを利用することで、文字列を形態素解析して単語に分割し、各単語の読みを取得することができます。以下は、janomeを使って入力された日本語の文をひらがなに変換するプログラムの例です。
from janome.tokenizer import Tokenizer
def kanji_to_hiragana(text):
t = Tokenizer()
tokens = t.tokenize(text)
result = ""
for token in tokens:
reading = token.reading
if reading is None:
result += token.surface
else:
result += reading
return result
text = "親子丼を食べたい。"
result = kanji_to_hiragana(text)
print(result) # おやこどんをたべたい。
text = "チャーハン美味しい!"
result = kanji_to_hiragana(text)
print(result) # ちゃーはんおいしい!
text = "電話に出んわ"
result = kanji_to_hiragana(text)
print(result) # でんわにでんわ
このプログラムでは、janomeのTokenizerクラスを使用して、入力されたテキストを形態素解析し、各単語の読みを取得します。単語の読みは、Tokenオブジェクトのreading属性に格納されており、これがひらがなであれば、そのまま結果に追加します。readingがNoneの場合は、漢字や記号などの場合であるため、Tokenオブジェクトのsurface属性をそのまま結果に追加します。最終的に、全ての単語を結合してひらがなに変換された文字列を返します。
プロンプト
漢字とひらがなを含む日本語の文をひらがなに変換するプログラムをPythonで書いて下さい。以下は入出力例です。
「親子丼を食べたい。」→「おやこどんをたべたい。」
「チャーハン美味しい!」→「ちゃーはんおいしい!」
「電話に出んわ」→「でんわにでんわ」
回答
Pythonでは、「janome」という形態素解析ライブラリを利用することで、文字列を形態素解析して単語に分割し、各単語の読みを取得することができます。以下は、janomeを使って入力された日本語の文をひらがなに変換するプログラムの例です。
from janome.tokenizer import Tokenizer
def kanji_to_hiragana(text):
t = Tokenizer()
tokens = t.tokenize(text)
result = ""
for token in tokens:
reading = token.reading
if reading is None:
result += token.surface
else:
result += reading
return result
text = "親子丼を食べたい。"
result = kanji_to_hiragana(text)
print(result) # おやこどんをたべたい。
text = "チャーハン美味しい!"
result = kanji_to_hiragana(text)
print(result) # ちゃーはんおいしい!
text = "電話に出んわ"
result = kanji_to_hiragana(text)
print(result) # でんわにでんわ
このプログラムでは、janomeのTokenizerクラスを使用して、入力されたテキストを形態素解析し、各単語の読みを取得します。単語の読みは、Tokenオブジェクトのreading属性に格納されており、これがひらがなであれば、そのまま結果に追加します。readingがNoneの場合は、漢字や記号などの場合であるため、Tokenオブジェクトのsurface属性をそのまま結果に追加します。最終的に、全ての単語を結合してひらがなに変換された文字列を返します。
415蟻人間 ◆T6xkBnTXz7B0
2023/02/19(日) 13:28:00.72ID:tpbM8io3 お題: 入力されたYYYY-MM-DD形式の日付文字列について、その日付が営業日かどうか判定する。
「2023-02-10」→「営業日です」
「2023-02-11」→「営業日ではありません」
「2023-02-23」→「営業日ではありません」
「2023-03-19」→「営業日ではありません」
土日祝日は営業日ではないものとする。
「2023-02-10」→「営業日です」
「2023-02-11」→「営業日ではありません」
「2023-02-23」→「営業日ではありません」
「2023-03-19」→「営業日ではありません」
土日祝日は営業日ではないものとする。
416デフォルトの名無しさん
2023/02/19(日) 13:47:10.98ID:43fXspxI 祝日のうち、「春分の日」及び「秋分の日」は、法律で具体的に月日が明記されずに、それぞれ「春分日」、「秋分日」と定められています。
「春分の日」及び「秋分の日」については、国立天文台が、毎年2月に翌年の「春分の日」、「秋分の日」を官報で公表しています。詳しくは、国立天文台ホームページ「よくある質問」(質問3-1)を御参照ください。
こんなんどうすんの
「春分の日」及び「秋分の日」については、国立天文台が、毎年2月に翌年の「春分の日」、「秋分の日」を官報で公表しています。詳しくは、国立天文台ホームページ「よくある質問」(質問3-1)を御参照ください。
こんなんどうすんの
417蟻人間 ◆T6xkBnTXz7B0
2023/02/19(日) 14:17:51.53ID:tpbM8io3 まともな国の政府なら、どっかのデータベースに休日祝日をまとめて公表してるんじゃないの?
じゃなければ、おま国
じゃなければ、おま国
418デフォルトの名無しさん
2023/02/19(日) 14:42:20.06ID:yOeRloac >>408
Kotlin
折角なので回文判定メソッドを String クラスに追加して判定するようにした。
でも複数文字で1文字扱いになるような場合にダメ(例えば半角カナで濁点や半濁点の文字が入る等)。
https://paiza.io/projects/Sa7SUvtirOLawuwjtMXpWQ
Kotlin
折角なので回文判定メソッドを String クラスに追加して判定するようにした。
でも複数文字で1文字扱いになるような場合にダメ(例えば半角カナで濁点や半濁点の文字が入る等)。
https://paiza.io/projects/Sa7SUvtirOLawuwjtMXpWQ
419デフォルトの名無しさん
2023/02/19(日) 15:55:03.68ID:yOeRloac420デフォルトの名無しさん
2023/02/19(日) 16:25:48.49ID:xSIr/CQB421デフォルトの名無しさん
2023/02/19(日) 16:38:47.61ID:H7J+ByWh >>415
haskell
https://ideone.com/VHHFhk
春分の日、秋分の日は内閣府のhpにも2023,2024しかない
しゃあないのでwikiにあった2299年までのデータベース利用
数式に起こせるかもしれないけどどのみち未来永劫使えるわけでもなし、そんな俺様公式使ってもしゃあないし
曜日の計算はツェラーの公式
haskell
https://ideone.com/VHHFhk
春分の日、秋分の日は内閣府のhpにも2023,2024しかない
しゃあないのでwikiにあった2299年までのデータベース利用
数式に起こせるかもしれないけどどのみち未来永劫使えるわけでもなし、そんな俺様公式使ってもしゃあないし
曜日の計算はツェラーの公式
422蟻人間 ◆T6xkBnTXz7B0
2023/02/19(日) 16:52:57.61ID:tpbM8io3 お題: かな漢字混じり文を入力とし、それに含まれるHTMLの特殊文字をエスケープ処理し、さらに漢字にHTMLのルビを振ったHTML文字列を出力せよ。カタカナにはルビを振る必要はないものとする。
「親子丼を食べたい。」→「<ruby>親子丼<rt>おやこどん</rt></ruby>を<ruby>食<rt>た</rt></ruby>べたい。」
「チャーハン美味しい!」→「チャーハン<ruby>美味<rt>おい</rt></ruby>しい!」
「電話に出んわ」→「<ruby>電話<rt>でんわ</rt></ruby>に<ruby>出<rt>で</rt></ruby>んわ」
「親子丼を食べたい。」→「<ruby>親子丼<rt>おやこどん</rt></ruby>を<ruby>食<rt>た</rt></ruby>べたい。」
「チャーハン美味しい!」→「チャーハン<ruby>美味<rt>おい</rt></ruby>しい!」
「電話に出んわ」→「<ruby>電話<rt>でんわ</rt></ruby>に<ruby>出<rt>で</rt></ruby>んわ」
423デフォルトの名無しさん
2023/02/19(日) 16:56:15.40ID:1QQUowPQ424デフォルトの名無しさん
2023/02/19(日) 17:07:42.42ID:PUYJwCgy # 10進数128ビット浮動小数点数をIEEE754内部表現の2進数と16進数に変換する関数(python)
https://paiza.io/projects/DjBcWyn3v0D-xpwVQ7FrCg?language=java
上記のプログラムにはバグがあり、特定の値を変換できません。
どう直したら全ての128ビット浮動小数点数を網羅できるのかお考え下さい。
https://paiza.io/projects/DjBcWyn3v0D-xpwVQ7FrCg?language=java
上記のプログラムにはバグがあり、特定の値を変換できません。
どう直したら全ての128ビット浮動小数点数を網羅できるのかお考え下さい。
425デフォルトの名無しさん
2023/02/19(日) 23:35:38.77ID:k8LiuZ++ >>422
PowerShell (Microsoft Excelがインストールされている環境限定。例文に特殊文字はないのでエスケープ処理は省略)
Add-Type -AssemblyName Microsoft.VisualBasic
$Excel = New-Object -ComObject Excel.Application
foreach ($s in "親子丼を食べたい。", "チャーハン美味しい!", "電話に出んわ") {
$r = [Microsoft.VisualBasic.Strings]::StrConv($Excel.GetPhonetic($s), 32)
$p1 = $s -replace "[^\p{IsHiragana}\p{IsKatakana}\p{P}]+", "(.+)"
$p2 = [Microsoft.VisualBasic.Strings]::StrConv($p1, 32)
$t1 = [RegEx]::split($s, $p1)
$t2 = [RegEx]::split($r, $p2)
$t3 = [RegEx]::split($p1, "\(\.\+\)")
((0..($t1.count - 1) |% {"<ruby>$($t1[$_])<rt>$($t2[$_])</rt></ruby>$($t3[$_])"}) -join "") -replace "<ruby><rt></rt></ruby>", ""
}
PowerShell (Microsoft Excelがインストールされている環境限定。例文に特殊文字はないのでエスケープ処理は省略)
Add-Type -AssemblyName Microsoft.VisualBasic
$Excel = New-Object -ComObject Excel.Application
foreach ($s in "親子丼を食べたい。", "チャーハン美味しい!", "電話に出んわ") {
$r = [Microsoft.VisualBasic.Strings]::StrConv($Excel.GetPhonetic($s), 32)
$p1 = $s -replace "[^\p{IsHiragana}\p{IsKatakana}\p{P}]+", "(.+)"
$p2 = [Microsoft.VisualBasic.Strings]::StrConv($p1, 32)
$t1 = [RegEx]::split($s, $p1)
$t2 = [RegEx]::split($r, $p2)
$t3 = [RegEx]::split($p1, "\(\.\+\)")
((0..($t1.count - 1) |% {"<ruby>$($t1[$_])<rt>$($t2[$_])</rt></ruby>$($t3[$_])"}) -join "") -replace "<ruby><rt></rt></ruby>", ""
}
426蟻人間 ◆T6xkBnTXz7B0
2023/02/20(月) 00:32:29.95ID:S/Y0RwmV 応用お題: かな漢字混じり文が回文かどうか判定。
427蟻人間 ◆T6xkBnTXz7B0
2023/02/20(月) 00:35:10.73ID:S/Y0RwmV 応用お題: 現在の日時からX営業日後を計算せよ。
428蟻人間 ◆T6xkBnTXz7B0
2023/02/20(月) 00:39:43.23ID:S/Y0RwmV お題: 1番目、2番目、3番目など、いわゆる順序数は、英語で1st, 2nd, 3rdなどのように、アラビア数字と英字を混ぜて表記することがある。
入力された整数をこのような英語の順序数として出力せよ。
入力された整数をこのような英語の順序数として出力せよ。
429蟻人間 ◆T6xkBnTXz7B0
2023/02/20(月) 00:40:21.61ID:S/Y0RwmV お題: 任意の英単語を複数形にせよ。
430蟻人間 ◆T6xkBnTXz7B0
2023/02/20(月) 00:59:45.86ID:S/Y0RwmV お題: 日本語の文が非文ではないことを判定する。
「私はご飯を食べました。」→「非文ではありません」
「投げたんばってんそうらんか。」→「非文の可能性があります」
「やなはまなはなあ。」→「非文の可能性があります」
「私はご飯を食べました。」→「非文ではありません」
「投げたんばってんそうらんか。」→「非文の可能性があります」
「やなはまなはなあ。」→「非文の可能性があります」
431蟻人間 ◆T6xkBnTXz7B0
2023/02/20(月) 01:07:33.83ID:S/Y0RwmV お題: 英文の各単語の先頭の文字を大文字にせよ。
「The quick brown fox jumps over the lazy dog.」→「The Quick Brown Fox Jumps Over The Lazy Dog.」
「The quick brown fox jumps over the lazy dog.」→「The Quick Brown Fox Jumps Over The Lazy Dog.」
432デフォルトの名無しさん
2023/02/20(月) 01:43:32.57ID:4kHRqek0 >>429 js
(word) => word + 's'
(word) => word + 's'
433デフォルトの名無しさん
2023/02/20(月) 01:48:53.40ID:4kHRqek0434デフォルトの名無しさん
2023/02/20(月) 01:51:51.59ID:4kHRqek0436デフォルトの名無しさん
2023/02/20(月) 02:11:24.54ID:5symYZYJ >>435
いやsつけるだけだろ
いやsつけるだけだろ
437蟻人間 ◆T6xkBnTXz7B0
2023/02/20(月) 02:23:51.79ID:S/Y0RwmV >>436
https://english-club.jp/blog/english-noun-plural/
まず、英単語が加算名詞か非加算名詞か判定し、非加算名詞なら何も付けない。
さらにすでに複数形ならばそのまま。
sやshで終わる場合、esを付ける。
yで終わる場合、そのyを外してiesを付ける。
とか、いった規則があったはず。
https://english-club.jp/blog/english-noun-plural/
まず、英単語が加算名詞か非加算名詞か判定し、非加算名詞なら何も付けない。
さらにすでに複数形ならばそのまま。
sやshで終わる場合、esを付ける。
yで終わる場合、そのyを外してiesを付ける。
とか、いった規則があったはず。
438デフォルトの名無しさん
2023/02/20(月) 02:37:40.70ID:4kHRqek0 >>437
(word) =>
isNotKasan(word)
? word
: word.endsWith('s') || word.endsWith('sh')
? word + 'es'
: word.endsWith('y')
? word.slice(0, -1) + 'ies'
: word + 's'
(word) =>
isNotKasan(word)
? word
: word.endsWith('s') || word.endsWith('sh')
? word + 'es'
: word.endsWith('y')
? word.slice(0, -1) + 'ies'
: word + 's'
439蟻人間 ◆T6xkBnTXz7B0
2023/02/20(月) 02:40:42.75ID:S/Y0RwmV fで終わる場合はfを外してvesをつける。
xで終わるときはesをつける。
またいくつかの単語には例外がある。
mouse→mice
xで終わるときはesをつける。
またいくつかの単語には例外がある。
mouse→mice
440デフォルトの名無しさん
2023/02/20(月) 02:49:12.44ID:4kHRqek0 ts
(word: string) =>
蟻(word) ?? (
isNotKasan(word)
? word
: word.endsWith('s') || word.endsWith('sh')
? word + 'es'
: word.endsWith('y')
? word.slice(0, -1) + 'ies'
: word + 's')
type 未定義の処理結果 = string
declare function 蟻(word: string): 未定義の処理結果 | null;
(word: string) =>
蟻(word) ?? (
isNotKasan(word)
? word
: word.endsWith('s') || word.endsWith('sh')
? word + 'es'
: word.endsWith('y')
? word.slice(0, -1) + 'ies'
: word + 's')
type 未定義の処理結果 = string
declare function 蟻(word: string): 未定義の処理結果 | null;
441デフォルトの名無しさん
2023/02/20(月) 09:45:16.32ID:sIqfmv40 仕様上げろや
仕様はそっちで調べて決めてくださいとか誰もやらん
仕様はそっちで調べて決めてくださいとか誰もやらん
443デフォルトの名無しさん
2023/02/20(月) 10:48:51.05ID:4EtRnxBT 蟻人間は元々適当なことしか書いてないから相手にしない方がいい
444デフォルトの名無しさん
2023/02/21(火) 09:46:29.52ID:03Hzj4B1445蟻人間 ◆T6xkBnTXz7B0
2023/02/21(火) 19:11:52.19ID:4/c8giY4 お題: 現在の日時をしゃべらせる。
446デフォルトの名無しさん
2023/02/21(火) 19:35:21.00ID:KtZ49LjO 言語:シリ
ヘイシリ!時間は?
ヘイシリ!時間は?
447デフォルトの名無しさん
2023/02/22(水) 10:39:42.72ID:W49C35S1 >>445
ほら適当なことしか書いてない
ほら適当なことしか書いてない
448デフォルトの名無しさん
2023/02/22(水) 19:44:44.02ID:qGoU8D7A いちいちアホの相手すんな
449デフォルトの名無しさん
2023/02/23(木) 02:57:01.39ID:dGvxcQeE450デフォルトの名無しさん
2023/02/23(木) 02:57:44.62ID:dGvxcQeE 音声を出したい場合はこのテキストを読み上げソフトで読み上げさせたり自分で声に出して読んだりしてください。
451デフォルトの名無しさん
2023/02/23(木) 02:59:24.34ID:dGvxcQeE452デフォルトの名無しさん
2023/02/23(木) 13:20:13.85ID:oMKxIthr 【キッシンジャー】 ワクチンを強制し群れを減らす
://rio2016.5ch.net/test/read.cgi/lifesaloon/1662167492/l50
://rio2016.5ch.net/test/read.cgi/lifesaloon/1662167492/l50
453デフォルトの名無しさん
2023/02/23(木) 17:13:39.72ID:cdZW/MyP クソ蟻の相手すんなや
馬鹿しかおらんのか
馬鹿しかおらんのか
454401
2023/02/23(木) 18:33:45.89ID:n1e6/0k5 >>401
Elixir で作った
{ :ok, input_data } = File.read( "input_data.csv" )
# IO.inspect input_data
# 末尾の改行を削除してから、1行ずつ処理する。カンマで区切る
input_data
|> String.trim
|> String.split( "\n" )
|> Enum.map( fn( line ) -> String.split( line, "," ) end )
|> Enum.each( fn [ custom_num, seq_num, money ] ->
{ from, to } = case String.split( seq_num, "-" ) do
# - を含まない時は、2つに分割できない
[ first ] -> num = String.to_integer( first )
{ num, num }
# - を含む時は、2つに分割できる
[ first, last ] -> { String.to_integer( first ), String.to_integer( last ) }
end
for n <- from..to, do: IO.puts "#{ custom_num },#{ n },#{ div( String.to_integer( money ), to - from + 1 ) }"
end )
# |> IO.inspect
Elixir で作った
{ :ok, input_data } = File.read( "input_data.csv" )
# IO.inspect input_data
# 末尾の改行を削除してから、1行ずつ処理する。カンマで区切る
input_data
|> String.trim
|> String.split( "\n" )
|> Enum.map( fn( line ) -> String.split( line, "," ) end )
|> Enum.each( fn [ custom_num, seq_num, money ] ->
{ from, to } = case String.split( seq_num, "-" ) do
# - を含まない時は、2つに分割できない
[ first ] -> num = String.to_integer( first )
{ num, num }
# - を含む時は、2つに分割できる
[ first, last ] -> { String.to_integer( first ), String.to_integer( last ) }
end
for n <- from..to, do: IO.puts "#{ custom_num },#{ n },#{ div( String.to_integer( money ), to - from + 1 ) }"
end )
# |> IO.inspect
455デフォルトの名無しさん
2023/02/24(金) 02:31:53.29ID:qWDde+97456デフォルトの名無しさん
2023/02/24(金) 20:55:59.01ID:Kkq1C7fS >>445
たまには回答側に回ってみなさい
お題
個人の名前,上司の名前,個人の仕事力
が入力されます
個人の仕事力とその上司たちの仕事力を合計した値を出力してください
入力
ガンド部長,ブリ事業部長,9000
モジャコ,ヤズ係長,39000
ワラサ部長,ブリ事業部長,46000
メジロ部長,ブリ事業部長,34000
ブリ事業部長,,32000
ツバイソ,コズクラ係長,24000
ツバス係長,ハマチ課長,23000
ワカナ,ツバス係長,4000
イナダ課長,ワラサ部長,5000
ヤズ係長,ハマチ課長,23000
ワカナゴ係長,イナダ課長,49000
フクラギ課長,ガンド部長,17000
ハマチ課長,メジロ部長,19000
コズクラ係長,フクラギ課長,31000
出力
41000 : ガンド部長 -> ブリ事業部長
147000 : モジャコ -> ヤズ係長 -> ハマチ課長 -> メジロ部長 -> ブリ事業部長
78000 : ワラサ部長 -> ブリ事業部長
-----省略-----
たまには回答側に回ってみなさい
お題
個人の名前,上司の名前,個人の仕事力
が入力されます
個人の仕事力とその上司たちの仕事力を合計した値を出力してください
入力
ガンド部長,ブリ事業部長,9000
モジャコ,ヤズ係長,39000
ワラサ部長,ブリ事業部長,46000
メジロ部長,ブリ事業部長,34000
ブリ事業部長,,32000
ツバイソ,コズクラ係長,24000
ツバス係長,ハマチ課長,23000
ワカナ,ツバス係長,4000
イナダ課長,ワラサ部長,5000
ヤズ係長,ハマチ課長,23000
ワカナゴ係長,イナダ課長,49000
フクラギ課長,ガンド部長,17000
ハマチ課長,メジロ部長,19000
コズクラ係長,フクラギ課長,31000
出力
41000 : ガンド部長 -> ブリ事業部長
147000 : モジャコ -> ヤズ係長 -> ハマチ課長 -> メジロ部長 -> ブリ事業部長
78000 : ワラサ部長 -> ブリ事業部長
-----省略-----
457デフォルトの名無しさん
2023/02/24(金) 22:54:59.85ID:PMEalhSr ぼくの逞しいおちんぽ
458デフォルトの名無しさん
2023/02/24(金) 23:22:44.02ID:3XqkjO93459デフォルトの名無しさん
2023/02/25(土) 08:48:42.87ID:zHIcIgZr460デフォルトの名無しさん
2023/02/25(土) 11:05:00.42ID:dAzPm75C >>458
同じ人に複数パターンの上司ってどういうこと?
同じ人に複数パターンの上司ってどういうこと?
461デフォルトの名無しさん
2023/02/25(土) 13:54:15.17ID:R9oPtKUj おかしいよな?
しかし
1:ガンド部長,ブリ事業部長,9000
2;ブリ事業部長,,32000
からの出力が
41000 : ガンド部長 -> ブリ事業部長
なら2の行があれば32000を一回足すって事だとしか思えないけど完全に意味不明
しかし
1:ガンド部長,ブリ事業部長,9000
2;ブリ事業部長,,32000
からの出力が
41000 : ガンド部長 -> ブリ事業部長
なら2の行があれば32000を一回足すって事だとしか思えないけど完全に意味不明
462デフォルトの名無しさん
2023/02/25(土) 14:00:32.25ID:dAzPm75C ???
何を不思議がっているのかがわからない
何を不思議がっているのかがわからない
463デフォルトの名無しさん
2023/02/25(土) 14:21:21.89ID:m5+HOY8+ もういいわ
464デフォルトの名無しさん
2023/02/25(土) 14:28:23.84ID:rFr0WMKo465デフォルトの名無しさん
2023/02/25(土) 14:40:44.77ID:m5+HOY8+ やっとわかった
A,B,n
は
社員、直属の上司、仕事力
で例外的に部長は直属の上司なしで
A,,n
と記載されている
求められる仕様は全てのAとその上司Bに対してAの直属の上司、その直属の上司、‥でBに至る社員を全てリストアップしてその仕事力の総和を表示せよ
かね
もういいや
A,B,n
は
社員、直属の上司、仕事力
で例外的に部長は直属の上司なしで
A,,n
と記載されている
求められる仕様は全てのAとその上司Bに対してAの直属の上司、その直属の上司、‥でBに至る社員を全てリストアップしてその仕事力の総和を表示せよ
かね
もういいや
466デフォルトの名無しさん
2023/02/25(土) 14:53:53.68ID:dAzPm75C コレは恥ずかしい。
467デフォルトの名無しさん
2023/02/25(土) 15:00:57.04ID:m5+HOY8+ まだ間違ってんの?
ならもういいや
仮にまだ間違ってるとして何その言い方?
何様?
そんな空気しか出せないんなら消えろやカス
ならもういいや
仮にまだ間違ってるとして何その言い方?
何様?
そんな空気しか出せないんなら消えろやカス
468デフォルトの名無しさん
2023/02/25(土) 18:30:05.28ID:ylAvVdkX469デフォルトの名無しさん
2023/02/26(日) 00:19:46.37ID:RymrPGNU ID:Kkq1C7fSがあれから一回も書き込んでないあたり、何も考えずにお題出したんでしょ
470デフォルトの名無しさん
2023/02/26(日) 02:21:31.96ID:B5iNMzdY ガチアスペが暴れるスレッド
471デフォルトの名無しさん
2023/02/26(日) 09:46:23.93ID:4Uq2hv6i お題:N×Nの正方形Aがある。各頂点から点a,b,c,dを正方形の内側のランダムな方向に射出する。点が内側をバウンドし移動してるあいだAの中心点からM×Mの正方形B(最初は点)が徐々に拡大していく。この時、Bの内側に点a,b,c,dが収まるのはMがいくつの時か計算しなさい。
472デフォルトの名無しさん
2023/02/26(日) 18:15:13.00ID:aYPcDOt1 Mの拡大率も書いてないし射出した点の速さも書かれてない
仕様が不十分
ROMってね
仕様が不十分
ROMってね
473デフォルトの名無しさん
2023/02/26(日) 19:02:07.54ID:OLcPjaJb 厳密厨って何が楽しくて生きてるんだろうな。
474デフォルトの名無しさん
2023/02/26(日) 19:05:44.27ID:6DyDqsNY 指摘するだけで書かない奴な
不足してるなら勝手に補完つくればいいものを
仕事じゃあるまいし
不足してるなら勝手に補完つくればいいものを
仕事じゃあるまいし
475デフォルトの名無しさん
2023/02/27(月) 02:09:11.98ID:dWqm4C62 勝手に補完するも何も、そのお題は何を言わんとしているのか全く分からないため補完のしようがない。
476デフォルトの名無しさん
2023/02/27(月) 02:40:43.98ID:2JCuz1J/ 昔はこれぐらいの仕様のお題でも回答ついたけどなぁ
477デフォルトの名無しさん
2023/02/27(月) 04:20:24.87ID:dWqm4C62 読解できたエスパーだけが答えれば良い
478デフォルトの名無しさん
2023/02/27(月) 06:41:19.91ID:8KPFEApR 俺なんか厳密中が言うからわざわざbnfまで書いたぞ笑
もうあんなつかれるお題出したくないわ
もうあんなつかれるお題出したくないわ
479デフォルトの名無しさん
2023/02/27(月) 10:31:19.36ID:UJX7wwq0 >>476
ないない
ないない
480デフォルトの名無しさん
2023/02/27(月) 10:33:14.65ID:5JFQlul5 一日経っても反論ないあたり出題者は逃げたってことでいいのかな
481デフォルトの名無しさん
2023/02/27(月) 12:42:15.62ID:glsnanmZ482デフォルトの名無しさん
2023/02/27(月) 12:46:22.51ID:glsnanmZ 整数をランダムに4個選ぶ
4個の整数の和はいくつか?
こんな感じ
お題になってない
4個の整数の和はいくつか?
こんな感じ
お題になってない
483デフォルトの名無しさん
2023/02/27(月) 18:18:21.52ID:YYxwKNcv ああ、ランダム性が入ってるのがまずいのか
484デフォルトの名無しさん
2023/02/27(月) 18:18:39.12ID:YYxwKNcv ああ、ランダム性が入ってるのがまずいのか
485デフォルトの名無しさん
2023/02/27(月) 18:24:11.89ID:LWteNAWS 蟻は出題がまともに出来てないって自覚がないアホだから
関わっちゃダメ
関わっちゃダメ
486デフォルトの名無しさん
2023/02/27(月) 20:18:00.93ID:tcBt9uhq 不足してるなら補ってお題として成立されてばいいものを最近の輩はリジェクトすることしか眼中にない
上のお題で言えば速度はプログラムで任意に定義できるようにすればお題として成立されられる
その方向へ持っていこうという気概を見せられないなら黙っていれば良い。
上のお題で言えば速度はプログラムで任意に定義できるようにすればお題として成立されられる
その方向へ持っていこうという気概を見せられないなら黙っていれば良い。
487デフォルトの名無しさん
2023/02/27(月) 20:18:42.48ID:LWteNAWS >>486
言い出しっぺの法則
言い出しっぺの法則
488デフォルトの名無しさん
2023/02/27(月) 20:19:28.33ID:LWteNAWS お題をみんなで作るスレ
じゃないんだから
完成してから出題しろ
じゃないんだから
完成してから出題しろ
489デフォルトの名無しさん
2023/02/27(月) 20:22:36.54ID:Gjavqic5 否定することを糧としているんのだからしゃーない。
490デフォルトの名無しさん
2023/02/27(月) 20:27:21.12ID:LWteNAWS >>489
じゃあお前がやれよ
じゃあお前がやれよ
491デフォルトの名無しさん
2023/02/28(火) 02:06:48.72ID:tFrQfTnP 自分で解答作らないで出題するからやろ
492デフォルトの名無しさん
2023/02/28(火) 08:02:01.71ID:Kf1fynEF お題:
>>471からランダム性を抜いて再現性のあるお題に再構築せよ
>>471からランダム性を抜いて再現性のあるお題に再構築せよ
493デフォルトの名無しさん
2023/02/28(火) 08:08:41.98ID:cWa3A3nM ランダム性ってなんやねん
任意性やろ
任意性やろ
494デフォルトの名無しさん
2023/02/28(火) 08:37:21.30ID:Kf1fynEF495デフォルトの名無しさん
2023/02/28(火) 19:59:24.47ID:2hicZh6u >>486
さっさとやれ
さっさとやれ
496デフォルトの名無しさん
2023/02/28(火) 20:00:50.02ID:oDIfPEjQ >乱数で値を決定する
厳密厨ってこの程度の読解力だったのな
厳密厨ってこの程度の読解力だったのな
497デフォルトの名無しさん
2023/02/28(火) 20:04:17.09ID:2hicZh6u 蟻と蟻の自演(単発)が消えれば
このスレももう少しマシになると思う
このスレももう少しマシになると思う
498デフォルトの名無しさん
2023/02/28(火) 20:06:22.93ID:2hicZh6u499デフォルトの名無しさん
2023/02/28(火) 21:52:00.08ID:2hicZh6u500デフォルトの名無しさん
2023/02/28(火) 21:53:00.63ID:k1W6SlJ8 キチガイが棲んでからオワコン化したスレッド
501デフォルトの名無しさん
2023/02/28(火) 21:55:51.04ID:2hicZh6u 「あれっ?」
じゃなくて
「ありっ?」
って書くべきでしたすいません
じゃなくて
「ありっ?」
って書くべきでしたすいません
502デフォルトの名無しさん
2023/03/01(水) 00:27:07.21ID:p5rMIeuq >>486
元のお題が何を言わんとしているのか分からないので何をどう補ったら良いのかも分からない。
見たこともない文字で書かれた未知の言語に対して補って読めるようにしろと言われても出来ないのと同じようなものだ。
元のお題が何を言わんとしているのか分からないので何をどう補ったら良いのかも分からない。
見たこともない文字で書かれた未知の言語に対して補って読めるようにしろと言われても出来ないのと同じようなものだ。
503デフォルトの名無しさん
2023/03/01(水) 00:51:10.69ID:OL4XgfHI ふーん、頭が悪いんだね(笑)
504デフォルトの名無しさん
2023/03/01(水) 01:50:37.77ID:p5rMIeuq 頭が良い人なら多くの人に理解できるようにお題を書くことも可能な筈だ。
505デフォルトの名無しさん
2023/03/01(水) 06:31:13.03ID:eH+0RL/Y >>503
だからお前がやれって
だからお前がやれって
506デフォルトの名無しさん
2023/03/01(水) 07:18:11.40ID:P9GDwLN0 なぜ仕事でもないのに厳密性を求めるのか
本当にプログラムを書きたいという意欲があるならそれらしく補完して作ればいいものを。
本当にプログラムを書きたいという意欲があるならそれらしく補完して作ればいいものを。
507デフォルトの名無しさん
2023/03/01(水) 07:31:13.17ID:eH+0RL/Y >>506
どうぞ
どうぞ
508デフォルトの名無しさん
2023/03/01(水) 07:54:29.17ID:Sly6s+uh 昔はこのスレは変なお題はみんなスルーしてレスもつかなかったよな
509デフォルトの名無しさん
2023/03/01(水) 22:37:33.72ID:np04zI1T お題
製品タイプ、製品ID、製品色
が入力されます
製品タイプの配列、製品IDの配列、製品色の配列をJSON形式で出力してください
製品タイプの配列の1番目の値は製品IDの配列の1番目と対応する、というように
それぞれの配列の順番は一致するようにしてください
1つの配列の中で製品タイプは重複してはいけません
出力するJSONの数が最小になるようにしてください
入力例
B,02,B
C,04,Y
F,15,R
E,12,C
C,06,G
D,07,B
D,08,B
D,10,M
C,05,C
F,14,G
A,01,Y
D,09,B
B,03,C
G,16,M
E,11,Y
E,13,B
出力例
{"製品タイプ":["A","B","C","D","E","F","G"],"製品ID":["01","02","04","07","12","15","16"],"製品色":["Y","B","Y","B","C","R","M"]}
{"製品タイプ":["B","C","D","E","F"],"製品ID":["03","06","08","11","14"],"製品色":["C","G","B","Y","G"]}
{"製品タイプ":["C","D","E"],"製品ID":["05","10","13"],"製品色":["C","M","B"]}
{"製品タイプ":["D"],"製品ID":["09"],"製品色":["B"]}
製品タイプ、製品ID、製品色
が入力されます
製品タイプの配列、製品IDの配列、製品色の配列をJSON形式で出力してください
製品タイプの配列の1番目の値は製品IDの配列の1番目と対応する、というように
それぞれの配列の順番は一致するようにしてください
1つの配列の中で製品タイプは重複してはいけません
出力するJSONの数が最小になるようにしてください
入力例
B,02,B
C,04,Y
F,15,R
E,12,C
C,06,G
D,07,B
D,08,B
D,10,M
C,05,C
F,14,G
A,01,Y
D,09,B
B,03,C
G,16,M
E,11,Y
E,13,B
出力例
{"製品タイプ":["A","B","C","D","E","F","G"],"製品ID":["01","02","04","07","12","15","16"],"製品色":["Y","B","Y","B","C","R","M"]}
{"製品タイプ":["B","C","D","E","F"],"製品ID":["03","06","08","11","14"],"製品色":["C","G","B","Y","G"]}
{"製品タイプ":["C","D","E"],"製品ID":["05","10","13"],"製品色":["C","M","B"]}
{"製品タイプ":["D"],"製品ID":["09"],"製品色":["B"]}
510デフォルトの名無しさん
2023/03/02(木) 01:19:19.82ID:qVygpVDj511デフォルトの名無しさん
2023/03/03(金) 10:31:20.70ID:JG2g5M5t Haskellすごい
512デフォルトの名無しさん
2023/03/04(土) 05:29:06.95ID:SAvF8kPk513デフォルトの名無しさん
2023/03/04(土) 19:18:05.94ID:S5cRs10W514デフォルトの名無しさん
2023/03/05(日) 09:55:30.27ID:GagStXQF 友人がブログを削除したんですが、そのあと、そのURLをクリックすると
アダルトサイトに飛ぶようになりました。本人はずかしいはずです。
これは何が原因なんでしょうか?
アダルトサイトに飛ぶようになりました。本人はずかしいはずです。
これは何が原因なんでしょうか?
515デフォルトの名無しさん
2023/03/05(日) 11:12:32.57ID:/Qd0pRlS こういう話の登場人物
「友人」は大抵が本人
「友人」は大抵が本人
516デフォルトの名無しさん
2023/03/05(日) 11:32:29.47ID:GagStXQF こんなところで聞く方が無駄だとわかりました。すいません
517デフォルトの名無しさん
2023/03/05(日) 11:56:22.33ID:2xMyVUh5 >>516
負けてて草
負けてて草
518デフォルトの名無しさん
2023/03/05(日) 12:23:59.19ID:EVYX2Tnh 答えを聞き出す前に暴言はいて逃亡するのは三流
答えを聞き出してから態度を豹変させるのが一流
答えを聞き出してから態度を豹変させるのが一流
519デフォルトの名無しさん
2023/03/05(日) 12:57:55.93ID:E79AODHp 無駄な労力を費やす前に退却するのが真の一流
520デフォルトの名無しさん
2023/03/05(日) 14:53:40.73ID:YlwUczDE >>514
println("知らんがな。")
println("知らんがな。")
521デフォルトの名無しさん
2023/03/05(日) 18:35:08.91ID:Ueh2Ngp1 >>456
Elixir で再帰で書いた。
末尾再帰になっているかどうかは分からないけど。難しかった
https://paiza.io/projects/2HEEsPP7gqa7Yoq2U1darw?language=elixir
以下は、データの変遷
input_list は、[ ["ガンド部長", "ブリ事業部長", "9000"], ["モジャコ", "ヤズ係長", "39000"] ]
input_map は順不同で、%{ "イナダ課長" => {"ワラサ部長", 5000}, "ガンド部長" => {"ブリ事業部長", 9000} }
蓄積変数は、[ {["", "ブリ事業部長", "ガンド部長"], 41000},
{["", "ブリ事業部長", "メジロ部長", "ハマチ課長", "ヤズ係長", "モジャコ"], 147000} ]
出力はリストを逆順にして、
41000 : ガンド部長 -> ブリ事業部長
147000 : モジャコ -> ヤズ係長 -> ハマチ課長 -> メジロ部長 -> ブリ事業部長
Elixir で再帰で書いた。
末尾再帰になっているかどうかは分からないけど。難しかった
https://paiza.io/projects/2HEEsPP7gqa7Yoq2U1darw?language=elixir
以下は、データの変遷
input_list は、[ ["ガンド部長", "ブリ事業部長", "9000"], ["モジャコ", "ヤズ係長", "39000"] ]
input_map は順不同で、%{ "イナダ課長" => {"ワラサ部長", 5000}, "ガンド部長" => {"ブリ事業部長", 9000} }
蓄積変数は、[ {["", "ブリ事業部長", "ガンド部長"], 41000},
{["", "ブリ事業部長", "メジロ部長", "ハマチ課長", "ヤズ係長", "モジャコ"], 147000} ]
出力はリストを逆順にして、
41000 : ガンド部長 -> ブリ事業部長
147000 : モジャコ -> ヤズ係長 -> ハマチ課長 -> メジロ部長 -> ブリ事業部長
522デフォルトの名無しさん
2023/03/06(月) 14:19:42.45ID:qyV2HHpm >>456
awkで書いてみた
https://ideone.com/Ufy2b4
再帰呼び出ししてみた。
表示順を考えなくて良いならmember[]は要らなくなるので
BEGIN{}も要らないし、もう一段簡単になる。
awkで書いてみた
https://ideone.com/Ufy2b4
再帰呼び出ししてみた。
表示順を考えなくて良いならmember[]は要らなくなるので
BEGIN{}も要らないし、もう一段簡単になる。
523デフォルトの名無しさん
2023/03/07(火) 12:52:38.48ID:XpfdbiSa お題
個人の名前,上司の名前,個人の仕事力
が入力されます
個人の仕事力とその部下たちの仕事力を合計した値を出力してください
ブリ事業部長は全員の仕事力の合計になります
入力
ガンド部長,ブリ事業部長,9000
モジャコ,ヤズ係長,39000
ワラサ部長,ブリ事業部長,46000
メジロ部長,ブリ事業部長,34000
ブリ事業部長,,32000
ツバイソ,コズクラ係長,24000
ツバス係長,ハマチ課長,23000
ワカナ,ツバス係長,4000
イナダ課長,ワラサ部長,5000
ヤズ係長,ハマチ課長,23000
ワカナゴ係長,イナダ課長,49000
フクラギ課長,ガンド部長,17000
ハマチ課長,メジロ部長,19000
コズクラ係長,フクラギ課長,31000
出力
ガンド部長:81000
モジャコ:39000
ワラサ部長:100000
-----省略-----
個人の名前,上司の名前,個人の仕事力
が入力されます
個人の仕事力とその部下たちの仕事力を合計した値を出力してください
ブリ事業部長は全員の仕事力の合計になります
入力
ガンド部長,ブリ事業部長,9000
モジャコ,ヤズ係長,39000
ワラサ部長,ブリ事業部長,46000
メジロ部長,ブリ事業部長,34000
ブリ事業部長,,32000
ツバイソ,コズクラ係長,24000
ツバス係長,ハマチ課長,23000
ワカナ,ツバス係長,4000
イナダ課長,ワラサ部長,5000
ヤズ係長,ハマチ課長,23000
ワカナゴ係長,イナダ課長,49000
フクラギ課長,ガンド部長,17000
ハマチ課長,メジロ部長,19000
コズクラ係長,フクラギ課長,31000
出力
ガンド部長:81000
モジャコ:39000
ワラサ部長:100000
-----省略-----
524デフォルトの名無しさん
2023/03/07(火) 13:16:03.87ID:bbtrqWNc お題:数字が入力されるので日付かどうか判定してください
in < 20230306
out > true
in < 20232250
out > false
in < 20230306
out > true
in < 20232250
out > false
525デフォルトの名無しさん
2023/03/07(火) 14:17:27.14ID:+pZA1cjF 仕事そっちのけでやり始めちゃいそうないいお題だ
526デフォルトの名無しさん
2023/03/07(火) 21:36:23.54ID:kYiYHi9/ >>524
ChatGPTに聞いたら瞬殺だった。
@Python
import datetime
def is_valid_date(date_string):
try:
datetime.datetime.strptime(date_string, '%Y%m%d')
return True
except ValueError:
return False
ChatGPTに聞いたら瞬殺だった。
@Python
import datetime
def is_valid_date(date_string):
try:
datetime.datetime.strptime(date_string, '%Y%m%d')
return True
except ValueError:
return False
527526
2023/03/07(火) 21:37:25.32ID:kYiYHi9/ インデントに失敗した orz
528デフォルトの名無しさん
2023/03/07(火) 22:32:08.33ID:3eieSVrf >>524
haskell
https://ideone.com/1oSNqd
“数値が読めない”とかは無視
純粋にy/m/dがグレゴリオ歴として成立するかどうかの判定
wikiに載ってたy/m/dから修正ユリウス通日を計算する公式を使ってその月の長さを(次の月の初日のユリウス通日)-(その月の初日のユリウス通日)で算出
haskell
https://ideone.com/1oSNqd
“数値が読めない”とかは無視
純粋にy/m/dがグレゴリオ歴として成立するかどうかの判定
wikiに載ってたy/m/dから修正ユリウス通日を計算する公式を使ってその月の長さを(次の月の初日のユリウス通日)-(その月の初日のユリウス通日)で算出
529デフォルトの名無しさん
2023/03/07(火) 23:34:02.90ID:s3GtgFEy >>524
Kotlin
java.time.LocalDate クラスに判定させるという超手抜きプログラム。
https://paiza.io/projects/giMWgob2AM7gEy4sGrP50w
Kotlin
java.time.LocalDate クラスに判定させるという超手抜きプログラム。
https://paiza.io/projects/giMWgob2AM7gEy4sGrP50w
530デフォルトの名無しさん
2023/03/08(水) 10:26:04.32ID:/qygPgTx531デフォルトの名無しさん
2023/03/08(水) 13:26:39.43ID:dHMh5Dpe532デフォルトの名無しさん
2023/03/08(水) 21:40:39.00ID:Vy/Qcp0S533デフォルトの名無しさん
2023/03/09(木) 01:22:26.54ID:fNPpmDIo お題:引数の絶対値を1-2-5シリーズ(1, 2, 5と、その10の整数べき乗の集合
(..., 0.1, 0.2, 0.5, 1, 2, 5, 10, 20, 50, ...)に切り捨てる関数。
IEEE754で正確に表現出来ない数(0.2とか)になる場合、最も近い値を返す事。
(例 : 0.2の場合は0x1.999999999999ap-3
その場合でも、(切り捨てなので)引数の絶対値を超えてはならない)
f(1) → 1
f(1.1) → 1
f(1.9) → 1
f(2) → 2
f(2.1) → 2
f(4.9) → 2
f(5) → 5
f(5.1) → 5
f(9.9) → 5
f(10) → 10
f(10.1) → 10
発展的なお題:
引数の絶対値が5e-308未満の場合の望ましいと思われる振る舞いについて述べよ
(「思われる」なので正解はありません)。
(..., 0.1, 0.2, 0.5, 1, 2, 5, 10, 20, 50, ...)に切り捨てる関数。
IEEE754で正確に表現出来ない数(0.2とか)になる場合、最も近い値を返す事。
(例 : 0.2の場合は0x1.999999999999ap-3
その場合でも、(切り捨てなので)引数の絶対値を超えてはならない)
f(1) → 1
f(1.1) → 1
f(1.9) → 1
f(2) → 2
f(2.1) → 2
f(4.9) → 2
f(5) → 5
f(5.1) → 5
f(9.9) → 5
f(10) → 10
f(10.1) → 10
発展的なお題:
引数の絶対値が5e-308未満の場合の望ましいと思われる振る舞いについて述べよ
(「思われる」なので正解はありません)。
534529
2023/03/09(木) 02:14:16.41ID:/MDyYnso >>531
俺も最初はそうやって parse() 使ってやるやつを作ったんだけど、それだと 20230229 や 20231131 が true になる。
どうやら parse() でやろうとすると年月日それぞれの値のチェックはするが年月日の値を繋げた状態で日付として
正しいかのチェックがされない。日に関して1~31なら全てOKになってしまってそれが何月なのかのチェックがされない。
それで文字列を分解して整数にしてから LocalDate.of(y, m, d) のやり方でやるようにしたんだよ。それだとチェックされるので。
俺も最初はそうやって parse() 使ってやるやつを作ったんだけど、それだと 20230229 や 20231131 が true になる。
どうやら parse() でやろうとすると年月日それぞれの値のチェックはするが年月日の値を繋げた状態で日付として
正しいかのチェックがされない。日に関して1~31なら全てOKになってしまってそれが何月なのかのチェックがされない。
それで文字列を分解して整数にしてから LocalDate.of(y, m, d) のやり方でやるようにしたんだよ。それだとチェックされるので。
535デフォルトの名無しさん
2023/03/09(木) 02:59:36.54ID:3+H8grLx536デフォルトの名無しさん
2023/03/09(木) 07:19:28.41ID:Kr9kVNlI538デフォルトの名無しさん
2023/03/09(木) 09:11:59.20ID:80vOWs2E 0.2より小さいのに0.2を返す意図がわからない
539デフォルトの名無しさん
2023/03/09(木) 09:33:04.67ID:80vOWs2E 例えばIEEE754の倍精度だと10^23に一番近い値は2個存在するけど
それぞれの入力値に対して何を返す?
それぞれの入力値に対して何を返す?
540デフォルトの名無しさん
2023/03/09(木) 09:51:28.51ID:8jWFs2vv541デフォルトの名無しさん
2023/03/09(木) 10:06:31.31ID:NA9KE422 文字列で処理した方が楽そうだな
542デフォルトの名無しさん
2023/03/09(木) 10:11:31.04ID:OmNiotFL543デフォルトの名無しさん
2023/03/09(木) 13:53:10.22ID:bNerenDr544デフォルトの名無しさん
2023/03/09(木) 14:58:46.74ID:80vOWs2E >>543
2^m 5^n じゃなくて [1,2,5] x 10^n
2^m 5^n じゃなくて [1,2,5] x 10^n
545デフォルトの名無しさん
2023/03/09(木) 17:53:05.38ID:T9AEG++6546デフォルトの名無しさん
2023/03/09(木) 18:24:41.73ID:80vOWs2E 10^23の結果が10^23にならない
547デフォルトの名無しさん
2023/03/09(木) 18:51:23.08ID:80vOWs2E f(x) = max { 近似(a×10ⁿ) | a∈{1,2,5}, n∈ℤ, 近似(a×10ⁿ)≦x }
お題はこれなんだよね
お題はこれなんだよね
548デフォルトの名無しさん
2023/03/09(木) 19:49:31.53ID:AqeRBK10549デフォルトの名無しさん
2023/03/09(木) 20:42:50.12ID:AqeRBK10 とりあえず>>548の解釈でhaskell
https://ideone.com/KMyKL4
入力を普通に受け渡しすると
f(10^23) = 10^23
f(9.999999999999999e22) = 5e22
は実現できるはずないので引数は文字列で渡す
文字列は0〜9, e,.のみ処理
パーサーやん
https://ideone.com/KMyKL4
入力を普通に受け渡しすると
f(10^23) = 10^23
f(9.999999999999999e22) = 5e22
は実現できるはずないので引数は文字列で渡す
文字列は0〜9, e,.のみ処理
パーサーやん
550デフォルトの名無しさん
2023/03/09(木) 21:55:00.68ID:Kr9kVNlI551デフォルトの名無しさん
2023/03/10(金) 00:33:46.36ID:5SQWn2gE このすいや、違うって、出力側の問題ではなく入力側
出力側は出力が1.0e_、2.0e_、5.9e_の形に限られるため、打ち切り誤差でに4.9999..e23とか9.999...e12とか出力されてもそれぞれ5e23、1e13の打ち切り誤差と判断できるけど、入力側では不可能、つまりそもそも1e23を入力するには文字列がなんかで入力受け取るとか、significantとexponentを整数値で受け取る形式にするとかしないとそもそも入力を受けられないけどそこはどうすんの?つて話
出力側は出力が1.0e_、2.0e_、5.9e_の形に限られるため、打ち切り誤差でに4.9999..e23とか9.999...e12とか出力されてもそれぞれ5e23、1e13の打ち切り誤差と判断できるけど、入力側では不可能、つまりそもそも1e23を入力するには文字列がなんかで入力受け取るとか、significantとexponentを整数値で受け取る形式にするとかしないとそもそも入力を受けられないけどそこはどうすんの?つて話
552デフォルトの名無しさん
2023/03/10(金) 00:35:33.83ID:5SQWn2gE あれ?なんか日本語変換メチャクチャになってる
言いたい事わかる?
1e23なんてそもそも例えばhaskellのDouble型だと受け取れないんだよ
言いたい事わかる?
1e23なんてそもそも例えばhaskellのDouble型だと受け取れないんだよ
553デフォルトの名無しさん
2023/03/10(金) 07:45:37.27ID:9bh7XNaU554デフォルトの名無しさん
2023/03/10(金) 11:39:00.03ID:RgyaHPNK >>553
何がおかしい?
例えば
10^23の結果が10^23にならない
と指摘してたけどこれは違う
コードはちゃんと
f(9.999999999999999e22) = 5e22
を算出してる
しかし>>545のコードでコードの使用者が
a = fl125 $ 10^23
とやってもaには1e23ではなく5e22が返ってきてしまう
しかしそれはfl125がうまく機能していないのではなくhaskellの使用上標準の値受け渡しでは9.999999999999999e22と1e23を区別して渡す方法がないんだよ
かと言って
「9.999999999999999e22が引数で来る事はないな、きっとこれは1e23が精度の限界で誤って渡されてるんだ、引数は1e23とみなして答え返そう」
とかあり得んやろ?
わかる?
何がおかしい?
例えば
10^23の結果が10^23にならない
と指摘してたけどこれは違う
コードはちゃんと
f(9.999999999999999e22) = 5e22
を算出してる
しかし>>545のコードでコードの使用者が
a = fl125 $ 10^23
とやってもaには1e23ではなく5e22が返ってきてしまう
しかしそれはfl125がうまく機能していないのではなくhaskellの使用上標準の値受け渡しでは9.999999999999999e22と1e23を区別して渡す方法がないんだよ
かと言って
「9.999999999999999e22が引数で来る事はないな、きっとこれは1e23が精度の限界で誤って渡されてるんだ、引数は1e23とみなして答え返そう」
とかあり得んやろ?
わかる?
555デフォルトの名無しさん
2023/03/10(金) 12:12:05.54ID:vz4CBcOd 本当に読んだ?
556デフォルトの名無しさん
2023/03/10(金) 12:45:16.91ID:wA/P8BtN もういいよ
557デフォルトの名無しさん
2023/03/10(金) 16:22:43.21ID:CaMSg8vJ お題:スレのHTMLが入力されるのでもっともレスが付いているレス番号を表示しなさい
複数同率の場合は複数表示しなさい
複数同率の場合は複数表示しなさい
558534
2023/03/10(金) 16:31:19.44ID:ZGHw+/B0 >>542
そんなやり方があったとは気付かなかった。
そんなやり方があったとは気付かなかった。
559デフォルトの名無しさん
2023/03/10(金) 17:58:27.90ID:ZGHw+/B0 >>533
kotlin
出力がちょっと違うけど値としては合っている。
まあしかし BigDecimal 使って文字列で処理しちゃってて桁数大きくてもドーンと来いみたいになっててつまりほぼ手抜き。
https://paiza.io/projects/bgGSIZ8CEEFszHzDBQqD8g
kotlin
出力がちょっと違うけど値としては合っている。
まあしかし BigDecimal 使って文字列で処理しちゃってて桁数大きくてもドーンと来いみたいになっててつまりほぼ手抜き。
https://paiza.io/projects/bgGSIZ8CEEFszHzDBQqD8g
560デフォルトの名無しさん
2023/03/10(金) 18:24:41.36ID:ZGHw+/B0 あ。負の数には未対応だった。
561デフォルトの名無しさん
2023/03/10(金) 18:51:26.52ID:ZGHw+/B0 こっそり負の値に対応するプログラムに修正しておいた。
562デフォルトの名無しさん
2023/03/10(金) 18:53:36.03ID:ZGHw+/B0 だめだ。 -0.9 や 0.9 みたいなのがうまく行かない。後で時間があったら考えよう。
563デフォルトの名無しさん
2023/03/10(金) 20:31:33.45ID:neDfohzd564デフォルトの名無しさん
2023/03/10(金) 21:02:13.08ID:fvzGmxnd565デフォルトの名無しさん
2023/03/10(金) 22:07:04.07ID:HEpguiV4 >>561
誰も見てないから心配すんな。
誰も見てないから心配すんな。
566559
2023/03/12(日) 02:44:00.49ID:eBdq5KuG >>533
Kotlin
BigDecimal (及び BigInteger)は使うが文字列を使うのは止めて色々計算して何とかするようにした。
https://paiza.io/projects/6H3b_gf_Kc3RCT6_S_HISw
Kotlin
BigDecimal (及び BigInteger)は使うが文字列を使うのは止めて色々計算して何とかするようにした。
https://paiza.io/projects/6H3b_gf_Kc3RCT6_S_HISw
567デフォルトの名無しさん
2023/03/12(日) 18:49:22.70ID:eBdq5KuG >>557のお題を勝手に改造
お題:5chのスレのURLが入力されるので内容を取得してもっともレスが付いているレス番号から順に出力しなさい
複数同率の場合は複数表示しなさい
回答例
Kotlin
https://paiza.io/projects/CICvfqwT52X4FsmIwxb_Zw
出力はURLと「レス数: レス番号, ...」になる。
要するに、>>557作っている内に最大のやつ一つ出すだけなのも勿体ないなと思って改造して出来上がったが元のお題とちょっと違うのでお題も勝手に改造した。
お題:5chのスレのURLが入力されるので内容を取得してもっともレスが付いているレス番号から順に出力しなさい
複数同率の場合は複数表示しなさい
回答例
Kotlin
https://paiza.io/projects/CICvfqwT52X4FsmIwxb_Zw
出力はURLと「レス数: レス番号, ...」になる。
要するに、>>557作っている内に最大のやつ一つ出すだけなのも勿体ないなと思って改造して出来上がったが元のお題とちょっと違うのでお題も勝手に改造した。
568564
2023/03/13(月) 02:22:32.85ID:3T4oo4fg569デフォルトの名無しさん
2023/03/14(火) 04:11:08.17ID:39BjzOmR >>509
Ruby で、
require 'csv'
require 'json'
# 製品タイプの出現回数を数える。初期値は0
prod_type_count = Hash.new( 0 )
# 1行ずつ処理する。Array.new( 1 ) で先頭要素に、nil が入る。
# 蓄積変数・ary のインデックスと、出現回数を同じにする。
# 例えば、ary[ 2 ] には、2つ目のB やC などが入る
result_ary = CSV.foreach( "input.csv" ).
each_with_object( Array.new( 1 ) ) do |row, ary|
plus_1 = prod_type_count[ row[ 0 ] ] + 1
prod_type_count[ row[ 0 ] ] = plus_1
if ary[ plus_1 ] # 存在する
ary[ plus_1 ].push row
else # 存在しない
ary[ plus_1 ] = [ row ]
end
end
# p prod_type_count
#=> { "B"=>2, "C"=>3, "F"=>2, "E"=>3, "D"=>4, "A"=>1, "G"=>1 }
次へ続く
Ruby で、
require 'csv'
require 'json'
# 製品タイプの出現回数を数える。初期値は0
prod_type_count = Hash.new( 0 )
# 1行ずつ処理する。Array.new( 1 ) で先頭要素に、nil が入る。
# 蓄積変数・ary のインデックスと、出現回数を同じにする。
# 例えば、ary[ 2 ] には、2つ目のB やC などが入る
result_ary = CSV.foreach( "input.csv" ).
each_with_object( Array.new( 1 ) ) do |row, ary|
plus_1 = prod_type_count[ row[ 0 ] ] + 1
prod_type_count[ row[ 0 ] ] = plus_1
if ary[ plus_1 ] # 存在する
ary[ plus_1 ].push row
else # 存在しない
ary[ plus_1 ] = [ row ]
end
end
# p prod_type_count
#=> { "B"=>2, "C"=>3, "F"=>2, "E"=>3, "D"=>4, "A"=>1, "G"=>1 }
次へ続く
570569
2023/03/14(火) 04:12:26.06ID:39BjzOmR result_ary.shift # 先頭要素のnil を削除する
res = result_ary.each_with_object( [ ] ) do |outer_ary, accum|
outer_ary.sort_by! { |inner_ary| inner_ary[ 0 ] } # 製品タイプでソートする
transposed_ary = outer_ary.transpose # 2次元配列を転置する
accum.push ( { "製品タイプ" => transposed_ary[ 0 ],
"製品ID" => transposed_ary[ 1 ],
"製品色" => transposed_ary[ 2 ] } )
end
puts JSON.dump( res ) # 文字列化
# p result_ary
=begin
ソート後のデータ
[ [["A", "01", "Y"], ["B", "02", "B"], ["C", "04", "Y"], ["D", "07", "B"], ["E", "12", "C"], ["F", "15", "R"], ["G", "16", "M"]],
[["B", "03", "C"], ["C", "06", "G"], ["D", "08", "B"], ["E", "11", "Y"], ["F", "14", "G"]],
[["C", "05", "C"], ["D", "10", "M"], ["E", "13", "B"]],
[["D", "09", "B"]] ]
=end
res = result_ary.each_with_object( [ ] ) do |outer_ary, accum|
outer_ary.sort_by! { |inner_ary| inner_ary[ 0 ] } # 製品タイプでソートする
transposed_ary = outer_ary.transpose # 2次元配列を転置する
accum.push ( { "製品タイプ" => transposed_ary[ 0 ],
"製品ID" => transposed_ary[ 1 ],
"製品色" => transposed_ary[ 2 ] } )
end
puts JSON.dump( res ) # 文字列化
# p result_ary
=begin
ソート後のデータ
[ [["A", "01", "Y"], ["B", "02", "B"], ["C", "04", "Y"], ["D", "07", "B"], ["E", "12", "C"], ["F", "15", "R"], ["G", "16", "M"]],
[["B", "03", "C"], ["C", "06", "G"], ["D", "08", "B"], ["E", "11", "Y"], ["F", "14", "G"]],
[["C", "05", "C"], ["D", "10", "M"], ["E", "13", "B"]],
[["D", "09", "B"]] ]
=end
571567
2023/03/15(水) 02:47:25.92ID:N1pHvbol >>557
Kotlin
>>567を更に改造して>>568の言うような >>xxx-xxx とかも可能にした。
実際に受け付けるのは「>>」の後が「数」または「数-数」で複数ある場合はカンマ区切り。
https://paiza.io/projects/CDH-JDZD12laCkRrON4Q2A
Kotlin
>>567を更に改造して>>568の言うような >>xxx-xxx とかも可能にした。
実際に受け付けるのは「>>」の後が「数」または「数-数」で複数ある場合はカンマ区切り。
https://paiza.io/projects/CDH-JDZD12laCkRrON4Q2A
572デフォルトの名無しさん
2023/03/16(木) 19:59:21.18ID:rEpIo1do マッチ棒パズルソルバ
0123456789+-=×/からなる文字列が与えられる
この文字列にC変換1回、またはA変換とB変換を一回ずつ行って得られる文字列のうち数式として成立するものを列挙せよ
https://youtu.be/2sqvh8KBdQk
例
6 = 3 + 3 - 8 → 6 = 3 + 3 = 6
7 = 6 + 5 → 11 = 6 + 5
2 = 3 + 0 → 3 = 3 + 0, 2 = 2 + 0
6 = 9 - 3 → 5 = 8 - 3
A変換(逆変換がB変換)
6 → 5
8 → 0, 6, 9
9 → 3, 5
= → -
× → /
C変換
0 → 6,9
2 → 3
3 → 2,5
4 → 7,11
5 → 3
6 → 0
7 → 4,11
9 → 0
11 → 4,7
0123456789+-=×/からなる文字列が与えられる
この文字列にC変換1回、またはA変換とB変換を一回ずつ行って得られる文字列のうち数式として成立するものを列挙せよ
https://youtu.be/2sqvh8KBdQk
例
6 = 3 + 3 - 8 → 6 = 3 + 3 = 6
7 = 6 + 5 → 11 = 6 + 5
2 = 3 + 0 → 3 = 3 + 0, 2 = 2 + 0
6 = 9 - 3 → 5 = 8 - 3
A変換(逆変換がB変換)
6 → 5
8 → 0, 6, 9
9 → 3, 5
= → -
× → /
C変換
0 → 6,9
2 → 3
3 → 2,5
4 → 7,11
5 → 3
6 → 0
7 → 4,11
9 → 0
11 → 4,7
573デフォルトの名無しさん
2023/03/18(土) 05:36:02.04ID:YIU3ErvV >>572
A変換に + → - もあるよね?
A変換に + → - もあるよね?
574デフォルトの名無しさん
2023/03/18(土) 06:36:08.37ID:Pxj+DrXq 他にも色々と抜けっぽいのが
B変換 : A変換の逆変換
C変換 : B変換=>A変換 (元に戻るのは除く)
だから
A変換だけ(またはB変換だけ)ちゃんと考えて定義すれば良いよ
「数式が成り立つ」もちゃんと定義しないと
"1+1=2" "1+1" "1"
どこまで含む?
B変換 : A変換の逆変換
C変換 : B変換=>A変換 (元に戻るのは除く)
だから
A変換だけ(またはB変換だけ)ちゃんと考えて定義すれば良いよ
「数式が成り立つ」もちゃんと定義しないと
"1+1=2" "1+1" "1"
どこまで含む?
575デフォルトの名無しさん
2023/03/18(土) 12:24:06.83ID:u+wfSKhj576デフォルトの名無しさん
2023/03/18(土) 18:16:04.06ID:YIU3ErvV 要するにマッチ棒使って数字と四則演算記号と = 記号を表現した時に1本動かして、最低でも一つは = 記号がある状態で式が成立すれば良いんだよね?
577デフォルトの名無しさん
2023/03/18(土) 18:56:17.32ID:KeK4M5sZ >>576
yes
yes
578デフォルトの名無しさん
2023/03/20(月) 16:53:45.60ID:OQwjcDiz ≠もOK?
579デフォルトの名無しさん
2023/03/20(月) 17:51:34.56ID:xiC6G7QO まともに出題出来ないヤツは出題するなよ
580デフォルトの名無しさん
2023/03/21(火) 15:12:23.88ID:icU0z8mb AIは数式や記号に意味を持たせない
581デフォルトの名無しさん
2023/03/25(土) 18:45:52.85ID:WgnIlBna >>572
Kotlin
https://paiza.io/projects/mlep0Qk1tQhwMlC1r6awRw
式が成立するかの判定ではパターンマッチング使ってやっているので多分ちゃんと出来ないこともあるんじゃないかと思うが、多分だいたいは大丈夫。
式の計算は括弧を使った入れ子がないので再帰は使ってない。掛け算と割り算を優先してるだけ。
Kotlin
https://paiza.io/projects/mlep0Qk1tQhwMlC1r6awRw
式が成立するかの判定ではパターンマッチング使ってやっているので多分ちゃんと出来ないこともあるんじゃないかと思うが、多分だいたいは大丈夫。
式の計算は括弧を使った入れ子がないので再帰は使ってない。掛け算と割り算を優先してるだけ。
582521
2023/03/27(月) 05:06:18.68ID:YhTH5dNR >>523
Elixir で再帰で書いた。多分木の走査か。
末尾再帰になっているかどうかは分からないけど。
>>456 よりも、さらに難しかった
https://paiza.io/projects/oeDtiQEX0oQtWQT7SMKwLA?language=elixir
以下は、データの変遷
input_list は、[ ["ガンド部長", "ブリ事業部長", "9000"], ["モジャコ", "ヤズ係長", "39000"] ]
input_map は順不同で、%{ "イナダ課長" => {"ワラサ部長", 5000}, "ガンド部長" => {"ブリ事業部長", 9000} }
boss_subordinates_map は、%{ "ツバス係長" => ["ワカナ"], "ハマチ課長" => ["ヤズ係長", "ツバス係長"] }
total_power は、[ {"ガンド部長", 81000}, {"モジャコ", 39000} ]
出力
ガンド部長 : 81000
モジャコ : 39000
Elixir で再帰で書いた。多分木の走査か。
末尾再帰になっているかどうかは分からないけど。
>>456 よりも、さらに難しかった
https://paiza.io/projects/oeDtiQEX0oQtWQT7SMKwLA?language=elixir
以下は、データの変遷
input_list は、[ ["ガンド部長", "ブリ事業部長", "9000"], ["モジャコ", "ヤズ係長", "39000"] ]
input_map は順不同で、%{ "イナダ課長" => {"ワラサ部長", 5000}, "ガンド部長" => {"ブリ事業部長", 9000} }
boss_subordinates_map は、%{ "ツバス係長" => ["ワカナ"], "ハマチ課長" => ["ヤズ係長", "ツバス係長"] }
total_power は、[ {"ガンド部長", 81000}, {"モジャコ", 39000} ]
出力
ガンド部長 : 81000
モジャコ : 39000
583デフォルトの名無しさん
2023/03/30(木) 17:53:04.26ID:78T5MT6s お題 板違い
数学板に貼られてた問題
こっちでしょ
298 132人目の素数さん[] 2023/03/30(木) 16:50:53.60 ID:FIHeBSy3
66,203,335,759,2227,3663,7249,80,252,420,882,2770,4618,9126
の数字の和を使って22999をピッタリ作りたい
この時、解は存在するか。
数字は重複して何度でも使用して良いが、使う回数は少なければ少ないほど良い。
18-(使用した数字の合計個数)をこの問題の得点とする
という問題誰かといてください!
数学板に貼られてた問題
こっちでしょ
298 132人目の素数さん[] 2023/03/30(木) 16:50:53.60 ID:FIHeBSy3
66,203,335,759,2227,3663,7249,80,252,420,882,2770,4618,9126
の数字の和を使って22999をピッタリ作りたい
この時、解は存在するか。
数字は重複して何度でも使用して良いが、使う回数は少なければ少ないほど良い。
18-(使用した数字の合計個数)をこの問題の得点とする
という問題誰かといてください!
584デフォルトの名無しさん
2023/03/30(木) 20:36:43.76ID:aEUdLEfy 4618+3663+3663+3663+3663+3663+66
585デフォルトの名無しさん
2023/03/30(木) 20:56:17.32ID:beAio6H7 GPT4がこのスレ知っててワロタ
586デフォルトの名無しさん
2023/04/05(水) 19:08:55.65ID:dFp+KIIO お題 nか2n
長さがn+1, 総和が3nの正の整数の列が入力されます
その連続する部分列で総和がnまたは2nであるものを見つけ、その先頭と最後のindexの組み(indexは1〜n+1とする)を返す関数を作ってください
存在しない時は(-1,-1)を返して下さい
備考 総当たりでも列の長さnに対して計算量はn²オーダーですが、線形オーダーの解があります(四則演算等をO(1)として)
例
[4,1,2,3,3,2]
(3,4)
[3,2,1,3,2,3,4,3,1,4,4]
(6,8)
[3,9,1,1,1,2,5,4,3,5,4,2,1,10,3,4,2,7,1,5,1,2,3,3,1,1,1,1,3,1,2,4,1,1,2,2,11,2,1,4,7,4,6,1,7,1,4,2,1,5,2,5,6,1,5,2,1,1,5,1,1,1,1,5,1,1,3,2,9,6,1,3,4,11,1,1,4,1,2,6,1,2,1,1,3,1,1,1,1,1,2,7,6,2,1,3,9,1,1,2,2]
(36,67)
長さがn+1, 総和が3nの正の整数の列が入力されます
その連続する部分列で総和がnまたは2nであるものを見つけ、その先頭と最後のindexの組み(indexは1〜n+1とする)を返す関数を作ってください
存在しない時は(-1,-1)を返して下さい
備考 総当たりでも列の長さnに対して計算量はn²オーダーですが、線形オーダーの解があります(四則演算等をO(1)として)
例
[4,1,2,3,3,2]
(3,4)
[3,2,1,3,2,3,4,3,1,4,4]
(6,8)
[3,9,1,1,1,2,5,4,3,5,4,2,1,10,3,4,2,7,1,5,1,2,3,3,1,1,1,1,3,1,2,4,1,1,2,2,11,2,1,4,7,4,6,1,7,1,4,2,1,5,2,5,6,1,5,2,1,1,5,1,1,1,1,5,1,1,3,2,9,6,1,3,4,11,1,1,4,1,2,6,1,2,1,1,3,1,1,1,1,1,2,7,6,2,1,3,9,1,1,2,2]
(36,67)
587デフォルトの名無しさん
2023/04/05(水) 20:56:42.55ID:hXUfkOct 簡単すぎる
他の人どうぞ
他の人どうぞ
588デフォルトの名無しさん
2023/04/05(水) 21:33:05.46ID:9gh0I7vV 2^(2^(2^(2^(2^(2^2)))))
を10進数で先頭から100桁を出力する方法は?
を10進数で先頭から100桁を出力する方法は?
589デフォルトの名無しさん
2023/04/05(水) 21:40:43.46ID:hXUfkOct 1桁でも無理
590デフォルトの名無しさん
2023/04/09(日) 16:16:32.45ID:Hy4gOb3Q お題
4つの数字a,b,c,dが複数個入力されます
入力
0, 1, 1, 1
0, 0, 0, 0
1, 0, 0, 1
1, 0, 1, 0
0, 0, 0, 1
0, 0, 1, 1
1, 1, 1, 0
1, 0, 0, 0
1, 1, 1, 1
0, 1, 1, 0
1, 1, 0, 0
1, 0, 1, 1
0, 1, 0, 1
1, 1, 0, 1
0, 0, 1, 0
0, 1, 0, 0
次の条件でソートして出力してください
dの昇順
, bの降順
, cの昇順
, aの降順
出力
1, 1, 0, 0
0, 1, 0, 0
1, 1, 1, 0
0, 1, 1, 0
1, 0, 0, 0
0, 0, 0, 0
1, 0, 1, 0
0, 0, 1, 0
1, 1, 0, 1
0, 1, 0, 1
1, 1, 1, 1
0, 1, 1, 1
1, 0, 0, 1
0, 0, 0, 1
1, 0, 1, 1
0, 0, 1, 1
4つの数字a,b,c,dが複数個入力されます
入力
0, 1, 1, 1
0, 0, 0, 0
1, 0, 0, 1
1, 0, 1, 0
0, 0, 0, 1
0, 0, 1, 1
1, 1, 1, 0
1, 0, 0, 0
1, 1, 1, 1
0, 1, 1, 0
1, 1, 0, 0
1, 0, 1, 1
0, 1, 0, 1
1, 1, 0, 1
0, 0, 1, 0
0, 1, 0, 0
次の条件でソートして出力してください
dの昇順
, bの降順
, cの昇順
, aの降順
出力
1, 1, 0, 0
0, 1, 0, 0
1, 1, 1, 0
0, 1, 1, 0
1, 0, 0, 0
0, 0, 0, 0
1, 0, 1, 0
0, 0, 1, 0
1, 1, 0, 1
0, 1, 0, 1
1, 1, 1, 1
0, 1, 1, 1
1, 0, 0, 1
0, 0, 0, 1
1, 0, 1, 1
0, 0, 1, 1
591デフォルトの名無しさん
2023/04/09(日) 19:47:50.00ID:ha0YD44C592デフォルトの名無しさん
2023/04/09(日) 19:53:31.67ID:fcL4nlHr593デフォルトの名無しさん
2023/04/09(日) 22:47:43.52ID:9X2mZ6aY594デフォルトの名無しさん
2023/04/12(水) 02:41:24.12ID:1sJZVfCp595デフォルトの名無しさん
2023/04/12(水) 12:53:01.20ID:XUdaOkVA お題 何通り?
黒玉 b 個、赤玉 r 個、白玉 w 個が入ってる袋の中から玉を一個ずつ取り出し、取り出した玉を順に横一列に b+r+w 個すべて並べる。
どの黒玉同士も隣り合わず、どの赤玉同士も隣り合わない数を求めよ
例
( b, r, w ) = ( 1,2,2)
→ 18
( b, r, w ) = ( 1,2,3 )
→ 40
( b, r, w ) = ( 3,4,5 )
→ 4326
( b, r, w ) = ( 12,34,56 )
→ 138961718287080638152811314224672
( b, r, w ) = ( 1, 2, 2 )の場合の18通り
["BRWRW","BRWWR","BWRWR","RBRWW","RBWRW","RBWWR","RWBRW","RWBWR","RWRBW","RWRWB","RWWBR","RWWRB","WBRWR","WRBRW","WRBWR","WRWBR","WRWRB","WWRBR"]
黒玉 b 個、赤玉 r 個、白玉 w 個が入ってる袋の中から玉を一個ずつ取り出し、取り出した玉を順に横一列に b+r+w 個すべて並べる。
どの黒玉同士も隣り合わず、どの赤玉同士も隣り合わない数を求めよ
例
( b, r, w ) = ( 1,2,2)
→ 18
( b, r, w ) = ( 1,2,3 )
→ 40
( b, r, w ) = ( 3,4,5 )
→ 4326
( b, r, w ) = ( 12,34,56 )
→ 138961718287080638152811314224672
( b, r, w ) = ( 1, 2, 2 )の場合の18通り
["BRWRW","BRWWR","BWRWR","RBRWW","RBWRW","RBWWR","RWBRW","RWBWR","RWRBW","RWRWB","RWWBR","RWWRB","WBRWR","WRBRW","WRBWR","WRWBR","WRWRB","WWRBR"]
596デフォルトの名無しさん
2023/04/12(水) 14:41:48.33ID:KpWDuFOt こういうの、中学の時に散々やった
597デフォルトの名無しさん
2023/04/13(木) 01:54:06.79ID:o3x890Fi >>595
Kotlin
これは馬鹿正直に並べ替えてるだけなので多くなると結果が中々出ないだけでなくメモリが足りなくなって終わるかも知れない。
https://paiza.io/projects/GIJzZldH4F366cas93uAzg
Kotlin
これは馬鹿正直に並べ替えてるだけなので多くなると結果が中々出ないだけでなくメモリが足りなくなって終わるかも知れない。
https://paiza.io/projects/GIJzZldH4F366cas93uAzg
598デフォルトの名無しさん
2023/04/13(木) 04:34:12.97ID:/t/rlj3C599デフォルトの名無しさん
2023/04/13(木) 17:25:16.88ID:oUlx2lX+ この問題よくある「受験問題計算機で解こう」です
元ネタは今年の東大理系[2]が(b,r,w) = (3,4,5)の場合、もちろん元の問題は「手計算で解け」
https://youtu.be/KAJpzptO5Ws
なのでうまく立式すると(b,r,w) = (3,4,5)程度なら手計算でも解けます、計算機ならこの程度なら全数でも27720通りのうちの4326通りなのでいけます
( b, r, w ) = ( 12,34,56 )あたりだと総当たりするのは難しくなります
ちなみにn = b+r+wについて計算量がO(n²⁺ᵉ)のオーダーの解があります
というか普通に動画のように解いた時の一番素直な解法がO(n²⁺ᵉ)オーダーになります
もっと早いのあるかもしれませんけど
元ネタは今年の東大理系[2]が(b,r,w) = (3,4,5)の場合、もちろん元の問題は「手計算で解け」
https://youtu.be/KAJpzptO5Ws
なのでうまく立式すると(b,r,w) = (3,4,5)程度なら手計算でも解けます、計算機ならこの程度なら全数でも27720通りのうちの4326通りなのでいけます
( b, r, w ) = ( 12,34,56 )あたりだと総当たりするのは難しくなります
ちなみにn = b+r+wについて計算量がO(n²⁺ᵉ)のオーダーの解があります
というか普通に動画のように解いた時の一番素直な解法がO(n²⁺ᵉ)オーダーになります
もっと早いのあるかもしれませんけど
600デフォルトの名無しさん
2023/04/13(木) 18:39:05.80ID:gLPq3xqA 全然違うアプローチで解いた
乗算やCombinationの計算オーダーをどう考えてるか知らないけど、
シンプルな2重ループの中身がCombination、2のn乗、乗算、加減算だけだから、
Combinationを毎回単純に計算してもO(n^4 log(n))
工夫すればO(n^3 log(n))になる
乗算やCombinationの計算オーダーをどう考えてるか知らないけど、
シンプルな2重ループの中身がCombination、2のn乗、乗算、加減算だけだから、
Combinationを毎回単純に計算してもO(n^4 log(n))
工夫すればO(n^3 log(n))になる
601デフォルトの名無しさん
2023/04/14(金) 16:38:26.25ID:KAnE9iae 動画の方法の計算量は高々O(n²⁺ᵉ)なのはすぐ言えます
ここでの計算量は普通の固定長のレジスタしか持たない計算機で計算した場合の計算回数
動画の計算は0<b≦rのときは
Σ[ k:1〜b ]C[ b-1, k-1 ]C[ w+1, k ]C[ k+w+1, w+b+1-r ]
( ただしm<0,m>nのときはC[ m,n ] = 0とする )
で漏れなくダブりなく計算できるというやつ
これの計算量ですが
①ループはb≦nなのでO(n)回
②計算で出てくる数値の大きさは大体指数オーダーなので桁数はO(n¹⁺ᵉ)オーダー
③3つあるCの計算は漸化式使って前で求めた値にそれぞれ掛け算1回、割り算1回で求まるので桁数がO(n¹⁺ᵉ)だからO(n¹⁺ᵉ)オーダーで計算可能、それを掛け算2回して累計 に足すだけなので結局ループ1回の計算量はO(n¹⁺ᵉ)オーダー
④総計算量は結局高々O(n²⁺ᵉ)オーダー
Σの各項は階乗がたくさん出る形なのでBinary splittingとか使ったら早くなる可能性もあるけど、流石に暇つぶしにそこまでやる気は出ない
ここでの計算量は普通の固定長のレジスタしか持たない計算機で計算した場合の計算回数
動画の計算は0<b≦rのときは
Σ[ k:1〜b ]C[ b-1, k-1 ]C[ w+1, k ]C[ k+w+1, w+b+1-r ]
( ただしm<0,m>nのときはC[ m,n ] = 0とする )
で漏れなくダブりなく計算できるというやつ
これの計算量ですが
①ループはb≦nなのでO(n)回
②計算で出てくる数値の大きさは大体指数オーダーなので桁数はO(n¹⁺ᵉ)オーダー
③3つあるCの計算は漸化式使って前で求めた値にそれぞれ掛け算1回、割り算1回で求まるので桁数がO(n¹⁺ᵉ)だからO(n¹⁺ᵉ)オーダーで計算可能、それを掛け算2回して累計 に足すだけなので結局ループ1回の計算量はO(n¹⁺ᵉ)オーダー
④総計算量は結局高々O(n²⁺ᵉ)オーダー
Σの各項は階乗がたくさん出る形なのでBinary splittingとか使ったら早くなる可能性もあるけど、流石に暇つぶしにそこまでやる気は出ない
602デフォルトの名無しさん
2023/04/14(金) 16:42:45.21ID:KAnE9iae Cの但し書き逆 orz
C[ m, n ] = 0 if n < 0 or n > m
でつ
C[ m, n ] = 0 if n < 0 or n > m
でつ
603デフォルトの名無しさん
2023/04/14(金) 18:34:45.76ID:rZCGb039 eはεか
2.718... かと思って、えらい遅いなあと思ってしまった
桁数はn log n 程度、乗除算の定数の桁数がlog nだから、
だいたい n^2 (log n)^2 くらい
2.718... かと思って、えらい遅いなあと思ってしまった
桁数はn log n 程度、乗除算の定数の桁数がlog nだから、
だいたい n^2 (log n)^2 くらい
604デフォルトの名無しさん
2023/04/14(金) 19:30:49.02ID:FnL8j1Jt そうそう、上つきのεが出ないのでeで代用しました
明示しとくべきでした
そもそも計算過程でO(exp(n))オーダーちょいの数扱わざるを得ないしO(n)より真に小さいオーダーのループも無理っぽいのでO(n²⁺ᵉ)より劇的に早くするのは無理ではなかろかと思う今日この頃
明示しとくべきでした
そもそも計算過程でO(exp(n))オーダーちょいの数扱わざるを得ないしO(n)より真に小さいオーダーのループも無理っぽいのでO(n²⁺ᵉ)より劇的に早くするのは無理ではなかろかと思う今日この頃
605デフォルトの名無しさん
2023/04/17(月) 12:15:45.96ID:0+VsNbTw お題 何通り?
黒玉 b 個、赤玉 r 個、白玉 w 個が入ってる袋の中から玉を一個ずつ取り出し、取り出した玉を順に横一列に b+r+w 個すべて並べる。
どの黒玉同士も隣り合わず、どの赤玉同士も隣り合わず、どの白玉同士も隣り合わない数を求めよ
黒玉 b 個、赤玉 r 個、白玉 w 個が入ってる袋の中から玉を一個ずつ取り出し、取り出した玉を順に横一列に b+r+w 個すべて並べる。
どの黒玉同士も隣り合わず、どの赤玉同士も隣り合わず、どの白玉同士も隣り合わない数を求めよ
606デフォルトの名無しさん
2023/04/18(火) 20:26:54.25ID:ZdFu9SM3 オリジナル問題をほんの少し変えただけなんだけど
解き方の解説動画がない問題には回答出来ない人なのかな?
解き方の解説動画がない問題には回答出来ない人なのかな?
607デフォルトの名無しさん
2023/04/19(水) 10:51:18.73ID:vlbinbz4608デフォルトの名無しさん
2023/04/19(水) 23:01:33.08ID:6dkgbtB2 >>605
Kotlin
前回のプログラムを修正して入力の最初の値として 0 または 0 以外を受け付けるようにして、
それが 0 だったら前回と同じ動作(Wは連続して良い)、0以外だったら今回のお題の動作(連続不可)
になるようにした。
https://paiza.io/projects/YHo1f9RRZcJ5qWeKjh4A5A
Kotlin
前回のプログラムを修正して入力の最初の値として 0 または 0 以外を受け付けるようにして、
それが 0 だったら前回と同じ動作(Wは連続して良い)、0以外だったら今回のお題の動作(連続不可)
になるようにした。
https://paiza.io/projects/YHo1f9RRZcJ5qWeKjh4A5A
609デフォルトの名無しさん
2023/04/20(木) 16:05:31.06ID:6lEemSZE >>605
haskell
https://ideone.com/eoDuMc
アルゴリズムは何も変わってないんだけどGHCという一番メジャーなhaskell コンパイラはソースでユニコード文字で処理してるので変数名に漢字とか使えてちょっと面白いんですけど試しr̅みたいな合字やってみたら使えました、まぁそりゃ使えるだろって話なんですけど
ちょっとコードの見た目が全然違って楽しい
haskell
https://ideone.com/eoDuMc
アルゴリズムは何も変わってないんだけどGHCという一番メジャーなhaskell コンパイラはソースでユニコード文字で処理してるので変数名に漢字とか使えてちょっと面白いんですけど試しr̅みたいな合字やってみたら使えました、まぁそりゃ使えるだろって話なんですけど
ちょっとコードの見た目が全然違って楽しい
610デフォルトの名無しさん
2023/04/23(日) 16:27:41.83ID:Gk05N8zk テトリスで任意の模様を作成可能か
611デフォルトの名無しさん
2023/04/24(月) 12:22:06.49ID:qM/Ri5Lg NO
612デフォルトの名無しさん
2023/04/25(火) 23:39:05.78ID:IsvU68XT お題
上半分と下半分にそれぞれ文字列が書かれたカードがN枚ある。
カードiの上半分の文字列をx_i、下半分の文字列をy_iとする。
カードを何枚か選び横一列に並べ、上側と下側でそれぞれ文字列を結合する。
カードを上手く選ぶことで上側と下側の文字列を一致させることが可能か?
ただし、同じカードを2回以上使用しても良い。
上半分と下半分にそれぞれ文字列が書かれたカードがN枚ある。
カードiの上半分の文字列をx_i、下半分の文字列をy_iとする。
カードを何枚か選び横一列に並べ、上側と下側でそれぞれ文字列を結合する。
カードを上手く選ぶことで上側と下側の文字列を一致させることが可能か?
ただし、同じカードを2回以上使用しても良い。
613デフォルトの名無しさん
2023/04/25(火) 23:50:59.14ID:W7Q84ofX >>612
言ってる意味がよく分からない。そのカードは上下で分離できるものなのか?
言ってる意味がよく分からない。そのカードは上下で分離できるものなのか?
614デフォルトの名無しさん
2023/04/26(水) 13:54:14.97ID:rSRQIU87 お題出すならまず自分で解答作ってそれに何個か入力してどんな出力になるのか例示しとくべき
そもそももちろん日本語で他人に伝わる仕様書書けないようでは話にならんのだけど
そもそももちろん日本語で他人に伝わる仕様書書けないようでは話にならんのだけど
615デフォルトの名無しさん
2023/04/26(水) 22:38:58.02ID:gYCG8z6s 問いは「可能か?」
答えは「可能(例:全て同一の文字列とする)」
以上
答えは「可能(例:全て同一の文字列とする)」
以上
616デフォルトの名無しさん
2023/04/27(木) 14:44:36.68ID:G4fBhDOx 自分でできてないなら出すな
以上
以上
617デフォルトの名無しさん
2023/04/27(木) 23:16:52.66ID:wlT8UOG8 ちょっと誰か >>612 を ChatGPT にコピペして入力してどう答えるか試してみ
618デフォルトの名無しさん
2023/04/27(木) 23:24:12.73ID:6BBE08oV はい、上側と下側の文字列を一致させることが可能です。
以下の手順で可能です。
カードの上半分の文字列x_iをすべて結合すると文字列Xが得られます。
カードの下半分の文字列y_iをすべて結合すると文字列Yが得られます。
文字列Xと文字列Yを逆順に結合した文字列Z = X + Y'を考えます。ここでY'は文字列Yを逆順にしたものです。
Zの中央にあるカードを選びます。つまり、Zを左右に分割するときに真ん中にあるカードです。
このカードを選ぶことで、上側の文字列をカードの上半分の文字列に、下側の文字列をカードの下半分の文字列にすることができます。
残りのカードに対して、上側と下側で同じ文字列を選びます。このとき、カードを上下反転させたものを選ぶことで、
上側と下側で同じ文字列を選ぶことができます。
こうして選んだカードを横一列に並べることで、上側と下側の文字列を一致させることができます。
具体的には、以下の手順で解くことができます。
カードの上半分の文字列x_iをすべて結合すると文字列Xが得られます。
カードの下半分の文字列y_iをすべて結合すると文字列Yが得られます。
文字列Xと文字列YのLCSを求めます。LCSを求めるアルゴリズムには、動的計画法が使われます。
LCSを構成する文字列を上側と下側の文字列に選びます。このとき、同じ文字列を複数回選ぶことができるので、
LCSの中に同じ文字列が複数回現れる場合には、その文字列を選ぶことができます。
残りのカードに対して、上側と下側でLCSに現れない文字列を選びます。同じ文字列を複数回使用することができるので、
LCSに現れない文字列を上側と下側で同じように選ぶことができます。
こうして選んだカードを横一列に並べることで、上側と下側の文字列を一致させることができます。
このアルゴリズムの時間計算量は、文字列Xと文字列Yの長さの合計をNとした場合、O(N^2)です。
LCSを求める動的計画法の時間計算量はO(N^2)であり、残りの処理の時間計算量もO(N^2)です。したがって、全体としての時間計算量はO(N^2)となります。
以下の手順で可能です。
カードの上半分の文字列x_iをすべて結合すると文字列Xが得られます。
カードの下半分の文字列y_iをすべて結合すると文字列Yが得られます。
文字列Xと文字列Yを逆順に結合した文字列Z = X + Y'を考えます。ここでY'は文字列Yを逆順にしたものです。
Zの中央にあるカードを選びます。つまり、Zを左右に分割するときに真ん中にあるカードです。
このカードを選ぶことで、上側の文字列をカードの上半分の文字列に、下側の文字列をカードの下半分の文字列にすることができます。
残りのカードに対して、上側と下側で同じ文字列を選びます。このとき、カードを上下反転させたものを選ぶことで、
上側と下側で同じ文字列を選ぶことができます。
こうして選んだカードを横一列に並べることで、上側と下側の文字列を一致させることができます。
具体的には、以下の手順で解くことができます。
カードの上半分の文字列x_iをすべて結合すると文字列Xが得られます。
カードの下半分の文字列y_iをすべて結合すると文字列Yが得られます。
文字列Xと文字列YのLCSを求めます。LCSを求めるアルゴリズムには、動的計画法が使われます。
LCSを構成する文字列を上側と下側の文字列に選びます。このとき、同じ文字列を複数回選ぶことができるので、
LCSの中に同じ文字列が複数回現れる場合には、その文字列を選ぶことができます。
残りのカードに対して、上側と下側でLCSに現れない文字列を選びます。同じ文字列を複数回使用することができるので、
LCSに現れない文字列を上側と下側で同じように選ぶことができます。
こうして選んだカードを横一列に並べることで、上側と下側の文字列を一致させることができます。
このアルゴリズムの時間計算量は、文字列Xと文字列Yの長さの合計をNとした場合、O(N^2)です。
LCSを求める動的計画法の時間計算量はO(N^2)であり、残りの処理の時間計算量もO(N^2)です。したがって、全体としての時間計算量はO(N^2)となります。
619デフォルトの名無しさん
2023/04/27(木) 23:45:06.42ID:pA6narNs お題:立方体の頂点x,y,zを格納する配列がある。
ある面の頂点が4つ与えられるのでその頂点をコピーしてx軸上に少し移動させる。
与えられた頂点とコピーした頂点で、3点を結んで面を構築し立方体を表現する頂点のインデックスの配列を生成せよ。
(結果的に立方体の横に新しい立方体ができることがある)
頂点の配列は一次元の実数の配列でx,y,z,x,y,z,というふうに要素が並んでいる。
インデックスの配列も整数の一次元で3点をa,b,cとするとa,b,c,a,b,cというふうに並ぶ。
座標系は右手座標系とする。
頂点は左回りが表面とする。
ある面の頂点が4つ与えられるのでその頂点をコピーしてx軸上に少し移動させる。
与えられた頂点とコピーした頂点で、3点を結んで面を構築し立方体を表現する頂点のインデックスの配列を生成せよ。
(結果的に立方体の横に新しい立方体ができることがある)
頂点の配列は一次元の実数の配列でx,y,z,x,y,z,というふうに要素が並んでいる。
インデックスの配列も整数の一次元で3点をa,b,cとするとa,b,c,a,b,cというふうに並ぶ。
座標系は右手座標系とする。
頂点は左回りが表面とする。
620デフォルトの名無しさん
2023/04/28(金) 00:03:21.44ID:lDiXy321 出題ミスりました
ごめんちゃい
ごめんちゃい
621デフォルトの名無しさん
2023/04/28(金) 11:21:29.27ID:PxvXnl2U なんで自分で組んでみてから出題しないんだろう?
622デフォルトの名無しさん
2023/04/30(日) 20:51:55.51ID:19p6IWVT お題
A、B、C、D、Eの5人が前を向いて横一列に座っている。以下は、異なる5人の発言である。
ア メガネをかけている人は、私の左隣に座っている。
イ 私の右隣にはCが座っている。
ウ 私から右に3番目にはAが座っている。
エ 私の左隣にはB、Bから左に2番目にCが座っている。
オ 私の左隣にはDが座っている。
5人のうち1人だけがメガネをかけているとしたら、それは誰か。
A、B、C、D、Eの5人が前を向いて横一列に座っている。以下は、異なる5人の発言である。
ア メガネをかけている人は、私の左隣に座っている。
イ 私の右隣にはCが座っている。
ウ 私から右に3番目にはAが座っている。
エ 私の左隣にはB、Bから左に2番目にCが座っている。
オ 私の左隣にはDが座っている。
5人のうち1人だけがメガネをかけているとしたら、それは誰か。
623デフォルトの名無しさん
2023/04/30(日) 21:48:41.86ID:ZZzyWIF2 お題……?
624デフォルトの名無しさん
2023/04/30(日) 21:57:15.12ID:HY/OhQ92 このタイミングだと嫌儲からコピペだろうなあ
625デフォルトの名無しさん
2023/04/30(日) 22:27:50.40ID:3Dh4f3TB ECDBA
イウアオエ
イウアオエ
626デフォルトの名無しさん
2023/05/01(月) 12:33:57.06ID:WH7Mepuq627デフォルトの名無しさん
2023/05/01(月) 12:39:19.81ID:uALURsVT 証明支援言語ってこういう問題にも使えるのかな
628デフォルトの名無しさん
2023/05/01(月) 12:40:30.40ID:uALURsVT >>626
なんじゃこれすげえ
なんじゃこれすげえ
629デフォルトの名無しさん
2023/05/01(月) 16:21:07.51ID:+96+d68c Prologおじさんの大好物だろうけどさすがにもう絶滅したか
630デフォルトの名無しさん
2023/05/01(月) 23:58:39.74ID:O2/WfmSw よく見たら総当りしてるだけだった🥺
631デフォルトの名無しさん
2023/05/03(水) 19:34:29.78ID:swhBFkse お題
最長重複文字列を求めてください
入力: mississippi
出力: issi
最長重複文字列を求めてください
入力: mississippi
出力: issi
632デフォルトの名無しさん
2023/05/03(水) 21:54:26.00ID:oXOwbOLg >>631
PowerShell
$s = "mississippi"
$n = $s.length - 1
$t = $u = ""
foreach ($i in 1..$n) {
$t += ((0..$n |% {("-", "#")[$s[$_] -ceq $s[$_ + $i]]}) -join "") + "`n"
$u += ($s[$i..$n + 0..($i - 1)] -join "") + "`n"
}
foreach ($i in $n..1) {
if (!($matches = [regex]::matches($t, "#" * $i)).count) {continue}
$matches |% {$u[$_.index..($_.index + $i - 1)] -join ""}
break
}
PowerShell
$s = "mississippi"
$n = $s.length - 1
$t = $u = ""
foreach ($i in 1..$n) {
$t += ((0..$n |% {("-", "#")[$s[$_] -ceq $s[$_ + $i]]}) -join "") + "`n"
$u += ($s[$i..$n + 0..($i - 1)] -join "") + "`n"
}
foreach ($i in $n..1) {
if (!($matches = [regex]::matches($t, "#" * $i)).count) {continue}
$matches |% {$u[$_.index..($_.index + $i - 1)] -join ""}
break
}
633デフォルトの名無しさん
2023/05/04(木) 13:03:48.76ID:RYbIzcoN634デフォルトの名無しさん
2023/05/04(木) 15:56:11.94ID:RYbIzcoN お題
いろはに王国の国民はみな、氏・ミドルネーム・名を持つ
いろはに政府のマイナンバーシステムでは
氏・ミドルネーム・名
をそれぞれ別項目に保存するはずであったが
氏+ミドルネーム+名の処理が行われて一つの項目に保存されてしまっていた
政府とシステム開発会社のコミュニケーション不足が原因と思われる
再発防止をお願いした
さて、とある国民の名前が「いろはにほ」で保存されていた
この国民の名前を氏・ミドルネーム・名に分割するとき
考えられる分割の仕方をすべて列挙してください
例:
い・ろ・はにほ
い・ろは・にほ
い・ろはに・ほ
いろ・は・にほ
いろ・はに・ほ
いろは・に・ほ
いろはに王国の国民はみな、氏・ミドルネーム・名を持つ
いろはに政府のマイナンバーシステムでは
氏・ミドルネーム・名
をそれぞれ別項目に保存するはずであったが
氏+ミドルネーム+名の処理が行われて一つの項目に保存されてしまっていた
政府とシステム開発会社のコミュニケーション不足が原因と思われる
再発防止をお願いした
さて、とある国民の名前が「いろはにほ」で保存されていた
この国民の名前を氏・ミドルネーム・名に分割するとき
考えられる分割の仕方をすべて列挙してください
例:
い・ろ・はにほ
い・ろは・にほ
い・ろはに・ほ
いろ・は・にほ
いろ・はに・ほ
いろは・に・ほ
635デフォルトの名無しさん
2023/05/04(木) 19:39:10.82ID:YUvdE+K0 例をコピペ出力するだけでOKなのでそれより長いプログラムは冗長
むしろ出題からして最後の部分以外不要なのを踏まえてそこを楽しむべきかもしれない
むしろ出題からして最後の部分以外不要なのを踏まえてそこを楽しむべきかもしれない
636蟻人間 ◆T6xkBnTXz7B0
2023/05/04(木) 19:44:38.00ID:7cs6Lag7 お題: 直方体の段ボール箱の幅・高さ・奥行きがcm単位で指定される。その段ボール箱の展開図をSVG形式で出力せよ。
637蟻人間 ◆T6xkBnTXz7B0
2023/05/04(木) 20:16:34.04ID:7cs6Lag7638638
2023/05/05(金) 15:50:16.77ID:ZEoAaBzl >>631 Perl5
$len = length ($s = 'mississippi');
for $a (0..$len-2) {
for $l (1..$len-$a) {
$t = substr($s, $a, $l);
$b = index($s, $t, $a+1);
$h{length $t} = $t if 0 <= $b
}
}
print $h{(sort keys %h)[-1]}, "\n";
注: インデントは全角スペースに置換してあります
実行結果
~ $ perl 21_631_mississippi.pl
issi
$len = length ($s = 'mississippi');
for $a (0..$len-2) {
for $l (1..$len-$a) {
$t = substr($s, $a, $l);
$b = index($s, $t, $a+1);
$h{length $t} = $t if 0 <= $b
}
}
print $h{(sort keys %h)[-1]}, "\n";
注: インデントは全角スペースに置換してあります
実行結果
~ $ perl 21_631_mississippi.pl
issi
639デフォルトの名無しさん
2023/05/05(金) 20:55:42.28ID:NSI8td4c640デフォルトの名無しさん
2023/05/05(金) 22:37:41.22ID:2BqfMj91641デフォルトの名無しさん
2023/05/05(金) 23:20:24.37ID:ZEoAaBzl >>638
重複を検出した文字の長さが二けた以上になる場合にも対応させるには
print $h{(sort keys %h)[-1]}, "\n";
↓
print $h{(sort{$a <=> $b} keys %h)[-1]}, "\n";
だな。
重複を検出した文字の長さが二けた以上になる場合にも対応させるには
print $h{(sort keys %h)[-1]}, "\n";
↓
print $h{(sort{$a <=> $b} keys %h)[-1]}, "\n";
だな。
642634
2023/05/05(金) 23:33:20.01ID:i3ZizMLE >>640
そんなに簡単に解かれるとは思ってなかった
王国の話に引っ張られて解けない人いるかもと思ってた
3分割に限定したのが良くなかったかも
お題
文字列の分割パターンを全部列挙してください
入力: いろはにほ
出力:
い・ろ・は・に・ほ
い・ろ・は・にほ
い・ろ・はに・ほ
い・ろ・はにほ
い・ろは・に・ほ
い・ろは・にほ
い・ろはに・ほ
い・ろはにほ
いろ・は・に・ほ
いろ・は・にほ
いろ・はに・ほ
いろ・はにほ
いろは・に・ほ
いろは・にほ
いろはに・ほ
いろはにほ
そんなに簡単に解かれるとは思ってなかった
王国の話に引っ張られて解けない人いるかもと思ってた
3分割に限定したのが良くなかったかも
お題
文字列の分割パターンを全部列挙してください
入力: いろはにほ
出力:
い・ろ・は・に・ほ
い・ろ・は・にほ
い・ろ・はに・ほ
い・ろ・はにほ
い・ろは・に・ほ
い・ろは・にほ
い・ろはに・ほ
い・ろはにほ
いろ・は・に・ほ
いろ・は・にほ
いろ・はに・ほ
いろ・はにほ
いろは・に・ほ
いろは・にほ
いろはに・ほ
いろはにほ
643638
2023/05/06(土) 00:28:50.96ID:vZgCL7uL >>642 Perl5
use utf8;
binmode STDOUT => "utf8";
use feature qw{:5.16 signatures say};
say for sub($a, @b) {
if (@b) {
my @s = __SUB__->(@b);
(map{"$a・$_"} @s), (map{"$a$_"} @s);
} else { $a }
}->(split'', 'いろはにほ');
※インデントは全角スペースに置換してあります。
perl5の__SUB__は、5.16以降で使用可能な「現在の関数(この場合無名関数)のリファレンス」
実行結果
~ $ perl 21_642_いろはにほ.pl
い・ろ・は・に・ほ
い・ろ・は・にほ
い・ろ・はに・ほ
い・ろ・はにほ
い・ろは・に・ほ
い・ろは・にほ
い・ろはに・ほ
い・ろはにほ
いろ・は・に・ほ
いろ・は・にほ
いろ・はに・ほ
いろ・はにほ
いろは・に・ほ
いろは・にほ
いろはに・ほ
いろはにほ
use utf8;
binmode STDOUT => "utf8";
use feature qw{:5.16 signatures say};
say for sub($a, @b) {
if (@b) {
my @s = __SUB__->(@b);
(map{"$a・$_"} @s), (map{"$a$_"} @s);
} else { $a }
}->(split'', 'いろはにほ');
※インデントは全角スペースに置換してあります。
perl5の__SUB__は、5.16以降で使用可能な「現在の関数(この場合無名関数)のリファレンス」
実行結果
~ $ perl 21_642_いろはにほ.pl
い・ろ・は・に・ほ
い・ろ・は・にほ
い・ろ・はに・ほ
い・ろ・はにほ
い・ろは・に・ほ
い・ろは・にほ
い・ろはに・ほ
い・ろはにほ
いろ・は・に・ほ
いろ・は・にほ
いろ・はに・ほ
いろ・はにほ
いろは・に・ほ
いろは・にほ
いろはに・ほ
いろはにほ
644デフォルトの名無しさん
2023/05/06(土) 03:38:46.54ID:FFZq2N9u645デフォルトの名無しさん
2023/05/06(土) 10:49:16.05ID:5AOK1X8m >>642
PowerShell 3以上 (文字列は32文字以下とする)
$s = "いろはにほ"
$n = $s.length - 1
foreach ($i in 0..((1 -shl $n) - 1)) {
(0..$n |% {$s[$_], "・"[!($i -band (1 -shl $_))]}) -join ""
}
[実行結果]
いろはにほ
い・ろはにほ
いろ・はにほ
い・ろ・はにほ
いろは・にほ
い・ろは・にほ
いろ・は・にほ
い・ろ・は・にほ
いろはに・ほ
い・ろはに・ほ
いろ・はに・ほ
い・ろ・はに・ほ
いろは・に・ほ
い・ろは・に・ほ
いろ・は・に・ほ
い・ろ・は・に・ほ
PowerShell 3以上 (文字列は32文字以下とする)
$s = "いろはにほ"
$n = $s.length - 1
foreach ($i in 0..((1 -shl $n) - 1)) {
(0..$n |% {$s[$_], "・"[!($i -band (1 -shl $_))]}) -join ""
}
[実行結果]
いろはにほ
い・ろはにほ
いろ・はにほ
い・ろ・はにほ
いろは・にほ
い・ろは・にほ
いろ・は・にほ
い・ろ・は・にほ
いろはに・ほ
い・ろはに・ほ
いろ・はに・ほ
い・ろ・はに・ほ
いろは・に・ほ
い・ろは・に・ほ
いろ・は・に・ほ
い・ろ・は・に・ほ
646デフォルトの名無しさん
2023/05/07(日) 06:28:33.03ID:FtrFphzu647デフォルトの名無しさん
2023/05/07(日) 17:24:01.83ID:UIWGws2E648デフォルトの名無しさん
2023/05/12(金) 00:04:09.01ID:i1xOndM3 お題
次のように定義される関数f(x,y)を実装せよ。
x==0のとき:f(0,y):=y+1
y==0のとき:f(x,0):=f(x-1,1)
それ以外のとき:f(x,y):=f(x-1,f(x,y-1))
また以下の値を計算せよ。
f(1,1)
f(2,3)
f(3,4)
f(4,1)
f(4,2)
次のように定義される関数f(x,y)を実装せよ。
x==0のとき:f(0,y):=y+1
y==0のとき:f(x,0):=f(x-1,1)
それ以外のとき:f(x,y):=f(x-1,f(x,y-1))
また以下の値を計算せよ。
f(1,1)
f(2,3)
f(3,4)
f(4,1)
f(4,2)
649デフォルトの名無しさん
2023/05/12(金) 00:10:00.43ID:roSWG4E/ 罠かな
650デフォルトの名無しさん
2023/05/12(金) 17:49:03.47ID:x+yBqAtm アッカーマン関数?
651デフォルトの名無しさん
2023/05/12(金) 17:59:41.22ID:x+yBqAtm 世の中にはもっとずっと急激に増加する関数があるんだよね
増加が速過ぎて、宇宙中のリソースを使ってもコンピューター言語では記述不可能
増加が速過ぎて、宇宙中のリソースを使ってもコンピューター言語では記述不可能
652デフォルトの名無しさん
2023/05/12(金) 18:17:41.52ID:S6WSdC9T >>648
メモ化してもf(4, 2)でスタックオーバーフローしたわ
メモ化してもf(4, 2)でスタックオーバーフローしたわ
653デフォルトの名無しさん
2023/05/12(金) 20:14:17.32ID:YXrNhaWW yはループでやれよ
654デフォルトの名無しさん
2023/05/12(金) 20:24:24.18ID:Or0Z5F6h PowerShell 3以上 (x, yは0以上の整数とする)
function hyper($n, $a, $b)
{
if ($n -eq 0) {return $b + 1}
if ($n -eq 1) {return $a + $b}
if ($n -eq 2) {return $a * $b}
if ($n -eq 3) {return [BigInt]::pow($a, $b)}
$c = 1
1..[Int]$b |% {$c = hyper ($n - 1) $a $c}
$c
}
function f($x, $y)
{
(hyper $x 2 ($y + 3)) - 3
}
((1,1),(2,3),(3,4),(4,1),(4,2)) |% {"f($($_[0]), $($_[1])) = $(f $_[0] $_[1])"}
[実行結果]
f(1, 1) = 3
f(2, 3) = 9
f(3, 4) = 125
f(4, 1) = 65533
f(4, 2) = 2003529930…(19709桁省略)…5719156733
function hyper($n, $a, $b)
{
if ($n -eq 0) {return $b + 1}
if ($n -eq 1) {return $a + $b}
if ($n -eq 2) {return $a * $b}
if ($n -eq 3) {return [BigInt]::pow($a, $b)}
$c = 1
1..[Int]$b |% {$c = hyper ($n - 1) $a $c}
$c
}
function f($x, $y)
{
(hyper $x 2 ($y + 3)) - 3
}
((1,1),(2,3),(3,4),(4,1),(4,2)) |% {"f($($_[0]), $($_[1])) = $(f $_[0] $_[1])"}
[実行結果]
f(1, 1) = 3
f(2, 3) = 9
f(3, 4) = 125
f(4, 1) = 65533
f(4, 2) = 2003529930…(19709桁省略)…5719156733
655デフォルトの名無しさん
2023/05/13(土) 14:43:52.11ID:gMiTxPxz 計算できるのすご
656デフォルトの名無しさん
2023/05/13(土) 18:02:29.70ID:Zeyov0xO 流石にネタでしょ
657蟻人間 ◆T6xkBnTXz7B0
2023/05/13(土) 19:33:04.83ID:V001hfax お題: 地球によく似た星earth2では小さなインターネットmininetが整備されている。mininet上の端末はIPv2という2バイトのアドレスでアクセスできる。
IPv2の各バイトの範囲が最小値と最大値のペアとして与えられる。与えられた範囲内のIPv2に対して対応する2個の引数の関数fを呼び出すブルートフォースを順番に実行せよ(シングルスレッド)。関数fは実引数の内容を順番に表示するものとする。
例)
data = {{1, 3}, {3, 4}}
→ f(1, 3), f(1, 4), f(2, 3), f(2, 4), f(3, 3), f(3, 4).
※フィクションです。
IPv2の各バイトの範囲が最小値と最大値のペアとして与えられる。与えられた範囲内のIPv2に対して対応する2個の引数の関数fを呼び出すブルートフォースを順番に実行せよ(シングルスレッド)。関数fは実引数の内容を順番に表示するものとする。
例)
data = {{1, 3}, {3, 4}}
→ f(1, 3), f(1, 4), f(2, 3), f(2, 4), f(3, 3), f(3, 4).
※フィクションです。
658デフォルトの名無しさん
2023/05/14(日) 01:48:51.69ID:AS0t3f9C お題:割り算を逆数の掛け算で近似する
単に逆数を掛けるだけだと簡単過ぎるので、例えば、
x/60 = x*(1/64 + (1/60 - 1/64)) = x*(1/64 + 1/960) = x*(1/64) + x*(1/960)
の様に、
a)2の整数べき乗と、
b)残り(除数の逆数-a)
に分割する事を考える(∵2の整数べき乗との乗算は誤差が発生しない)。
ゼロより大きい除数が与えられた時、これをa, bに分割せよ。
分割は、除算の計算精度が最も高いものにすること。
単に逆数を掛けるだけだと簡単過ぎるので、例えば、
x/60 = x*(1/64 + (1/60 - 1/64)) = x*(1/64 + 1/960) = x*(1/64) + x*(1/960)
の様に、
a)2の整数べき乗と、
b)残り(除数の逆数-a)
に分割する事を考える(∵2の整数べき乗との乗算は誤差が発生しない)。
ゼロより大きい除数が与えられた時、これをa, bに分割せよ。
分割は、除算の計算精度が最も高いものにすること。
659デフォルトの名無しさん
2023/05/14(日) 03:59:03.17ID:nPGo3rg2660デフォルトの名無しさん
2023/05/14(日) 10:23:02.41ID:+GvRlsVe 要するに2進展開の小数部の最初のゼロでない桁決定するの?
661デフォルトの名無しさん
2023/05/14(日) 10:41:00.83ID:+GvRlsVe662蟻人間 ◆T6xkBnTXz7B0
2023/05/14(日) 13:13:59.00ID:3wB1r/Tt お題: 縦3マス、横3マスの○×ゲーム(まるばつげーむ)について、ゲームが完了したときの盤面のパターンを重複なく出力し、何通りのパターンがあるかを計算せよ。
663デフォルトの名無しさん
2023/05/14(日) 14:04:22.95ID:MJtG7egZ 対称性は無視?
665デフォルトの名無しさん
2023/05/14(日) 14:44:40.86ID:/Abs1b1C >>658
PowerShell 3以上
function bceil([UInt]$n)
{
if (!$n) {return 0}
$m, $n = [UInt]1, ($n - 1)
while ($n) {$m, $n = ($m -shl 1), ($n -shr 1)}
$m
}
function GCD([UInt]$a, [UInt]$b)
{
while ($b) {$a, $b = $b, ($a % $b)}
$a
}
2..20 + 40, 60 |% {
if (($a = bceil $_) -eq $_) {return "x/$_ = x*(1/$a)"}
$d= GCD $a $_
$b, $c = (($a - $_) / $d), ($a / $d * $_)
"x/$_ = x*(1/$a) + x*($b/$c)"
}
PowerShell 3以上
function bceil([UInt]$n)
{
if (!$n) {return 0}
$m, $n = [UInt]1, ($n - 1)
while ($n) {$m, $n = ($m -shl 1), ($n -shr 1)}
$m
}
function GCD([UInt]$a, [UInt]$b)
{
while ($b) {$a, $b = $b, ($a % $b)}
$a
}
2..20 + 40, 60 |% {
if (($a = bceil $_) -eq $_) {return "x/$_ = x*(1/$a)"}
$d= GCD $a $_
$b, $c = (($a - $_) / $d), ($a / $d * $_)
"x/$_ = x*(1/$a) + x*($b/$c)"
}
666デフォルトの名無しさん
2023/05/14(日) 14:44:57.54ID:/Abs1b1C [実行結果]
x/2 = x*(1/2)
x/3 = x*(1/4) + x*(1/12)
x/4 = x*(1/4)
x/5 = x*(1/8) + x*(3/40)
x/6 = x*(1/8) + x*(1/24)
x/7 = x*(1/8) + x*(1/56)
x/8 = x*(1/8)
x/9 = x*(1/16) + x*(7/144)
x/10 = x*(1/16) + x*(3/80)
x/11 = x*(1/16) + x*(5/176)
x/12 = x*(1/16) + x*(1/48)
x/13 = x*(1/16) + x*(3/208)
x/14 = x*(1/16) + x*(1/112)
x/15 = x*(1/16) + x*(1/240)
x/16 = x*(1/16)
x/17 = x*(1/32) + x*(15/544)
x/18 = x*(1/32) + x*(7/288)
x/19 = x*(1/32) + x*(13/608)
x/20 = x*(1/32) + x*(3/160)
x/40 = x*(1/64) + x*(3/320)
x/60 = x*(1/64) + x*(1/960)
x/2 = x*(1/2)
x/3 = x*(1/4) + x*(1/12)
x/4 = x*(1/4)
x/5 = x*(1/8) + x*(3/40)
x/6 = x*(1/8) + x*(1/24)
x/7 = x*(1/8) + x*(1/56)
x/8 = x*(1/8)
x/9 = x*(1/16) + x*(7/144)
x/10 = x*(1/16) + x*(3/80)
x/11 = x*(1/16) + x*(5/176)
x/12 = x*(1/16) + x*(1/48)
x/13 = x*(1/16) + x*(3/208)
x/14 = x*(1/16) + x*(1/112)
x/15 = x*(1/16) + x*(1/240)
x/16 = x*(1/16)
x/17 = x*(1/32) + x*(15/544)
x/18 = x*(1/32) + x*(7/288)
x/19 = x*(1/32) + x*(13/608)
x/20 = x*(1/32) + x*(3/160)
x/40 = x*(1/64) + x*(3/320)
x/60 = x*(1/64) + x*(1/960)
667デフォルトの名無しさん
2023/05/15(月) 20:46:01.76ID:XJWsSZ0R668デフォルトの名無しさん
2023/05/15(月) 20:54:26.02ID:2dY5adZo669デフォルトの名無しさん
2023/05/15(月) 21:03:02.31ID:2dY5adZo670デフォルトの名無しさん
2023/05/15(月) 21:10:44.54ID:2dY5adZo >>667の情報を見て思ったが、日本では先攻が〇、英語版では先攻が×。
その時点でパターンが変わる。
その時点でパターンが変わる。
671658
2023/05/15(月) 22:33:44.26ID:02zVVK0g >>660
除数が2の整べき乗よりちょっと大きい場合は、引き算にした方が精度が出たりします。
tps://sagecell.sagemath.org/?z=eJx9j8FqwkAQQO-B_MOClyyahlmN8eLHSGlQ6DZL2A9wEw-KJ-uhlF7FioUIvbT0YD9mCMlnOIlGb8LusPN23uxsGEeSSSVHeswmUkWxpqxDO7QtqR5U_PQ4BDFgLUYR0zWmKabz4vuY_23RfJa7eZG9oXnHZGlbeggemQ4EvBI8CDB5vePZloonL9rRVTmaNZosn27QfJX_KzSzYrcsFwc6UGe4tO4K3g6fo5F2wK-B3-vx5jWq6Yo2XRAkRzTj9Ll7cepcBIKUmwN9FzyCttVixcdvfjiW-03-k2GSNP-jta1nvY4MHUbB1dzT_ApFBcUZngDsTonA&lang=python&interacts=eJyLjgUAARUAuQ==
除数が2の整べき乗よりちょっと大きい場合は、引き算にした方が精度が出たりします。
tps://sagecell.sagemath.org/?z=eJx9j8FqwkAQQO-B_MOClyyahlmN8eLHSGlQ6DZL2A9wEw-KJ-uhlF7FioUIvbT0YD9mCMlnOIlGb8LusPN23uxsGEeSSSVHeswmUkWxpqxDO7QtqR5U_PQ4BDFgLUYR0zWmKabz4vuY_23RfJa7eZG9oXnHZGlbeggemQ4EvBI8CDB5vePZloonL9rRVTmaNZosn27QfJX_KzSzYrcsFwc6UGe4tO4K3g6fo5F2wK-B3-vx5jWq6Yo2XRAkRzTj9Ll7cepcBIKUmwN9FzyCttVixcdvfjiW-03-k2GSNP-jta1nvY4MHUbB1dzT_ApFBcUZngDsTonA&lang=python&interacts=eJyLjgUAARUAuQ==
672658
2023/05/15(月) 22:37:15.73ID:02zVVK0g すぐ消えるかも知れない方のリンク(中身は同じ)
tps://sagecell.sagemath.org/?q=tkqhls
tps://sagecell.sagemath.org/?q=tkqhls
674デフォルトの名無しさん
2023/05/16(火) 09:51:49.00ID:UhzGXTUG >>673
こんな結果が出ましたが、この検証の仕方は合っていますか?
shortlink
https://sagecell.sagemath.org/?q=lftfab
permalink
https://sagecell.sagemath.org/?z=eJyFUs1OwkAQvpPwDg1c2AA2u_3BC89iiJFIYqUh-wBuMQTFixpjjCYcIIBiwHiRGMSHGQu9-QrOtlvUJmLSTme_mW929_tabdQdzXGdCt_Xao5bb3BcFfCtplOOu-U29nbLlG1rWQ0jNC-h2YRme_W88F8HIIbBqL2aXIO4Aa-TTrmN2iHPZf7tzJB0Kp3iZarjPjlaInK8TkvgXWzgxvO5bAdxCWLiH_VBjIP3cxDHq1EnOJligpOpGm0wkq8e1Cs8R60QsEyTxLthj8HyWEAQOSw-jk2KihOuWYkh5ZtD7SLVEUSK8YOimi2b5KPUNCxGkjTLxqqsSAGy2up25k8XwUPff5mA58Ua4TMI77q-slHQMBQ50TlZg0yCLAFSCdIYXHviVHb3a4d7kaRl20yIHO88VLq2W8urJ4zBsIemRCda3j36b1gdx76cfcxOMYLogegiC0Tnc979w8Sx3-2AJ4LFHDwcMlz274LRXP4J3DZ3aDnUUVfCl4jC2W881DnKN9iCPONvXuRQtAg92mSSElVOlLrKb0JveUhVSloh76VK9HcpA-IeRAvVypAv4NdijA==&lang=python&interacts=eJyLjgUAARUAuQ==
こんな結果が出ましたが、この検証の仕方は合っていますか?
shortlink
https://sagecell.sagemath.org/?q=lftfab
permalink
https://sagecell.sagemath.org/?z=eJyFUs1OwkAQvpPwDg1c2AA2u_3BC89iiJFIYqUh-wBuMQTFixpjjCYcIIBiwHiRGMSHGQu9-QrOtlvUJmLSTme_mW929_tabdQdzXGdCt_Xao5bb3BcFfCtplOOu-U29nbLlG1rWQ0jNC-h2YRme_W88F8HIIbBqL2aXIO4Aa-TTrmN2iHPZf7tzJB0Kp3iZarjPjlaInK8TkvgXWzgxvO5bAdxCWLiH_VBjIP3cxDHq1EnOJligpOpGm0wkq8e1Cs8R60QsEyTxLthj8HyWEAQOSw-jk2KihOuWYkh5ZtD7SLVEUSK8YOimi2b5KPUNCxGkjTLxqqsSAGy2up25k8XwUPff5mA58Ua4TMI77q-slHQMBQ50TlZg0yCLAFSCdIYXHviVHb3a4d7kaRl20yIHO88VLq2W8urJ4zBsIemRCda3j36b1gdx76cfcxOMYLogegiC0Tnc979w8Sx3-2AJ4LFHDwcMlz274LRXP4J3DZ3aDnUUVfCl4jC2W881DnKN9iCPONvXuRQtAg92mSSElVOlLrKb0JveUhVSloh76VK9HcpA-IeRAvVypAv4NdijA==&lang=python&interacts=eJyLjgUAARUAuQ==
675デフォルトの名無しさん
2023/05/16(火) 09:59:14.32ID:vUVUSyDD 元のお題に「分ける」とあるのてマイナスなしなんじゃないの?
676デフォルトの名無しさん
2023/05/16(火) 15:16:43.16ID:U8LQq92Y 回分かどうか判定するプログラムを書きなさい。回分とは逆から読んでも同じ文である。
例 step on no pets
使用言語 C
例 step on no pets
使用言語 C
677デフォルトの名無しさん
2023/05/16(火) 18:13:35.98ID:VkBoSdxq 回文ね
678デフォルトの名無しさん
2023/05/16(火) 18:38:20.59ID:U8LQq92Y >>676 補足
入力した文が回分かどうか判定するプログラムを書きなさい。
入力した文が回分かどうか判定するプログラムを書きなさい。
679デフォルトの名無しさん
2023/05/16(火) 20:23:20.23ID:KcC4zCx1 >>676,678
これ後から絵文字やらクラスタやらどんどん補足していくパターン
これ後から絵文字やらクラスタやらどんどん補足していくパターン
680デフォルトの名無しさん
2023/05/17(水) 02:03:28.90ID:g3box4pX >>678
これなんの補足をしたつもりだったんだ…?
これなんの補足をしたつもりだったんだ…?
681デフォルトの名無しさん
2023/05/17(水) 10:28:21.37ID:oO1E5hvY682667
2023/05/17(水) 23:14:17.75ID:UOReU/gF >>662
最終盤面が何通りか理論的に求めてみた。○を先手とし、最終盤面での○と×の個数をそれぞれa, bとすると、(a, b) = (3, 2), (3, 3), (4, 3), (4, 4), (5, 4) の5種類に場合分けされる。
(1) (a, b) = (3, 2) のとき
・○は縦・横・斜めの8本のどれかに並べて置くので8通り
・×は残り6マスのどれかに置くので ₆C₂ = 15通り
・以上より、盤面数は 8 × 15 = 120通り
(2) (a, b) = (3, 3) のとき
・○は縦・横・斜めの8本のどれかに並べて置くので8通り
・×は残り6マスのどれかに置くので ₆C₃ = 20通りだが、○が縦/横に並ぶ場合は、×が縦/横の残り2本のどちらかに並ぶ2通りを除外する
・以上より、盤面数は 8 × 20 − 6 × 2 = 148通り
(3) (a, b) = (4, 3) のとき
・○は3個を縦・横・斜めの8本のどれかに並べ、1個を残り6マスのどれかに置くので、8 × 6 = 48通り
・×は残り5マスのどれかに置くので ₅C₃ = 10通りだが、○が縦/横に並ぶ場合は、×が縦/横の残り1本に並ぶ1通りを除外する
・以上より、盤面数は 48 × 10 − 6 × 6 × 1 = 444通り
(4) (a, b) = (4, 4) のとき
・×は3個を縦・横・斜めの8本のどれかに並べ、1個を残り6マスのどれかに置くので、8 × 6 = 48通り
・○は残り5マスのどれかに置くので ₅C₄ = 5通りだが、○が縦/横に並ぶ場合は、×3個が縦/横の残り1本に並び1個が残り2マスのどちらかに並ぶ2通りを除外する
・以上より、盤面数は 48 × 5 − 6 × 6 × 2 = 168通り
(5) (a, b) = (5, 4) のとき
・×は9マスのどれかに置くので ₉C₄ = 126通りだが、3個を縦・横・斜めの8本のどれかに並べ1個を残り6マスのどれかに置く 8 × 6 = 48通りを除外する
・○は残り5マスに置くので1通り
・以上より、盤面数は (126 − 48) × 1 = 78通り
最終盤面が何通りか理論的に求めてみた。○を先手とし、最終盤面での○と×の個数をそれぞれa, bとすると、(a, b) = (3, 2), (3, 3), (4, 3), (4, 4), (5, 4) の5種類に場合分けされる。
(1) (a, b) = (3, 2) のとき
・○は縦・横・斜めの8本のどれかに並べて置くので8通り
・×は残り6マスのどれかに置くので ₆C₂ = 15通り
・以上より、盤面数は 8 × 15 = 120通り
(2) (a, b) = (3, 3) のとき
・○は縦・横・斜めの8本のどれかに並べて置くので8通り
・×は残り6マスのどれかに置くので ₆C₃ = 20通りだが、○が縦/横に並ぶ場合は、×が縦/横の残り2本のどちらかに並ぶ2通りを除外する
・以上より、盤面数は 8 × 20 − 6 × 2 = 148通り
(3) (a, b) = (4, 3) のとき
・○は3個を縦・横・斜めの8本のどれかに並べ、1個を残り6マスのどれかに置くので、8 × 6 = 48通り
・×は残り5マスのどれかに置くので ₅C₃ = 10通りだが、○が縦/横に並ぶ場合は、×が縦/横の残り1本に並ぶ1通りを除外する
・以上より、盤面数は 48 × 10 − 6 × 6 × 1 = 444通り
(4) (a, b) = (4, 4) のとき
・×は3個を縦・横・斜めの8本のどれかに並べ、1個を残り6マスのどれかに置くので、8 × 6 = 48通り
・○は残り5マスのどれかに置くので ₅C₄ = 5通りだが、○が縦/横に並ぶ場合は、×3個が縦/横の残り1本に並び1個が残り2マスのどちらかに並ぶ2通りを除外する
・以上より、盤面数は 48 × 5 − 6 × 6 × 2 = 168通り
(5) (a, b) = (5, 4) のとき
・×は9マスのどれかに置くので ₉C₄ = 126通りだが、3個を縦・横・斜めの8本のどれかに並べ1個を残り6マスのどれかに置く 8 × 6 = 48通りを除外する
・○は残り5マスに置くので1通り
・以上より、盤面数は (126 − 48) × 1 = 78通り
683667
2023/05/17(水) 23:14:48.75ID:UOReU/gF684デフォルトの名無しさん
2023/05/18(木) 14:03:59.67ID:ftT7G5Yt >> 676 の回答例を載せときます
#include <stdio.h>
#include <string.h>
void kaibun_judge(char *str);
int main(void)
{
char ss[80];
printf("文字列を入力してください ");
gets(ss);
kaibun_judge(ss);
}
void kaibun_judge(char *str)
{
char *p, *q, dmy[strlen(str)];
p = str;
q = dmy;
for (int i = strlen(str)-1;i >= 0;i--) {
dmy[i] = *p++;
}
if (strcmp(str, dmy) == 0) printf("回文です\n");
else printf("回分ではありません\n");
}
#include <stdio.h>
#include <string.h>
void kaibun_judge(char *str);
int main(void)
{
char ss[80];
printf("文字列を入力してください ");
gets(ss);
kaibun_judge(ss);
}
void kaibun_judge(char *str)
{
char *p, *q, dmy[strlen(str)];
p = str;
q = dmy;
for (int i = strlen(str)-1;i >= 0;i--) {
dmy[i] = *p++;
}
if (strcmp(str, dmy) == 0) printf("回文です\n");
else printf("回分ではありません\n");
}
685667
2023/05/18(木) 21:14:06.06ID:z24aX2ni686デフォルトの名無しさん
2023/05/20(土) 00:00:46.48ID:q76PMxZe >>684
よくあるバグ入でかつ分かりやすい速度向上の余地を持つ良い例だ
よくあるバグ入でかつ分かりやすい速度向上の余地を持つ良い例だ
687デフォルトの名無しさん
2023/05/20(土) 05:48:17.89ID:Hm5OPlrQ >>684
そのプログラムは char 一つで1文字を表す文字コード以外ではまともに動かない。
80文字以上の入力でバッファーオーバーランする。
dmy[] 配列の最後の次のメモリに \0 以外のゴミが入っていたら strcmp() が想定した通りに動かない。
そのプログラムは char 一つで1文字を表す文字コード以外ではまともに動かない。
80文字以上の入力でバッファーオーバーランする。
dmy[] 配列の最後の次のメモリに \0 以外のゴミが入っていたら strcmp() が想定した通りに動かない。
688デフォルトの名無しさん
2023/05/20(土) 05:50:36.82ID:Hm5OPlrQ C使い慣れてないなら他の文字列が楽々使えてメモリ管理についてほとんど考えなくても良い言語使って作った方が良いのではないか?
689デフォルトの名無しさん
2023/05/20(土) 06:06:53.76ID:Hm5OPlrQ >>662
Kotlin
馬鹿正直に○×と交互に打ちながら途中で縦横斜め何れかで3つ揃ったらそこで終了という感じで全パターンやらせたら
255168 パターンになったのだが、これで合っているのか謎だ。対象になるパターンを抜くとすると4で割って 63792 になる。
それと出力が多すぎて恐らくどのサイトでも実行されると結果がまともに出ない。
paiza.io にソース置いておくが実行するとパターン 1651 の途中で Timeout して中途半端に終わっている。
https://paiza.io/projects/2eV3pNvLM7kdKO0gYfHc-w
Kotlin
馬鹿正直に○×と交互に打ちながら途中で縦横斜め何れかで3つ揃ったらそこで終了という感じで全パターンやらせたら
255168 パターンになったのだが、これで合っているのか謎だ。対象になるパターンを抜くとすると4で割って 63792 になる。
それと出力が多すぎて恐らくどのサイトでも実行されると結果がまともに出ない。
paiza.io にソース置いておくが実行するとパターン 1651 の途中で Timeout して中途半端に終わっている。
https://paiza.io/projects/2eV3pNvLM7kdKO0gYfHc-w
690デフォルトの名無しさん
2023/05/20(土) 06:14:37.20ID:Hm5OPlrQ よく見たら >>676 は使用言語がCだけになってたんだな。
じゃあC使うのは仕方がないが、Cだと色々と気を付けなければならないことが多いので要注意だ。
じゃあC使うのは仕方がないが、Cだと色々と気を付けなければならないことが多いので要注意だ。
691デフォルトの名無しさん
2023/05/20(土) 17:36:52.34ID:Hm5OPlrQ >>676
C
Locale 考慮して wchar_t 使って書いた。日本語読ませても処理できる。
但しやってることは文字列の順序入れ替えて比較しているだけなので>>684と考え方は同じ。
(書きながら一々メモリ確保して逆順に並べなくても出来ると気付いたがそれは後で公開する)。
入力元が Unicode になっていた場合は濁点半濁点の合成文字みたいなのもあって MacOS でやった時とその他 OS で違ってしまうかも知れないが、その辺は考慮されていない。
https://paiza.io/projects/YXLsX3FqAsVF6DVDxye7bA
C
Locale 考慮して wchar_t 使って書いた。日本語読ませても処理できる。
但しやってることは文字列の順序入れ替えて比較しているだけなので>>684と考え方は同じ。
(書きながら一々メモリ確保して逆順に並べなくても出来ると気付いたがそれは後で公開する)。
入力元が Unicode になっていた場合は濁点半濁点の合成文字みたいなのもあって MacOS でやった時とその他 OS で違ってしまうかも知れないが、その辺は考慮されていない。
https://paiza.io/projects/YXLsX3FqAsVF6DVDxye7bA
692デフォルトの名無しさん
2023/05/20(土) 17:50:35.91ID:Hm5OPlrQ693692
2023/05/20(土) 18:08:07.96ID:Hm5OPlrQ694デフォルトの名無しさん
2023/05/21(日) 09:10:07.45ID:Gjp34WdD >>684 gets()のかわりにfgets()を使うと改行を含んでしまうので\0で埋めてやらないといけない。
695デフォルトの名無しさん
2023/05/21(日) 11:15:13.97ID:3B+ePEeq 文字列がらみはもはやライブラリ使わないと無理やろ
ユニコードのコーディングルールはもう複雑すぎて素人が自作で作ってもまずうまくいかない
この手のルールは数学的にこうなってるはずだ、こうなってないとおかしいとかいうロジックが何一つ通用しない、単なる取り決めるなのでただひたすら覚えるしかないけど、もはや色んな言語全部取り込むために魑魅魍魎の世界
ユニコードのコーディングルールはもう複雑すぎて素人が自作で作ってもまずうまくいかない
この手のルールは数学的にこうなってるはずだ、こうなってないとおかしいとかいうロジックが何一つ通用しない、単なる取り決めるなのでただひたすら覚えるしかないけど、もはや色んな言語全部取り込むために魑魅魍魎の世界
696デフォルトの名無しさん
2023/05/22(月) 00:54:31.79ID:q509JHBH >>676
U+10000以上の文字、異体字セレクタ、結合文字に対応したプログラムはPowerShellでは
簡単に書ける。ただし、IDS(漢字構成記述文字列)には対応していない。
tps://tio.run/##XZJPS8MwGMbv/RQxVGjRFnvxMPA4hjdhw8sYoxvZVumS2WQqzoKtf5kHD8KGG4i3zcNQbx7ULxM63E3wA8ykm1sxl6bv8@T3Pm/TBjlEHq0h151OK01cZg7BgDLPQweaSnWlpQCxVAa2AITxPp9xScl2nWNbes0s8xxc3cYVUkilMojl0BFLu6iOMEvjZh15NiOeRIGTVdCKQWoRrAmkP0crvqL8a21tJpobe8TBQKV5wzJNQ6Wmi3CV1QrxOeIhu1wDwg6ECTYQo0BgMBEk1IDrAE5GPR4Mv9qvP4/nAQ9ueNj7fnr74MFg9pCFhToUbqiDWeMN07Ti1PGbXBrUxp2X6P1Wl2Rt3B3Eez2vFgsLUzyjUwHailoUqNlEIr8PkEvRX8HalKXFIRhdnI07V9GoG113U0KCS2lyepmUGEzkifoPQhPD8OCZByEP2zz45EGfh3cyYkK@lzEpMMpoXzCWcefX6svPqe5kd8XvIC4iZ5dcNJ3@Ag
これはOutputの下の方に表示されているようにLinuxでの実行結果だが、Windowsと同様に
動作しOSに依存しない。CではOSに依存しないで書くのは難しそう。
(旧式)はUTF-16のワードを逆順に並べただけなので、U+10000以上のU+29E3D、異体字
セレクタ使用のU+82B1 U+E0101、結合文字のU+304B U+309Aが含まれる2番目の例では
正しく判定できていないが、(新式)はできている。異体字は対応しているフォント(例えば
Windowsの標準フォントでは游ゴシック)でないと正しく表示されない。
U+10000以上の文字、異体字セレクタ、結合文字に対応したプログラムはPowerShellでは
簡単に書ける。ただし、IDS(漢字構成記述文字列)には対応していない。
tps://tio.run/##XZJPS8MwGMbv/RQxVGjRFnvxMPA4hjdhw8sYoxvZVumS2WQqzoKtf5kHD8KGG4i3zcNQbx7ULxM63E3wA8ykm1sxl6bv8@T3Pm/TBjlEHq0h151OK01cZg7BgDLPQweaSnWlpQCxVAa2AITxPp9xScl2nWNbes0s8xxc3cYVUkilMojl0BFLu6iOMEvjZh15NiOeRIGTVdCKQWoRrAmkP0crvqL8a21tJpobe8TBQKV5wzJNQ6Wmi3CV1QrxOeIhu1wDwg6ECTYQo0BgMBEk1IDrAE5GPR4Mv9qvP4/nAQ9ueNj7fnr74MFg9pCFhToUbqiDWeMN07Ti1PGbXBrUxp2X6P1Wl2Rt3B3Eez2vFgsLUzyjUwHailoUqNlEIr8PkEvRX8HalKXFIRhdnI07V9GoG113U0KCS2lyepmUGEzkifoPQhPD8OCZByEP2zz45EGfh3cyYkK@lzEpMMpoXzCWcefX6svPqe5kd8XvIC4iZ5dcNJ3@Ag
これはOutputの下の方に表示されているようにLinuxでの実行結果だが、Windowsと同様に
動作しOSに依存しない。CではOSに依存しないで書くのは難しそう。
(旧式)はUTF-16のワードを逆順に並べただけなので、U+10000以上のU+29E3D、異体字
セレクタ使用のU+82B1 U+E0101、結合文字のU+304B U+309Aが含まれる2番目の例では
正しく判定できていないが、(新式)はできている。異体字は対応しているフォント(例えば
Windowsの標準フォントでは游ゴシック)でないと正しく表示されない。
697デフォルトの名無しさん
2023/05/22(月) 17:00:26.90ID:2yIFfgEr >>696 ワイド文字対応だけでもすごいのにそこまでやるとは
698デフォルトの名無しさん
2023/05/23(火) 00:39:57.91ID:ZoS6XFHl >>696をIDS(漢字構成記述文字列)対応にした。ビャンビャン麵のビャンという漢字の
IDSを正しく表示できるのは、源ノ等幅、源ノ明朝、源ノゴシックのバージョン1.xxxと
Visual Studio Code, Edgeなどの組み合わせに限られる。正しく表示されるとこうなる。
://i.imgur.com/TEDafUA.png
バージョン2.xxxxではビャンという漢字に単独のコードU+30EDEが割り当てられたので、
IDSでは表示できなくなった。
function strrev($s)
{
$m = 2, 2, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2
$p = $q = ""
$n = 0
[Globalization.StringInfo]::GetTextElementEnumerator($s) |% {
if (0x2FF0..0x2FFB -contains $_[0]) {
if (!$n) {$n = 1}
$n += $m[$_[0] - 0x2FF0]
}
$p += $_
if (!$n -or !--$n) {$p, $q = "", ($p + $q)}
}
$p + $q
}
foreach ($s in "⿺辶⿳穴⿰月⿰⿲⿱幺長⿱言馬⿱幺長刂心⿺辶⿳穴⿰月⿰⿲⿱幺長⿱言馬⿱幺長刂心麵で麵⿺辶⿳穴⿰月⿰⿲⿱幺長⿱言馬⿱幺長刂心⿺辶⿳穴⿰月⿰⿲⿱幺長⿱言馬⿱幺長刂心", "⿺辶⿳穴⿰月⿰⿲⿱幺長⿱言馬⿱幺長刂心⿺辶⿳穴⿰月⿰⿲⿱幺長⿱言馬⿱幺長刂心麵で麺⿺辶⿳穴⿰月⿰⿲⿱幺長⿱言馬⿱幺長刂心⿺辶⿳穴⿰月⿰⿲⿱幺長⿱言馬⿱幺長刂心") {
$t = strrev $s
"元文字列: $s"
"逆文字列: $t"
("回文ではありません。", "回文です。")[$s -ceq $t]
""
}
IDSを正しく表示できるのは、源ノ等幅、源ノ明朝、源ノゴシックのバージョン1.xxxと
Visual Studio Code, Edgeなどの組み合わせに限られる。正しく表示されるとこうなる。
://i.imgur.com/TEDafUA.png
バージョン2.xxxxではビャンという漢字に単独のコードU+30EDEが割り当てられたので、
IDSでは表示できなくなった。
function strrev($s)
{
$m = 2, 2, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2
$p = $q = ""
$n = 0
[Globalization.StringInfo]::GetTextElementEnumerator($s) |% {
if (0x2FF0..0x2FFB -contains $_[0]) {
if (!$n) {$n = 1}
$n += $m[$_[0] - 0x2FF0]
}
$p += $_
if (!$n -or !--$n) {$p, $q = "", ($p + $q)}
}
$p + $q
}
foreach ($s in "⿺辶⿳穴⿰月⿰⿲⿱幺長⿱言馬⿱幺長刂心⿺辶⿳穴⿰月⿰⿲⿱幺長⿱言馬⿱幺長刂心麵で麵⿺辶⿳穴⿰月⿰⿲⿱幺長⿱言馬⿱幺長刂心⿺辶⿳穴⿰月⿰⿲⿱幺長⿱言馬⿱幺長刂心", "⿺辶⿳穴⿰月⿰⿲⿱幺長⿱言馬⿱幺長刂心⿺辶⿳穴⿰月⿰⿲⿱幺長⿱言馬⿱幺長刂心麵で麺⿺辶⿳穴⿰月⿰⿲⿱幺長⿱言馬⿱幺長刂心⿺辶⿳穴⿰月⿰⿲⿱幺長⿱言馬⿱幺長刂心") {
$t = strrev $s
"元文字列: $s"
"逆文字列: $t"
("回文ではありません。", "回文です。")[$s -ceq $t]
""
}
699デフォルトの名無しさん
2023/05/23(火) 00:40:48.32ID:ZoS6XFHl [実行結果]
元文字列: ⿺辶⿳穴⿰月⿰⿲⿱幺長⿱言馬⿱幺長刂心⿺辶⿳穴⿰月⿰⿲⿱幺長⿱言馬⿱幺長刂心麵で麵⿺辶⿳穴⿰月⿰⿲⿱幺長⿱言馬⿱幺長刂心⿺辶⿳穴⿰月⿰⿲⿱幺長⿱言馬⿱幺長刂心
逆文字列: ⿺辶⿳穴⿰月⿰⿲⿱幺長⿱言馬⿱幺長刂心⿺辶⿳穴⿰月⿰⿲⿱幺長⿱言馬⿱幺長刂心麵で麵⿺辶⿳穴⿰月⿰⿲⿱幺長⿱言馬⿱幺長刂心⿺辶⿳穴⿰月⿰⿲⿱幺長⿱言馬⿱幺長刂心
回文です。
元文字列: ⿺辶⿳穴⿰月⿰⿲⿱幺長⿱言馬⿱幺長刂心⿺辶⿳穴⿰月⿰⿲⿱幺長⿱言馬⿱幺長刂心麵で麺⿺辶⿳穴⿰月⿰⿲⿱幺長⿱言馬⿱幺長刂心⿺辶⿳穴⿰月⿰⿲⿱幺長⿱言馬⿱幺長刂心
逆文字列: ⿺辶⿳穴⿰月⿰⿲⿱幺長⿱言馬⿱幺長刂心⿺辶⿳穴⿰月⿰⿲⿱幺長⿱言馬⿱幺長刂心麺で麵⿺辶⿳穴⿰月⿰⿲⿱幺長⿱言馬⿱幺長刂心⿺辶⿳穴⿰月⿰⿲⿱幺長⿱言馬⿱幺長刂心
回文ではありません。
元文字列: ⿺辶⿳穴⿰月⿰⿲⿱幺長⿱言馬⿱幺長刂心⿺辶⿳穴⿰月⿰⿲⿱幺長⿱言馬⿱幺長刂心麵で麵⿺辶⿳穴⿰月⿰⿲⿱幺長⿱言馬⿱幺長刂心⿺辶⿳穴⿰月⿰⿲⿱幺長⿱言馬⿱幺長刂心
逆文字列: ⿺辶⿳穴⿰月⿰⿲⿱幺長⿱言馬⿱幺長刂心⿺辶⿳穴⿰月⿰⿲⿱幺長⿱言馬⿱幺長刂心麵で麵⿺辶⿳穴⿰月⿰⿲⿱幺長⿱言馬⿱幺長刂心⿺辶⿳穴⿰月⿰⿲⿱幺長⿱言馬⿱幺長刂心
回文です。
元文字列: ⿺辶⿳穴⿰月⿰⿲⿱幺長⿱言馬⿱幺長刂心⿺辶⿳穴⿰月⿰⿲⿱幺長⿱言馬⿱幺長刂心麵で麺⿺辶⿳穴⿰月⿰⿲⿱幺長⿱言馬⿱幺長刂心⿺辶⿳穴⿰月⿰⿲⿱幺長⿱言馬⿱幺長刂心
逆文字列: ⿺辶⿳穴⿰月⿰⿲⿱幺長⿱言馬⿱幺長刂心⿺辶⿳穴⿰月⿰⿲⿱幺長⿱言馬⿱幺長刂心麺で麵⿺辶⿳穴⿰月⿰⿲⿱幺長⿱言馬⿱幺長刂心⿺辶⿳穴⿰月⿰⿲⿱幺長⿱言馬⿱幺長刂心
回文ではありません。
700デフォルトの名無しさん
2023/05/23(火) 06:35:45.73ID:EACw1bPQ 文字列はカオスだわ
https://jp.emeditor.com/forums/topic/mac%E3%81%A7%E5%85%A5%E5%8A%9B%E3%81%95%E3%82%8C%E3%81%9F%E3%83%8F%E3%83%B3%E3%82%B0%E3%83%AB%E6%96%87%E5%AD%97%E3%81%AE%E8%A1%A8%E7%A4%BA%E3%81%AB%E5%AF%BE%E5%BF%9C%E3%81%97%E3%81%A6%E6%AC%B2/
>>698
これは対応が難しい?
https://tio.run/##pVPBattAEL3rKzZCBZtYwnYhB0MvhST0VkjoxZigmHWsIq8UadOGpgbLcpzWJZik0NAE7B4KTgihLbnkUvdb3EWl6cWGfoA7u4ol1fTWZdGO5r15M5od2dZz7LhVbJrTaWWHlKlhEeRSx8HPUoqblvYkBEuh6AGSZWEXV01rUzeNFzrnamvUMcjWI1KxSoXCKqbreJcum7iGCV0mOzXs6NRyuBR6eQ/tCSFlAy2CZP1OWqpL0lzqfDJ3DULyGb7vi53/5w65NpffjotVCNjZ/69bKPBlVFAqu5tfWclqmjgfIrVsEaobxIUPK2ZL6QR7FrGgEHCLYnL1v1DwLULJtaKIRSoKxUsRKabDx3HqhjSnjFTLQQuqGuawM7MGZFCKh8BrOhSpz3rEfbzr823PLSX6rj61DIIUt6jmNE1VXM3EZItWS@K6LAfr5SokcBGQZBtTF4EMsUAJ25Bavr06Zd75z86X3x9aHvPesObp5OLmK/MG4cEdEXoObB7E/NfM70RP7hoPW@NhbzzcnzM4NukPjib97rfvjcNJ/@giNgeROTjmJicH3Y/M7zL/mjU/M/8SjVrHo3Zv1L78ddOIbASIwK@BCxFy8jbF8N4NKDQm8svBvv/j3UFwdRK8OikAIsfQbaOdhGgMpeTgrAcYdIR5n5jXZM0O84bMO2PNt6LgGH4vp4vQarWMt0EjHg6YcrgN5fHaE/iJ4R7X9U0TT6d/AA
https://jp.emeditor.com/forums/topic/mac%E3%81%A7%E5%85%A5%E5%8A%9B%E3%81%95%E3%82%8C%E3%81%9F%E3%83%8F%E3%83%B3%E3%82%B0%E3%83%AB%E6%96%87%E5%AD%97%E3%81%AE%E8%A1%A8%E7%A4%BA%E3%81%AB%E5%AF%BE%E5%BF%9C%E3%81%97%E3%81%A6%E6%AC%B2/
>>698
これは対応が難しい?
https://tio.run/##pVPBattAEL3rKzZCBZtYwnYhB0MvhST0VkjoxZigmHWsIq8UadOGpgbLcpzWJZik0NAE7B4KTgihLbnkUvdb3EWl6cWGfoA7u4ol1fTWZdGO5r15M5od2dZz7LhVbJrTaWWHlKlhEeRSx8HPUoqblvYkBEuh6AGSZWEXV01rUzeNFzrnamvUMcjWI1KxSoXCKqbreJcum7iGCV0mOzXs6NRyuBR6eQ/tCSFlAy2CZP1OWqpL0lzqfDJ3DULyGb7vi53/5w65NpffjotVCNjZ/69bKPBlVFAqu5tfWclqmjgfIrVsEaobxIUPK2ZL6QR7FrGgEHCLYnL1v1DwLULJtaKIRSoKxUsRKabDx3HqhjSnjFTLQQuqGuawM7MGZFCKh8BrOhSpz3rEfbzr823PLSX6rj61DIIUt6jmNE1VXM3EZItWS@K6LAfr5SokcBGQZBtTF4EMsUAJ25Bavr06Zd75z86X3x9aHvPesObp5OLmK/MG4cEdEXoObB7E/NfM70RP7hoPW@NhbzzcnzM4NukPjib97rfvjcNJ/@giNgeROTjmJicH3Y/M7zL/mjU/M/8SjVrHo3Zv1L78ddOIbASIwK@BCxFy8jbF8N4NKDQm8svBvv/j3UFwdRK8OikAIsfQbaOdhGgMpeTgrAcYdIR5n5jXZM0O84bMO2PNt6LgGH4vp4vQarWMt0EjHg6YcrgN5fHaE/iJ4R7X9U0TT6d/AA
701デフォルトの名無しさん
2023/05/23(火) 21:04:58.28ID:eJRVljs1 >>700
こっちのPowerShellでやれば全部OK
https://github.com/PowerShell/PowerShell
Name Value
---- -----
PSVersion 7.3.4
PSEdition Core
.NET 7凄すぎ
こっちのPowerShellでやれば全部OK
https://github.com/PowerShell/PowerShell
Name Value
---- -----
PSVersion 7.3.4
PSEdition Core
.NET 7凄すぎ
702デフォルトの名無しさん
2023/05/27(土) 01:36:20.91ID:Qu0xLKn7 お題:現在の日時の文字列が与えられるのでその文字列の先頭から秒数分を切り出して出力せよ
703デフォルトの名無しさん
2023/05/27(土) 02:11:47.73ID:hhb34/XN >>702
それって秒の部分だけが残れば良いってこと? たとえば 2023/05/27 02:03:45 なら最後の 45 だけになれば良いの?
もしそうなら sed 使ってこうすればできるな。
sed 's/^.*://'
YYYY/MM/DD hh:mm:ss 形式ではなく秒が最後に出て来ない形式だったとしても最後のコロンの直後の数字が秒で、
その秒の数字文字列の後に数字でない文字が必ず来るのだとすれば (例えば Sat May 27 02:05:47 JST 2023 の
ような形式だとすれば)こうすれば良い。
sed 's/^.*://;s/[^0-9].*$//'
それって秒の部分だけが残れば良いってこと? たとえば 2023/05/27 02:03:45 なら最後の 45 だけになれば良いの?
もしそうなら sed 使ってこうすればできるな。
sed 's/^.*://'
YYYY/MM/DD hh:mm:ss 形式ではなく秒が最後に出て来ない形式だったとしても最後のコロンの直後の数字が秒で、
その秒の数字文字列の後に数字でない文字が必ず来るのだとすれば (例えば Sat May 27 02:05:47 JST 2023 の
ような形式だとすれば)こうすれば良い。
sed 's/^.*://;s/[^0-9].*$//'
704デフォルトの名無しさん
2023/05/27(土) 02:42:42.27ID:omxAdlqt サンプルケース書いてくれ
705デフォルトの名無しさん
2023/05/28(日) 09:45:16.03ID:wyI6c4Ev お題 ナイトツアー
5×5の狭いチェスボードのどこかにナイトのコマを置きそこからナイトの可能な動きでコマを動かします
ただし同じマスは2回通れません
このとき全マス25マスを全て通る手順の数を数え上げて下さい
しかし実際全部数えるのは流石に無駄なので対称性を利用して
♯{A1→B3}×8
+ ♯{A3→B5}×8 + ♯{A3→C4}×8
+ ♯{B2→C4}×8
+ ♯{C3→D5}×8
はよいとします
例
♯{A1→B3} = 152
--ナイトの動き--
桂馬の動きと同じ、水平方向の移動量+垂直方向の移動量 = 3となる移動(もちろん盤の中)
5×5の狭いチェスボードのどこかにナイトのコマを置きそこからナイトの可能な動きでコマを動かします
ただし同じマスは2回通れません
このとき全マス25マスを全て通る手順の数を数え上げて下さい
しかし実際全部数えるのは流石に無駄なので対称性を利用して
♯{A1→B3}×8
+ ♯{A3→B5}×8 + ♯{A3→C4}×8
+ ♯{B2→C4}×8
+ ♯{C3→D5}×8
はよいとします
例
♯{A1→B3} = 152
--ナイトの動き--
桂馬の動きと同じ、水平方向の移動量+垂直方向の移動量 = 3となる移動(もちろん盤の中)
706デフォルトの名無しさん
2023/05/28(日) 11:22:07.87ID:p5Vu/cFc707デフォルトの名無しさん
2023/05/28(日) 23:12:57.01ID:eCmMTKII >>705
対称性を考慮するのは面倒なので全部数え上げる。Rで書いたら5秒以内に到底終わらなかったので、
ideone.com/y5Dwy7
C++に移植した。盤面表示はideoneでは途中で切れてしまうので非表示にした(関数moveの
コメント部分をコメントでなくせば表示される)。
ideone.com/6Muw9F
対称性を考慮すれば、手順数は1728 / 8 = 216通りになる。
対称性を考慮するのは面倒なので全部数え上げる。Rで書いたら5秒以内に到底終わらなかったので、
ideone.com/y5Dwy7
C++に移植した。盤面表示はideoneでは途中で切れてしまうので非表示にした(関数moveの
コメント部分をコメントでなくせば表示される)。
ideone.com/6Muw9F
対称性を考慮すれば、手順数は1728 / 8 = 216通りになる。
708蟻人間 ◆T6xkBnTXz7B0
2023/05/29(月) 01:40:51.78ID:1XcMS6f+ お題: 水の流れる複数のタンクにおいて水の流れをシミュレーションしたいので、以下に定義する入力文字列でタンクと
水の流れなどを記述する。入力文字列は次のような形式の行の並びとする。
「(タンクの名前), (タンクの底面積[m^2]), (タンクの底からの排水口までの高さ[m]), (次のタンクの名前)」
各行は各タンクの情報とその次のタンクを表す。入力文字列の最初の行は最初に水が入るタンクに対応する。最初のタンクには外部から水が0.5[m^3/min]の速度で入る。タンクの形状は円錐か四角錐とし、底面は平面状とする。
各タンクには排水口が付いているかも知れない。排水口があるのならそれはタンクの底より高く、タンクの側面に付いている。
排水口は次のタンクにつながっている。次のタンクはその前のタンクより低い位置にある。各タンクにおいて排水口に水が届いていないときは水は排水されない。
タンクとタンクの間の長さと水の落差にかかる時間は無視して構わない。次のタンクがN/Aならそのタンクに排水口と排水先はない。
シミュレーション開始後、1分ごとに各タンクに何[m^3]の水が入っているかを出力せよ。タンクCが満タンなら終了せよ。
(入力)
A, 3, 0.5, B
B, 2, 0.7, C
C, 1, 0.4, N/A
水の流れなどを記述する。入力文字列は次のような形式の行の並びとする。
「(タンクの名前), (タンクの底面積[m^2]), (タンクの底からの排水口までの高さ[m]), (次のタンクの名前)」
各行は各タンクの情報とその次のタンクを表す。入力文字列の最初の行は最初に水が入るタンクに対応する。最初のタンクには外部から水が0.5[m^3/min]の速度で入る。タンクの形状は円錐か四角錐とし、底面は平面状とする。
各タンクには排水口が付いているかも知れない。排水口があるのならそれはタンクの底より高く、タンクの側面に付いている。
排水口は次のタンクにつながっている。次のタンクはその前のタンクより低い位置にある。各タンクにおいて排水口に水が届いていないときは水は排水されない。
タンクとタンクの間の長さと水の落差にかかる時間は無視して構わない。次のタンクがN/Aならそのタンクに排水口と排水先はない。
シミュレーション開始後、1分ごとに各タンクに何[m^3]の水が入っているかを出力せよ。タンクCが満タンなら終了せよ。
(入力)
A, 3, 0.5, B
B, 2, 0.7, C
C, 1, 0.4, N/A
709デフォルトの名無しさん
2023/05/29(月) 01:46:57.43ID:F8hmnix6 >>705
Kotlin
馬鹿正直に再帰で全パターンやっているだけ。
途中経過は出力しない。既に置かれたマスは1bitで記録されるようにして 5 * 5 = 25 bit で Int (32bit) に収まるのでそれを利用している。
恐らく Boolean の配列を使って書くとそこまで最適化されなさそうなのでこうした。
https://paiza.io/projects/O4Ejxs76h64GSeXYCVs2mg
結果は同じ 1728 になったので多分これで合っていると思う。
Kotlin
馬鹿正直に再帰で全パターンやっているだけ。
途中経過は出力しない。既に置かれたマスは1bitで記録されるようにして 5 * 5 = 25 bit で Int (32bit) に収まるのでそれを利用している。
恐らく Boolean の配列を使って書くとそこまで最適化されなさそうなのでこうした。
https://paiza.io/projects/O4Ejxs76h64GSeXYCVs2mg
結果は同じ 1728 になったので多分これで合っていると思う。
710デフォルトの名無しさん
2023/05/29(月) 23:38:05.56ID:5zRv7Ftx711蟻人間 ◆T6xkBnTXz7B0
2023/05/30(火) 20:06:49.36ID:hYJIMfxv お題: x-y平面上に摩擦のないすべり台がある。重力加速度を9.8[m/s^2]とし、重力はy軸とは逆向きに作用している。
この滑り台は動かないように固定されている。横位置x>=0[m]についてf(x)がすべり台の面の高さ[m]を表す。
体重35kgの子どもがx=0の場所から滑り台を滑り始めた。次の場合の5秒後の子どもの位置ベクトルと速度ベクトルを求めよ。空気抵抗は無視する。
(i) f(x)=10-sqrt(x)。
(ii) f(x)=10-sqrt(sqrt(x))。
※ xの平方根をsqrt(x)とする。
この滑り台は動かないように固定されている。横位置x>=0[m]についてf(x)がすべり台の面の高さ[m]を表す。
体重35kgの子どもがx=0の場所から滑り台を滑り始めた。次の場合の5秒後の子どもの位置ベクトルと速度ベクトルを求めよ。空気抵抗は無視する。
(i) f(x)=10-sqrt(x)。
(ii) f(x)=10-sqrt(sqrt(x))。
※ xの平方根をsqrt(x)とする。
712デフォルトの名無しさん
2023/06/01(木) 09:25:39.43ID:dfYyQvOG お題
アルファベットが入力されます
> [A, A, B, B, B, C, C, D, D, D, E]
出力上限が入力されます
> 7
出力上限以内のアルファベットを出力してください
> [A, A, B, B, B, C, C]
ただし、出力上限で切った場合に同じアルファベットが分割される場合は出力上限を超えて
同じアルファベットが続く限り出力してください
アルファベット: [A, A, B, B, B]
出力上限: 3
出力: [A, A, B, B, B]
アルファベットが入力されます
> [A, A, B, B, B, C, C, D, D, D, E]
出力上限が入力されます
> 7
出力上限以内のアルファベットを出力してください
> [A, A, B, B, B, C, C]
ただし、出力上限で切った場合に同じアルファベットが分割される場合は出力上限を超えて
同じアルファベットが続く限り出力してください
アルファベット: [A, A, B, B, B]
出力上限: 3
出力: [A, A, B, B, B]
713デフォルトの名無しさん
2023/06/01(木) 21:49:43.70ID:+6RwHPfX714デフォルトの名無しさん
2023/06/01(木) 22:06:54.62ID:+6RwHPfX お題:矩形に整形された全角文字のテキストが与えられる。左上から時計回りに
渦巻き状に読んだ文字列を、元の矩形と同文字数で桁数がより多く最も近い矩形に
左上から時計回りに渦巻き状に並べて出力せよ。
[例]
プログラ → プログラミン
題スレミ レス題おのグ
おのグン
[問題]
メロスは激怒した。必ず、かの邪智暴虐の王を除かなけ
ては、人一倍に敏感であった。きょう未明メロスは村れ
し、内気な妹と二人暮しだ。この妹は、村の或る律をば
対の嫁の衣裳やら祝宴の御馳走やらを買いに、は気出な
に六花ロスには竹馬の友があった。セリヌンテるな発ら
悪十、メてみるつもりなのだ。久しく逢わなィば一しぬ
邪。え。ねスは、まちの様子を怪しく思っかウる牧、と
もいゆた訪ロのは当りまえだが、けれどたっス市人野決
ど無れいらメい全体が、やけに寂しいも。たでにをを意
れもそ歩かに暗市不安になって来た。、ひのあや、越し
け房、られちの、ん衆をつかまえ。のなっだるっ近えた
。女はぶこうちくだい若たっ逢で路んんそか。て々山。
た。スら、るま無んだ、もスロメなきだりら今来、越メ
来いロぶをい、はでりかばいせの夜、かし、はた花えロ
て無メを友ててち落も日に既うも。るいて訪此の婿、ス
しも。路のい歩。るあでみし楽がのく行てねのだと十に
暮母る大そ。るいてしを工石、で市のスクラシ。し里は
で、あの都らかれそ、め集い買を々品のそ、ず先ては政
んもでのなか近間も式婚結。たいてっなに事るえ迎な治
遊父はにスロメ。た来てっやに市のスクラシの此たれが
と羊、き吹を笛。るあで人牧の村、はスロメ。ぬらかわ
渦巻き状に読んだ文字列を、元の矩形と同文字数で桁数がより多く最も近い矩形に
左上から時計回りに渦巻き状に並べて出力せよ。
[例]
プログラ → プログラミン
題スレミ レス題おのグ
おのグン
[問題]
メロスは激怒した。必ず、かの邪智暴虐の王を除かなけ
ては、人一倍に敏感であった。きょう未明メロスは村れ
し、内気な妹と二人暮しだ。この妹は、村の或る律をば
対の嫁の衣裳やら祝宴の御馳走やらを買いに、は気出な
に六花ロスには竹馬の友があった。セリヌンテるな発ら
悪十、メてみるつもりなのだ。久しく逢わなィば一しぬ
邪。え。ねスは、まちの様子を怪しく思っかウる牧、と
もいゆた訪ロのは当りまえだが、けれどたっス市人野決
ど無れいらメい全体が、やけに寂しいも。たでにをを意
れもそ歩かに暗市不安になって来た。、ひのあや、越し
け房、られちの、ん衆をつかまえ。のなっだるっ近えた
。女はぶこうちくだい若たっ逢で路んんそか。て々山。
た。スら、るま無んだ、もスロメなきだりら今来、越メ
来いロぶをい、はでりかばいせの夜、かし、はた花えロ
て無メを友ててち落も日に既うも。るいて訪此の婿、ス
しも。路のい歩。るあでみし楽がのく行てねのだと十に
暮母る大そ。るいてしを工石、で市のスクラシ。し里は
で、あの都らかれそ、め集い買を々品のそ、ず先ては政
んもでのなか近間も式婚結。たいてっなに事るえ迎な治
遊父はにスロメ。た来てっやに市のスクラシの此たれが
と羊、き吹を笛。るあで人牧の村、はスロメ。ぬらかわ
715デフォルトの名無しさん
2023/06/02(金) 00:02:20.01ID:IXZreQh9716デフォルトの名無しさん
2023/06/02(金) 00:10:19.23ID:AyhrxfDx717デフォルトの名無しさん
2023/06/03(土) 18:04:48.61ID:lPLamTYg718蟻人間 ◆T6xkBnTXz7B0
2023/06/04(日) 14:05:22.78ID:Sin8uq0I お題: 郵便切手の問題。
切り離されていない、一列に並んだn枚の切手を考える。
一枚の切手の上に全ての切手を折り込む時、
左端の切手を表向きで一番上に折り込む方法は何通りか計算せよ。
切り離されていない、一列に並んだn枚の切手を考える。
一枚の切手の上に全ての切手を折り込む時、
左端の切手を表向きで一番上に折り込む方法は何通りか計算せよ。
719638
2023/06/04(日) 19:16:56.02ID:pcjKLYRK720638
2023/06/04(日) 20:52:10.72ID:pcjKLYRK >>712 Perl5
use feature qw{signatures say};
sub f($n, $c, @s) {
if (1 < $n) {
$c, f($n - 1, @s);
} elsif (1 == $n) {
$c, f(0, $c, @s);
} else {
$c, f(0, $c, splice @s, 1) if $c eq $s[0];
}
}
say f 7, qw[A A B B B C C D D D E];
say f 3, qw[A A B B B];
※見易くするためインデントは全角スペースに置換してあります。
実行結果
$ perl 21_712.pl
AABBBCC
AABBB
use feature qw{signatures say};
sub f($n, $c, @s) {
if (1 < $n) {
$c, f($n - 1, @s);
} elsif (1 == $n) {
$c, f(0, $c, @s);
} else {
$c, f(0, $c, splice @s, 1) if $c eq $s[0];
}
}
say f 7, qw[A A B B B C C D D D E];
say f 3, qw[A A B B B];
※見易くするためインデントは全角スペースに置換してあります。
実行結果
$ perl 21_712.pl
AABBBCC
AABBB
721638
2023/06/04(日) 23:24:30.12ID:pcjKLYRK >>712 Perl5、もっと簡潔なやり方あるんだった…orz
use feature qw{signatures say};
sub f($n, $s) {
my $r = '^.{' . ($n - 1) . '}(.)\1*';
$s =~ /$r/;
$&;
}
say f 7, 'AABBBCCDDDE';
say f 3, 'AABBB';
実行結果
$ perl 21_712_rex.pl
AABBBCC
AABBB
use feature qw{signatures say};
sub f($n, $s) {
my $r = '^.{' . ($n - 1) . '}(.)\1*';
$s =~ /$r/;
$&;
}
say f 7, 'AABBBCCDDDE';
say f 3, 'AABBB';
実行結果
$ perl 21_712_rex.pl
AABBBCC
AABBB
722デフォルトの名無しさん
2023/06/05(月) 17:20:26.45ID:41NWmDDP お題 逆順に
文字列が与えられます
使われている文字のリストを作って並べその“反対の”文字を対応させます
例えば登場文字列が
HELLO WORLD
なら出てくる文字をコード順に並べると
" DEHLORW"
であるので
E → O, L →H, ' '→W
となります(空白、句読点等一切区別せず一文字と考えます)
この対応で入力された文字列を変換してください
例
HELLO WORLD →
LOHHEW EDHR
⑨⑫⑦②⑤⑭⑰⑳㉔①⑩⑬㉒⑲④⑮⑪⑧㉓⑥③⑯㉑⑱ →
⑯⑬⑱㉓⑳⑪⑧⑤①㉔⑮⑫③⑥㉑⑩⑭⑰②⑲㉒⑨④⑦
文字列が与えられます
使われている文字のリストを作って並べその“反対の”文字を対応させます
例えば登場文字列が
HELLO WORLD
なら出てくる文字をコード順に並べると
" DEHLORW"
であるので
E → O, L →H, ' '→W
となります(空白、句読点等一切区別せず一文字と考えます)
この対応で入力された文字列を変換してください
例
HELLO WORLD →
LOHHEW EDHR
⑨⑫⑦②⑤⑭⑰⑳㉔①⑩⑬㉒⑲④⑮⑪⑧㉓⑥③⑯㉑⑱ →
⑯⑬⑱㉓⑳⑪⑧⑤①㉔⑮⑫③⑥㉑⑩⑭⑰②⑲㉒⑨④⑦
723デフォルトの名無しさん
2023/06/05(月) 19:56:23.90ID:8ZOWtKfv724638
2023/06/05(月) 20:41:22.90ID:4V5NjjYa >>720 もっとすんなり書けるんだった… orz
$c, f(0, $c, splice @s, 1) if $c eq $s[0];
↓
$c, f(0, @s) if $c eq $s[0];
関数全体のコードとしてはこうなる:
sub f($n, $c, @s) {
if (1 < $n) {
$c, f($n - 1, @s);
} elsif (1 == $n) {
$c, f(0, $c, @s);
} else {
$c, f(0, @s) if $c eq $s[0];
}
}
すっきりした形になりました
$c, f(0, $c, splice @s, 1) if $c eq $s[0];
↓
$c, f(0, @s) if $c eq $s[0];
関数全体のコードとしてはこうなる:
sub f($n, $c, @s) {
if (1 < $n) {
$c, f($n - 1, @s);
} elsif (1 == $n) {
$c, f(0, $c, @s);
} else {
$c, f(0, @s) if $c eq $s[0];
}
}
すっきりした形になりました
725638
2023/06/05(月) 21:31:53.30ID:4V5NjjYa >>722 Perl5
use feature qw{signatures say};
use utf8; binmode STDOUT => 'utf8';
use Encode 'encode';
sub f($s) {
@s = split '', $s;
%h = map{unpack('H*', encode('utf-8', $_)) => $_} @s;
@i = reverse @c = sort keys %h;
%o = map{$h{$c[$_]} => $h{$i[$_]}} 0..$#c;
say map{$o{$_}} @s;
}
f 'HELLO WORLD';
f '⑨⑫⑦②⑤⑭⑰⑳?①⑩⑬?⑲④⑮⑪⑧?⑥③⑯?⑱';
※見易くするためインデントは全角スペースに置換してあります。
実行結果:
$ perl 21_722.pl
LOHHEW EDHR
⑯⑬⑱?⑳⑪⑧⑤①?⑮⑫③⑥?⑩⑭⑰②⑲?⑨④⑦
use feature qw{signatures say};
use utf8; binmode STDOUT => 'utf8';
use Encode 'encode';
sub f($s) {
@s = split '', $s;
%h = map{unpack('H*', encode('utf-8', $_)) => $_} @s;
@i = reverse @c = sort keys %h;
%o = map{$h{$c[$_]} => $h{$i[$_]}} 0..$#c;
say map{$o{$_}} @s;
}
f 'HELLO WORLD';
f '⑨⑫⑦②⑤⑭⑰⑳?①⑩⑬?⑲④⑮⑪⑧?⑥③⑯?⑱';
※見易くするためインデントは全角スペースに置換してあります。
実行結果:
$ perl 21_722.pl
LOHHEW EDHR
⑯⑬⑱?⑳⑪⑧⑤①?⑮⑫③⑥?⑩⑭⑰②⑲?⑨④⑦
726638
2023/06/05(月) 21:35:18.29ID:4V5NjjYa >>722 Perl5 スマソ、ビューワーから書き込んだら丸数字の一部が文字化けしたのでブラウザから再書き込み
use feature qw{signatures say};
use utf8; binmode STDOUT => 'utf8';
use Encode 'encode';
sub f($s) {
@s = split '', $s;
%h = map{unpack('H*', encode('utf-8', $_)) => $_} @s;
@i = reverse @c = sort keys %h;
%o = map{$h{$c[$_]} => $h{$i[$_]}} 0..$#c;
say map{$o{$_}} @s;
}
f 'HELLO WORLD';
f 'HKFADMPS㉔@IL㉒RCNJG㉓EBO㉑Q';
実行結果
$ perl 21_722.pl
LOHHEW EDHR
OLQ㉓SJGD@㉔NKBE㉑IMPAR㉒HCF
use feature qw{signatures say};
use utf8; binmode STDOUT => 'utf8';
use Encode 'encode';
sub f($s) {
@s = split '', $s;
%h = map{unpack('H*', encode('utf-8', $_)) => $_} @s;
@i = reverse @c = sort keys %h;
%o = map{$h{$c[$_]} => $h{$i[$_]}} 0..$#c;
say map{$o{$_}} @s;
}
f 'HELLO WORLD';
f 'HKFADMPS㉔@IL㉒RCNJG㉓EBO㉑Q';
実行結果
$ perl 21_722.pl
LOHHEW EDHR
OLQ㉓SJGD@㉔NKBE㉑IMPAR㉒HCF
727デフォルトの名無しさん
2023/06/05(月) 22:09:27.65ID:hSG7KPux >>722
PowerShell 4以上 (U+10000以上の文字、結合文字、異体字セレクタに対応)
foreach ($s in "HELLO WORLD", "HKFADMPS㉔@IL㉒RCNJG㉓EBO㉑Q", "魚と花󠄁か゚𩸽") {
$c = [Globalization.StringInfo]::GetTextElementEnumerator($s) | sort | unique
$h = @{}
0..($c.length - 1) |% {$h[$c[$_]] = $c[-$_ - 1]}
-join $h[[Globalization.StringInfo]::GetTextElementEnumerator($s)]
}
[実行結果]
LOHHEW EDHR
OLQ㉓SJGD@㉔NKBE㉑IMPAR㉒HCF
と魚花󠄁𩸽か゚
PowerShell 4以上 (U+10000以上の文字、結合文字、異体字セレクタに対応)
foreach ($s in "HELLO WORLD", "HKFADMPS㉔@IL㉒RCNJG㉓EBO㉑Q", "魚と花󠄁か゚𩸽") {
$c = [Globalization.StringInfo]::GetTextElementEnumerator($s) | sort | unique
$h = @{}
0..($c.length - 1) |% {$h[$c[$_]] = $c[-$_ - 1]}
-join $h[[Globalization.StringInfo]::GetTextElementEnumerator($s)]
}
[実行結果]
LOHHEW EDHR
OLQ㉓SJGD@㉔NKBE㉑IMPAR㉒HCF
と魚花󠄁𩸽か゚
728638
2023/06/06(火) 01:24:29.34ID:gRU+jG8g >>726 しくった
utf-8文字を可変長16進数にunpackして辞書的順番でsortするので、例題では意図した通りの結果を得られたが、
半角と全角などutf-8でバイト数の異なる文字が混在する文字列の場合には、順番が違ってくるだろうな…
utf-8文字を可変長16進数にunpackして辞書的順番でsortするので、例題では意図した通りの結果を得られたが、
半角と全角などutf-8でバイト数の異なる文字が混在する文字列の場合には、順番が違ってくるだろうな…
729638
2023/06/06(火) 02:40:16.03ID:gRU+jG8g >>726 Perlで文字の数値コードを返すord()関数は半角文字の場合にASCIIコードを返すが、
全角Unicode文字ではコードポイントを返す、ということなので、素直にそれを使い、
文字列としてっではなく数値としてsortし
%h = map{unpack('H*', encode('utf-8', $_)) => $_} @s;
@i = reverse @c = sort keys %h;
↓を
%h = map{ord($_) => $_} @s;
@i = reverse @c = sort{$a <=> $b} keys %h;
と修正するのがよさげ。連投スマソ
全角Unicode文字ではコードポイントを返す、ということなので、素直にそれを使い、
文字列としてっではなく数値としてsortし
%h = map{unpack('H*', encode('utf-8', $_)) => $_} @s;
@i = reverse @c = sort keys %h;
↓を
%h = map{ord($_) => $_} @s;
@i = reverse @c = sort{$a <=> $b} keys %h;
と修正するのがよさげ。連投スマソ
730デフォルトの名無しさん
2023/06/06(火) 20:31:50.40ID:hMwocYm9 >>714 octave
https://ideone.com/MXrAYt
m2c = @(m, r, c) mat2cell(m, repelem(r, size(m, 1) / r), repelem(c, size(m, 2) / c));
s2c = @(s) m2c(s, 1, 3);
function v = e2v(e, v)
if nargin < 2
v = e2v(e, []);
elseif ~isempty(e)
v = e2v(rot90(e(2:end, :)), [v e(1, :)]);
end
end
function ind = eddyind(varargin)
if nargin == 2
ind = e2v(reshape(1:times(varargin{1:2}), varargin{1:2}));
elseif nargin == 1
ind = eddyind(size(varargin{1}, 1), size(varargin{1}, 2));
end
end
s = 省略
c = s2c(s);
n = numel(c);
m = find(rem(n, 1:n) == 0 & size(c, 2) < 1:n)(1);
d = cell(n / m, m);
d(eddyind(d)) = c(eddyind(c));
disp(cell2mat(d));
https://ideone.com/MXrAYt
m2c = @(m, r, c) mat2cell(m, repelem(r, size(m, 1) / r), repelem(c, size(m, 2) / c));
s2c = @(s) m2c(s, 1, 3);
function v = e2v(e, v)
if nargin < 2
v = e2v(e, []);
elseif ~isempty(e)
v = e2v(rot90(e(2:end, :)), [v e(1, :)]);
end
end
function ind = eddyind(varargin)
if nargin == 2
ind = e2v(reshape(1:times(varargin{1:2}), varargin{1:2}));
elseif nargin == 1
ind = eddyind(size(varargin{1}, 1), size(varargin{1}, 2));
end
end
s = 省略
c = s2c(s);
n = numel(c);
m = find(rem(n, 1:n) == 0 & size(c, 2) < 1:n)(1);
d = cell(n / m, m);
d(eddyind(d)) = c(eddyind(c));
disp(cell2mat(d));
731デフォルトの名無しさん
2023/06/06(火) 21:42:34.58ID:hMwocYm9 >>722 ruby
https://ideone.com/yqb6sd
f = ->(s) {s.chars.uniq.sort.join.tap{|u| break s.tr(u, u.reverse)}}
p f.('HELLO WORLD')
p f.('HKFADMPS㉔@IL㉒RCNJG㉓EBO㉑Q')
#p f.('HELLO WORLD-') # trのパターンになっちゃう文字があるとダメ
https://ideone.com/yqb6sd
f = ->(s) {s.chars.uniq.sort.join.tap{|u| break s.tr(u, u.reverse)}}
p f.('HELLO WORLD')
p f.('HKFADMPS㉔@IL㉒RCNJG㉓EBO㉑Q')
#p f.('HELLO WORLD-') # trのパターンになっちゃう文字があるとダメ
732デフォルトの名無しさん
2023/06/06(火) 22:14:45.84ID:x5qPYUnP >>722
>>727では大・小・全角・半角文字が区別されないのを修正した。PowerShell 2でも正しく動作するようになった。
foreach ($s in "HELLO WORLD", "HKFADMPS㉔@IL㉒RCNJG㉓EBO㉑Q", "魚と花󠄁か゚𩸽", "HeLLO WoRLD") {
$c = [Globalization.StringInfo]::GetTextElementEnumerator($s) | sort -unique {[int[]][char[]]$_}
$h = New-Object Collections.Hashtable
0..($c.length - 1) |% {$h[$c[$_]] = $c[-$_ - 1]}
-join $h[[Globalization.StringInfo]::GetTextElementEnumerator($s)]
}
[実行結果]
LOHHEW EDHR
OLQ㉓SJGD@㉔NKBE㉑IMPAR㉒HCF
と魚花󠄁𩸽か゚
oLeeRW HODL
>>727では大・小・全角・半角文字が区別されないのを修正した。PowerShell 2でも正しく動作するようになった。
foreach ($s in "HELLO WORLD", "HKFADMPS㉔@IL㉒RCNJG㉓EBO㉑Q", "魚と花󠄁か゚𩸽", "HeLLO WoRLD") {
$c = [Globalization.StringInfo]::GetTextElementEnumerator($s) | sort -unique {[int[]][char[]]$_}
$h = New-Object Collections.Hashtable
0..($c.length - 1) |% {$h[$c[$_]] = $c[-$_ - 1]}
-join $h[[Globalization.StringInfo]::GetTextElementEnumerator($s)]
}
[実行結果]
LOHHEW EDHR
OLQ㉓SJGD@㉔NKBE㉑IMPAR㉒HCF
と魚花󠄁𩸽か゚
oLeeRW HODL
733デフォルトの名無しさん
2023/06/07(水) 23:16:05.89ID:ijTNramp お題
A,B,Cがランダムにいくつか入力されます
隣り合う文字が異なるときそれらは同じグループです
A,B → [A,B]
隣り合う文字が同じ時それらは異なるグループです
A,A → [A],[A]
A,B,A,A,A,B → [A,B,A],[A],[A,B]
もっとも長いグループを出力してください
入力
B,A,B,C,B,B,B,A,C,C,A,B,A,A,C,A,B,C,C,C,B,C,A,B,C,A,A,A,C,B
出力
[C,B,C,A,B,C,A]
A,B,Cがランダムにいくつか入力されます
隣り合う文字が異なるときそれらは同じグループです
A,B → [A,B]
隣り合う文字が同じ時それらは異なるグループです
A,A → [A],[A]
A,B,A,A,A,B → [A,B,A],[A],[A,B]
もっとも長いグループを出力してください
入力
B,A,B,C,B,B,B,A,C,C,A,B,A,A,C,A,B,C,C,C,B,C,A,B,C,A,A,A,C,B
出力
[C,B,C,A,B,C,A]
734638
2023/06/08(木) 01:33:27.84ID:GaLhBmy3 >>733 Perl5
use feature qw{:5.16 signatures say};
@a = ([]);
sub ($c, @s) {
push @{$a[-1]}, $c;
push @a, [] if $c eq $s[0];
__SUB__->(@s) if @s;
}->(qw{B A B C B B B A C C A B A A C A B C C C B C A B C A A A C B});
$c = (sort{@$a <=> @$b} @a)[-1];
$" = ','; say "[@$c]";
※見易くするためインデントを全角スペースに置換してあります。
実行結果
$ perl 21_733.pl
[C,B,C,A,B,C,A]
use feature qw{:5.16 signatures say};
@a = ([]);
sub ($c, @s) {
push @{$a[-1]}, $c;
push @a, [] if $c eq $s[0];
__SUB__->(@s) if @s;
}->(qw{B A B C B B B A C C A B A A C A B C C C B C A B C A A A C B});
$c = (sort{@$a <=> @$b} @a)[-1];
$" = ','; say "[@$c]";
※見易くするためインデントを全角スペースに置換してあります。
実行結果
$ perl 21_733.pl
[C,B,C,A,B,C,A]
735デフォルトの名無しさん
2023/06/08(木) 10:35:46.63ID:s2HJPh3y736デフォルトの名無しさん
2023/06/08(木) 21:24:06.92ID:B/+C/EDE >>733
PowerShell
$s = "B,A,B,C,B,B,B,A,C,C,A,B,A,A,C,A,B,C,C,C,B,C,A,B,C,A,A,A,C,B"
@($s -replace "(.),(?=\1)", "`$1/" -split "/" | group length | sort -descending {[int]$_.name})[0] |% {$_.group}
[実行結果]
C,B,C,A,B,C,A
PowerShell
$s = "B,A,B,C,B,B,B,A,C,C,A,B,A,A,C,A,B,C,C,C,B,C,A,B,C,A,A,A,C,B"
@($s -replace "(.),(?=\1)", "`$1/" -split "/" | group length | sort -descending {[int]$_.name})[0] |% {$_.group}
[実行結果]
C,B,C,A,B,C,A
737デフォルトの名無しさん
2023/06/08(木) 22:05:38.22ID:QLsHzH3O >>733 ocaml
https://ideone.com/jfFx3Y
open List
let (<<) f g x = f (g x)
let flip f x y = f y x
let f =
let aux x = function
[] :: ys -> [x] :: ys
| (z :: _) as y :: ys -> if x = z
then [x] :: y :: ys
else (x :: y) :: ys
in rev << hd << rev << map snd << sort compare << map (fun x -> (length x, x)) << fold_left (flip aux) [[]]
let g = print_newline << iter print_char << f
let () = g ['B';'A';'B';'C';'B';'B';'B';'A';'C';'C';'A';'B';'A';'A';'C';'A';'B';'C';'C';'C';'B';'C';'A';'B';'C';'A';'A';'A';'C';'B']
>>733 ruby
f = ->(a) {a.each_with_object([[]]) {|x, acc| acc[-1][-1] != x ? acc[-1] << x : acc << [x]}.sort_by(&:size)[-1]}
p f.(%w(B A B C B B B A C C A B A A C A B C C C B C A B C A A A C B))
https://ideone.com/jfFx3Y
open List
let (<<) f g x = f (g x)
let flip f x y = f y x
let f =
let aux x = function
[] :: ys -> [x] :: ys
| (z :: _) as y :: ys -> if x = z
then [x] :: y :: ys
else (x :: y) :: ys
in rev << hd << rev << map snd << sort compare << map (fun x -> (length x, x)) << fold_left (flip aux) [[]]
let g = print_newline << iter print_char << f
let () = g ['B';'A';'B';'C';'B';'B';'B';'A';'C';'C';'A';'B';'A';'A';'C';'A';'B';'C';'C';'C';'B';'C';'A';'B';'C';'A';'A';'A';'C';'B']
>>733 ruby
f = ->(a) {a.each_with_object([[]]) {|x, acc| acc[-1][-1] != x ? acc[-1] << x : acc << [x]}.sort_by(&:size)[-1]}
p f.(%w(B A B C B B B A C C A B A A C A B C C C B C A B C A A A C B))
738デフォルトの名無しさん
2023/06/08(木) 22:14:54.10ID:B/+C/EDE お題:1234567以下の素数 a, b, c で a + b + c = 1234567 かつ a ≤ b ≤ c を満たす組み合わせは何通りあるか計算せよ。
739デフォルトの名無しさん
2023/06/09(金) 04:35:40.14ID:Xuj67sW5740デフォルトの名無しさん
2023/06/09(金) 08:47:59.66ID:bdlzeFWV 実質力技しかないやろな
割ったあまりとかで多少減らせる程度にしかならない
割ったあまりとかで多少減らせる程度にしかならない
741デフォルトの名無しさん
2023/06/09(金) 08:55:35.77ID:bdlzeFWV 入力nに対してn以下の素数はn オーダーある
最初に素数list upするのにn オーダー、そこから足してnを見つけるのはどうやってもn²オーダーよりは早くできそうにない
最初に素数list upするのにn オーダー、そこから足してnを見つけるのはどうやってもn²オーダーよりは早くできそうにない
742デフォルトの名無しさん
2023/06/09(金) 20:08:26.01ID:7Vf79qrZ >>738 c
https://ideone.com/Dbl6mc
#include <stdlib.h>
#include <math.h>
#include <stdio.h>
void sieve_of_eratosthenes(int n, int **isprime, int **primes_beg, int **primes_end) {
int i, m, j, nbytes = (1 + n) * sizeof **isprime, *map = malloc(nbytes), *beg = malloc(nbytes), *end;
for (i = 2; i <= n; i++) map[i] = 1;
for (i = 2, m = sqrt(n); i <= m; i++)
if (map[i]) for (j = i * i; j <= n; j += i) map[j] = 0;
for (i = 2, end = beg; i <= n; i++) if (map[i]) *end++ = i;
*isprime = map, *primes_beg = beg, *primes_end = end;
}
int main() {
int n = 1234567, *isprime, *primes_beg, *primes_end;
sieve_of_eratosthenes(n, &isprime, &primes_beg, &primes_end);
int *a, *b, c, count = 0;
for (a = primes_beg; a < primes_end && *a <= n / 3; a++)
for (b = a; b < primes_end && *b <= (c = n - *a - *b); b++)
if (isprime[c]) count++;
printf("count = %d\n", count);
return 0;
}
https://ideone.com/Dbl6mc
#include <stdlib.h>
#include <math.h>
#include <stdio.h>
void sieve_of_eratosthenes(int n, int **isprime, int **primes_beg, int **primes_end) {
int i, m, j, nbytes = (1 + n) * sizeof **isprime, *map = malloc(nbytes), *beg = malloc(nbytes), *end;
for (i = 2; i <= n; i++) map[i] = 1;
for (i = 2, m = sqrt(n); i <= m; i++)
if (map[i]) for (j = i * i; j <= n; j += i) map[j] = 0;
for (i = 2, end = beg; i <= n; i++) if (map[i]) *end++ = i;
*isprime = map, *primes_beg = beg, *primes_end = end;
}
int main() {
int n = 1234567, *isprime, *primes_beg, *primes_end;
sieve_of_eratosthenes(n, &isprime, &primes_beg, &primes_end);
int *a, *b, c, count = 0;
for (a = primes_beg; a < primes_end && *a <= n / 3; a++)
for (b = a; b < primes_end && *b <= (c = n - *a - *b); b++)
if (isprime[c]) count++;
printf("count = %d\n", count);
return 0;
}
743蟻人間 ◆T6xkBnTXz7B0
2023/06/09(金) 20:55:26.51ID:yz+hWehT お題: 与えられた4頂点が長方形または正方形を形成するかどうか判定せよ。長方形または正方形のときtrueを返すものとする。頂点の順序は無視する。
例)
{ (0, 0), (1, 0), (1, 1), (0, 1) } → true.
{ (0, -1), (0, 1), (1, 0), (-1, 0) } → true.
{ (0, -2), (1, 0), (0, 2), (-1, 0) } → false.
例)
{ (0, 0), (1, 0), (1, 1), (0, 1) } → true.
{ (0, -1), (0, 1), (1, 0), (-1, 0) } → true.
{ (0, -2), (1, 0), (0, 2), (-1, 0) } → false.
744蟻人間 ◆T6xkBnTXz7B0
2023/06/09(金) 22:16:01.89ID:yz+hWehT お題: コマンドロボット。
ロボットはx-y平面の原点(0, 0)に居る。
コマンドIDはロボットによる何かのアクションを表す0以上4以下の整数で、次のように定義する。
コマンド0は何もしない。
コマンド1は位置が(-1, 0)だけ動く。
コマンド2は位置が(+1, 0)だけ動く。
コマンド3は位置が(0, -1)だけ動く。
コマンド4は位置が(0, +1)だけ動く。
入力として、コマンドIDのリストが与えられる。コマンドを順番に実行したときの最終位置を出力せよ。
例)
(2, 3, 0, 3, 1) → (0, -2).
(1, 1, 4, 0, 0, 2) → (-1, 1).
ロボットはx-y平面の原点(0, 0)に居る。
コマンドIDはロボットによる何かのアクションを表す0以上4以下の整数で、次のように定義する。
コマンド0は何もしない。
コマンド1は位置が(-1, 0)だけ動く。
コマンド2は位置が(+1, 0)だけ動く。
コマンド3は位置が(0, -1)だけ動く。
コマンド4は位置が(0, +1)だけ動く。
入力として、コマンドIDのリストが与えられる。コマンドを順番に実行したときの最終位置を出力せよ。
例)
(2, 3, 0, 3, 1) → (0, -2).
(1, 1, 4, 0, 0, 2) → (-1, 1).
745デフォルトの名無しさん
2023/06/09(金) 22:46:11.50ID:oFhRSqmA746デフォルトの名無しさん
2023/06/09(金) 22:55:53.04ID:oFhRSqmA747デフォルトの名無しさん
2023/06/09(金) 23:13:25.78ID:oFhRSqmA748蟻人間 ◆T6xkBnTXz7B0
2023/06/09(金) 23:20:35.60ID:yz+hWehT お題: コマンドロボット2。
ロボットはx-y平面の原点(0, 0)に居る。
コマンドIDはロボットによる何かのアクションを表す0以上4以下の整数で、次のように定義する。
コマンド0は何もしない。
コマンド1は位置が(-1, 0)だけ動く。
コマンド2は位置が(+1, 0)だけ動く。
コマンド3は位置が(0, -1)だけ動く。
コマンド4は位置が(0, +1)だけ動く。
入力として、最終位置が与えられる。原点から最終位置まで移動する最短のコマンドIDリストを生成せよ。
最終位置のx成分とy成分がどちらも非ゼロならx成分から先に移動せよ。
例)
(2, -3) → (2, 2, 3, 3, 3).
(-1, 3) → (1, 4, 4, 4).
ロボットはx-y平面の原点(0, 0)に居る。
コマンドIDはロボットによる何かのアクションを表す0以上4以下の整数で、次のように定義する。
コマンド0は何もしない。
コマンド1は位置が(-1, 0)だけ動く。
コマンド2は位置が(+1, 0)だけ動く。
コマンド3は位置が(0, -1)だけ動く。
コマンド4は位置が(0, +1)だけ動く。
入力として、最終位置が与えられる。原点から最終位置まで移動する最短のコマンドIDリストを生成せよ。
最終位置のx成分とy成分がどちらも非ゼロならx成分から先に移動せよ。
例)
(2, -3) → (2, 2, 3, 3, 3).
(-1, 3) → (1, 4, 4, 4).
749デフォルトの名無しさん
2023/06/09(金) 23:59:17.57ID:oFhRSqmA >>748
R
FormatArray <- function(a) paste0("(", paste0(a, collapse = ", "), ")")
P <- list(c(2, -3), c(-1, 3), c(0, 0))
for (p in P) cat(FormatArray(p), " → ", FormatArray(rep((sign(p) + c(3, 7)) / 2, abs(p))), "\n", sep = "")
[実行結果]
(2, -3) → (2, 2, 3, 3, 3)
(-1, 3) → (1, 4, 4, 4)
(0, 0) → ()
R
FormatArray <- function(a) paste0("(", paste0(a, collapse = ", "), ")")
P <- list(c(2, -3), c(-1, 3), c(0, 0))
for (p in P) cat(FormatArray(p), " → ", FormatArray(rep((sign(p) + c(3, 7)) / 2, abs(p))), "\n", sep = "")
[実行結果]
(2, -3) → (2, 2, 3, 3, 3)
(-1, 3) → (1, 4, 4, 4)
(0, 0) → ()
750デフォルトの名無しさん
2023/06/10(土) 01:30:29.55ID:yUcAFYfk >>722
Kotlin
○付き数字はブラウザやフォントの設定によっては表示が文字ごとに大きかったり小さかったりするかも知れない。
https://paiza.io/projects/I5rPp0OBjWg6RdMlWu3t5g
Kotlin
○付き数字はブラウザやフォントの設定によっては表示が文字ごとに大きかったり小さかったりするかも知れない。
https://paiza.io/projects/I5rPp0OBjWg6RdMlWu3t5g
751蟻人間 ◆T6xkBnTXz7B0
2023/06/10(土) 11:10:34.93ID:4Mh3FYbU お題: x=0~πの範囲(step: π/8)でsin(x)を数値微分(dx=0.001)すると、その値sin'(x)がほぼcos(x)に一致することを示せ。
xの各値に対する計算結果(x, sin(x), sin'(x), cos(x))を一行に並べて表示せよ。
各数値は小数点以下3桁まで表示するものとする。
xの各値に対する計算結果(x, sin(x), sin'(x), cos(x))を一行に並べて表示せよ。
各数値は小数点以下3桁まで表示するものとする。
752デフォルトの名無しさん
2023/06/10(土) 11:11:16.11ID:bL8//h5O >>748 ruby
def moves(x, y)
[].fill(x < 0 ? 1 : 2, ...x.abs) + [].fill(y < 0 ? 3 : 4, ...y.abs)
end
=> :moves
moves(2, -3)
=> [2, 2, 3, 3, 3]
moves(-1, 3)
=> [1, 4, 4, 4]
moves(0, 0)
=> []
def moves(x, y)
[].fill(x < 0 ? 1 : 2, ...x.abs) + [].fill(y < 0 ? 3 : 4, ...y.abs)
end
=> :moves
moves(2, -3)
=> [2, 2, 3, 3, 3]
moves(-1, 3)
=> [1, 4, 4, 4]
moves(0, 0)
=> []
753蟻人間 ◆T6xkBnTXz7B0
2023/06/10(土) 12:03:39.21ID:4Mh3FYbU お題: 物理シミュレーション。
運動方程式によると、位置の微分が速度になり、速度の微分が加速度となっている。
逆に言えば加速度の積分と初速から現在の速度が求まり、速度の積分と初期位置から現在の位置が求まる。
数直線上を移動可能な点Pがある。Pの初期位置は原点0[cm]とする。Pの初速はゼロ[cm/s]とする。
入力として加速度[cm/s^2]と加速時間[s]のペアのリストが与えられる。時刻t=0[s]から入力に従って点Pが加速する。
dt=0.1として区分求積法により加速度と速度を数値積分し、1秒ごとのPの位置と速度を5秒後まで出力せよ。各数値は小数点以下2桁まで表示せよ。
例) ((1, 1), (-1, 1), (2, 0.5), (-4, 0.25), (3, 1.25), (-8, 1))
運動方程式によると、位置の微分が速度になり、速度の微分が加速度となっている。
逆に言えば加速度の積分と初速から現在の速度が求まり、速度の積分と初期位置から現在の位置が求まる。
数直線上を移動可能な点Pがある。Pの初期位置は原点0[cm]とする。Pの初速はゼロ[cm/s]とする。
入力として加速度[cm/s^2]と加速時間[s]のペアのリストが与えられる。時刻t=0[s]から入力に従って点Pが加速する。
dt=0.1として区分求積法により加速度と速度を数値積分し、1秒ごとのPの位置と速度を5秒後まで出力せよ。各数値は小数点以下2桁まで表示せよ。
例) ((1, 1), (-1, 1), (2, 0.5), (-4, 0.25), (3, 1.25), (-8, 1))
754デフォルトの名無しさん
2023/06/10(土) 15:57:09.17ID:Hla24knV >>738 c
・>>742から若干の省メモリ化
判別用配列の要素をintからcharへ
素数の個数を数えてから一覧用領域を確保
・組み合わせループの条件を>>746さんを参考に改善
https://ideone.com/CixK7I
>>738 c
・上記からさらに省メモリ化
判別用配列はint配列だが判別はビットごと
https://ideone.com/JDcFjV
・>>742から若干の省メモリ化
判別用配列の要素をintからcharへ
素数の個数を数えてから一覧用領域を確保
・組み合わせループの条件を>>746さんを参考に改善
https://ideone.com/CixK7I
>>738 c
・上記からさらに省メモリ化
判別用配列はint配列だが判別はビットごと
https://ideone.com/JDcFjV
755754
2023/06/10(土) 16:17:23.88ID:Hla24knV >>754
誤: for (i = 2; i <= n; i++) if (at(map, i)) nprimes++;
正: for (i = 2, nprimes = 0; i <= n; i++) if (at(map, i)) nprimes++;
誤: for (i = 2; i <= n; i++) if (at(map, i)) nprimes++;
正: for (i = 2, nprimes = 0; i <= n; i++) if (at(map, i)) nprimes++;
756蟻人間 ◆T6xkBnTXz7B0
2023/06/10(土) 20:13:01.15ID:4Mh3FYbU757デフォルトの名無しさん
2023/06/10(土) 23:02:02.89ID:0Jkz3M3C758デフォルトの名無しさん
2023/06/10(土) 23:37:30.81ID:0Jkz3M3C759デフォルトの名無しさん
2023/06/11(日) 00:07:26.45ID:HxKS/Ulh お題:数学的に植物を描画せよ
760デフォルトの名無しさん
2023/06/11(日) 00:37:53.77ID:MUXJWS2B >>753
www.ideone.com/jv00La
Rで書いたらdouble型の精度の問題で期待通りに動作しなかったので、decimal型を使えるC#で書いた。
例のリストで解析解と一致する数値解が得られるように、速度は台形則、位置は台形則と中点則の平均
(結局は刻み幅が半分での台形則に一致するが)で計算した。参考のためstdinに解析解を書いておいた。
www.ideone.com/jv00La
Rで書いたらdouble型の精度の問題で期待通りに動作しなかったので、decimal型を使えるC#で書いた。
例のリストで解析解と一致する数値解が得られるように、速度は台形則、位置は台形則と中点則の平均
(結局は刻み幅が半分での台形則に一致するが)で計算した。参考のためstdinに解析解を書いておいた。
761638
2023/06/11(日) 02:58:42.46ID:aJTqIDxz 力ずく問題は苦手なインタプリタ―だが、速度に配慮した書き方をすればこの規模だと数分程度で解ける…
use feature qw{:5.16 signatures say};
$m = 1234567;
%h = map{$_ => ++$k} 2..$m;
for $i (2..int(sqrt $m)) {
if (exists $h{$i}) {
for ($i..(int($m / $i)+1)) { delete $h{$i * $_} }
}
}
@p = sort{$a <=> $b} keys %h;
%o = map{$p[$_] => $_} 0..$#p;
for $i (0..$#p-2) {
$p1 = $p[$i];
last if $m <= 3 * $p1;
for $j ($i+1..$#p-1) {
$p2 = $p[$j]; $s = $p1 + $p2;
$r = $m - $s; last if $r <= $p2;
$n++ if exists $o{$r};
}
}
print "n = $n\n";
実行結果 (CPUは Core-i7 8995u、Mem: 32GB)
$ time perl 21_738_prime+1234567.pl
n = 151055501
real 5m48.035s
user 5m44.468s
sys 0m3.250s
出題者の解と合わん…><
use feature qw{:5.16 signatures say};
$m = 1234567;
%h = map{$_ => ++$k} 2..$m;
for $i (2..int(sqrt $m)) {
if (exists $h{$i}) {
for ($i..(int($m / $i)+1)) { delete $h{$i * $_} }
}
}
@p = sort{$a <=> $b} keys %h;
%o = map{$p[$_] => $_} 0..$#p;
for $i (0..$#p-2) {
$p1 = $p[$i];
last if $m <= 3 * $p1;
for $j ($i+1..$#p-1) {
$p2 = $p[$j]; $s = $p1 + $p2;
$r = $m - $s; last if $r <= $p2;
$n++ if exists $o{$r};
}
}
print "n = $n\n";
実行結果 (CPUは Core-i7 8995u、Mem: 32GB)
$ time perl 21_738_prime+1234567.pl
n = 151055501
real 5m48.035s
user 5m44.468s
sys 0m3.250s
出題者の解と合わん…><
763デフォルトの名無しさん
2023/06/11(日) 20:59:06.26ID:MUXJWS2B >>761
インタプリタでもRだともっと速い。以下のプログラムを https: //tio.run で実行すると
9.96秒で完了し、解は>>746の151060650通りと合う。>>761は制限時間 (1分) 以内に
完了しない。Rは自前のループをなるべく書かずにベクトル演算にすれば割と速い。
n <- 1234567L
isprime <- c(FALSE, rep(TRUE, n - 1))
for (i in 2:sqrt(n)) if (isprime[i]) isprime[seq(i + i, n, i)] <- FALSE
p <- which(isprime)
q <- cumsum(isprime)
k <- 0L
for (i in p[1:q[n %/% 3L]]) {
m <- n - i
k <- k + sum(isprime[m - p[q[i]:q[m %/% 2L]]])
}
cat(k, "通り\n", sep = "")
インタプリタでもRだともっと速い。以下のプログラムを https: //tio.run で実行すると
9.96秒で完了し、解は>>746の151060650通りと合う。>>761は制限時間 (1分) 以内に
完了しない。Rは自前のループをなるべく書かずにベクトル演算にすれば割と速い。
n <- 1234567L
isprime <- c(FALSE, rep(TRUE, n - 1))
for (i in 2:sqrt(n)) if (isprime[i]) isprime[seq(i + i, n, i)] <- FALSE
p <- which(isprime)
q <- cumsum(isprime)
k <- 0L
for (i in p[1:q[n %/% 3L]]) {
m <- n - i
k <- k + sum(isprime[m - p[q[i]:q[m %/% 2L]]])
}
cat(k, "通り\n", sep = "")
764638
2023/06/11(日) 22:49:44.46ID:7781B+HK >>763
Perlの(多分Pythoも,Rubyはシラネ)配列はリストなのでインデックスで回すとリンク辿りをloopで繰り返し
こういったコードでは遅さに拍車をかけていると思う。あとhashを多用するのもペナルティーがあると思う。
配列の代わりにBit Vectorが使える場面ではそれにより改善できる可能性がある
たとえば序盤のエラトステネスの篩で素数求めるloopについては>>761のコードだと5.2秒くらいなんだけれど
長い文字列をVectorとし、個々の文字をflag要素とみなし、
use feature qw{say};
$m = 1234567;
$o = '1' x $m;
for $i (2..int(sqrt $m)) {
if (substr $o, $i, 1) {
for ($i..(int($m / $i)+1)) {
$j = $i * $_; last if $m <= $j; substr $o, $j, 1, '0';
}
}
}
for (2.. $m) {
$n++ if substr($o, $_, 1);
}
print "$n\n";
と書くと0.3秒くらいに短縮される。ただし5分のうち5秒なので焼け石に…
しかしこの方法は151060650通りを求める後半のループにはうまく効かない。
つかそれ以前に解が合ってない。多分俺が勘違いしてバグ仕込んだと思う。
しかしRのコード短いな…も一回勉強してみようかな
Perlの(多分Pythoも,Rubyはシラネ)配列はリストなのでインデックスで回すとリンク辿りをloopで繰り返し
こういったコードでは遅さに拍車をかけていると思う。あとhashを多用するのもペナルティーがあると思う。
配列の代わりにBit Vectorが使える場面ではそれにより改善できる可能性がある
たとえば序盤のエラトステネスの篩で素数求めるloopについては>>761のコードだと5.2秒くらいなんだけれど
長い文字列をVectorとし、個々の文字をflag要素とみなし、
use feature qw{say};
$m = 1234567;
$o = '1' x $m;
for $i (2..int(sqrt $m)) {
if (substr $o, $i, 1) {
for ($i..(int($m / $i)+1)) {
$j = $i * $_; last if $m <= $j; substr $o, $j, 1, '0';
}
}
}
for (2.. $m) {
$n++ if substr($o, $_, 1);
}
print "$n\n";
と書くと0.3秒くらいに短縮される。ただし5分のうち5秒なので焼け石に…
しかしこの方法は151060650通りを求める後半のループにはうまく効かない。
つかそれ以前に解が合ってない。多分俺が勘違いしてバグ仕込んだと思う。
しかしRのコード短いな…も一回勉強してみようかな
765デフォルトの名無しさん
2023/06/12(月) 00:06:55.69ID:EK34Yq4G やめとけ
短ければいいという時代はとっくに終わってる
いつまでワンライナーとかアホな事やってんねんと思う
短ければいいという時代はとっくに終わってる
いつまでワンライナーとかアホな事やってんねんと思う
766デフォルトの名無しさん
2023/06/12(月) 23:18:04.33ID:Qrbs+YQO767デフォルトの名無しさん
2023/06/12(月) 23:18:28.27ID:Qrbs+YQO PowerShell 7は前のバージョンよりは速くなっていて、以下のプログラムは>>761の
3分の1ほどの時間で実行できた。
$n = 1234567
$isprime = @($false) * 2 + @($true) * ($n - 1)
foreach ($i in 2..[Math]::sqrt($n)) {
if ($isprime[$i]) {for ($j = $i + $i; $j -le $n; $j += $i) {$isprime[$j] = $false}}
}
$j = 0
$p = $q = @(0) * ($n + 1)
foreach ($i in 2..$n) {
if ($isprime[$i]) {$p[$j++] = $i}
$q[$i] = $j - 1
}
$k = 0
foreach ($i in 0..$q[$n / 3]) {
$m = $n - $p[$i]
foreach ($j in $i..$q[$m / 2]) {
if ($isprime[$m - $p[$j]]) {$k++}
}
}
"${k}通り"
3分の1ほどの時間で実行できた。
$n = 1234567
$isprime = @($false) * 2 + @($true) * ($n - 1)
foreach ($i in 2..[Math]::sqrt($n)) {
if ($isprime[$i]) {for ($j = $i + $i; $j -le $n; $j += $i) {$isprime[$j] = $false}}
}
$j = 0
$p = $q = @(0) * ($n + 1)
foreach ($i in 2..$n) {
if ($isprime[$i]) {$p[$j++] = $i}
$q[$i] = $j - 1
}
$k = 0
foreach ($i in 0..$q[$n / 3]) {
$m = $n - $p[$i]
foreach ($j in $i..$q[$m / 2]) {
if ($isprime[$m - $p[$j]]) {$k++}
}
}
"${k}通り"
768デフォルトの名無しさん
2023/06/12(月) 23:42:55.82ID:y1IXQNpF >>738 rust
https://ideone.com/THk6s8
fn sieve_of_eratosthenes(n: u32) -> (Vec<bool>, Vec<u32>) {
if n < 2 {return (Vec::new(), Vec::new())};
let mut isprime = vec![true; 1 + n as usize];
isprime[0..2].fill(false);
(2..=(n as f64).sqrt() as usize).for_each(|i| if isprime[i] {
(i*i..=n as usize).step_by(i).for_each(|j| isprime[j] = false);
});
let primes = (2..=n).filter(|&i| isprime[i as usize]).collect();
(isprime, primes)
}
fn main() {
let n = 1234567;
let (isprime, primes) = sieve_of_eratosthenes(n);
let count = primes.iter().enumerate().take_while(|(i, &a)| a <= n / 3).map(|(i, &a)|
primes[i..].iter().take_while(|&&b| b <= (n - a) / 2).map(|&b|
isprime[(n - a - b) as usize] as u32
).sum::<u32>()
).sum::<u32>();
println!("count = {}", count);
}
https://ideone.com/THk6s8
fn sieve_of_eratosthenes(n: u32) -> (Vec<bool>, Vec<u32>) {
if n < 2 {return (Vec::new(), Vec::new())};
let mut isprime = vec![true; 1 + n as usize];
isprime[0..2].fill(false);
(2..=(n as f64).sqrt() as usize).for_each(|i| if isprime[i] {
(i*i..=n as usize).step_by(i).for_each(|j| isprime[j] = false);
});
let primes = (2..=n).filter(|&i| isprime[i as usize]).collect();
(isprime, primes)
}
fn main() {
let n = 1234567;
let (isprime, primes) = sieve_of_eratosthenes(n);
let count = primes.iter().enumerate().take_while(|(i, &a)| a <= n / 3).map(|(i, &a)|
primes[i..].iter().take_while(|&&b| b <= (n - a) / 2).map(|&b|
isprime[(n - a - b) as usize] as u32
).sum::<u32>()
).sum::<u32>();
println!("count = {}", count);
}
769638
2023/06/12(月) 23:47:34.40ID:zjICvCkc770638
2023/06/13(火) 00:40:44.65ID:XM8TxFLS >>738 Perl5 高速化版、>>766のおかげで不具合解決したし、>>761 の1/3に時間短縮できたので俺としてはこのお題これで一区切りつけたい。
$m = 1234567;
$o = '1' x $m; #substr $o, 0, 2, '00';
for $i (2..int(sqrt $m)) {
if (substr $o, $i, 1) {
for ($i..(int($m / $i)+1)) {
$j = $i * $_; last if $m <= $j; substr $o, $j, 1, '0';
}
}
}
for (2.. $m) { push @p, $_ if substr($o, $_, 1) }
for $i (0..$#p) {
$p1 = $p[0];
last if $m < 3 * $p1;
for $p2 (@p) {
$s = $p1 + $p2;
$r = $m - $s;
last if $r < $p2;
$n++ if substr $o, $r, 1;
}
shift @p;
}
print "n = $n\n";
実行結果:(CPU Core-i7 8995u)
$ time perl 21_738_prime+1234567_charVec.pl
n = 151060650
real 1m57.390s
user 1m56.375s
sys 0m0.093s
$m = 1234567;
$o = '1' x $m; #substr $o, 0, 2, '00';
for $i (2..int(sqrt $m)) {
if (substr $o, $i, 1) {
for ($i..(int($m / $i)+1)) {
$j = $i * $_; last if $m <= $j; substr $o, $j, 1, '0';
}
}
}
for (2.. $m) { push @p, $_ if substr($o, $_, 1) }
for $i (0..$#p) {
$p1 = $p[0];
last if $m < 3 * $p1;
for $p2 (@p) {
$s = $p1 + $p2;
$r = $m - $s;
last if $r < $p2;
$n++ if substr $o, $r, 1;
}
shift @p;
}
print "n = $n\n";
実行結果:(CPU Core-i7 8995u)
$ time perl 21_738_prime+1234567_charVec.pl
n = 151060650
real 1m57.390s
user 1m56.375s
sys 0m0.093s
771デフォルトの名無しさん
2023/06/13(火) 22:09:38.41ID:5UrmlJw6 >>738 octave
・n = 1234567 でideone完走できず
https://ideone.com/QzfFfY
>>738 ruby
・n = 1234567 でideone完走できず
https://ideone.com/OPplEt
>>738 java
https://ideone.com/pCHK8L
ちなみに現時点ではそれぞれ
C (gcc 8.3)
Rust (rust 1.56)
Octave (octave 4.4.1)
Ruby (ruby 2.5.5)
Java (HotSpot 12)
・n = 1234567 でideone完走できず
https://ideone.com/QzfFfY
>>738 ruby
・n = 1234567 でideone完走できず
https://ideone.com/OPplEt
>>738 java
https://ideone.com/pCHK8L
ちなみに現時点ではそれぞれ
C (gcc 8.3)
Rust (rust 1.56)
Octave (octave 4.4.1)
Ruby (ruby 2.5.5)
Java (HotSpot 12)
772デフォルトの名無しさん
2023/06/13(火) 23:10:18.55ID:46zXUcMH >>771
nが偶数の場合はaは2しかあり得ないから、ループでaを変化させるのは時間の無駄でしかない。
nが偶数の場合はaは2しかあり得ないから、ループでaを変化させるのは時間の無駄でしかない。
773デフォルトの名無しさん
2023/06/14(水) 01:24:51.27ID:2OMhWiyZ 数値の設定がデカすぎるんだよ
こんなもん個人のパソコンでやって結果だけコピペしても面白くもなんともない
ネットのプログラムサービスとかで完走できるサイズに設定しとけや
こんなもん個人のパソコンでやって結果だけコピペしても面白くもなんともない
ネットのプログラムサービスとかで完走できるサイズに設定しとけや
774デフォルトの名無しさん
2023/06/14(水) 03:58:19.40ID:uNCnaso6775デフォルトの名無しさん
2023/06/14(水) 10:10:07.75ID:YttatLTk お題:文字列を入力すると文字列が右に移動を始め画面の端に当たったら当たった側の文字が一つ削れて今度は左に移動しそれを繰り返し最終的に文字がなくなるまでアニメーションするプログラムを作成せよ。
776デフォルトの名無しさん
2023/06/14(水) 12:04:02.31ID:iWYHYN4r ブラウザでコード描いて実行する環境はいくつかあるけど
ANSIエスケープシーケンスとか解釈してくれるコンソール出力付きの環境ってある?
ANSIエスケープシーケンスとか解釈してくれるコンソール出力付きの環境ってある?
777デフォルトの名無しさん
2023/06/14(水) 12:48:17.85ID:iWYHYN4r778デフォルトの名無しさん
2023/06/14(水) 21:28:54.64ID:i4vcABZv >>738 octave
・for無しでa,b,cを算出(ただしfor版>>771より遅い)
・n = 1234567 でメモリ不足でオチる(bがクソデカサイズ)
・データの型をint32にしてみたりもしたが焼け石に水だし少し遅くもなるのでdoubleに戻した
https://ideone.com/aosEo2
function [isprime, primes] = sieve_of_eratosthenes(n)
if n < 2; isprime = [], primes = [], return; end
isprime = [false true(1, n-1)];
for i = 2:sqrt(n)
if isprime(i); isprime(i*i:i:n) = false; end
end
primes = find(isprime);
end
n = 123456
[isprime, primes] = sieve_of_eratosthenes(n);
a = primes(primes <= n / 3)';
b = primes.*(a <= primes & primes <= (n - a) / 2);
c = (n - a - b)(b ~= 0);
count = sum(isprime(c))
・for無しでa,b,cを算出(ただしfor版>>771より遅い)
・n = 1234567 でメモリ不足でオチる(bがクソデカサイズ)
・データの型をint32にしてみたりもしたが焼け石に水だし少し遅くもなるのでdoubleに戻した
https://ideone.com/aosEo2
function [isprime, primes] = sieve_of_eratosthenes(n)
if n < 2; isprime = [], primes = [], return; end
isprime = [false true(1, n-1)];
for i = 2:sqrt(n)
if isprime(i); isprime(i*i:i:n) = false; end
end
primes = find(isprime);
end
n = 123456
[isprime, primes] = sieve_of_eratosthenes(n);
a = primes(primes <= n / 3)';
b = primes.*(a <= primes & primes <= (n - a) / 2);
c = (n - a - b)(b ~= 0);
count = sum(isprime(c))
779デフォルトの名無しさん
2023/06/14(水) 22:07:29.08ID:Sln8BcU1 >>775
PowerShellで全角文字、等幅フォント限定
$s = "プログラミングのお題スレです。"
$w = $Host.UI.RawUI.WindowSize.Width - 1
$c = $Host.UI.RawUI.CursorSize
$Host.UI.RawUI.CursorSize = 0;`
foreach ($n in $s.length..0) {
$d = $w - 2 * $n
$m = $s.length - $n
foreach ($x in ((1..$d), ($d..1))[$m % 2]) {
$l = "`r" + " " * $x + $s.SubString([Math]::Floor($m / 2), $n) + " " * ($d - $x)
Write-Host $l -NoNewline
if (!$n) {Write-Host; break}
Sleep -m 20
}
}
$Host.UI.RawUI.CursorSize = $c
PowerShellで全角文字、等幅フォント限定
$s = "プログラミングのお題スレです。"
$w = $Host.UI.RawUI.WindowSize.Width - 1
$c = $Host.UI.RawUI.CursorSize
$Host.UI.RawUI.CursorSize = 0;`
foreach ($n in $s.length..0) {
$d = $w - 2 * $n
$m = $s.length - $n
foreach ($x in ((1..$d), ($d..1))[$m % 2]) {
$l = "`r" + " " * $x + $s.SubString([Math]::Floor($m / 2), $n) + " " * ($d - $x)
Write-Host $l -NoNewline
if (!$n) {Write-Host; break}
Sleep -m 20
}
}
$Host.UI.RawUI.CursorSize = $c
780デフォルトの名無しさん
2023/06/15(木) 00:31:42.16ID:K1O29FUe >>774
フーリエ変換でなぜ計算できるのか知らないが、とりあえずRに移植してみたら
5秒で完了できなかった。www.ideone.com/nhGFqi
tio.runで実行したら5.975秒かかった。fft関数がRのよりnumpyのの方が速いのか?
RのはUses C translation of Fortran code in Singleton (1979)だそうだが。
フーリエ変換でなぜ計算できるのか知らないが、とりあえずRに移植してみたら
5秒で完了できなかった。www.ideone.com/nhGFqi
tio.runで実行したら5.975秒かかった。fft関数がRのよりnumpyのの方が速いのか?
RのはUses C translation of Fortran code in Singleton (1979)だそうだが。
781デフォルトの名無しさん
2023/06/15(木) 01:02:15.13ID:h+F4OSrU >>780
数え上げの問題を形式的冪級数の議論に対応づけることができる
形式的冪級数同士の積は長さ n が2の冪なら高速フーリエ変換による畳み込みで O(n log n) で計算できる
Rのfftはおそらく高速になる2の冪の長さのfftをしていないんだと思う
数え上げの問題を形式的冪級数の議論に対応づけることができる
形式的冪級数同士の積は長さ n が2の冪なら高速フーリエ変換による畳み込みで O(n log n) で計算できる
Rのfftはおそらく高速になる2の冪の長さのfftをしていないんだと思う
782638
2023/06/15(木) 01:38:57.15ID:znvLwevo へー、そりゃ面白い
783デフォルトの名無しさん
2023/06/15(木) 20:35:51.05ID:xRnvlfjP この程度の桁数ならfft使う意味などない
ハードのfpuで計算に勝てるはずがない
fft使うメリットなんぞ数万桁とかいかないとでないやろ
ハードのfpuで計算に勝てるはずがない
fft使うメリットなんぞ数万桁とかいかないとでないやろ
784デフォルトの名無しさん
2023/06/15(木) 21:44:36.42ID:K1O29FUe >>781
Rの標準のfft関数は遅いようなので、fftwパッケージのFFT, IFFT関数に替えたら
実行時間は半分くらいに短縮されたが、ideoneではfftwパッケージがインスール
されていなくて実行できなくて残念。
library(fftw)
conv <- function(f, g) round(Re(IFFT(FFT(f) * FFT(g))))
n <- 1234567L
isprime <- c(FALSE, rep(TRUE, n - 1))
for (i in 2:sqrt(n)) if (isprime[i]) isprime[seq(i + i, n, i)] <- FALSE
N <- nextn(2 * n + 1, 2)
x <- c(0, as.double(isprime), rep(0, N - n - 1))
count <- conv(conv(x, x), x)[n + 1]
i <- 2:(n %/% 2 - 1)
k <- sum(isprime[i] & isprime[n - 2 * i])
cat((count - 3 * k) %/% 6 + k, "通り\n", sep = "")
Rの標準のfft関数は遅いようなので、fftwパッケージのFFT, IFFT関数に替えたら
実行時間は半分くらいに短縮されたが、ideoneではfftwパッケージがインスール
されていなくて実行できなくて残念。
library(fftw)
conv <- function(f, g) round(Re(IFFT(FFT(f) * FFT(g))))
n <- 1234567L
isprime <- c(FALSE, rep(TRUE, n - 1))
for (i in 2:sqrt(n)) if (isprime[i]) isprime[seq(i + i, n, i)] <- FALSE
N <- nextn(2 * n + 1, 2)
x <- c(0, as.double(isprime), rep(0, N - n - 1))
count <- conv(conv(x, x), x)[n + 1]
i <- 2:(n %/% 2 - 1)
k <- sum(isprime[i] & isprime[n - 2 * i])
cat((count - 3 * k) %/% 6 + k, "通り\n", sep = "")
785デフォルトの名無しさん
2023/06/15(木) 22:01:30.16ID:4JYva2qR fftなんぞ使って早くなんかならんというに
原理わかってんの?
例えばHaskellの標準のinteger型は何万桁でも計算できる、その際fftで掛け算するので数万桁まで行ってもそこそこ早い
しかし逆に32bitで収まるような計算だと遅くなる
だから“この計算はfftなんか使わなくていいよ、int32の範囲で収まるからそれで計算してね”と専用の型がいっぱいある
Rがそれで早くなるなら素の標準計算がしょぼいとかインタプリタ特有の話
そもそも計算速度気にする場合にRを選択してる時点で筋違い
原理わかってんの?
例えばHaskellの標準のinteger型は何万桁でも計算できる、その際fftで掛け算するので数万桁まで行ってもそこそこ早い
しかし逆に32bitで収まるような計算だと遅くなる
だから“この計算はfftなんか使わなくていいよ、int32の範囲で収まるからそれで計算してね”と専用の型がいっぱいある
Rがそれで早くなるなら素の標準計算がしょぼいとかインタプリタ特有の話
そもそも計算速度気にする場合にRを選択してる時点で筋違い
786デフォルトの名無しさん
2023/06/15(木) 22:26:38.53ID:K1O29FUe787デフォルトの名無しさん
2023/06/15(木) 23:01:51.41ID:4JYva2qR だからそこでfft使うなんてのがわかってないって言ってるの
わからんかね?
わからんかね?
788デフォルトの名無しさん
2023/06/15(木) 23:56:30.25ID:h+F4OSrU789デフォルトの名無しさん
2023/06/16(金) 00:03:42.43ID:9FZ51TCg まぁ上の方のレス見ればわかる通りそもそも本人fftの理論何にも勉強した事なさそうでちゃんと勉強した人間(というかちゃんと勉強してなくてもわかる事だけど)>>378の話になんも関係ないってわからんのかな?
しかもそのレベルで噛みついてくるからタチ悪い
しかもそのレベルで噛みついてくるからタチ悪い
790デフォルトの名無しさん
2023/06/16(金) 00:04:47.90ID:9FZ51TCg なんか日本語変になったな
なんで勉強もした事ない話しで他人に噛みついてこれるんだろう?
なんで勉強もした事ない話しで他人に噛みついてこれるんだろう?
791デフォルトの名無しさん
2023/06/16(金) 01:54:12.19ID:q8ApsJJ9 炎上学習法というのがある
相手に噛みついて解説させて勉強する手法
相手に噛みついて解説させて勉強する手法
793デフォルトの名無しさん
2023/06/16(金) 09:01:22.25ID:ly+Q1cW8 問題
Σ[n: 1→4000](1/√n)
の整数部を答えよ
Σ[n: 1→4000](1/√n)
の整数部を答えよ
794デフォルトの名無しさん
2023/06/16(金) 10:04:38.20ID:+wlQrz/R やだ
795デフォルトの名無しさん
2023/06/16(金) 10:33:26.86ID:17+w8HLb フィボナッチ数列のn番目の整数zだけ表示するプログラムを書きなさい。
ただし、zが3、5、15のいずれかで割り切れる場合はzの後に改行を挿入して、
"割り切れる"と表示しなさい。
1, 1, 2, 3, ... n
【条件】
1 <= n <= 100000000000
ただし、zが3、5、15のいずれかで割り切れる場合はzの後に改行を挿入して、
"割り切れる"と表示しなさい。
1, 1, 2, 3, ... n
【条件】
1 <= n <= 100000000000
796デフォルトの名無しさん
2023/06/16(金) 10:52:39.37ID:UCgwHrPU まぁ最後の条件は最後の1桁まで計算させるつもりなんかもしれないけど
5 | Fₙ ⇔ 5 | n
だから意味はないわな
5 | Fₙ ⇔ 5 | n
だから意味はないわな
797デフォルトの名無しさん
2023/06/16(金) 20:29:55.57ID:2udbfubS >>738
https://paiza.io/projects/0QCNbnKzWMHspiarmHa0Tw
細かいテクニックで高速化して出題者の方の解答例と同じくらいの実行時間にできた
総当たりの解法の計算量が N = 1234567 に対して O(pi(N)^2) なのに対してこの解法は O(N log N) なのできちんと書けば十分に速く動いてくれる
https://paiza.io/projects/0QCNbnKzWMHspiarmHa0Tw
細かいテクニックで高速化して出題者の方の解答例と同じくらいの実行時間にできた
総当たりの解法の計算量が N = 1234567 に対して O(pi(N)^2) なのに対してこの解法は O(N log N) なのできちんと書けば十分に速く動いてくれる
798デフォルトの名無しさん
2023/06/16(金) 21:29:35.35ID:FhD4SiQz799デフォルトの名無しさん
2023/06/16(金) 21:34:18.18ID:FhD4SiQz アレ?
やっぱりこれ三乗してるんじゃないの?
O(N)ちゃうやん
O(N)の意味わかってる?
やっぱりこれ三乗してるんじゃないの?
O(N)ちゃうやん
O(N)の意味わかってる?
800デフォルトの名無しさん
2023/06/16(金) 21:36:03.94ID:AuLvoWXx801デフォルトの名無しさん
2023/06/16(金) 21:36:46.05ID:FhD4SiQz イヤ、整数計数の多項式環の三乗もfftで早くできるのかな?
802デフォルトの名無しさん
2023/06/16(金) 21:41:30.83ID:FhD4SiQz もしかしたらできるか
fftのアルゴリズムってこっちのコンボリューション積をあっちの各点積に持っていく方法だから多項式環でもできるんかな?
fftのアルゴリズムってこっちのコンボリューション積をあっちの各点積に持っていく方法だから多項式環でもできるんかな?
803デフォルトの名無しさん
2023/06/16(金) 22:11:45.10ID:2udbfubS >>798
大体わかっているみたいだけど少し丁寧に書いてみる
素数次数の係数が 1 でそれ以外の係数が 0 の形式的冪級数 f を考える
f^3 の k 次の項の係数は 素数 3 個を選んで足した和が k になる場合の数になるので今回は k = 1234567 の係数を求めたい
長さ N の多項式の積は高速フーリエ変換による畳み込みで O(N log N) で計算できるので形式的冪級数を前から必要なだけとって多項式にして適用する
また取りうる値が大きくて誤差が問題になるときは数論変換と中国剰余定理で復元する方法もあるけど今回は不要
3乗している対象は配列の各項なのでそこはボトルネックにはならない
大体わかっているみたいだけど少し丁寧に書いてみる
素数次数の係数が 1 でそれ以外の係数が 0 の形式的冪級数 f を考える
f^3 の k 次の項の係数は 素数 3 個を選んで足した和が k になる場合の数になるので今回は k = 1234567 の係数を求めたい
長さ N の多項式の積は高速フーリエ変換による畳み込みで O(N log N) で計算できるので形式的冪級数を前から必要なだけとって多項式にして適用する
また取りうる値が大きくて誤差が問題になるときは数論変換と中国剰余定理で復元する方法もあるけど今回は不要
3乗している対象は配列の各項なのでそこはボトルネックにはならない
804デフォルトの名無しさん
2023/06/16(金) 22:23:18.66ID:sH9/3LIG うん、やっとわかった
fftの計算への応用つて真っ先に整数そのものの掛け算が思いついてしまうけど、別に整数そのものの掛け算でなくてもいいわけだ
完全に目からウロコ
fftの計算への応用つて真っ先に整数そのものの掛け算が思いついてしまうけど、別に整数そのものの掛け算でなくてもいいわけだ
完全に目からウロコ
805デフォルトの名無しさん
2023/06/16(金) 23:47:11.07ID:xSzkTILM806デフォルトの名無しさん
2023/06/17(土) 06:25:35.36ID:1fuSaXml807デフォルトの名無しさん
2023/06/17(土) 15:32:59.09ID:2LgWs1Ta お題
15時間20分を15.2と表記するとして
15.2+2.4=18.0時間って計算させるにはどうやればいいの?
15時間20分を15.2と表記するとして
15.2+2.4=18.0時間って計算させるにはどうやればいいの?
808デフォルトの名無しさん
2023/06/17(土) 22:31:22.41ID:6cwG2na1 整数部分と小数部分に分ける
小数部分は2桁とみなす
60進数の小数点数として扱う
小数部分は2桁とみなす
60進数の小数点数として扱う
809デフォルトの名無しさん
2023/06/17(土) 23:26:07.50ID:AP5jnZhM810デフォルトの名無しさん
2023/06/18(日) 22:57:19.74ID:kNhEMEAG >>807 octave
https://ideone.com/S0EqvY
function c = f(a, b)
m = (fix(a) + fix(b)) * 60 + round((a - fix(a) + b - fix(b)) * 100);
c = fix(m / 60) + rem(m, 60) / 100;
end
https://ideone.com/S0EqvY
function c = f(a, b)
m = (fix(a) + fix(b)) * 60 + round((a - fix(a) + b - fix(b)) * 100);
c = fix(m / 60) + rem(m, 60) / 100;
end
811デフォルトの名無しさん
2023/06/20(火) 15:17:12.61ID:AKiKNbfi お題 Fourier 変換
長さが2べきの複素数の列が与えられます
(複素数はDouble型2つのタプルで表現するとする)
そのFourier変換である同じ長さの列を計算する関数を実現して下さい
またそれを利用して同じ長さの畳み込み積を計算する関数を実現して下さい
(但し書き)
長さNの数列(aₙ)のFourier変換F(aₙ)とは第k項が
Σ[n=0,N-1] (cos(2πkn/N) + isin(2πkn/N))aₙ
である列を与える変換とする
その逆変換F⁻¹(aₙ)は第k項が
1/NΣ[n=0,N-1] (cos(-2πkn/N) + isin(-2πkn/N))aₙ
で与えられる変換である
数列(aₙ)と(bₙ)の畳み込み積とは
F⁻¹( F(aₙ) × F(bₙ) )
で与えられる積である、ただしこの×は各項毎の積で与えられる列である
長さが2べきの複素数の列が与えられます
(複素数はDouble型2つのタプルで表現するとする)
そのFourier変換である同じ長さの列を計算する関数を実現して下さい
またそれを利用して同じ長さの畳み込み積を計算する関数を実現して下さい
(但し書き)
長さNの数列(aₙ)のFourier変換F(aₙ)とは第k項が
Σ[n=0,N-1] (cos(2πkn/N) + isin(2πkn/N))aₙ
である列を与える変換とする
その逆変換F⁻¹(aₙ)は第k項が
1/NΣ[n=0,N-1] (cos(-2πkn/N) + isin(-2πkn/N))aₙ
で与えられる変換である
数列(aₙ)と(bₙ)の畳み込み積とは
F⁻¹( F(aₙ) × F(bₙ) )
で与えられる積である、ただしこの×は各項毎の積で与えられる列である
812デフォルトの名無しさん
2023/06/20(火) 15:17:18.47ID:AKiKNbfi (例)
・F (a,b,c,d) = (a+b+c+d, a+bi-c-di,a-b+c-d,a-bi-c+di)
・F(1,2,3,0,0,0,0,0) =
6.0 :+ 0.0
2.4142135623730954 :+ 4.414213562373095
(-1.9999999999999996) :+ 2.0
(-0.4142135623730949) :+ (-1.5857864376269046)
2.0 :+ 0.0
(-0.4142135623730949) :+ 1.585786437626905
(-2.0000000000000004) :+ (-2.0)
2.4142135623730945 :+ (-4.414213562373096)
・1,2,3,0,0,0,0,0と4,5,6,0,0,0,0,0の畳み込み積
=
3.999999999999999 :+ 2.6645352591003757e-15
12.999999999999998 :+ (-1.6730659520119792e-15)
28.0 :+ (-5.773159728050814e-15)
27.0 :+ (-5.432361405589022e-15)
18.0 :+ (-8.881784197001252e-16)
1.7763568394002505e-15 :+ 3.656004566188772e-15
1.7763568394002505e-15 :+ 3.9968028886505635e-15
0.0 :+ 3.4494227914122297e-15
・F (a,b,c,d) = (a+b+c+d, a+bi-c-di,a-b+c-d,a-bi-c+di)
・F(1,2,3,0,0,0,0,0) =
6.0 :+ 0.0
2.4142135623730954 :+ 4.414213562373095
(-1.9999999999999996) :+ 2.0
(-0.4142135623730949) :+ (-1.5857864376269046)
2.0 :+ 0.0
(-0.4142135623730949) :+ 1.585786437626905
(-2.0000000000000004) :+ (-2.0)
2.4142135623730945 :+ (-4.414213562373096)
・1,2,3,0,0,0,0,0と4,5,6,0,0,0,0,0の畳み込み積
=
3.999999999999999 :+ 2.6645352591003757e-15
12.999999999999998 :+ (-1.6730659520119792e-15)
28.0 :+ (-5.773159728050814e-15)
27.0 :+ (-5.432361405589022e-15)
18.0 :+ (-8.881784197001252e-16)
1.7763568394002505e-15 :+ 3.656004566188772e-15
1.7763568394002505e-15 :+ 3.9968028886505635e-15
0.0 :+ 3.4494227914122297e-15
813デフォルトの名無しさん
2023/06/20(火) 15:59:11.28ID:1adBi336 お題(難易度★)
a=1のとき、b=1000000
a=2のとき、b=999999
a=3のとき、b=999998
上記の法則を元に、aがnのときのbの値を求めなさい
a=1のとき、b=1000000
a=2のとき、b=999999
a=3のとき、b=999998
上記の法則を元に、aがnのときのbの値を求めなさい
814デフォルトの名無しさん
2023/06/20(火) 23:32:28.84ID:UkUQRL6u >>813 py
import numpy as np
from scipy.optimize import least_squares
data = np.array([
1000000,
999999,
999998,
999997,
])
def poly_2d(x, a, b, c, d, e, f):
return a * x**5 + b * x**4 + c * x ** 3 + d * x ** 2 + e * x + f
def residuals(params, data):
a, b, c, d, e, f = params
res = []
for x in range(1, len(data) + 1):
res.append(data[x - 1] - poly_2d(x, a, b, c, d, e, f))
return res
initial_guess = [1, 1, 1, 1, 1, 1]
result = least_squares(residuals, initial_guess, args=(data,))
a, b, c, d, e, f = result.x
print(f"fn = lambda x: {a:.6f}*x**5 + {b:.6f}*x**4 + {c:.6f}*x**3 + {d:.6f}*x**2 + {e:.6f}*x + {f:.6f}")
fn = lambda x: round(a*x**5 + b*x**4 + c*x**3 + d*x**2 + e*x + f)
print(fn(1))
print(fn(2))
print(fn(3))
print(fn(4))
fn = lambda x: -9433.011975*x**5 + 81785.062791*x**4 + -204704.849008*x**3 + 32573.601042*x**2 + 400859.570602*x + 698919.625800
1000000
999999
999998
999997
import numpy as np
from scipy.optimize import least_squares
data = np.array([
1000000,
999999,
999998,
999997,
])
def poly_2d(x, a, b, c, d, e, f):
return a * x**5 + b * x**4 + c * x ** 3 + d * x ** 2 + e * x + f
def residuals(params, data):
a, b, c, d, e, f = params
res = []
for x in range(1, len(data) + 1):
res.append(data[x - 1] - poly_2d(x, a, b, c, d, e, f))
return res
initial_guess = [1, 1, 1, 1, 1, 1]
result = least_squares(residuals, initial_guess, args=(data,))
a, b, c, d, e, f = result.x
print(f"fn = lambda x: {a:.6f}*x**5 + {b:.6f}*x**4 + {c:.6f}*x**3 + {d:.6f}*x**2 + {e:.6f}*x + {f:.6f}")
fn = lambda x: round(a*x**5 + b*x**4 + c*x**3 + d*x**2 + e*x + f)
print(fn(1))
print(fn(2))
print(fn(3))
print(fn(4))
fn = lambda x: -9433.011975*x**5 + 81785.062791*x**4 + -204704.849008*x**3 + 32573.601042*x**2 + 400859.570602*x + 698919.625800
1000000
999999
999998
999997
815デフォルトの名無しさん
2023/06/20(火) 23:56:19.99ID:Mo20HwBH >>813 octave
https://ideone.com/7v5QU9
f = @(n) polyval(polyfit([1 2 3], [1000000 999999 999998], 1), n);
https://ideone.com/7v5QU9
f = @(n) polyval(polyfit([1 2 3], [1000000 999999 999998], 1), n);
816デフォルトの名無しさん
2023/06/21(水) 00:19:23.72ID:ay5yB12X なんて短いんだすげえ
818デフォルトの名無しさん
2023/06/21(水) 09:26:22.30ID:p7Lpt5pu819蟻人間 ◆T6xkBnTXz7B0
2023/06/21(水) 20:25:12.09ID:FNuxfRD0 お題: 入力を(x, minv, maxv)の3整数とする。xを閉区間[minv, maxv]に制限した値を返すプログラム(ただしminv≦maxv)。
例)
(1, 3, 5)→3.
(100, 5, 120)→100.
(208, 5, 120)→120.
例)
(1, 3, 5)→3.
(100, 5, 120)→100.
(208, 5, 120)→120.
820デフォルトの名無しさん
2023/06/21(水) 21:30:09.94ID:iBv5iJxF821蟻人間 ◆T6xkBnTXz7B0
2023/06/21(水) 21:34:57.73ID:FNuxfRD0 お題: 2次元ソート。
与えられた比較関数Compare2Dを用いて2次元のデータを並べ替える。
typedef int DATA;
int Compare2D(DATA left, DATA above, DATA target);
左端でも上端でもない、ターゲットのデータについて
引数leftは一つ左のデータ、
引数aboveは一つ上のデータ、
引数targetはターゲットのデータとする。
比較関数の戻り値は、比較結果が小さいとき-1に、同じとき0に、大きいとき1になる。
比較関数Compare2Dとソートアルゴリズムを適当に定め、アスキーコードの一部(0x20~0x5f)、つまり、アスキー表の一部を乱数で撹乱した二次元データをソートしたときに、
アスキー表の一部を表す長方形状になるようにし、ソート前の撹乱後の二次元データと、ソート後の二次元データを自然にわかりやすく出力するプログラムを作れ。
与えられた比較関数Compare2Dを用いて2次元のデータを並べ替える。
typedef int DATA;
int Compare2D(DATA left, DATA above, DATA target);
左端でも上端でもない、ターゲットのデータについて
引数leftは一つ左のデータ、
引数aboveは一つ上のデータ、
引数targetはターゲットのデータとする。
比較関数の戻り値は、比較結果が小さいとき-1に、同じとき0に、大きいとき1になる。
比較関数Compare2Dとソートアルゴリズムを適当に定め、アスキーコードの一部(0x20~0x5f)、つまり、アスキー表の一部を乱数で撹乱した二次元データをソートしたときに、
アスキー表の一部を表す長方形状になるようにし、ソート前の撹乱後の二次元データと、ソート後の二次元データを自然にわかりやすく出力するプログラムを作れ。
822蟻人間 ◆T6xkBnTXz7B0
2023/06/21(水) 21:38:27.11ID:FNuxfRD0824デフォルトの名無しさん
2023/06/21(水) 23:17:43.90ID:4mNklWjb825デフォルトの名無しさん
2023/06/22(木) 04:06:08.77ID:kP7EKeZ8 お題:数学的な処理を使って東京タワーっぽいアスキーアートを出力せよ
アスキーアートのクオリティは問わない
アスキーアートのクオリティは問わない
826デフォルトの名無しさん
2023/06/22(木) 10:33:46.03ID:kNfUaD9C おじいちゃんスカイツリーでも良いですか?
827デフォルトの名無しさん
2023/06/22(木) 17:08:30.10ID:4hSYT0iP いいよ
828デフォルトの名無しさん
2023/06/22(木) 21:46:09.75ID:k1X9Be1P829638
2023/06/23(金) 00:36:01.83ID:+Wf7JNOC >>811-812 Perl5、若いころ物理数学で勉強した記憶を呼び戻しながら、LibraryやComplex型を使用せず、また複素数をタプルで表して愚直に実装してみた。
長さが2のべき乗とのことだがバタフライ演算による計算量の低減は実装していない。なお10^-15乗などの微小な数値の仮数部がお手本解と異なるところがあるが計算誤差によるもので実質0だと思う。
(やっぱ記号を使った数式よりも物理的な意味やイメージと対応付けて捉える方が俺にとってはしっくりくるわ)
use utf8;
use constant PI => 3.141592653589793;
use feature qw{signatures say};
sub 基底($波数, $N) { [map{[cos(2*PI*$波数*$_/$N), sin((2*PI*$波数*$_/$N))]} 0..$N-1] }
sub 複素数の積($a, $b) { [$$a[0]*$$b[0] - $$a[1]*$$b[1], $$a[0]*$$b[1] + $$a[1]*$$b[0]] }
use List::Util 'reduce';
sub 積和相関($x, $e) { reduce{[$$a[0]+$$b[0], $$a[1]+$$b[1]]} map{複素数の積 $$x[$_], $$e[$_]} 0..$#$e }
sub FT(@s) { map{ 積和相関(\@s, 基底($_, scalar @s)) } 0..$#s }
sub iFT(@s) { my $n = @s; map{[$$_[0]/$n, $$_[1]/$n]} map{ 積和相関(\@s, 基底(-$_, $n)) } 0..$n-1 }
sub CV($a, $b) { my @c = FT(@$a); my @d = FT(@$b); iFT( map{複素数の積 $c[$_], $d[$_]} 0..$#c ) }
sub prti { join(', ', map{"$$_[0]". (0 <= $$_[1] and '+') ."$$_[1]i"} @_) }
my @a = ([1, 0], [2, 0], [3, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0]);
my @b = ([4, 0], [5, 0], [6, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0]);
say 'FT: ', prti FT(@a);
say 'CV: ', prti CV(\@a, \@b);
実行結果
$ perl 21_811_FT_CV.pl
FT: 6+0i, 2.41421356237309+4.41421356237309i, -2+2i, -0.414213562373095-1.5857864376269i, 2-4.89858719658941e-16i, -0.414213562373094+1.58578643762691i, -2-2i, 2.41421356237309-4.4142135623731i
CV: 4+2.66453525910038e-15i, 13+1.77635683940025e-15i, 28+8.88178419700125e-16i, 27-5.77315972805081e-15i, 18-1.77635683940025e-15i, -6.21724893790088e-15-7.99360577730113e-15i, 8.88178419700125e-15+7.105427357601e-15i, 1.24344978758018e-14-2.8421709430404e-14i
長さが2のべき乗とのことだがバタフライ演算による計算量の低減は実装していない。なお10^-15乗などの微小な数値の仮数部がお手本解と異なるところがあるが計算誤差によるもので実質0だと思う。
(やっぱ記号を使った数式よりも物理的な意味やイメージと対応付けて捉える方が俺にとってはしっくりくるわ)
use utf8;
use constant PI => 3.141592653589793;
use feature qw{signatures say};
sub 基底($波数, $N) { [map{[cos(2*PI*$波数*$_/$N), sin((2*PI*$波数*$_/$N))]} 0..$N-1] }
sub 複素数の積($a, $b) { [$$a[0]*$$b[0] - $$a[1]*$$b[1], $$a[0]*$$b[1] + $$a[1]*$$b[0]] }
use List::Util 'reduce';
sub 積和相関($x, $e) { reduce{[$$a[0]+$$b[0], $$a[1]+$$b[1]]} map{複素数の積 $$x[$_], $$e[$_]} 0..$#$e }
sub FT(@s) { map{ 積和相関(\@s, 基底($_, scalar @s)) } 0..$#s }
sub iFT(@s) { my $n = @s; map{[$$_[0]/$n, $$_[1]/$n]} map{ 積和相関(\@s, 基底(-$_, $n)) } 0..$n-1 }
sub CV($a, $b) { my @c = FT(@$a); my @d = FT(@$b); iFT( map{複素数の積 $c[$_], $d[$_]} 0..$#c ) }
sub prti { join(', ', map{"$$_[0]". (0 <= $$_[1] and '+') ."$$_[1]i"} @_) }
my @a = ([1, 0], [2, 0], [3, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0]);
my @b = ([4, 0], [5, 0], [6, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0]);
say 'FT: ', prti FT(@a);
say 'CV: ', prti CV(\@a, \@b);
実行結果
$ perl 21_811_FT_CV.pl
FT: 6+0i, 2.41421356237309+4.41421356237309i, -2+2i, -0.414213562373095-1.5857864376269i, 2-4.89858719658941e-16i, -0.414213562373094+1.58578643762691i, -2-2i, 2.41421356237309-4.4142135623731i
CV: 4+2.66453525910038e-15i, 13+1.77635683940025e-15i, 28+8.88178419700125e-16i, 27-5.77315972805081e-15i, 18-1.77635683940025e-15i, -6.21724893790088e-15-7.99360577730113e-15i, 8.88178419700125e-15+7.105427357601e-15i, 1.24344978758018e-14-2.8421709430404e-14i
830デフォルトの名無しさん
2023/06/23(金) 12:40:23.36ID:13UCTwmm お題(難易度★★)
0, 1, 2, 3, 6, 11, 20, 37 ...
上記の数列の法則を元に、n番目の整数aを求めるプログラムを作成せよ
【条件】
3 <= n <= 1000
【例】
n=6なら、a=11となる
n=9なら、a=68となる
0, 1, 2, 3, 6, 11, 20, 37 ...
上記の数列の法則を元に、n番目の整数aを求めるプログラムを作成せよ
【条件】
3 <= n <= 1000
【例】
n=6なら、a=11となる
n=9なら、a=68となる
831デフォルトの名無しさん
2023/06/23(金) 13:24:19.71ID:dK7C3R5x どういう法則なの?
832デフォルトの名無しさん
2023/06/23(金) 13:33:04.37ID:4S/+5n0L 前3つ足すかな
833デフォルトの名無しさん
2023/06/23(金) 13:39:27.23ID:dK7C3R5x なるほど
834デフォルトの名無しさん
2023/06/23(金) 14:36:35.46ID:3/mQWA5G constexpr int foo(int n){
constexpr int t[] = {1, 0, 1, 2, 3, 6, 11, 20, 37, 68};
return t[n % std::size(t)];
}
これでOK
ルールを推測させる系は出題側の意図した答えを出させるためにどう制限かけるかが問われる
constexpr int t[] = {1, 0, 1, 2, 3, 6, 11, 20, 37, 68};
return t[n % std::size(t)];
}
これでOK
ルールを推測させる系は出題側の意図した答えを出させるためにどう制限かけるかが問われる
835デフォルトの名無しさん
2023/06/23(金) 15:48:43.65ID:dK7C3R5x アスペル回答やめなよみっともない
836デフォルトの名無しさん
2023/06/23(金) 15:49:02.54ID:dK7C3R5x > これでOK
何いってんだお前
何いってんだお前
837デフォルトの名無しさん
2023/06/23(金) 15:49:31.53ID:dK7C3R5x あーあ、お前が潜水艦に乗って爆縮されたら良かったのにな~
838デフォルトの名無しさん
2023/06/23(金) 16:23:56.10ID:lCxAQSJF 潜水艦の操縦がゲームコントローラとかワクワク感たまらねぇ
マジレスするとRustで造ってれば安全だったはず
マジレスするとRustで造ってれば安全だったはず
839デフォルトの名無しさん
2023/06/23(金) 20:31:23.73ID:jsz8JGh5 >>830 ruby
https://ideone.com/lOvKLI
g = ->(m) {
a = (3...m).inject([0, 1, 2]) {|a, _| a << a[-1] + a[-2] + a[-3]}
->(n) {n < 1 || m < n ? nil : a[n - 1]}
}
f = g.(1000)
p [*0..9, 1000, 1001].map {|i| [i, f.(i)]}
↓
[[0, nil], [1, 0], [2, 1], [3, 2], [4, 3], [5, 6], [6, 11], [7, 20], [8, 37], [9, 68], [1000, 1258890285439289522674621215321790399357402658069918084564035590888323288383996894058630489346490443306057821146808944309219589954636534445475146599057985479816395429617207869586544429749851128733512216004490332659216184693670760709292866744282443549293609850952277], [1001, nil]]
https://ideone.com/lOvKLI
g = ->(m) {
a = (3...m).inject([0, 1, 2]) {|a, _| a << a[-1] + a[-2] + a[-3]}
->(n) {n < 1 || m < n ? nil : a[n - 1]}
}
f = g.(1000)
p [*0..9, 1000, 1001].map {|i| [i, f.(i)]}
↓
[[0, nil], [1, 0], [2, 1], [3, 2], [4, 3], [5, 6], [6, 11], [7, 20], [8, 37], [9, 68], [1000, 1258890285439289522674621215321790399357402658069918084564035590888323288383996894058630489346490443306057821146808944309219589954636534445475146599057985479816395429617207869586544429749851128733512216004490332659216184693670760709292866744282443549293609850952277], [1001, nil]]
840デフォルトの名無しさん
2023/06/23(金) 20:38:59.27ID:ss2MRWW+ >>830
Rでnが大きい場合にも高速に計算(例のnでは意味がないが)
www.ideone.com/FrR91K
C#でHaskell風の遅延評価による無限数列生成
www.ideone.com/ZZhdwh
初期値が一般的な値と異なってもトリボナッチ数列と呼んで良いようなので関数名はそうした。
Rでnが大きい場合にも高速に計算(例のnでは意味がないが)
www.ideone.com/FrR91K
C#でHaskell風の遅延評価による無限数列生成
www.ideone.com/ZZhdwh
初期値が一般的な値と異なってもトリボナッチ数列と呼んで良いようなので関数名はそうした。
841デフォルトの名無しさん
2023/06/23(金) 20:54:20.93ID:XMi0kQuB842638
2023/06/24(土) 00:18:48.24ID:2bg5q6qP >>830 Perl5
use feature qw{signatures say}; no warnings 'experimental';
use bigint;
sub g($n, @a) {
push(@a, $a[-3]+$a[-2]+$a[-1]) while @a < $n;
$a[-1];
}
say g($_, (0, 1, 2)) for 6, 9, 1000;
#見易くするためインデントは全角スペースに置換してあります。
実行結果(CPU: Core-i7 8559u)
$ time perl 21_830.pl
11
68
1258890285439289522674621215321790399357402658069918084564035590888323288383996894058630489346490443306057821146808944309219589954636534445475146599057985479816395429617207869586544429749851128733512216004490332659216184693670760709292866744282443549293609850952277
real 0m0.143s
user 0m0.061s
sys 0m0.062s
use feature qw{signatures say}; no warnings 'experimental';
use bigint;
sub g($n, @a) {
push(@a, $a[-3]+$a[-2]+$a[-1]) while @a < $n;
$a[-1];
}
say g($_, (0, 1, 2)) for 6, 9, 1000;
#見易くするためインデントは全角スペースに置換してあります。
実行結果(CPU: Core-i7 8559u)
$ time perl 21_830.pl
11
68
1258890285439289522674621215321790399357402658069918084564035590888323288383996894058630489346490443306057821146808944309219589954636534445475146599057985479816395429617207869586544429749851128733512216004490332659216184693670760709292866744282443549293609850952277
real 0m0.143s
user 0m0.061s
sys 0m0.062s
843デフォルトの名無しさん
2023/06/24(土) 12:05:15.03ID:InxA93a4 この問題10年前ぐらいで外資系のスキルテストで見たことあるな
844デフォルトの名無しさん
2023/06/24(土) 14:57:48.91ID:hvZZJK0e845デフォルトの名無しさん
2023/06/24(土) 15:15:39.01ID:hvZZJK0e846デフォルトの名無しさん
2023/06/24(土) 15:31:35.78ID:UXKekmZD847デフォルトの名無しさん
2023/06/24(土) 19:11:36.41ID:hvZZJK0e848デフォルトの名無しさん
2023/06/27(火) 07:02:47.02ID:vEx8Tsrp この手の代数系のn乗計算に持ち込めるタイプは
a^(2n) = (a^n) × (a^n)
a^(2n+1) = (a^n) × (a^n) × a
を利用する実装ができてるかがミソやな
a^(2n) = (a^n) × (a^n)
a^(2n+1) = (a^n) × (a^n) × a
を利用する実装ができてるかがミソやな
849デフォルトの名無しさん
2023/06/27(火) 17:20:06.80ID:nTtoyom2 >>738
C
https://ideone.com/JGH96u
まぁスーパー亀レスなんだけど普段はHaskellerなのでなんとかHaskellで完走できないかとアレやコレやと考えてみたんだけどダメだったorz
多分競プロに出るようなスーパーHaskellerならなんとかなるのかもしれないけど諦めた、試合終了
しかしせっかく色々考えたので備忘録がわりにCに移植
やっぱりCはえー、Haskellだと1分近くかかる計算が0.5秒とか
使ったのは有限体上のFourier変換
p = 1272446977、buffer size = 524288
で計算、buffer sizeを稼ぐためにBuffer sizeが2べきでなくても使えるように組んだんだけどCならそんなもんこだわらなくても余裕の完走なので結局2^19で利用
逆フーリエ変換も不要だと後で分かったけどせっかく作ったので残してあります
C
https://ideone.com/JGH96u
まぁスーパー亀レスなんだけど普段はHaskellerなのでなんとかHaskellで完走できないかとアレやコレやと考えてみたんだけどダメだったorz
多分競プロに出るようなスーパーHaskellerならなんとかなるのかもしれないけど諦めた、試合終了
しかしせっかく色々考えたので備忘録がわりにCに移植
やっぱりCはえー、Haskellだと1分近くかかる計算が0.5秒とか
使ったのは有限体上のFourier変換
p = 1272446977、buffer size = 524288
で計算、buffer sizeを稼ぐためにBuffer sizeが2べきでなくても使えるように組んだんだけどCならそんなもんこだわらなくても余裕の完走なので結局2^19で利用
逆フーリエ変換も不要だと後で分かったけどせっかく作ったので残してあります
850デフォルトの名無しさん
2023/06/28(水) 02:38:39.77ID:BKNectP5 >>819
Kotlin
Kotlin には coerceIn() というずばりそれをするための拡張関数があったのでそれを使った。
ついでに入力で負の値も受け付けるようにした。
https://paiza.io/projects/kOpfBfJtefVllIjHTVVX1g
Kotlin
Kotlin には coerceIn() というずばりそれをするための拡張関数があったのでそれを使った。
ついでに入力で負の値も受け付けるようにした。
https://paiza.io/projects/kOpfBfJtefVllIjHTVVX1g
851デフォルトの名無しさん
2023/06/28(水) 10:19:23.37ID:tyOdgkaM お題(初級)
a+b=cの式において、cが5で割り切れるためのaとbの組み合わせは何通りあるか
条件
1 <= c <= 10000000
a+b=cの式において、cが5で割り切れるためのaとbの組み合わせは何通りあるか
条件
1 <= c <= 10000000
852デフォルトの名無しさん
2023/06/28(水) 10:27:52.05ID:rc9mzp3b >>851
無限
無限
853デフォルトの名無しさん
2023/06/28(水) 16:02:12.58ID:y3h++4DU 無限なわけ無いだろと思ったけどa, bが自然数とは指定されてないからなぁ
854蟻人間 ◆T6xkBnTXz7B0
2023/06/28(水) 17:05:55.94ID:ome4PLJ4 お題:配膳ロボット。
あるレストランでは1台の配膳ロボットが活躍している。
配膳ロボットの仕事は、キッチンまで料理を取りに行き、
シェフに料理をもらい、料理をお客様まで持っていくことだ。
フロア図(上が北):
#######
#____C#
####_##
#K_#__#
##___R#
#######
#:カベ。K:キッチン。R:ロボット。C:お客様。_:空きスペース。
ロボットには次のようなコマンドが定義されている:
コマンド0:1つ待つ(料理を載せるのに必要な待ち時間)。
コマンド1:西に1つ移動。
コマンド2:東に1つ移動。
コマンド3:北に1つ移動。
コマンド4:南に1つ移動。
入力の盤面からロボットの仕事を完了するコマンドリストを生成せよ。
生成例)(1, 1, 1, 3, 1, 0, 2, 4, 2, 2, 3, 3, 3, 2, 0).
あるレストランでは1台の配膳ロボットが活躍している。
配膳ロボットの仕事は、キッチンまで料理を取りに行き、
シェフに料理をもらい、料理をお客様まで持っていくことだ。
フロア図(上が北):
#######
#____C#
####_##
#K_#__#
##___R#
#######
#:カベ。K:キッチン。R:ロボット。C:お客様。_:空きスペース。
ロボットには次のようなコマンドが定義されている:
コマンド0:1つ待つ(料理を載せるのに必要な待ち時間)。
コマンド1:西に1つ移動。
コマンド2:東に1つ移動。
コマンド3:北に1つ移動。
コマンド4:南に1つ移動。
入力の盤面からロボットの仕事を完了するコマンドリストを生成せよ。
生成例)(1, 1, 1, 3, 1, 0, 2, 4, 2, 2, 3, 3, 3, 2, 0).
855デフォルトの名無しさん
2023/06/28(水) 22:25:22.22ID:72JUC/Ak856デフォルトの名無しさん
2023/06/29(木) 21:40:36.19ID:o6Q7Yv9N >>855はもう少しすっきり書けた。
www.ideone.com/A4TRQe
www.ideone.com/A4TRQe
858デフォルトの名無しさん
2023/06/29(木) 22:55:32.18ID:o6Q7Yv9N >>857
フロア図を変えた場合の実行例
www.ideone.com/vFtBf4
出発位置から目的位置まで複数の経路がある場合は最短経路が選択されるようになっている。
解法は単純で、行列Aの途中経過表示を見れば分かるように、出発位置fromからi + 1個の
コマンドで行ける位置にi + 1と印をつける操作を、i = 1, 2, 3, , ...について順々に、
目的位置toに到達するまで繰り返すだけ。
フロア図を変えた場合の実行例
www.ideone.com/vFtBf4
出発位置から目的位置まで複数の経路がある場合は最短経路が選択されるようになっている。
解法は単純で、行列Aの途中経過表示を見れば分かるように、出発位置fromからi + 1個の
コマンドで行ける位置にi + 1と印をつける操作を、i = 1, 2, 3, , ...について順々に、
目的位置toに到達するまで繰り返すだけ。
859蟻人間 ◆T6xkBnTXz7B0
2023/06/30(金) 13:09:46.14ID:EKSFeYG5 お題:点と長方形の当たり判定。
「x0≦px<x1かつy0≦py<y1」のときtrueを返し、その他のときfalseを返す
関数PtInRect(px, py, x0, y0, x1, y1)を作成せよ。
例)
PtInRect(1, 2, 2, 2, 4, 3)→false.
PtInRect(3, 2, 2, 2, 4, 3)→true.
PtInRect(3, 3, 2, 2, 4, 3)→false.
PtInRect(4, 4, 3, 2, 5, 5)→true.
PtInRect(5, 4, 3, 2, 5, 5)→false.
「x0≦px<x1かつy0≦py<y1」のときtrueを返し、その他のときfalseを返す
関数PtInRect(px, py, x0, y0, x1, y1)を作成せよ。
例)
PtInRect(1, 2, 2, 2, 4, 3)→false.
PtInRect(3, 2, 2, 2, 4, 3)→true.
PtInRect(3, 3, 2, 2, 4, 3)→false.
PtInRect(4, 4, 3, 2, 5, 5)→true.
PtInRect(5, 4, 3, 2, 5, 5)→false.
860デフォルトの名無しさん
2023/06/30(金) 17:51:07.93ID:qvUbtEeq >>859
Kotlin script
fun PtInRect(px: Int, py: Int, x0: Int, y0: Int, x1: Int, y1: Int) = x0 <= px && px < x1 && y0 <= py && py < y1
Kotlin script
fun PtInRect(px: Int, py: Int, x0: Int, y0: Int, x1: Int, y1: Int) = x0 <= px && px < x1 && y0 <= py && py < y1
861蟻人間 ◆T6xkBnTXz7B0
2023/06/30(金) 20:29:55.07ID:EKSFeYG5 お題: テキストキャンバス、再び。
ヨコ20文字×タテ5文字の長方形の半角空白のテキストキャンバスがある。
(1) キャンバスの(x, y)の位置に半角文字chを書き込む関数SetPixelV(x, y, ch)を作成せよ。
(2) SetPixelVを使ってx0≦x≦x1かつy0≦y≦y1を満たす長方形領域(x, y)を半角文字chで塗りつぶす関数FillRect(x0, y0, x1, y1, ch)を作成せよ。
(3) テキストキャンバスを表示する関数PrintCanvas()を作成せよ。
(4) 次の処理を実行せよ。
FillRect(3, 0, 7, 4, '#');
SetPixelV(3, 0, ' ');
SetPixelV(3, 4, ' ');
SetPixelV(7, 4, ' ');
SetPixelV(7, 0, ' ');
FillRect(4, 1, 6, 3, ' ');
FillRect(11, 0, 11, 4, '#');
SetPixelV(12, 2, '#');
SetPixelV(13, 1, '#');
SetPixelV(14, 0, '#');
SetPixelV(13, 3, '#');
SetPixelV(14, 4, '#');
PrintCanvas();
ヨコ20文字×タテ5文字の長方形の半角空白のテキストキャンバスがある。
(1) キャンバスの(x, y)の位置に半角文字chを書き込む関数SetPixelV(x, y, ch)を作成せよ。
(2) SetPixelVを使ってx0≦x≦x1かつy0≦y≦y1を満たす長方形領域(x, y)を半角文字chで塗りつぶす関数FillRect(x0, y0, x1, y1, ch)を作成せよ。
(3) テキストキャンバスを表示する関数PrintCanvas()を作成せよ。
(4) 次の処理を実行せよ。
FillRect(3, 0, 7, 4, '#');
SetPixelV(3, 0, ' ');
SetPixelV(3, 4, ' ');
SetPixelV(7, 4, ' ');
SetPixelV(7, 0, ' ');
FillRect(4, 1, 6, 3, ' ');
FillRect(11, 0, 11, 4, '#');
SetPixelV(12, 2, '#');
SetPixelV(13, 1, '#');
SetPixelV(14, 0, '#');
SetPixelV(13, 3, '#');
SetPixelV(14, 4, '#');
PrintCanvas();
862デフォルトの名無しさん
2023/06/30(金) 21:04:09.04ID:LXyG/dm2863デフォルトの名無しさん
2023/07/01(土) 09:06:02.22ID:J+nsogj/864蟻人間 ◆T6xkBnTXz7B0
2023/07/01(土) 10:26:18.84ID:6ckc7dLG お題: レーザーでカラスを撃退。
右手系の三次元空間に強力なレーザー光を放射できるレーザー砲塔(ほうとう)が原点(0, 0, 0)にある。この砲塔は最初はx軸方向を向いている。
砲塔では以下のコマンドが利用可能だ。
- Turn(Pan, Tilt): 砲塔を水平方向にPanラジアン右向きに自転し、垂直方向にTiltラジアン上向きに自転するコマンド。PanとTiltの値は負でもよい。
- Fire(): 現在の向きにレーザーを放射するコマンド。
カラスの位置(x, y, z)が入力されたら、そのカラスを撃退するコマンドリストを生成せよ。
砲塔の向きはその都度、記憶するものとする。
角度を求めるのにatan2関数を使ってもよい。各数値は小数点以下2桁まで表示せよ。
例) (1, 0, 0)→(Fire()).
(0, 0, 2)→(Turn(π/2, 0), Fire()).
(0, 3, 0)→(Turn(0, π/2), Fire()).
(1, 2, 1)→???
※ カラスは鳥獣保護法で保護対象です。
右手系の三次元空間に強力なレーザー光を放射できるレーザー砲塔(ほうとう)が原点(0, 0, 0)にある。この砲塔は最初はx軸方向を向いている。
砲塔では以下のコマンドが利用可能だ。
- Turn(Pan, Tilt): 砲塔を水平方向にPanラジアン右向きに自転し、垂直方向にTiltラジアン上向きに自転するコマンド。PanとTiltの値は負でもよい。
- Fire(): 現在の向きにレーザーを放射するコマンド。
カラスの位置(x, y, z)が入力されたら、そのカラスを撃退するコマンドリストを生成せよ。
砲塔の向きはその都度、記憶するものとする。
角度を求めるのにatan2関数を使ってもよい。各数値は小数点以下2桁まで表示せよ。
例) (1, 0, 0)→(Fire()).
(0, 0, 2)→(Turn(π/2, 0), Fire()).
(0, 3, 0)→(Turn(0, π/2), Fire()).
(1, 2, 1)→???
※ カラスは鳥獣保護法で保護対象です。
865デフォルトの名無しさん
2023/07/01(土) 10:57:07.14ID:LlqqD8Ud 光子に質量は無いんだっけ
866デフォルトの名無しさん
2023/07/01(土) 11:02:27.57ID:LlqqD8Ud Turn(Pan, Tilt) は何回使っても良いのかな?
それとも 2回以上使うときは Turn(Pan, Tilt) と Turn(Pan, Tilt) の積を計算した上で
1回にまとめるべき?
それとも 2回以上使うときは Turn(Pan, Tilt) と Turn(Pan, Tilt) の積を計算した上で
1回にまとめるべき?
869デフォルトの名無しさん
2023/07/01(土) 13:53:06.23ID:2N653o6Y 大学でちゃんと講義受けてたのかどうか知らんけど
各数値は小数点以下2桁まで表示せよ。
もうこう言う言い回しをするのはやめた方がいい
各数値は小数点以下2桁まで表示せよ。
もうこう言う言い回しをするのはやめた方がいい
870デフォルトの名無しさん
2023/07/01(土) 16:42:08.76ID:J+nsogj/ >>867
初期化ミスってた。こっそり直しておいた。
初期化ミスってた。こっそり直しておいた。
871デフォルトの名無しさん
2023/07/01(土) 20:22:54.21ID:OW14MEis >>864
例は
(1, 0, 0)→(Fire()).
(0, 0, 2)→(Turn(0, π/2), Fire()).
(0, 3, 0)→(Turn(0, -π/2), Fire()).
(1, 2, 1)→???
じゃないの?
だとしてR
www.ideone.com/ddFJ7j
例は
(1, 0, 0)→(Fire()).
(0, 0, 2)→(Turn(0, π/2), Fire()).
(0, 3, 0)→(Turn(0, -π/2), Fire()).
(1, 2, 1)→???
じゃないの?
だとしてR
www.ideone.com/ddFJ7j
872蟻人間 ◆T6xkBnTXz7B0
2023/07/01(土) 20:51:13.02ID:6ckc7dLG >>871
ごめんごめん、正しくは右手系でz軸が上向き。訂正。
(1, 0, 0)→(Fire()).
(0, 0, 2)→(Turn(0, π/2), Fire()).
(0, 3, 0)→(Turn(-π/2, -π/2), Fire()).
砲塔の向きを記憶すると書いてある。また(0, 3, 0)でy軸方向を向くのにPanが必要だから、こうだろう。すみません。
ごめんごめん、正しくは右手系でz軸が上向き。訂正。
(1, 0, 0)→(Fire()).
(0, 0, 2)→(Turn(0, π/2), Fire()).
(0, 3, 0)→(Turn(-π/2, -π/2), Fire()).
砲塔の向きを記憶すると書いてある。また(0, 3, 0)でy軸方向を向くのにPanが必要だから、こうだろう。すみません。
873デフォルトの名無しさん
2023/07/01(土) 21:05:37.20ID:OW14MEis874蟻人間 ◆T6xkBnTXz7B0
2023/07/01(土) 21:13:00.67ID:6ckc7dLG >>873
うん、水平回転も必要。真上を向いていると垂直方向の意味がわからないからね。
うん、水平回転も必要。真上を向いていると垂直方向の意味がわからないからね。
875デフォルトの名無しさん
2023/07/02(日) 17:45:16.73ID:bkSdQ5Ko お題:半角スペースで区切られた単語が並ぶ文字列がある
この文字列を単語に分割してソートして配列にして返す関数を実装せよ
この文字列を単語に分割してソートして配列にして返す関数を実装せよ
876デフォルトの名無しさん
2023/07/02(日) 18:54:51.40ID:Tqn0qozx877デフォルトの名無しさん
2023/07/02(日) 20:55:09.72ID:SNPDeW60 >>875
PowerShell
function ExtractAndSortWords($s) {[RegEx]::Matches($s, "\w+") |% {$_.value} | sort}
ExtractAndSortWords "The quick brown fox jumped over the lazy dog." |% {$_}
[実行結果]
brown
dog
fox
jumped
lazy
over
quick
The
the
PowerShell
function ExtractAndSortWords($s) {[RegEx]::Matches($s, "\w+") |% {$_.value} | sort}
ExtractAndSortWords "The quick brown fox jumped over the lazy dog." |% {$_}
[実行結果]
brown
dog
fox
jumped
lazy
over
quick
The
the
878638
2023/07/03(月) 00:25:45.25ID:HgLiPfoF >>875 Perl5、出現した単語の重複を許容するか、あるいはuniqにするか明確でないけど、下記は許容する方法
sub f { sort shift =~ /(\w+)/g }
実行結果
https://ideone.com/FjaIX7
sub f { sort shift =~ /(\w+)/g }
実行結果
https://ideone.com/FjaIX7
879蟻人間 ◆T6xkBnTXz7B0
2023/07/03(月) 14:52:44.63ID:JGR8BE7g お題:放物運動の飛距離。
重量5[kg]の物体が、入力として与えられた仰角[deg]と初速[m/s]で発射され、自由落下する。
空気抵抗は、速度に比例する大きさの力とする。地平は平面と見なす。
時刻t[s]に対してdt=0.1[s]とし、台形求積法を使用するものとする。
空気抵抗係数 k=0.24[kg/m].
重力加速度 g=9.8[m/s^2].
空気抵抗のある場合の飛距離と、空気抵抗のない場合の飛距離を求め、比較せよ。
入力例)
(30, 8)→???
(45, 8)→???
(60, 8)→???
(60, 12)→???
重量5[kg]の物体が、入力として与えられた仰角[deg]と初速[m/s]で発射され、自由落下する。
空気抵抗は、速度に比例する大きさの力とする。地平は平面と見なす。
時刻t[s]に対してdt=0.1[s]とし、台形求積法を使用するものとする。
空気抵抗係数 k=0.24[kg/m].
重力加速度 g=9.8[m/s^2].
空気抵抗のある場合の飛距離と、空気抵抗のない場合の飛距離を求め、比較せよ。
入力例)
(30, 8)→???
(45, 8)→???
(60, 8)→???
(60, 12)→???
880デフォルトの名無しさん
2023/07/03(月) 23:48:04.74ID:+izrFQr7 >>879
時間刻み幅が粗すぎて着地時刻を適切に判定できないから、飛距離も求められない。
軌跡のグラフを描いて大体の位置を読み取るしかない。
R
www.mycompiler.io/view/K4qPKREzkRI
[コードを実行] ボタンを押すとグラフが表示される。白丸が空気抵抗なし、黒丸があり。
時間刻み幅が粗すぎて着地時刻を適切に判定できないから、飛距離も求められない。
軌跡のグラフを描いて大体の位置を読み取るしかない。
R
www.mycompiler.io/view/K4qPKREzkRI
[コードを実行] ボタンを押すとグラフが表示される。白丸が空気抵抗なし、黒丸があり。
881蟻人間 ◆T6xkBnTXz7B0
2023/07/04(火) 00:24:53.30ID:xKkoXb5c882デフォルトの名無しさん
2023/07/04(火) 18:50:11.09ID:o8LQKs7n >>875
Kotlin
なんとなく拡張関数で作った。まあでもsplit使っちゃってて肝心な所は自分では何も書いてないな。
https://paiza.io/projects/j1jz6yNCVfWZLIv8d5RFjA
Kotlin
なんとなく拡張関数で作った。まあでもsplit使っちゃってて肝心な所は自分では何も書いてないな。
https://paiza.io/projects/j1jz6yNCVfWZLIv8d5RFjA
883デフォルトの名無しさん
2023/07/04(火) 22:31:05.24ID:0YaO2gnD >>880の14行目は
a <- c(0, -g) - k * (v + a * dt) ^ 2 / m
でなく
a <- c(0, -g) - k * (v + aprev * dt) ^ 2 / m
の方が良かった。精度が少しだけ上がる。
a <- c(0, -g) - k * (v + a * dt) ^ 2 / m
でなく
a <- c(0, -g) - k * (v + aprev * dt) ^ 2 / m
の方が良かった。精度が少しだけ上がる。
884デフォルトの名無しさん
2023/07/04(火) 22:31:52.02ID:0YaO2gnD お題:62進数の計算
62進数の整数の加・減・乗算から成る式の文字列が入力される。計算結果を62進数の文字列で出力せよ。
ただし、10進数の0〜9, 10〜35, 36〜61に相当する数字にはそれぞれ0〜9, A〜Z, a〜zを用い、
計算の途中経過と最終結果は64ビット符号付き整数の範囲内に収まると想定して良い。
[例]
入力: 123 + ABC
出力: 123 + ABC = BDF
[問題]
2023-7-4
printf - (Hello + world)
Windows * 11
The - quick - brown * fox + jumped - over + the - lazy * dog
ABCDEFG + HIJKLMNOP + QRSTUV + WXYZ
62進数の整数の加・減・乗算から成る式の文字列が入力される。計算結果を62進数の文字列で出力せよ。
ただし、10進数の0〜9, 10〜35, 36〜61に相当する数字にはそれぞれ0〜9, A〜Z, a〜zを用い、
計算の途中経過と最終結果は64ビット符号付き整数の範囲内に収まると想定して良い。
[例]
入力: 123 + ABC
出力: 123 + ABC = BDF
[問題]
2023-7-4
printf - (Hello + world)
Windows * 11
The - quick - brown * fox + jumped - over + the - lazy * dog
ABCDEFG + HIJKLMNOP + QRSTUV + WXYZ
885デフォルトの名無しさん
2023/07/05(水) 00:02:51.51ID:f5gUiL1f886デフォルトの名無しさん
2023/07/05(水) 16:19:03.51ID:eWV2G44w >>884
Perl
計算面倒だから文字列の状態で数値部分を10進数に変換してから eval 使うという手抜きプログラム。
その代わり割り算や割った余りも出せる。( / と % )。ただし結果の出力が整数でしか出ない。
結果が負の値になってもマイナス付けて出せるようにした。
https://paiza.io/projects/zf3aXm60nlM59-TjhoiEyQ
Perl
計算面倒だから文字列の状態で数値部分を10進数に変換してから eval 使うという手抜きプログラム。
その代わり割り算や割った余りも出せる。( / と % )。ただし結果の出力が整数でしか出ない。
結果が負の値になってもマイナス付けて出せるようにした。
https://paiza.io/projects/zf3aXm60nlM59-TjhoiEyQ
887デフォルトの名無しさん
2023/07/05(水) 16:32:04.27ID:5Lz4OcyC 計算結果を62進数の文字列で出力せよ。
888デフォルトの名無しさん
2023/07/05(水) 17:55:35.60ID:eWV2G44w 出るよ。
889884
2023/07/05(水) 22:10:28.44ID:uOCDoNkY >>886
>Perl
>計算面倒だから文字列の状態で数値部分を10進数に変換してから eval 使うという手抜きプログラム
それでOK。出題者が事前に書いたRとPowerShellのプログラムもまさにそのやり方。構文解析を
自前で書かせるつもりはなかった。整数同士の割り算は結果が言語により異なるので問題から外した。
www.ideone.com/L0fgm6
www.ideone.com/J2cLd2 (実行結果は上と同じ)
RubyとPythonもevalを使えるので似たように書けるはず。なんかPとRで始まる言語ばかりだな。
>Perl
>計算面倒だから文字列の状態で数値部分を10進数に変換してから eval 使うという手抜きプログラム
それでOK。出題者が事前に書いたRとPowerShellのプログラムもまさにそのやり方。構文解析を
自前で書かせるつもりはなかった。整数同士の割り算は結果が言語により異なるので問題から外した。
www.ideone.com/L0fgm6
www.ideone.com/J2cLd2 (実行結果は上と同じ)
RubyとPythonもevalを使えるので似たように書けるはず。なんかPとRで始まる言語ばかりだな。
890638
2023/07/05(水) 23:15:53.66ID:RHYedEAt Parser generator使って自前で構文解析&計算させようとして苦戦していた俺涙目
891デフォルトの名無しさん
2023/07/06(木) 00:20:52.37ID:8lEmyrt+892蟻人間 ◆T6xkBnTXz7B0
2023/07/06(木) 20:52:00.35ID:qCiseCT1 お題: 緯度と経度から距離と方位を求める。
地球が球体であると仮定し、地球の半径を6378[km]とする。
緯度と経度を角度[deg]で与える。
北緯と西経は正の値で、南緯と東経は負の値で与えるものとする。
二点ABの緯度と経度を与えるとき、ABの距離d[km]と、AからBへ向かう方位角φ[deg]を求めよ。
方位角は北:0度、東:90度、南:180度、西:270度とする(時計回り)。
例)
A(139.74477, 35.6544), B(39.8261, 21.4225)
→(9491, 293).
参考) https://keisan.casio.jp/exec/system/1257670779
地球が球体であると仮定し、地球の半径を6378[km]とする。
緯度と経度を角度[deg]で与える。
北緯と西経は正の値で、南緯と東経は負の値で与えるものとする。
二点ABの緯度と経度を与えるとき、ABの距離d[km]と、AからBへ向かう方位角φ[deg]を求めよ。
方位角は北:0度、東:90度、南:180度、西:270度とする(時計回り)。
例)
A(139.74477, 35.6544), B(39.8261, 21.4225)
→(9491, 293).
参考) https://keisan.casio.jp/exec/system/1257670779
893デフォルトの名無しさん
2023/07/06(木) 23:43:20.91ID:jglGRjQ9894デフォルトの名無しさん
2023/07/07(金) 01:04:00.47ID:wU+5w+HX895デフォルトの名無しさん
2023/07/07(金) 11:02:22.14ID:UaYcujNV >>892
完全にぴったり地球の表裏側2点の場合の方位角は?
完全にぴったり地球の表裏側2点の場合の方位角は?
897蟻人間 ◆T6xkBnTXz7B0
2023/07/08(土) 00:02:54.35ID:pNCQQCuc お題: 緯度経度を三次元座標に変換。
地球を半径6378[km]の球体だと仮定し、地球の中心を三次元空間の原点とする。この空間は右手系である。
原点より緯度0度経度0度の地点に向かう向きをx軸方向とする。
また原点より北極点に向かう向きをz軸方向とする。
入力として与えられた緯度経度のペア[deg^2]を三次元座標[km^3]に変換せよ。
例)
(0, 0)→(6378, 0, 0).
(90, 0)→(0, 0, 6378).
(45, 0)→??? (0, -45)→???
(45, -45)→??? (30, -45)→???
地球を半径6378[km]の球体だと仮定し、地球の中心を三次元空間の原点とする。この空間は右手系である。
原点より緯度0度経度0度の地点に向かう向きをx軸方向とする。
また原点より北極点に向かう向きをz軸方向とする。
入力として与えられた緯度経度のペア[deg^2]を三次元座標[km^3]に変換せよ。
例)
(0, 0)→(6378, 0, 0).
(90, 0)→(0, 0, 6378).
(45, 0)→??? (0, -45)→???
(45, -45)→??? (30, -45)→???
898638
2023/07/08(土) 18:46:12.49ID:fDz284w7 >>884 Perl5、見易くするためインデントは全角スペースに置換してあります。
use feature qw{signatures}; no warnings 'experimental';
use Parse::RecDescent;
sub ope($valp, @args) { my $val = $valp->();
while (@args) { my ($op, $parm) = splice @args, 0, 2; $op->($val, $parm->()); } $val }
%d = map{$_ => $i++} 0..9,'A'..'Z','a'..'z';
%e = map{$d{$_} => $_} keys %d;
use List::Util 'reduce';
sub dec($d62) { reduce {$a*62 + $b} map{$d{$_}} split '', $d62 }
my $parse = new Parse::RecDescent <<'End';
expr: <leftop:term addsub term> {sub { ::ope @{$item[1]} }}
addsub: '+' {sub { $_[0] += $_[1] }} | '-' {sub { $_[0] -= $_[1] }}
term: <leftop:factor muldiv factor> { sub {::ope @{$item[1]} }}
muldiv: '*' {sub { $_[0] *= $_[1] }} | '/' {sub { $_[0] /= $_[1] }}
factor: dig62 | '(' expr ')' { $item[2] }
dig62: /[0-9A-Za-z]+/ {sub { ::dec $item[1] }}
End
sub enc($d) { my $r = $d % 62; $d = int(($d - $r) / 62); $d ? (enc($d) . $e{$r}) : $e{$r}; }
for (<DATA>) {
$n = $parse->expr($_)->();
$n = $n < 0 ? '-' . enc(-$n) : enc($n);
print "$_ = $n\n";
}
__DATA__
123 + ABC
4 - K
2023-7-4
printf - (Hello + world)
Windows * 11
The - quick - brown * fox + jumped - over + the - lazy * dog
ABCDEFG + HIJKLMNOP + QRSTUV + WXYZ
use feature qw{signatures}; no warnings 'experimental';
use Parse::RecDescent;
sub ope($valp, @args) { my $val = $valp->();
while (@args) { my ($op, $parm) = splice @args, 0, 2; $op->($val, $parm->()); } $val }
%d = map{$_ => $i++} 0..9,'A'..'Z','a'..'z';
%e = map{$d{$_} => $_} keys %d;
use List::Util 'reduce';
sub dec($d62) { reduce {$a*62 + $b} map{$d{$_}} split '', $d62 }
my $parse = new Parse::RecDescent <<'End';
expr: <leftop:term addsub term> {sub { ::ope @{$item[1]} }}
addsub: '+' {sub { $_[0] += $_[1] }} | '-' {sub { $_[0] -= $_[1] }}
term: <leftop:factor muldiv factor> { sub {::ope @{$item[1]} }}
muldiv: '*' {sub { $_[0] *= $_[1] }} | '/' {sub { $_[0] /= $_[1] }}
factor: dig62 | '(' expr ')' { $item[2] }
dig62: /[0-9A-Za-z]+/ {sub { ::dec $item[1] }}
End
sub enc($d) { my $r = $d % 62; $d = int(($d - $r) / 62); $d ? (enc($d) . $e{$r}) : $e{$r}; }
for (<DATA>) {
$n = $parse->expr($_)->();
$n = $n < 0 ? '-' . enc(-$n) : enc($n);
print "$_ = $n\n";
}
__DATA__
123 + ABC
4 - K
2023-7-4
printf - (Hello + world)
Windows * 11
The - quick - brown * fox + jumped - over + the - lazy * dog
ABCDEFG + HIJKLMNOP + QRSTUV + WXYZ
899638
2023/07/08(土) 18:47:35.93ID:fDz284w7 >>898 の実行結果:
$ perl 21_884_calc_dig26.pl
123 + ABC
= BDF
4 - K
= -G
2023-7-4
= 201s
printf - (Hello + world)
= odFAME
Windows * 11
= XFWRSlos
The - quick - brown * fox + jumped - over + the - lazy * dog
= -Q1YGAW2x
ABCDEFG + HIJKLMNOP + QRSTUV + WXYZ
= HITvzYcgj
※ Parse::RecDescentという再帰降下型Parser generatorのperl moduleを使用したので、
動作させるにはそのインストールされている必要がありますが、ideonなどのオンライン
プログラムサービスには多分インストールされていなくて動作しないんじゃないかなともいます
$ perl 21_884_calc_dig26.pl
123 + ABC
= BDF
4 - K
= -G
2023-7-4
= 201s
printf - (Hello + world)
= odFAME
Windows * 11
= XFWRSlos
The - quick - brown * fox + jumped - over + the - lazy * dog
= -Q1YGAW2x
ABCDEFG + HIJKLMNOP + QRSTUV + WXYZ
= HITvzYcgj
※ Parse::RecDescentという再帰降下型Parser generatorのperl moduleを使用したので、
動作させるにはそのインストールされている必要がありますが、ideonなどのオンライン
プログラムサービスには多分インストールされていなくて動作しないんじゃないかなともいます
900デフォルトの名無しさん
2023/07/08(土) 21:33:55.36ID:CSKg1TdC901884
2023/07/08(土) 21:40:41.86ID:CSKg1TdC >>898
ならば出題者からもeval任せでない自前の実装プログラムをどうぞ。
C
www.ideone.com/erwpI4
「C言語による最新アルゴリズム事典」に載っている10進小数の四則演算式評価プログラムを
ちょっと改変したらサッと作れた。
C++
www.ideone.com/MFEuc6
Cプログラムのグローバル変数と下請け関数をクラスに入れて隠蔽した。readch関数のかわりに、
空白を読み飛ばすようにオーバーライドした++演算子を使ってすっきり書いた。
ならば出題者からもeval任せでない自前の実装プログラムをどうぞ。
C
www.ideone.com/erwpI4
「C言語による最新アルゴリズム事典」に載っている10進小数の四則演算式評価プログラムを
ちょっと改変したらサッと作れた。
C++
www.ideone.com/MFEuc6
Cプログラムのグローバル変数と下請け関数をクラスに入れて隠蔽した。readch関数のかわりに、
空白を読み飛ばすようにオーバーライドした++演算子を使ってすっきり書いた。
902デフォルトの名無しさん
2023/07/08(土) 22:03:59.24ID:+KTtE1Ht イヤ、スクラッチで書いても意味ないでしょ?
903638
2023/07/08(土) 22:09:14.33ID:fDz284w7 四則演算の式評価なら1数十stepでParserを手書きできるということでそれもありじゃね?
904デフォルトの名無しさん
2023/07/08(土) 22:12:28.67ID:+KTtE1Ht うーん、まぁそれはそうも言えるかな
しかしその手の話は結局“車輪の再発明”してるだけだからな
parsingみたいに重たい処理は可能なら既存の実績のあるparser generator使えるならそれ使うのか本筋な気はするけどね
初学者がparsingの基礎の練習問題として使うのはありかな
しかしその手の話は結局“車輪の再発明”してるだけだからな
parsingみたいに重たい処理は可能なら既存の実績のあるparser generator使えるならそれ使うのか本筋な気はするけどね
初学者がparsingの基礎の練習問題として使うのはありかな
905638
2023/07/08(土) 22:16:05.45ID:fDz284w7 GCCやCLangも何とparserはyaccなど使わずに手書きなんだそうだ。
理由は下記サイトなど参照。きめ細かいエラー処理など可能になるかもしれないがコードはとても込み入って大変そうだわ。
c - Are GCC and Clang parsers really handwritten? - Stack Overflow
https://stackoverflow.com/questions/6319086/are-gcc-and-clang-parsers-really-handwritten
理由は下記サイトなど参照。きめ細かいエラー処理など可能になるかもしれないがコードはとても込み入って大変そうだわ。
c - Are GCC and Clang parsers really handwritten? - Stack Overflow
https://stackoverflow.com/questions/6319086/are-gcc-and-clang-parsers-really-handwritten
906デフォルトの名無しさん
2023/07/09(日) 07:12:14.55ID:LeSv46FO まぁ物によるだろうけどほとんどのプログラミング言語は最低でも文脈依存文法以上を解析できるパーサーでないと解析できない
ましてや今日のコンパイラは何行目の何文字目がおかしいのか、それがどんな間違いなのかも示して修正案まで出してくれる、そこまでの作業を一般的なパーサー生成機に落とし込むこと1から考えるよりはパーサーそのもの自分で作る方が早いかもしれんわな
ただ今回のは四則演算とカッコだけなんだから文脈自由文法の解析機で解析できるから素人が作った解析機を使わない意味は実用上はまずない、まさに車輪の再発明の典型になってしまう
しかしまぁここはある意味“再発明を楽しむスレ”でもあるからなw
ましてや今日のコンパイラは何行目の何文字目がおかしいのか、それがどんな間違いなのかも示して修正案まで出してくれる、そこまでの作業を一般的なパーサー生成機に落とし込むこと1から考えるよりはパーサーそのもの自分で作る方が早いかもしれんわな
ただ今回のは四則演算とカッコだけなんだから文脈自由文法の解析機で解析できるから素人が作った解析機を使わない意味は実用上はまずない、まさに車輪の再発明の典型になってしまう
しかしまぁここはある意味“再発明を楽しむスレ”でもあるからなw
907デフォルトの名無しさん
2023/07/09(日) 07:18:47.36ID:LeSv46FO 専門家の作った解析機を使わない意味はないだorz
まぁただパーサー生成機の作ったパーサーはもちろん「どんな文法でも対応できる」ために効率を犠牲にする場合もあるので速度とかをギチギチにチューンするつもりなら意味はあるか
実際今回のも()と+,-,×だけやからな
まぁただパーサー生成機の作ったパーサーはもちろん「どんな文法でも対応できる」ために効率を犠牲にする場合もあるので速度とかをギチギチにチューンするつもりなら意味はあるか
実際今回のも()と+,-,×だけやからな
908蟻人間 ◆T6xkBnTXz7B0
2023/07/09(日) 09:04:09.08ID:S0HvsOQY お題: 飛翔体のシミュレーション。
クレムリン(北緯55度東経37度)から東京(北緯35度東経139度)に向けて初速12[km/s]、重量30[kg]の飛翔体が発射される。
地球は半径6378[km]の球体と仮定し、重力加速度を9.8[m/s^2]とする。
飛翔体は噴射せず自由落下すると仮定する。空気抵抗は考慮しない。
発射時刻をt=0[s]とするとき、t=120とt=240のときの飛翔体の座標[deg^2]を求めよ。
(この情報はフィクションであり、架空のものです。実際の軍事情報とは関係ありません)
クレムリン(北緯55度東経37度)から東京(北緯35度東経139度)に向けて初速12[km/s]、重量30[kg]の飛翔体が発射される。
地球は半径6378[km]の球体と仮定し、重力加速度を9.8[m/s^2]とする。
飛翔体は噴射せず自由落下すると仮定する。空気抵抗は考慮しない。
発射時刻をt=0[s]とするとき、t=120とt=240のときの飛翔体の座標[deg^2]を求めよ。
(この情報はフィクションであり、架空のものです。実際の軍事情報とは関係ありません)
909デフォルトの名無しさん
2023/07/09(日) 15:00:34.36ID:x2TUQyIt 最後の注意書きが寒い
だったら最初から固有名詞出さなきゃ良いのに
だったら最初から固有名詞出さなきゃ良いのに
910蟻人間 ◆T6xkBnTXz7B0
2023/07/09(日) 16:39:33.98ID:vyR210yR >>908
防衛装備移転三原則に反する恐れがあるので、このお題は撤回致します。回答しないで下さい。
防衛装備移転三原則に反する恐れがあるので、このお題は撤回致します。回答しないで下さい。
911デフォルトの名無しさん
2023/07/09(日) 18:30:16.18ID:trhah0Kt 自分の書き込みにそんなに勝ちがあると思ってるのかこいつ
スベってるよ
スベってるよ
912デフォルトの名無しさん
2023/07/09(日) 18:54:23.02ID:GCtDZZpJ913デフォルトの名無しさん
2023/07/09(日) 21:17:36.11ID:HwvqYkKm914638
2023/07/10(月) 15:31:23.20ID:FUofuCtL >>897 Perl5、見やすくするためインデントは全角スペースに置換してあります。
たまには回答して進ぜるけど、もしかして回答欲しくて簡単なお題だしたん?
use Math::Trig qw{pi deg2rad spherical_to_cartesian};
use constant ra => 6378;
for (<DATA>) {
($lo, $la) = map{deg2rad($_)} /(-?\d+)/g;
# 球面→cartesian座標変換library使用
$phy = pi / 2.0 - $lo;
($x, $y, $z) = spherical_to_cartesian(ra, $la, $phy);
printf "L) (%.3f, %.3f)[rad] -> (%.1f, %.1f, %.1f)\n", $lo, $la, $x, $y, $z;
# 手書き
$ralo = ra * cos($lo);
printf "H) (%.3f, %.3f)[rad] -> (%.1f, %.1f, %.1f)\n", $lo, $la,
$ralo * cos($la), $ralo * sin($la), ra * sin($lo);
}
__DATA__
(0, 0)
(90, 0)
(45, 0)
(45, -45)
実行結果
$ perl 21_897_緯度経度→xyz.pl
L) (0.000, 0.000)[rad] -> (6378.0, 0.0, 0.0)
H) (0.000, 0.000)[rad] -> (6378.0, 0.0, 0.0)
L) (1.571, 0.000)[rad] -> (0.0, 0.0, 6378.0)
H) (1.571, 0.000)[rad] -> (0.0, 0.0, 6378.0)
L) (0.785, 0.000)[rad] -> (4509.9, 0.0, 4509.9)
H) (0.785, 0.000)[rad] -> (4509.9, 0.0, 4509.9)
L) (0.785, -0.785)[rad] -> (3189.0, -3189.0, 4509.9)
H) (0.785, -0.785)[rad] -> (3189.0, -3189.0, 4509.9)
たまには回答して進ぜるけど、もしかして回答欲しくて簡単なお題だしたん?
use Math::Trig qw{pi deg2rad spherical_to_cartesian};
use constant ra => 6378;
for (<DATA>) {
($lo, $la) = map{deg2rad($_)} /(-?\d+)/g;
# 球面→cartesian座標変換library使用
$phy = pi / 2.0 - $lo;
($x, $y, $z) = spherical_to_cartesian(ra, $la, $phy);
printf "L) (%.3f, %.3f)[rad] -> (%.1f, %.1f, %.1f)\n", $lo, $la, $x, $y, $z;
# 手書き
$ralo = ra * cos($lo);
printf "H) (%.3f, %.3f)[rad] -> (%.1f, %.1f, %.1f)\n", $lo, $la,
$ralo * cos($la), $ralo * sin($la), ra * sin($lo);
}
__DATA__
(0, 0)
(90, 0)
(45, 0)
(45, -45)
実行結果
$ perl 21_897_緯度経度→xyz.pl
L) (0.000, 0.000)[rad] -> (6378.0, 0.0, 0.0)
H) (0.000, 0.000)[rad] -> (6378.0, 0.0, 0.0)
L) (1.571, 0.000)[rad] -> (0.0, 0.0, 6378.0)
H) (1.571, 0.000)[rad] -> (0.0, 0.0, 6378.0)
L) (0.785, 0.000)[rad] -> (4509.9, 0.0, 4509.9)
H) (0.785, 0.000)[rad] -> (4509.9, 0.0, 4509.9)
L) (0.785, -0.785)[rad] -> (3189.0, -3189.0, 4509.9)
H) (0.785, -0.785)[rad] -> (3189.0, -3189.0, 4509.9)
915デフォルトの名無しさん
2023/07/11(火) 15:24:57.95ID:zBgA5NaS お題:神経質なipow10()
整数を引数とし、その10のべき乗を浮動小数点数で返す関数を書け。
結果が浮動小数点数で厳密に表現出来ない場合(10の-1乗=0.1とか)、
浮動小数点数として、(結果を)厳密に最近値に丸めた値を返すこと。
整数を引数とし、その10のべき乗を浮動小数点数で返す関数を書け。
結果が浮動小数点数で厳密に表現出来ない場合(10の-1乗=0.1とか)、
浮動小数点数として、(結果を)厳密に最近値に丸めた値を返すこと。
916デフォルトの名無しさん
2023/07/11(火) 15:51:15.42ID:nXEJ21bU 高校時代全く数学できなかったんだろうなぁ
917915
2023/07/12(水) 01:10:01.78ID:OtxkddAG 正の整数の範囲だけなら、CPythonのmath.pow()もそう悪くないんだ…
(10**23と10**210が外れ)。
tps://sagecell.sagemath.org/?z=eJxdjUEKwyAURPeB3GG601REt4WeRVxo86H6xQhNb18lLaWd5Zt5TKycsD03UCpcG-KdfXOUI89THF3ybf2UhR-dcgWBMqrPtyC-gk5-d9a4sBecYeVlntBDcXjCGm0USOJ0PU46wbJ08t6NlEq5CVI_hl7DLqT6sw4qXzvIOGU=&lang=python&interacts=eJyLjgUAARUAuQ==
(10**23と10**210が外れ)。
tps://sagecell.sagemath.org/?z=eJxdjUEKwyAURPeB3GG601REt4WeRVxo86H6xQhNb18lLaWd5Zt5TKycsD03UCpcG-KdfXOUI89THF3ybf2UhR-dcgWBMqrPtyC-gk5-d9a4sBecYeVlntBDcXjCGm0USOJ0PU46wbJ08t6NlEq5CVI_hl7DLqT6sw4qXzvIOGU=&lang=python&interacts=eJyLjgUAARUAuQ==
918デフォルトの名無しさん
2023/07/12(水) 09:36:32.37ID:OzccPY9R この手の計算ライブラリではあるある
真値が無理数の場合次善策として“最近の値”を出す事、当然それ出してくれると思いがちだけどそんな値出してくれるライブラリなどほとんどない
原理的に出せないわけではない、適当にレジスタの精度を設定して上から、下からの近似値を出す、求める桁数まで一致してればそれが“最近”、一致してなければ精度上げて再計算‥を繰り返せば必ず最後は一致する‥でもそのために貴重な時間リソースが無駄になる、なので普通は“精度は±××、上からの近似の中では最良”くらいが関の山、それすら守ってなくても普通、ましてや“小数第何位までは確実に合ってる”などとは全く期待できない
そのあたりの“実用上それで十分、それ以上の事やって誰得?”と割り切れるまでが一週目
真値が無理数の場合次善策として“最近の値”を出す事、当然それ出してくれると思いがちだけどそんな値出してくれるライブラリなどほとんどない
原理的に出せないわけではない、適当にレジスタの精度を設定して上から、下からの近似値を出す、求める桁数まで一致してればそれが“最近”、一致してなければ精度上げて再計算‥を繰り返せば必ず最後は一致する‥でもそのために貴重な時間リソースが無駄になる、なので普通は“精度は±××、上からの近似の中では最良”くらいが関の山、それすら守ってなくても普通、ましてや“小数第何位までは確実に合ってる”などとは全く期待できない
そのあたりの“実用上それで十分、それ以上の事やって誰得?”と割り切れるまでが一週目
919915
2023/07/12(水) 15:28:21.53ID:6VP/LOOe "1e23" とかの文字列を構成して、Cのstrtod()やsscand()的な関数を使って変換する分には誤差が出ないっぽいのですけど
(これの誤差が出るライブラリは駆逐されたらしい)、
これはこれで「負け」た気分になるのが…w
(これの誤差が出るライブラリは駆逐されたらしい)、
これはこれで「負け」た気分になるのが…w
921デフォルトの名無しさん
2023/07/12(水) 17:47:05.90ID:MwP3bMsR 分母が2べきでない限り内部的に分母が2べきの有理数で保持するタイプの浮動小数は“定数”を10進のリテラルで与えるとそこで誤差が出たり、あるいはその逆もある、いわゆる基数変換誤差
多くの場合、基数変換誤差は計算の最初と最後でしかでないのでそもそもあまり話題にはならない、大昔のインタプリタ言語とかだったら計算結果を毎回10進表示に変換して文字列として保持してるようなやつもあっただろうけど、もう流石にそのタイプは駆逐されてるんじゃなかろか
大体そもそも他の組み込み関数の誤差評価がもっと大甘なのにそこだけ頑張っても意味がない
多くの場合、基数変換誤差は計算の最初と最後でしかでないのでそもそもあまり話題にはならない、大昔のインタプリタ言語とかだったら計算結果を毎回10進表示に変換して文字列として保持してるようなやつもあっただろうけど、もう流石にそのタイプは駆逐されてるんじゃなかろか
大体そもそも他の組み込み関数の誤差評価がもっと大甘なのにそこだけ頑張っても意味がない
922デフォルトの名無しさん
2023/07/12(水) 18:35:23.52ID:wgfcR5Sc COBOLはまだまだ健在ですよ
923915
2023/07/13(木) 05:18:24.50ID:102DBCHI 何で「負け」なのかと云うと、
IEEE754的な意味での「再現性」を担保する為に
(binary64の数値を有効桁17桁で10進文字列に変換して、
それをstrtod()とかするとbit perfectで元に戻るってやつ)、
strtod()とかは内部で多倍長演算をやってるので…。
(glibcの実装(GNU MPに丸投げ?)と、ルーセントの中の人
が書いたやつ(そのほか)の2系統あり)。
…なんとかズル出来ないのか?w
IEEE754的な意味での「再現性」を担保する為に
(binary64の数値を有効桁17桁で10進文字列に変換して、
それをstrtod()とかするとbit perfectで元に戻るってやつ)、
strtod()とかは内部で多倍長演算をやってるので…。
(glibcの実装(GNU MPに丸投げ?)と、ルーセントの中の人
が書いたやつ(そのほか)の2系統あり)。
…なんとかズル出来ないのか?w
924915
2023/07/13(木) 05:22:25.37ID:102DBCHI 要するに牛刀割鶏感がでかい
いまさら気にしても仕方がなくもないけど
いまさら気にしても仕方がなくもないけど
925デフォルトの名無しさん
2023/07/13(木) 05:46:44.20ID:UahP4Rhb そもそもコレ変数へ値をそんな自由に“セット”する方法がないんだよな
例えば値が10^(-30)として二進展開して
2^(-30)
=1.100_0010_1000_0010_0101_1111_...×2^(-103)
という巡回小数になる
単精度での内部表示は
0_00011000_100_0010_1000_0010_0110_0000
になる、なるとわかってもこの値を変数にセットす方法がない
おそらく整数0xc68660をセットして2^24で割ればいける時もあるかもしれないけどそれとて言語の保証外、浮動小数点型の変数に何か値をセットしてそれを2べきの整数で割ったとて、いくら“割る数”が2べきであっても仮数部わ変わらず指数部だけ変わってくれる保証をしてる言語の方が少ない
実験すればそれでうまくいくかどうかわかるかもしれないけどregulationでそれでうまくいくと保証されてるわけではない、せいぜい“多分うまく行ってる”くらいしかわからない
Cとかなら[char]型でa[0]a[1]a[2]a[3]に値入れてfloat &bにb=aするとかできるかもしれないけど最近の型にうるさい言語だとそれとてできない
例えば値が10^(-30)として二進展開して
2^(-30)
=1.100_0010_1000_0010_0101_1111_...×2^(-103)
という巡回小数になる
単精度での内部表示は
0_00011000_100_0010_1000_0010_0110_0000
になる、なるとわかってもこの値を変数にセットす方法がない
おそらく整数0xc68660をセットして2^24で割ればいける時もあるかもしれないけどそれとて言語の保証外、浮動小数点型の変数に何か値をセットしてそれを2べきの整数で割ったとて、いくら“割る数”が2べきであっても仮数部わ変わらず指数部だけ変わってくれる保証をしてる言語の方が少ない
実験すればそれでうまくいくかどうかわかるかもしれないけどregulationでそれでうまくいくと保証されてるわけではない、せいぜい“多分うまく行ってる”くらいしかわからない
Cとかなら[char]型でa[0]a[1]a[2]a[3]に値入れてfloat &bにb=aするとかできるかもしれないけど最近の型にうるさい言語だとそれとてできない
926デフォルトの名無しさん
2023/07/13(木) 06:10:46.95ID:FkuVPs5p 0xc28260÷2^24乗ね
この計算をさせて本当に内部的に変数に0_00011000_100_0010_1000_0010_0110_0000
がセットされたかどうか確認する方法もない
もう一回2^24かけて0xc28260かけて戻ってくるかチェックするとかして間接的に確かめるしかない
Cとかputhonとかならできるのかもしれないけど
この計算をさせて本当に内部的に変数に0_00011000_100_0010_1000_0010_0110_0000
がセットされたかどうか確認する方法もない
もう一回2^24かけて0xc28260かけて戻ってくるかチェックするとかして間接的に確かめるしかない
Cとかputhonとかならできるのかもしれないけど
927蟻人間 ◆T6xkBnTXz7B0
2023/07/13(木) 21:54:33.63ID:pFytGTyV お題: 入力として32ビット整数のビットマスクが与えられる。
ビットマスクに含まれる有効なビットの組み合わせをブルートフォースせよ。
例)
0x13
→(0x1, 0x2, 0x3, 0x10, 0x11, 0x12, 0x13).
0x45
→(0x1, 0x4, 0x5, 0x40, 0x41, 0x44, 0x45).
0x92C
→???
ビットマスクに含まれる有効なビットの組み合わせをブルートフォースせよ。
例)
0x13
→(0x1, 0x2, 0x3, 0x10, 0x11, 0x12, 0x13).
0x45
→(0x1, 0x4, 0x5, 0x40, 0x41, 0x44, 0x45).
0x92C
→???
928デフォルトの名無しさん
2023/07/13(木) 22:05:50.51ID:zo6OijSK930デフォルトの名無しさん
2023/07/13(木) 23:34:46.42ID:Gk3QqB7S931デフォルトの名無しさん
2023/07/13(木) 23:41:47.50ID:qsjHWAGp sort意味なしorz
932デフォルトの名無しさん
2023/07/14(金) 00:29:53.20ID:iQAPuZ6f933蟻人間 ◆T6xkBnTXz7B0
2023/07/14(金) 12:13:37.67ID:i4ROjxmQ お題: ぶつかる迷路。
入力として与えられたフロア図の表すフロアのA地点にロボットRがあり、B地点にロボットSがある。しかし、RとSは同時に同じ場所を占有することはできない(衝突する)。
フロア図の例(上が北):
#######
#_A___#
#_#_###
#_#__B#
#######
#:カベ、_:空きスペース、A:A地点、B:B地点。
ロボットRとSは次の5つのコマンドが使用できる。
コマンド0:一つ待つ。
コマンド1:西に1つ動く。
コマンド2:東に1つ動く。
コマンド3:北に1つ動く。
コマンド4:南に1つ動く。
RがB地点に、SがA地点に到達するまで、RとSを最短のコマンドリストで動かせ。
到達できないときは「ERROR」と表示して終了せよ。
入力として与えられたフロア図の表すフロアのA地点にロボットRがあり、B地点にロボットSがある。しかし、RとSは同時に同じ場所を占有することはできない(衝突する)。
フロア図の例(上が北):
#######
#_A___#
#_#_###
#_#__B#
#######
#:カベ、_:空きスペース、A:A地点、B:B地点。
ロボットRとSは次の5つのコマンドが使用できる。
コマンド0:一つ待つ。
コマンド1:西に1つ動く。
コマンド2:東に1つ動く。
コマンド3:北に1つ動く。
コマンド4:南に1つ動く。
RがB地点に、SがA地点に到達するまで、RとSを最短のコマンドリストで動かせ。
到達できないときは「ERROR」と表示して終了せよ。
934蟻人間 ◆T6xkBnTXz7B0
2023/07/14(金) 13:10:06.13ID:i4ROjxmQ935638
2023/07/14(金) 16:41:43.17ID:9h33JNqm >>927 Perl5
for (qw(0x13 0x45 0x92C)) {
$n = eval;
@a = map{sprintf "0x%x", $_} grep{($_ & $n) == $_} 0..$n;
print "$_: @a\n";
}
※インデントは全角スペースに置換してあります。
実行結果
$ perl 21_927.pl
0x13: 0x0 0x1 0x2 0x3 0x10 0x11 0x12 0x13
0x45: 0x0 0x1 0x4 0x5 0x40 0x41 0x44 0x45
0x92C: 0x0 0x4 0x8 0xc 0x20 0x24 0x28 0x2c 0x100 0x104 0x108 0x10c 0x120 0x124 0x128 0x12c 0x800 0x804 0x808 0x80c 0x820 0x824 0x828 0x82c 0x900 0x904 0x908 0x90c 0x920 0x924 0x928 0x92c
for (qw(0x13 0x45 0x92C)) {
$n = eval;
@a = map{sprintf "0x%x", $_} grep{($_ & $n) == $_} 0..$n;
print "$_: @a\n";
}
※インデントは全角スペースに置換してあります。
実行結果
$ perl 21_927.pl
0x13: 0x0 0x1 0x2 0x3 0x10 0x11 0x12 0x13
0x45: 0x0 0x1 0x4 0x5 0x40 0x41 0x44 0x45
0x92C: 0x0 0x4 0x8 0xc 0x20 0x24 0x28 0x2c 0x100 0x104 0x108 0x10c 0x120 0x124 0x128 0x12c 0x800 0x804 0x808 0x80c 0x820 0x824 0x828 0x82c 0x900 0x904 0x908 0x90c 0x920 0x924 0x928 0x92c
936638
2023/07/14(金) 18:16:11.02ID:9h33JNqm >>935 これだとコード書くの安直で楽だけど、効率悪いんだよね、特に値が大きいとき。
効率に配慮すると、こうか↓
sub f {
if (@_) {
my $b = shift;
@_ ? map{$_, $_ | 2**$b} f(@_) : ($_, $_ | 2**$b);
}
}
for (qw(0x13 0x45 0x92C)) {
$n = eval;
@b = grep{$n & 2**$_} 0..31;
@s = map{sprintf "0x%x", $_} f(@b);
print "$_: @s\n";
}
※インデントは全角スペースで置換してありま
実行結果:
$ perl 21_927_effective_bit_mask.pl
0x13: 0x0 0x1 0x2 0x3 0x10 0x11 0x12 0x13
0x45: 0x0 0x1 0x4 0x5 0x40 0x41 0x44 0x45
0x92C: 0x0 0x4 0x8 0xc 0x20 0x24 0x28 0x2c 0x100 0x104 0x108 0x10c 0x120 0x124 0x128 0x12c 0x800 0x804 0x808 0x80c 0x820 0x824 0x828 0x82c 0x900 0x904 0x908 0x90c 0x920 0x924 0x928 0x92c
効率に配慮すると、こうか↓
sub f {
if (@_) {
my $b = shift;
@_ ? map{$_, $_ | 2**$b} f(@_) : ($_, $_ | 2**$b);
}
}
for (qw(0x13 0x45 0x92C)) {
$n = eval;
@b = grep{$n & 2**$_} 0..31;
@s = map{sprintf "0x%x", $_} f(@b);
print "$_: @s\n";
}
※インデントは全角スペースで置換してありま
実行結果:
$ perl 21_927_effective_bit_mask.pl
0x13: 0x0 0x1 0x2 0x3 0x10 0x11 0x12 0x13
0x45: 0x0 0x1 0x4 0x5 0x40 0x41 0x44 0x45
0x92C: 0x0 0x4 0x8 0xc 0x20 0x24 0x28 0x2c 0x100 0x104 0x108 0x10c 0x120 0x124 0x128 0x12c 0x800 0x804 0x808 0x80c 0x820 0x824 0x828 0x82c 0x900 0x904 0x908 0x90c 0x920 0x924 0x928 0x92c
937915
2023/07/14(金) 19:28:34.12ID:Q8y8QZ/7 仕事で書いたら怒られるやつw
(プラットホームや、ライブラリのバージョンとかに依存する可能性があるから)
tps://sagecell.sagemath.org/?z=eJy1krFqwzAQhneD3-FKhsjguFJsUmooHdK1UOjQsTi27BzYklEUkrxEpy6FQpcOfoi-Tto-RqTaISElzdSbdHe679fxK1eygirRU8CqlkpDLReuk9tqxlOsknLbuGlT13GdjOeA5iKjBL3YdcCEYaQG0mU20mTGYcBGYQw9GN-t9FSKMGAsiMgDikwuZjCKJqi93YgNxfVcCWDcjh7QhoYFJ2hwDvdJwW_tTmNelqREMV_CchRBUeIkhetjgsNfcozG_yjH6IFeSKOTekdgZrTtdBXjDmE0oD6gZy3rwef763fz8fXcrJ_e1i_NvouPtZJa6lXNd352nLyUiSad94QYHmG-Z6neDzeXChBQgEpEwckgpBe-2eNyi8G9nwJnV38I2qgVCk3si9tTP5OC970Noga8Nw==&lang=python&interacts=eJyLjgUAARUAuQ==
(プラットホームや、ライブラリのバージョンとかに依存する可能性があるから)
tps://sagecell.sagemath.org/?z=eJy1krFqwzAQhneD3-FKhsjguFJsUmooHdK1UOjQsTi27BzYklEUkrxEpy6FQpcOfoi-Tto-RqTaISElzdSbdHe679fxK1eygirRU8CqlkpDLReuk9tqxlOsknLbuGlT13GdjOeA5iKjBL3YdcCEYaQG0mU20mTGYcBGYQw9GN-t9FSKMGAsiMgDikwuZjCKJqi93YgNxfVcCWDcjh7QhoYFJ2hwDvdJwW_tTmNelqREMV_CchRBUeIkhetjgsNfcozG_yjH6IFeSKOTekdgZrTtdBXjDmE0oD6gZy3rwef763fz8fXcrJ_e1i_NvouPtZJa6lXNd352nLyUiSad94QYHmG-Z6neDzeXChBQgEpEwckgpBe-2eNyi8G9nwJnV38I2qgVCk3si9tTP5OC970Noga8Nw==&lang=python&interacts=eJyLjgUAARUAuQ==
938デフォルトの名無しさん
2023/07/14(金) 22:15:33.11ID:iQAPuZ6f940蟻人間 ◆T6xkBnTXz7B0
2023/07/14(金) 22:31:38.64ID:PGyidJ8C >>939
移動量も最短にする。また、動けるとき、かつ待てるときは待つよりも先に動く方を優先するという条件を追加します。
移動量も最短にする。また、動けるとき、かつ待てるときは待つよりも先に動く方を優先するという条件を追加します。
941蟻人間 ◆T6xkBnTXz7B0
2023/07/14(金) 22:44:41.18ID:PGyidJ8C942デフォルトの名無しさん
2023/07/15(土) 03:29:30.91ID:deBIZu3e >>927 Ruby
def solution( mk )
mb = 1
a = [0]
print "0x%X\n→(" % mk
while mk > 0
a.dup.each{|b| a << b + mb } if mk.odd?
mb <<= 1
mk >>= 1
end
puts a.map{|x| '0x%X' % x }.join(', ') + ')'
end
solution( 0 ) # 0の場合 0x0でいいのかな?
solution( 0x13 )
solution( 0x45 )
solution( 0x92C )
def solution( mk )
mb = 1
a = [0]
print "0x%X\n→(" % mk
while mk > 0
a.dup.each{|b| a << b + mb } if mk.odd?
mb <<= 1
mk >>= 1
end
puts a.map{|x| '0x%X' % x }.join(', ') + ')'
end
solution( 0 ) # 0の場合 0x0でいいのかな?
solution( 0x13 )
solution( 0x45 )
solution( 0x92C )
943デフォルトの名無しさん
2023/07/15(土) 08:05:25.03ID:DpclFvGX >>925
ツッコミどころが多すぎる
正しくはこうでは?
10^(-30)
=1.010_0010_0100_0010_0101_1111_...×2^(-100)
さらに、...部分は1111...と続くので、単精度にするなら切り上げになって、
1.010_0010_0100_0010_0110_0000×2^(-100)
よって、単精度での内部表示は
0_00011011_010_0010_0100_0010_0110_0000
整数0xa24260をセットして2^123で割ればいける
2のべき乗での割り算すら信用できないなら、ldexpあたりを使うのはどうか。pythonならこちら
(pythonは単精度が無いので結果は少しずれる)
from math import ldexp
print(ldexp(0xa24260, -123))
もしくは、バイト列経由で直接変換もあり。pythonならこちら
from struct import pack, unpack
print(unpack('f', pack('I', 0b0_00011011_010_0010_0100_0010_0110_0000))[0])
ツッコミどころが多すぎる
正しくはこうでは?
10^(-30)
=1.010_0010_0100_0010_0101_1111_...×2^(-100)
さらに、...部分は1111...と続くので、単精度にするなら切り上げになって、
1.010_0010_0100_0010_0110_0000×2^(-100)
よって、単精度での内部表示は
0_00011011_010_0010_0100_0010_0110_0000
整数0xa24260をセットして2^123で割ればいける
2のべき乗での割り算すら信用できないなら、ldexpあたりを使うのはどうか。pythonならこちら
(pythonは単精度が無いので結果は少しずれる)
from math import ldexp
print(ldexp(0xa24260, -123))
もしくは、バイト列経由で直接変換もあり。pythonならこちら
from struct import pack, unpack
print(unpack('f', pack('I', 0b0_00011011_010_0010_0100_0010_0110_0000))[0])
944915
2023/07/15(土) 10:11:42.89ID:HHeu+C79 今からIEEE754に準拠してない処理系が制作される事は無いでしょうから
(ホビーや学習用途は別ね)、
今日の処理系で、2のべき乗での割り算で仮数部が変わるって事は
無いと思われます(アンダーフローやオーバーフローは除外)。
…IBM hexadecimal floating-pointって基数が16だったな。
(仮数部が変わらないのは16のべき乗での乗除算のみ)
あれを常用してる人ってまだ居るのか?w
>>943
FORTRANならEQUIVALENCE文で…
(ホビーや学習用途は別ね)、
今日の処理系で、2のべき乗での割り算で仮数部が変わるって事は
無いと思われます(アンダーフローやオーバーフローは除外)。
…IBM hexadecimal floating-pointって基数が16だったな。
(仮数部が変わらないのは16のべき乗での乗除算のみ)
あれを常用してる人ってまだ居るのか?w
>>943
FORTRANならEQUIVALENCE文で…
945デフォルトの名無しさん
2023/07/15(土) 16:01:33.91ID:STkOcJIm946デフォルトの名無しさん
2023/07/15(土) 16:07:59.58ID:STkOcJIm そもそも浮動小数点ライブラリなら
x^y = exp( y * log 2 )
で実装してるんじゃないかな
そもそものexpやlogが“最近値”を与えてくれることなど規格にはないやろ
それは数値計算の理論勉強してたらすぐわかる、メチャクチャ難しくてほとんど実装不能になってしまう
だから規格上は“±その周辺の値で表示できる値の中では最良”、すなわち“表現可能な上界の最小値または表現可能な下界の最大値”、それならギリギリ実用可能な速度くらいは出せるけど、それとて難しい、そこまで今のライブラリが保証してくれてるかあやしい
まぁその手のライブラリ使わずに“最近値”を出すことはメチャクチャ手間かかるけどできなくはない、しかしそれが限界、その値を変数に確実にセットする方法がない
x^y = exp( y * log 2 )
で実装してるんじゃないかな
そもそものexpやlogが“最近値”を与えてくれることなど規格にはないやろ
それは数値計算の理論勉強してたらすぐわかる、メチャクチャ難しくてほとんど実装不能になってしまう
だから規格上は“±その周辺の値で表示できる値の中では最良”、すなわち“表現可能な上界の最小値または表現可能な下界の最大値”、それならギリギリ実用可能な速度くらいは出せるけど、それとて難しい、そこまで今のライブラリが保証してくれてるかあやしい
まぁその手のライブラリ使わずに“最近値”を出すことはメチャクチャ手間かかるけどできなくはない、しかしそれが限界、その値を変数に確実にセットする方法がない
947デフォルトの名無しさん
2023/07/15(土) 16:25:05.71ID:P30TlPMe x^y = exp( y log (x))ね
この計算に入る前に「x=2, yが整数であるかどうか検査する、その場合には仮数部は弄らず指数部だけyに応じて増減させる」なんて処理してるライブラリはないやろ
有無を言わさずy log(x)計算、→exp計算、丸め誤差上等でやってるやろ、そこで単精度計算ならちょっと余裕もってビット幅大きめのアキュムレータに入れてるかもしれんけどどんなに大きな精度のアキュムレーターを用意したとて出てくる値が“最近値”になる保証はない、そこまで保証しようとすると恐ろしくコストがかかってしまう
汎用の数値計算ライブラリでそこまで保証されてるわけないと思う、単精度計算なら±2^(-24)=単精度の内部表現で可能な幅までは保証するのが限界だと思う、それとてかなりコストがかかるし
まぁどのみち2^(-23)以上の精度が必要ならそもそも言語の標準ライブラリなんか使わんからな
この計算に入る前に「x=2, yが整数であるかどうか検査する、その場合には仮数部は弄らず指数部だけyに応じて増減させる」なんて処理してるライブラリはないやろ
有無を言わさずy log(x)計算、→exp計算、丸め誤差上等でやってるやろ、そこで単精度計算ならちょっと余裕もってビット幅大きめのアキュムレータに入れてるかもしれんけどどんなに大きな精度のアキュムレーターを用意したとて出てくる値が“最近値”になる保証はない、そこまで保証しようとすると恐ろしくコストがかかってしまう
汎用の数値計算ライブラリでそこまで保証されてるわけないと思う、単精度計算なら±2^(-24)=単精度の内部表現で可能な幅までは保証するのが限界だと思う、それとてかなりコストがかかるし
まぁどのみち2^(-23)以上の精度が必要ならそもそも言語の標準ライブラリなんか使わんからな
948915
2023/07/15(土) 18:15:18.86ID:HHeu+C79 >>946
規格で正確な値(を最近値に丸めたもの)を求められてるのは
加減乗除とsqrt()とfma()でしたっけ?
pow()は、glibcが誤差0.523ulpとか(0.5ulpが限界値)、
イイ線行ってるそうですね。
tps://members.loria.fr/PZimmermann/papers/accuracy.pdf
規格で正確な値(を最近値に丸めたもの)を求められてるのは
加減乗除とsqrt()とfma()でしたっけ?
pow()は、glibcが誤差0.523ulpとか(0.5ulpが限界値)、
イイ線行ってるそうですね。
tps://members.loria.fr/PZimmermann/papers/accuracy.pdf
949デフォルトの名無しさん
2023/07/15(土) 21:46:41.49ID:0NaOek0L おお、llvmすげぇ
950915
2023/07/15(土) 23:31:05.73ID:HHeu+C79 >>949
llvmの多くの項目がNA(non available)なのは、
実装されてないからではないかと。
この中では、OpenLibmがfdlibmの「血」を残してる方なのかな?
tps://www.netlib.org/fdlibm/
llvmの多くの項目がNA(non available)なのは、
実装されてないからではないかと。
この中では、OpenLibmがfdlibmの「血」を残してる方なのかな?
tps://www.netlib.org/fdlibm/
951デフォルトの名無しさん
2023/07/16(日) 00:22:02.04ID:Cy0F/L8f うん、多分実装されてない分は自分でやれと
実装されてるところは軒並み0.5
まぁこれも本当に確率100%で必ず最近値出すんではなくて外れる確率が0.000001%とかなんだろうな
例えば単精度演算は毎回倍精度にキャストして計算してから丸めればほぼほぼ最近値にならない確率0.0000001%とかになるからな
逆に言えば他のライブラリはその手のキャストも何もしないで“丸め誤差上等”でやってるんやろな
実装されてるところは軒並み0.5
まぁこれも本当に確率100%で必ず最近値出すんではなくて外れる確率が0.000001%とかなんだろうな
例えば単精度演算は毎回倍精度にキャストして計算してから丸めればほぼほぼ最近値にならない確率0.0000001%とかになるからな
逆に言えば他のライブラリはその手のキャストも何もしないで“丸め誤差上等”でやってるんやろな
952915
2023/07/16(日) 01:29:25.23ID:34tdZpnq >>951
ちゃんとやろうとすると、CRlibmみたいに、部分的にでも
6倍精度とかで計算しないとならないっぽいです。
glibcのexp()は768bitで計算する場合があるそうで。
…世間的には、それ程の精度を求めない用途もあって、
実際、libmのhypot()(じゃなくてもいいのですが)が遅いので自分で
実装しますたと云う報告がネット上でも散見されます
(もちろん精度は落ちる)
ちゃんとやろうとすると、CRlibmみたいに、部分的にでも
6倍精度とかで計算しないとならないっぽいです。
glibcのexp()は768bitで計算する場合があるそうで。
…世間的には、それ程の精度を求めない用途もあって、
実際、libmのhypot()(じゃなくてもいいのですが)が遅いので自分で
実装しますたと云う報告がネット上でも散見されます
(もちろん精度は落ちる)
953デフォルトの名無しさん
2023/07/16(日) 08:49:44.74ID:Q2/lNXhi まじですか
768bitって何をどう計算してるんやろ?
結果が24bitで768bitなら求める答えの72倍のアキュムレーター使うのかな?
そんな事ないよな、アキュムレータは48bitくらいで36回計算するからのべ768bitとかいう事なのかな?
まぁそれだけの事やって「末尾の最後の1ビットの正確性を求める意味あんのか問題」は発生するわな
”みんなが使う汎用ライブラリ”だとどうしてもそういう“誰も求めてない精度”に無意味にこだわってしまう部分があるんかも
768bitって何をどう計算してるんやろ?
結果が24bitで768bitなら求める答えの72倍のアキュムレーター使うのかな?
そんな事ないよな、アキュムレータは48bitくらいで36回計算するからのべ768bitとかいう事なのかな?
まぁそれだけの事やって「末尾の最後の1ビットの正確性を求める意味あんのか問題」は発生するわな
”みんなが使う汎用ライブラリ”だとどうしてもそういう“誰も求めてない精度”に無意味にこだわってしまう部分があるんかも
954915
2023/07/16(日) 10:57:33.80ID:34tdZpnq955デフォルトの名無しさん
2023/07/16(日) 11:52:54.00ID:YiXq44MV >>954
まじですか?
そんな最後の1ビット正確に決定するために768bitもの無駄な計算するくらいなら誤差±2^(-23)でいいからとっとと値返してくれた方がいいのに
なので当然通常“最後の1ビット”の正確性までは規格に入れてないんだよな、それでもライブラリ作成者は自己満のために誰も求めない“最後の1ビット”にこだわる
これは高校くらいまでの近似計算の「小数第××位まで求めよ」のノリが抜けてない事の現れでもあるんだよな
もう計算論の近似計算の世界ではゲームチェンジが起こってる事に気づけてない
まじですか?
そんな最後の1ビット正確に決定するために768bitもの無駄な計算するくらいなら誤差±2^(-23)でいいからとっとと値返してくれた方がいいのに
なので当然通常“最後の1ビット”の正確性までは規格に入れてないんだよな、それでもライブラリ作成者は自己満のために誰も求めない“最後の1ビット”にこだわる
これは高校くらいまでの近似計算の「小数第××位まで求めよ」のノリが抜けてない事の現れでもあるんだよな
もう計算論の近似計算の世界ではゲームチェンジが起こってる事に気づけてない
956915
2023/07/16(日) 12:36:42.33ID:34tdZpnq >>955
誤差なし(±0.5ulp以内)を追及する人達(CORE-MATH)も居れば、
double-double演算とかの「飛び道具」を使うのをよしとしない人達も居て、
えーっと、みんな違ってみんないい(こなみ)
誤差なし(±0.5ulp以内)を追及する人達(CORE-MATH)も居れば、
double-double演算とかの「飛び道具」を使うのをよしとしない人達も居て、
えーっと、みんな違ってみんないい(こなみ)
957デフォルトの名無しさん
2023/07/16(日) 13:03:43.49ID:nweoM3+S まぁしかし“払うコスト”に対する“リターン”が少なすぎる気はする
例えば内部表現の精度が2^24まである単精度の計算をする場合、もちろん理想は“誤差±1/2×2^(-24)”で返してくれるとありがたい
しかし現実できるか?
例えばアキュムレータをを32ビット用意して計算する、マクローリン展開で求めるとして100回で打ち切るとする、打ち切り誤差は入力のサイズによるけど十分小さい、丸め誤差は2^(-32)×100で誤差トータルは2^(-25)程度、返すのが24bitだから丸められる2^8の可能性のうち真値のポジションから最大100ずれたところでウロチョロしてるわけでその“ウロチョロ”が二項分布、真値の分布が256個の箱の一様分布として外れ値になるの確率がどのくらいやろ?暗算ではできないけど言うほどない、この言うほどない誤差を返さないただそれだけのために768bitも計算繰り返すとかどうなんって感じ
例えば内部表現の精度が2^24まである単精度の計算をする場合、もちろん理想は“誤差±1/2×2^(-24)”で返してくれるとありがたい
しかし現実できるか?
例えばアキュムレータをを32ビット用意して計算する、マクローリン展開で求めるとして100回で打ち切るとする、打ち切り誤差は入力のサイズによるけど十分小さい、丸め誤差は2^(-32)×100で誤差トータルは2^(-25)程度、返すのが24bitだから丸められる2^8の可能性のうち真値のポジションから最大100ずれたところでウロチョロしてるわけでその“ウロチョロ”が二項分布、真値の分布が256個の箱の一様分布として外れ値になるの確率がどのくらいやろ?暗算ではできないけど言うほどない、この言うほどない誤差を返さないただそれだけのために768bitも計算繰り返すとかどうなんって感じ
958915
2023/07/16(日) 13:09:49.90ID:34tdZpnq959デフォルトの名無しさん
2023/07/16(日) 14:04:25.82ID:JCFIIFPR でしょうね
流石に768bitはない
せめてそこまで行けば完全に最近値が決定できるならともかくそこまで行っても最近値を100%決めるのは無理なんじゃないでしょうか?
24ビットの値返すのに768bitまで計算するなら744bit、2^744の可能性につきあってそこまで行っても両端の100通りの可能性は残り、最近値を返せない可能性は0にはなってない、まぁほとんど0だけど
多分llvmの実装は単精度でも最初からアキュムレータに64bit(レジスタ2個分)で計算するんやろな、あまりのビットが40bitあって100/2^40とか1000/2^40とかはほとんど0だからほぼ確率1で最近値返しますよ、それで十分でしょって実装なのではなかろかと、実際それで十分
最近のcpuはなんかレジスタ2個分に分けて計算してもレジスタ1個で計算するのと時間大して変わらないという話もききますしね
流石に768bitはない
せめてそこまで行けば完全に最近値が決定できるならともかくそこまで行っても最近値を100%決めるのは無理なんじゃないでしょうか?
24ビットの値返すのに768bitまで計算するなら744bit、2^744の可能性につきあってそこまで行っても両端の100通りの可能性は残り、最近値を返せない可能性は0にはなってない、まぁほとんど0だけど
多分llvmの実装は単精度でも最初からアキュムレータに64bit(レジスタ2個分)で計算するんやろな、あまりのビットが40bitあって100/2^40とか1000/2^40とかはほとんど0だからほぼ確率1で最近値返しますよ、それで十分でしょって実装なのではなかろかと、実際それで十分
最近のcpuはなんかレジスタ2個分に分けて計算してもレジスタ1個で計算するのと時間大して変わらないという話もききますしね
960915
2023/07/16(日) 14:30:41.46ID:34tdZpnq >>959
以前は最近値だったそうです(その代わり遅い)
tps://sourceware.org/git/?p=glibc.git;a=commit;h=6fd0a3c6a887a91b1554730c977657a7e65334cc
以前は最近値だったそうです(その代わり遅い)
tps://sourceware.org/git/?p=glibc.git;a=commit;h=6fd0a3c6a887a91b1554730c977657a7e65334cc
961デフォルトの名無しさん
2023/07/16(日) 15:00:29.88ID:8Io8J2M0 その記事はglibcで色々実験してみたの報告ですね
どっかに“旧glibcは最近値をとことんまで出す”って別資料の記事見かけました?
もちろん入力された有理数xに対してexp(x)を時間無制限ならその与えられた桁数までの最近値を計算するアルゴリズムはすぐ作れるので(一般にGaussの超幾何関数からくる連分数表示が可能な実数ならそのような事が可能)そういうライブラリを実装するのはまぁ無理ではないんですけどね
実際円周率をリソースが食い尽くされるまで延々と計算し続けるプログラムとかよくネットで転がってますし、確か昔のrubyのサンプルプログラムにも収録されてたような
どっかに“旧glibcは最近値をとことんまで出す”って別資料の記事見かけました?
もちろん入力された有理数xに対してexp(x)を時間無制限ならその与えられた桁数までの最近値を計算するアルゴリズムはすぐ作れるので(一般にGaussの超幾何関数からくる連分数表示が可能な実数ならそのような事が可能)そういうライブラリを実装するのはまぁ無理ではないんですけどね
実際円周率をリソースが食い尽くされるまで延々と計算し続けるプログラムとかよくネットで転がってますし、確か昔のrubyのサンプルプログラムにも収録されてたような
962デフォルトの名無しさん
2023/07/20(木) 22:27:12.42ID:VHXXslhm964デフォルトの名無しさん
2023/07/21(金) 07:58:12.84ID:XtiUJMX6 >>927
Rust
fn foo(input: u32) -> impl Iterator<Item = u32> {
(0..=input).filter(move |n| n & input == *n)
}
ただしこれではループがO(n)
ループをO(log N)にするならこちら
fn foo(input: u32) -> impl Iterator<Item = u32> {
let table: Vec<u32> = bits_iter(input).map(|p| 1 << p).collect();
(0..(1 << table.len())).map(move |bits| bits_iter(bits).map(|p| table[p as usize]).sum())
}
補助bitsイテレータ
fn bits_iter(n: u32) -> impl Iterator<Item = u32> {
let mut n = n;
std::iter::from_fn(move || {
(n != 0).then(|| {
let p = n.trailing_zeros();
n &= !(1 << p);
p
})
})
}
Rust
fn foo(input: u32) -> impl Iterator<Item = u32> {
(0..=input).filter(move |n| n & input == *n)
}
ただしこれではループがO(n)
ループをO(log N)にするならこちら
fn foo(input: u32) -> impl Iterator<Item = u32> {
let table: Vec<u32> = bits_iter(input).map(|p| 1 << p).collect();
(0..(1 << table.len())).map(move |bits| bits_iter(bits).map(|p| table[p as usize]).sum())
}
補助bitsイテレータ
fn bits_iter(n: u32) -> impl Iterator<Item = u32> {
let mut n = n;
std::iter::from_fn(move || {
(n != 0).then(|| {
let p = n.trailing_zeros();
n &= !(1 << p);
p
})
})
}
965デフォルトの名無しさん
2023/07/21(金) 08:19:47.60ID:XtiUJMX6 >>964
rustfmtがギリギリ2行にまとめてしまうが見にくいので手動で以下へ補正
(改行の違いだけでコード自体は同じです)
fn foo(input: u32) -> impl Iterator<Item = u32> {
let table: Vec<u32> = bits_iter(input)
.map(|p| 1 << p)
.collect();
(0..(1 << table.len()))
.map(move |bits| {
bits_iter(bits)
.map(|p| table[p as usize])
.sum()
})
}
rustfmtがギリギリ2行にまとめてしまうが見にくいので手動で以下へ補正
(改行の違いだけでコード自体は同じです)
fn foo(input: u32) -> impl Iterator<Item = u32> {
let table: Vec<u32> = bits_iter(input)
.map(|p| 1 << p)
.collect();
(0..(1 << table.len()))
.map(move |bits| {
bits_iter(bits)
.map(|p| table[p as usize])
.sum()
})
}
966デフォルトの名無しさん
2023/07/21(金) 13:18:40.51ID:p6hqStjf 見やすさどうこうならオンラインの実行環境に入れたほうが見やすい
967デフォルトの名無しさん
2023/07/21(金) 20:43:39.96ID:eNxuBSnx >>963
まず
@Rを自由に動かしてコマンドリストを得てから、SをRと衝突しないように動かしてコマンドリストを得る。
次に優先権を逆転させ、
ASを自由に動かしてコマンドリストを得てから、RをSと衝突しないように動かしてコマンドリストを得る。
そして、@とAでコマンドリストが短い方を解として採用する。
コマンドリストを得る方法は基本的には>>856と同じ幅優先探索だが、>>856のように2次元の数値配列を作り
各マスへ最短何個のコマンドで到達できるかを記録するだけでは今回の問題の複雑な動きには対処できないから、
3次元の論理配列を作り1個のコマンドで各マスへ到達できるか否か、2個のコマンドで各マスへ到達できるか否か、
3個のコマンドで〜、…を記録していくように変えた。
26行目はB[Q]が何回も現れてごちゃごちゃしているので、変数をもう1個作って
b <- B[Q]
A[i + 1, , ][Q[b != Inf & b != i + 1 & (b != i | b[1] != i + 1), , drop = FALSE]] <- TRUE
と書く方が行数は増えるがすっきりする。36行目も同様。
まず
@Rを自由に動かしてコマンドリストを得てから、SをRと衝突しないように動かしてコマンドリストを得る。
次に優先権を逆転させ、
ASを自由に動かしてコマンドリストを得てから、RをSと衝突しないように動かしてコマンドリストを得る。
そして、@とAでコマンドリストが短い方を解として採用する。
コマンドリストを得る方法は基本的には>>856と同じ幅優先探索だが、>>856のように2次元の数値配列を作り
各マスへ最短何個のコマンドで到達できるかを記録するだけでは今回の問題の複雑な動きには対処できないから、
3次元の論理配列を作り1個のコマンドで各マスへ到達できるか否か、2個のコマンドで各マスへ到達できるか否か、
3個のコマンドで〜、…を記録していくように変えた。
26行目はB[Q]が何回も現れてごちゃごちゃしているので、変数をもう1個作って
b <- B[Q]
A[i + 1, , ][Q[b != Inf & b != i + 1 & (b != i | b[1] != i + 1), , drop = FALSE]] <- TRUE
と書く方が行数は増えるがすっきりする。36行目も同様。
968蟻人間 ◆T6xkBnTXz7B0
2023/07/21(金) 21:36:35.00ID:GfD0zzOH969デフォルトの名無しさん
2023/07/22(土) 07:20:14.13ID:Ya5NOP1D >>966
なるほど!
専ブラではなくWebブラウザから見るとインデントスペースが消えてしまうのですね
>>927
Rust全文
https://play.rust-lang.org/?version=stable&mode=release&edition=2021&gist=f627f3a5de4a0c467f015a8b1527c141
抜粋 (全角スペース使用)
fn foo(input: u32) -> impl Iterator<Item = u32> {
let table: Vec<u32> = bits_iter(input)
.map(|p| 1 << p)
.collect();
(0..(1 << table.len())).map(move |bits| {
bits_iter(bits)
.map(|p| table[p as usize])
.sum()
})
}
なるほど!
専ブラではなくWebブラウザから見るとインデントスペースが消えてしまうのですね
>>927
Rust全文
https://play.rust-lang.org/?version=stable&mode=release&edition=2021&gist=f627f3a5de4a0c467f015a8b1527c141
抜粋 (全角スペース使用)
fn foo(input: u32) -> impl Iterator<Item = u32> {
let table: Vec<u32> = bits_iter(input)
.map(|p| 1 << p)
.collect();
(0..(1 << table.len())).map(move |bits| {
bits_iter(bits)
.map(|p| table[p as usize])
.sum()
})
}
970デフォルトの名無しさん
2023/07/22(土) 11:35:32.67ID:YLqzZrt5 デスクトップアプリで5ch専ブラを造れ
971デフォルトの名無しさん
2023/07/23(日) 12:51:38.77ID:g/6/koRD972デフォルトの名無しさん
2023/07/23(日) 22:13:46.62ID:5wwn3n8Y スレ違いなんだけど今回の騒動出遅れてよくわからんのわけとこの山下ってのが5chに対して反乱分子起こしたん?
それは何故?
もうニュー速+とかでも過去の話でスレも立ってないしググっても出てこない
何がどうなったん?
それは何故?
もうニュー速+とかでも過去の話でスレも立ってないしググっても出てこない
何がどうなったん?
973デフォルトの名無しさん
2023/07/25(火) 09:52:03.45ID:dyNDjhLG トーク過疎ってんな
こりゃクーデター失敗かな
こりゃクーデター失敗かな
974デフォルトの名無しさん
2023/07/25(火) 14:53:46.34ID:iTChcdyR 本能寺が変
975蟻人間 ◆T6xkBnTXz7B0
2023/07/26(水) 21:23:20.74ID:vhd+IIfp お題: 化学の共有結合。
x, y, zをそれぞれ任意の自然数とする。入力(x, y, z)に対して炭素原子(C)x個、酸素原子(O)y個、水素原子(H)z個のすべてを
共有結合で連結するときの連結結果の組み合わせをすべて出力するプログラムを書け。
出力形式は自由とする。
入力例)
(0, 1, 2)→?
(1, 1, 4)→?
(1, 0, 4)→?
x, y, zをそれぞれ任意の自然数とする。入力(x, y, z)に対して炭素原子(C)x個、酸素原子(O)y個、水素原子(H)z個のすべてを
共有結合で連結するときの連結結果の組み合わせをすべて出力するプログラムを書け。
出力形式は自由とする。
入力例)
(0, 1, 2)→?
(1, 1, 4)→?
(1, 0, 4)→?
976デフォルトの名無しさん
2023/07/27(木) 09:04:26.01ID:GoQM94Wc H2O2ってなんていう結合だっけ
977デフォルトの名無しさん
2023/07/27(木) 12:12:58.81ID:/bGsBsBb978デフォルトの名無しさん
2023/07/27(木) 12:13:17.86ID:/bGsBsBb 誤爆orz
979デフォルトの名無しさん
2023/07/27(木) 15:18:31.87ID:gIycSMlB まず共有結合とはどんなものなのかを調べてからでないと作れないが、今のところ調べてまで作りたいとは思わない。
981デフォルトの名無しさん
2023/07/28(金) 06:23:08.46ID:dM/IOnaa 情報科学的元素共有結合の勝手な定義を書いとかなければ問題にならない
982蟻人間 ◆T6xkBnTXz7B0
2023/07/28(金) 12:57:32.49ID:EWzuT5tC 共有結合について高校化学でよく言われるのは、次の通り。
炭素原子は「結合の手」を4個持っている。
酸素原子は「結合の手」を2個持っている。
水素原子は「結合の手」を1個持っている。
結合の手を余らさないように連結する。
分子の右手型左手型の区別は考えなくてよい。
連結のときの他の原子との重なりは考えなくてもよい。
炭素原子は「結合の手」を4個持っている。
酸素原子は「結合の手」を2個持っている。
水素原子は「結合の手」を1個持っている。
結合の手を余らさないように連結する。
分子の右手型左手型の区別は考えなくてよい。
連結のときの他の原子との重なりは考えなくてもよい。
983蟻人間 ◆T6xkBnTXz7B0
2023/07/30(日) 17:36:04.42ID:x27rHRHa お題: パソコン、スマホ、またはタブレットに大きな顔を表示して、音声入力と
音声出力で会話ができるようにする。
音声出力で会話ができるようにする。
984デフォルトの名無しさん
2023/07/31(月) 02:56:25.48ID:aNRF9KkN985デフォルトの名無しさん
2023/07/31(月) 10:04:39.36ID:8wbRk2dY H2Oってなんで真っすぐじゃなくてくの字に折れてるんだろ
986デフォルトの名無しさん
2023/07/31(月) 10:05:41.12ID:8wbRk2dY987蟻人間 ◆T6xkBnTXz7B0
2023/07/31(月) 14:11:26.12ID:utupSPZZ お題: 気体の状態方程式より温度を求める。
半径ゼロで70000個の水素分子のみが底面半径4[cm]、高さh[cm]の円すい形の密閉空間内をまんべんなく飛び回る。
密閉空間の高さh[cm]を入力とするとき、圧力P=1.013*10^5 [Pa]、密閉空間の体積V[m^3]、水素分子の物質量n[mol]、気体定数R=8.31について、
気体の状態方程式PV=nRTより導かれる絶対温度T[K]を出力せよ。
入力例)
10→?
20→?
50→?
半径ゼロで70000個の水素分子のみが底面半径4[cm]、高さh[cm]の円すい形の密閉空間内をまんべんなく飛び回る。
密閉空間の高さh[cm]を入力とするとき、圧力P=1.013*10^5 [Pa]、密閉空間の体積V[m^3]、水素分子の物質量n[mol]、気体定数R=8.31について、
気体の状態方程式PV=nRTより導かれる絶対温度T[K]を出力せよ。
入力例)
10→?
20→?
50→?
988デフォルトの名無しさん
2023/07/31(月) 14:46:35.12ID:sgBBFIN2 70000個ってどうやって数えたん?
990デフォルトの名無しさん
2023/07/31(月) 18:09:03.77ID:Pczz8g0N 現代の地球人の技術力ではT=0にでもしないと無理そうだし
もしそうなら水素は固体化してて
Vの大部分は真空でPはほぼ0なんじゃないかな
もしそうなら水素は固体化してて
Vの大部分は真空でPはほぼ0なんじゃないかな
991デフォルトの名無しさん
2023/08/01(火) 07:02:39.12ID:jESfOyT1 はいはい unsafe { 未定義動作 }
992638
2023/08/01(火) 07:13:10.69ID:FpN06ruh なぜ中高理科の試験問題をここで…
993デフォルトの名無しさん
2023/08/01(火) 10:53:13.82ID:AvEKEx5a T = PV/nR
= 1.013*10^5 * (4.000)^2*3.142*h/1000
/( 70000*8.314 * 6.022*10^23 *10^3 )
= 1.453*10^(-29)*h ( K )
= 1.013*10^5 * (4.000)^2*3.142*h/1000
/( 70000*8.314 * 6.022*10^23 *10^3 )
= 1.453*10^(-29)*h ( K )
994蟻人間 ◆T6xkBnTXz7B0
2023/08/01(火) 12:37:22.46ID:NTrANRpP 分子が多すぎて現実的なシミュレーションは難しいね。
995デフォルトの名無しさん
2023/08/01(火) 13:12:18.01ID:oNEwqf/W T = PV/nR
= 1.013*10^5 * (4.000)^2*3.142*h/1000
/( 70000 / (6.022*10^23) *10^3 * 8.314 )
= 5.269*10^18*h ( K )
= 1.013*10^5 * (4.000)^2*3.142*h/1000
/( 70000 / (6.022*10^23) *10^3 * 8.314 )
= 5.269*10^18*h ( K )
996デフォルトの名無しさん
2023/08/02(水) 09:29:52.97ID:4pI1Wfnv h=0で誤動作する罠
997デフォルトの名無しさん
2023/08/02(水) 23:17:43.36ID:sBo1wUiw そもそも分子の運動をシュミレーションしてp,v,nTの関係を調べさせるつもりなら出題がおかしい
それなら入力が温度、分子量、体積で出力が圧力やろ
それなら入力が温度、分子量、体積で出力が圧力やろ
998デフォルトの名無しさん
2023/08/03(木) 03:48:48.75ID:/xW45k0z シミュレーション
999デフォルトの名無しさん
2023/08/03(木) 13:32:25.90ID:Lr04Zjag PV=nRTは高校物理
1000デフォルトの名無しさん
2023/08/03(木) 13:32:47.33ID:Lr04Zjag 熱力学は
ヘンリーの法則
ラウールの法則
に従う
ヘンリーの法則
ラウールの法則
に従う
10011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 262日 18時間 32分 12秒
新しいスレッドを立ててください。
life time: 262日 18時間 32分 12秒
10021002
Over 1000Thread 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。
ニュース
- NY円、一時1ユーロ=180円台まで下落…1999年のユーロ導入以来初 [蚤の市★]
- 【外交】日中関係悪化、長期化の様相 2012年には自動車輸出80%減も ロイター★3 [1ゲットロボ★]
- 国内ホテル、既にキャンセルも 訪日客関連業界、事態見守る ★3 [蚤の市★]
- 橋下徹氏 外務省幹部の訪中受け「口だけ番長」へ痛烈指摘 「喧嘩は日本の完敗…なんとかっこ悪い日本か」★2 [冬月記者★]
- 「どうしようもない」 ため息つくアジアの玄関口 中国の訪日自粛で−福岡市 [蚤の市★]
- 「稼ぐのよ!」高市総理が電話ガチャ切りで伝えたこと 鈴木憲和農林水産大臣が国政報告会に出席 自身が目指す農政の方針語る [煮卵★]
- 『しんちゃんと岸田さん』 [175344491]
- 日本株、大暴落!!! [252835186]
- 識者「『フリーパレスチナ』とかイキってる連中が台湾の話になると『中国を怒らせるな!』ってなる。ほんと左翼の正義って薄っぺらい」 [279254606]
- 港区女子「50kg越えちゃった、港区だとデブ界隈だよ(>.<)」🤳パシャッ👉10万いいね [329329848]
- 【超悲報】中国への武力行使、世論調査で「賛成」「どちらかといえば賛成」48.8% 「反対」「どちらかといえば反対」の44.2%を上回る [314039747]
- んなっても良いお🏡
