プログラミングのお題スレです。
【出題と回答例】
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/
宿題は宿題スレがあるのでそちらへ。
※前スレ
プログラミングのお題スレ Part17
https://mevius.5ch.net/test/read.cgi/tech/1584031367/
探検
プログラミングのお題スレ Part18
レス数が1000を超えています。これ以上書き込みはできません。
2020/07/14(火) 13:53:46.47ID:jW5p6F/e
2020/07/14(火) 21:06:03.54ID:5wYEuLp1
3蟻人間 ◆T6xkBnTXz7B0
2020/07/16(木) 06:35:35.70ID:Tv2xtriA 前スレ996の三次元タートルグラフィックス。
懸賞WebMoney5000円です。早い者勝ち。
懸賞WebMoney5000円です。早い者勝ち。
2020/07/16(木) 07:00:51.32ID:Rw1l0Cvs
5蟻人間 ◆T6xkBnTXz7B0
2020/07/16(木) 07:12:16.72ID:Tv2xtriA 宿題ではありません。
6デフォルトの名無しさん
2020/07/16(木) 11:35:02.71ID:6HbDCmR4 普通にドン引き
なんか作って欲しいツールの作成依頼スレになりそう
出題者は解答を持ち合わせておくべきだな
なんか作って欲しいツールの作成依頼スレになりそう
出題者は解答を持ち合わせておくべきだな
7デフォルトの名無しさん
2020/07/16(木) 12:31:42.58ID:II7vBdwc 短期間に複数の出題をするのはいかがなものか
前の出題を締め切ってからするべきだろう
中には解答に数ヶ月を要するものもあるので
http://itest.5ch.net/mevius/test/read.cgi/tech/1584031367/10
>0010 蟻人間 ◆T6xkBnTXz7B0 2020/03/15 04:20:
>10
>お題: 一辺2000メートルの正方形の平面上にランダムに動く物体5個がある。
http://itest.5ch.net/mevius/test/read.cgi/tech/1584031367/801
>0801 デフォルトの名無しさん 2020/06/03 15:52:13
>10 js
>能力低すぎて3か月もかかってしまった
>https://codepen.io/as124680/full/Bajapro
出題者はちゃんと評価と解答の解説を責任持って投稿下さい
前の出題を締め切ってからするべきだろう
中には解答に数ヶ月を要するものもあるので
http://itest.5ch.net/mevius/test/read.cgi/tech/1584031367/10
>0010 蟻人間 ◆T6xkBnTXz7B0 2020/03/15 04:20:
>10
>お題: 一辺2000メートルの正方形の平面上にランダムに動く物体5個がある。
http://itest.5ch.net/mevius/test/read.cgi/tech/1584031367/801
>0801 デフォルトの名無しさん 2020/06/03 15:52:13
>10 js
>能力低すぎて3か月もかかってしまった
>https://codepen.io/as124680/full/Bajapro
出題者はちゃんと評価と解答の解説を責任持って投稿下さい
8蟻人間 ◆T6xkBnTXz7B0
2020/07/16(木) 17:15:09.36ID:Tv2xtriA 【防衛システムに関する解説】
この出題は平面上の幾何学的な事象として論じられる。よって数学のベクトルの知識が必須である。
自機は中央にあり動かないのであるから、これを原点としてもよい。レーダー電波は放射状の電磁波であり、明らかに光速で直進する。
レーダーの直線の方程式は角度thetaのときr*(cos(theta), sin(theta))と書ける。すなわちレーダー角に触れれば探知される。
敵機はアニメーションの原理で動く。よってタイマーを使って一定時間ごとに位置を変化させれば動いているように見える。
位置や速度に特に指定はない。よって乱数などで決めることになる。
続く。
この出題は平面上の幾何学的な事象として論じられる。よって数学のベクトルの知識が必須である。
自機は中央にあり動かないのであるから、これを原点としてもよい。レーダー電波は放射状の電磁波であり、明らかに光速で直進する。
レーダーの直線の方程式は角度thetaのときr*(cos(theta), sin(theta))と書ける。すなわちレーダー角に触れれば探知される。
敵機はアニメーションの原理で動く。よってタイマーを使って一定時間ごとに位置を変化させれば動いているように見える。
位置や速度に特に指定はない。よって乱数などで決めることになる。
続く。
9蟻人間 ◆T6xkBnTXz7B0
2020/07/16(木) 17:24:04.86ID:Tv2xtriA それぞれの敵機の位置ベクトルと速度ベクトルがあり、それらは時間の変数によって変化する。敵機の速度ベクトルを推定するために、位置ベクトルを記録せねばならない。
レーダーは360度回るのであるから、隠れ場所がなければ特定の角度となり、必ず見つかる。位置は一定時間ごとに必ずわかるはずである。
位置の変位を経過時間で割れば速度ベクトルが推定できる。位置がわかれば3平方の定理で距離がわかる。距離が近ければミサイルを
発射せねばなるまい。ミサイルを撃つ方向はatan2関数を使用すれば求められる。
【解説終わり】
レーダーは360度回るのであるから、隠れ場所がなければ特定の角度となり、必ず見つかる。位置は一定時間ごとに必ずわかるはずである。
位置の変位を経過時間で割れば速度ベクトルが推定できる。位置がわかれば3平方の定理で距離がわかる。距離が近ければミサイルを
発射せねばなるまい。ミサイルを撃つ方向はatan2関数を使用すれば求められる。
【解説終わり】
10蟻人間 ◆T6xkBnTXz7B0
2020/07/16(木) 17:36:30.92ID:Tv2xtriA これでいいか?
11蟻人間 ◆T6xkBnTXz7B0
2020/07/16(木) 18:19:03.86ID:Tv2xtriA 【SQLサイン関数出題の解説】
ウェブや深層学習などの進展につれて、今や巨大データの扱いは、ありふれた作業となってきている。巨大データを扱う場合、データベースを使うとアクセス能力や利便性を向上できる。中でも特に一般的なSQLについて出題することにした。
しかし、SQLは方言が多くて、細かい調整はマニュアルを読まないとわからないことが多い。さらに、アクセス方法やインターフェイスが多様すぎて、こちらで解析するのは困難である。
よって採点は行わない。各自で自ら結果を確認して採点してほしい。SQLを始めるなら、まず入門書から入って、次に使用するデータベースのマニュアルを読んでもらいたい。
続く。
ウェブや深層学習などの進展につれて、今や巨大データの扱いは、ありふれた作業となってきている。巨大データを扱う場合、データベースを使うとアクセス能力や利便性を向上できる。中でも特に一般的なSQLについて出題することにした。
しかし、SQLは方言が多くて、細かい調整はマニュアルを読まないとわからないことが多い。さらに、アクセス方法やインターフェイスが多様すぎて、こちらで解析するのは困難である。
よって採点は行わない。各自で自ら結果を確認して採点してほしい。SQLを始めるなら、まず入門書から入って、次に使用するデータベースのマニュアルを読んでもらいたい。
続く。
12蟻人間 ◆T6xkBnTXz7B0
2020/07/16(木) 18:37:28.47ID:Tv2xtriA 「精度は構わない」といったはずだ。最悪でもnearest neighborhoodを選んでも正解にした。サイン関数は波形のグラフをとる代表的な三角関数だから、高校生以上なら知ってるはずだ、知名度は高いと判断した。 周期性があるので有限のテーブル(表)で近似できる。
「SQLのみを使う」とも言っていない。SQLの外部でサイン関数の数値を計算しても正解とする。しかしテーブルは作成しなければならない。すでに作成済みの場合に備えてまず「DROP TABLE ...」する。
次にテーブルの仕様を設計して「CREATE TABLE ...」する。細かいことは...で省略するが、わからないときは入門書かマニュアルを参照して下さいな。
テーブルの行を追加するには「INSERT INTO ...」する。テーブルからサイン関数の値を問い合わせる場合は「SELECT ... FROM ... WHERE ...」する。これが実際のサイン関数の値に常識的に近ければ正解とする。
【解説終わり】
「SQLのみを使う」とも言っていない。SQLの外部でサイン関数の数値を計算しても正解とする。しかしテーブルは作成しなければならない。すでに作成済みの場合に備えてまず「DROP TABLE ...」する。
次にテーブルの仕様を設計して「CREATE TABLE ...」する。細かいことは...で省略するが、わからないときは入門書かマニュアルを参照して下さいな。
テーブルの行を追加するには「INSERT INTO ...」する。テーブルからサイン関数の値を問い合わせる場合は「SELECT ... FROM ... WHERE ...」する。これが実際のサイン関数の値に常識的に近ければ正解とする。
【解説終わり】
2020/07/16(木) 18:53:35.79ID:CQUy/8Mn
解説と解説に沿った解答例のコードを貼れ
14デフォルトの名無しさん
2020/07/16(木) 20:27:21.79ID:6HbDCmR4 >>12
-πから+πまでのsin関数表を元に-∞から+∞までのsin関数をNN法を使って完成させろという意味だったのか
-πから+πまでのsin関数表を元に-∞から+∞までのsin関数をNN法を使って完成させろという意味だったのか
2020/07/16(木) 20:37:51.51ID:Zj8FcZKn
精度は構わないなら
0, 1, -1 の3択でも正解か
0, 1, -1 の3択でも正解か
16蟻人間 ◆T6xkBnTXz7B0
2020/07/16(木) 21:05:05.23ID:Tv2xtriA17デフォルトの名無しさん
2020/07/16(木) 21:10:19.03ID:6HbDCmR4 提出済みのコードに
x_hat%(2*π)-π
を加えれば絶対値が大きな任意の数にも対応出来る
x_hat%(2*π)-π
を加えれば絶対値が大きな任意の数にも対応出来る
18デフォルトの名無しさん
2020/07/16(木) 21:11:26.01ID:6HbDCmR4 >>17
はsin関数の問題の話ね
はsin関数の問題の話ね
2020/07/16(木) 21:27:56.16ID:Zj8FcZKn
2020/07/16(木) 21:34:34.55ID:Rw1l0Cvs
クソコテはどっちも出題がクソ
存在もクソ
存在もクソ
2020/07/16(木) 21:44:35.29ID:Zj8FcZKn
22蟻人間 ◆T6xkBnTXz7B0
2020/07/16(木) 21:54:34.68ID:Tv2xtriA 物体の現在位置: (px, py)
物体の推定速度: (vx, vy)
ミサイルの速さ: mv
距離:sqrt(px**2+py**2)
到達にかかる時間: t_star==sqrt(px**2+py**2)/mv
到達までにかかる時間を加味した物体の予想位置:
(px+t_star*vx, py+t_star*vy)
ここまでの計算を繰り返し、誤差を減少させる。
結果の衝突予想位置にatan2に施すとミサイルの発射方向が得られる。
物体の推定速度: (vx, vy)
ミサイルの速さ: mv
距離:sqrt(px**2+py**2)
到達にかかる時間: t_star==sqrt(px**2+py**2)/mv
到達までにかかる時間を加味した物体の予想位置:
(px+t_star*vx, py+t_star*vy)
ここまでの計算を繰り返し、誤差を減少させる。
結果の衝突予想位置にatan2に施すとミサイルの発射方向が得られる。
23デフォルトの名無しさん
2020/07/16(木) 22:05:54.70ID:6HbDCmR42020/07/16(木) 22:06:42.91ID:Zj8FcZKn
>>22
頭悪い方法ですね
頭悪い方法ですね
25蟻人間 ◆T6xkBnTXz7B0
2020/07/16(木) 22:09:47.34ID:Tv2xtriA スマートな方法は軍事秘密なんだよ
(方程式を使う)
(方程式を使う)
2020/07/16(木) 22:28:50.69ID:Zj8FcZKn
簡単な二次方程式になるわけだけど
27蟻人間 ◆T6xkBnTXz7B0
2020/07/16(木) 22:32:18.70ID:Tv2xtriA 昔はモンキーハンティングとかのシミュレーションやったよ
2020/07/16(木) 22:34:22.52ID:Zj8FcZKn
頭悪い方法で?
2020/07/16(木) 22:35:58.48ID:Zj8FcZKn
>>22から頭の悪さがにじみ出てる
2020/07/16(木) 22:36:41.77ID:Rw1l0Cvs
頭悪いのがにじみ出てて読んでてイライラする
31蟻人間 ◆T6xkBnTXz7B0
2020/07/16(木) 22:37:12.00ID:Tv2xtriA 他に剛体球の衝突とか、太陽系の表示とか、万有引力とか。
32蟻人間 ◆T6xkBnTXz7B0
2020/07/16(木) 23:19:59.45ID:Tv2xtriA 高校レベルの数学でごめんね.
v:ミサイルの速さ。
d:ミサイルの方向ベクトル。
t: 時刻。
P: 物体の現在位置。
V: 物体の推定速度。
方程式v*d*t==P+V*t.
移項して
(v*d - V)*t==P.
t==P・(v*d - V)/||v*d - V||**2.
v:ミサイルの速さ。
d:ミサイルの方向ベクトル。
t: 時刻。
P: 物体の現在位置。
V: 物体の推定速度。
方程式v*d*t==P+V*t.
移項して
(v*d - V)*t==P.
t==P・(v*d - V)/||v*d - V||**2.
33デフォルトの名無しさん
2020/07/17(金) 04:33:22.78ID:MbWzFU1J >>17
訂正
まず、0〜2*πのsin関数表を作成する
その後、
x_hat>=0 の場合: x_hat%(2*π)
x_hat<0の場合: 2*π + x_hat%(-2*π)
という式でx_hatを変換して上書きする
訂正
まず、0〜2*πのsin関数表を作成する
その後、
x_hat>=0 の場合: x_hat%(2*π)
x_hat<0の場合: 2*π + x_hat%(-2*π)
という式でx_hatを変換して上書きする
2020/07/17(金) 06:25:20.74ID:CFzyXZw3
2020/07/17(金) 08:57:31.48ID:ICqzduEx
解答側だと頭悪いと煽られるから出題側に回ってたわけか
まあ出題も頭悪そうだったが
まあ出題も頭悪そうだったが
2020/07/17(金) 09:13:31.04ID:TqoFz7RF
回答例用意してなくても出題していいと思う
でもニッチすぎる問題で知識ひけらかしてるみたいな出題は例出してくれ
でもニッチすぎる問題で知識ひけらかしてるみたいな出題は例出してくれ
37蟻人間 ◆T6xkBnTXz7B0
2020/07/17(金) 10:03:37.90ID:+x+SJT9l P + V*t==v*d*t.
二乗すればdが消えて
|P|**2 + 2*P・V*t + |V|**2*t**2 == (v*t)**2.
これはtの二次方程式であるから整理して解の公式で解ける。
t<0のときは過去になるので除外する。
二乗すればdが消えて
|P|**2 + 2*P・V*t + |V|**2*t**2 == (v*t)**2.
これはtの二次方程式であるから整理して解の公式で解ける。
t<0のときは過去になるので除外する。
2020/07/17(金) 10:05:01.15ID:2gsvlStU
>>1 スレ一覧
1: https://toro.5ch.net/test/read.cgi/tech/1354393458/
2: https://toro.5ch.net/test/read.cgi/tech/1357191974/
3: https://peace.5ch.net/test/read.cgi/tech/1390525149/
4: https://peace.5ch.net/test/read.cgi/tech/1402622093/
5: https://peace.5ch.net/test/read.cgi/tech/1411227287/
6: https://peace.5ch.net/test/read.cgi/tech/1418278634/
7: https://peace.5ch.net/test/read.cgi/tech/1429195275/
8: http://echo.5ch.net/test/read.cgi/tech/1444216746/
9: https://mevius.5ch.net/test/read.cgi/tech/1480579110/
10: https://mevius.5ch.net/test/read.cgi/tech/1514772904/
11: https://mevius.5ch.net/test/read.cgi/tech/1524570314/
12: https://mevius.5ch.net/test/read.cgi/tech/1538096947/
13: https://mevius.5ch.net/test/read.cgi/tech/1549160513/
14: https://mevius.5ch.net/test/read.cgi/tech/1558168409/
15: https://mevius.5ch.net/test/read.cgi/tech/1564310397/
16: https://mevius.5ch.net/test/read.cgi/tech/1573948822/
17: https://mevius.5ch.net/test/read.cgi/tech/1584031367/
1: https://toro.5ch.net/test/read.cgi/tech/1354393458/
2: https://toro.5ch.net/test/read.cgi/tech/1357191974/
3: https://peace.5ch.net/test/read.cgi/tech/1390525149/
4: https://peace.5ch.net/test/read.cgi/tech/1402622093/
5: https://peace.5ch.net/test/read.cgi/tech/1411227287/
6: https://peace.5ch.net/test/read.cgi/tech/1418278634/
7: https://peace.5ch.net/test/read.cgi/tech/1429195275/
8: http://echo.5ch.net/test/read.cgi/tech/1444216746/
9: https://mevius.5ch.net/test/read.cgi/tech/1480579110/
10: https://mevius.5ch.net/test/read.cgi/tech/1514772904/
11: https://mevius.5ch.net/test/read.cgi/tech/1524570314/
12: https://mevius.5ch.net/test/read.cgi/tech/1538096947/
13: https://mevius.5ch.net/test/read.cgi/tech/1549160513/
14: https://mevius.5ch.net/test/read.cgi/tech/1558168409/
15: https://mevius.5ch.net/test/read.cgi/tech/1564310397/
16: https://mevius.5ch.net/test/read.cgi/tech/1573948822/
17: https://mevius.5ch.net/test/read.cgi/tech/1584031367/
2020/07/17(金) 10:57:50.39ID:IMrokyul
40蟻人間 ◆T6xkBnTXz7B0
2020/07/17(金) 11:00:53.76ID:+x+SJT9l 三次元タートルで臓器を描画したら、レオナルド・ダ・ヴィンチのような天才になれるかもよ。
今、3Dプリンタのブームで三次元タートルグラフィックスは需要があるから、面白いことになるよ。
今、3Dプリンタのブームで三次元タートルグラフィックスは需要があるから、面白いことになるよ。
41蟻人間 ◆T6xkBnTXz7B0
2020/07/17(金) 11:24:00.61ID:+x+SJT9l 臓器売買をなくすには、臓器を作ればいい。
ふふん。
ふふん。
2020/07/17(金) 11:55:47.46ID:vGVdpt19
>>37
で、5個の物体の
で、5個の物体の
2020/07/17(金) 11:56:18.93ID:vGVdpt19
区別はどうするの?
44蟻人間 ◆T6xkBnTXz7B0
2020/07/17(金) 12:50:28.20ID:+x+SJT9l レーダー角の順番に物体をソートし、各物体に番号を付ける。レーダー角において物体が重なれば重複する恐れがあるが、とくに問題ではない。重複した物体が離れたときに、新規の物体の出現と見なせばいい。
前回と前々回の観測により、位置と速度が推測できる。次に予想される出現位置に一番近い物体を選択し、番号を関連付ければ同定できる。
前回と前々回の観測により、位置と速度が推測できる。次に予想される出現位置に一番近い物体を選択し、番号を関連付ければ同定できる。
45デフォルトの名無しさん
2020/07/17(金) 13:19:51.15ID:MbWzFU1J >>36
チューリングマシンは現場でバリバリ使える調べて覚えるだけの価値がある技術だ
規則が連続している場合上の方を取ってくるとか2つの数値を比較して大小関係をルールにするといったことが出来る
正規表現で数値を取ってきてプログラミング言語で比較処理するより構造的に書ける
だから解答を用意した上でまずは簡単なお題から出して、次は少し難易度を上げるようなお題を考えながら待っていたが誰も解答しなかった
チューリングマシンは現場でバリバリ使える調べて覚えるだけの価値がある技術だ
規則が連続している場合上の方を取ってくるとか2つの数値を比較して大小関係をルールにするといったことが出来る
正規表現で数値を取ってきてプログラミング言語で比較処理するより構造的に書ける
だから解答を用意した上でまずは簡単なお題から出して、次は少し難易度を上げるようなお題を考えながら待っていたが誰も解答しなかった
2020/07/17(金) 13:33:42.70ID:TqoFz7RF
2020/07/17(金) 13:35:45.21ID:vGVdpt19
>>44
各フレーム物体がランダム位置で出現する場合には使えません
各フレーム物体がランダム位置で出現する場合には使えません
2020/07/17(金) 13:37:37.60ID:vGVdpt19
2020/07/17(金) 13:40:10.41ID:Jbjf6afq
CFGのクラスのものを例題にしたから意図したような回答がなかったんじゃないかと
50デフォルトの名無しさん
2020/07/17(金) 14:08:20.12ID:x8K2tEcw 学術の巨大掲示板群 - アルファ・ラボ ttp://x0000.net
数学 物理学 化学 生物学 天文学 地理地学
IT 電子 工学 言語学 国語 方言 など
simulationライブラリで純粋な関数式プログラミングをする
UIライブラリ (C#, 2D) を作ったよ
連続と離散を統一した!
4Dエンジン
matrixのライブラリ
ある強力なFor関数
SQLライブラリ
☆ VMを書いた(C#) * x86ではない!
ttp://up.x0000.net/files/TSimulang.zip
☆ malloc / free を実装してみた (C#)
ttp://up.x0000.net/files/TMallocTest.zip
数学 物理学 化学 生物学 天文学 地理地学
IT 電子 工学 言語学 国語 方言 など
simulationライブラリで純粋な関数式プログラミングをする
UIライブラリ (C#, 2D) を作ったよ
連続と離散を統一した!
4Dエンジン
matrixのライブラリ
ある強力なFor関数
SQLライブラリ
☆ VMを書いた(C#) * x86ではない!
ttp://up.x0000.net/files/TSimulang.zip
☆ malloc / free を実装してみた (C#)
ttp://up.x0000.net/files/TMallocTest.zip
52蟻人間 ◆T6xkBnTXz7B0
2020/07/17(金) 15:18:45.55ID:+x+SJT9l ステルス機とか、超音速機とか、プラズマ兵器とかのことか。
それらは想定外だよ。
それらは想定外だよ。
53蟻人間 ◆T6xkBnTXz7B0
2020/07/17(金) 15:23:09.49ID:+x+SJT9l プラズマ兵器は、実戦で使われた記録はないし、超音速でもレーダー網からは捕捉出来る。
ステルスは想定外。
ステルスは想定外。
54蟻人間 ◆T6xkBnTXz7B0
2020/07/17(金) 16:57:04.24ID:+x+SJT9l 防衛システムの歯無しは終わり。
次は三次元タートルグラフィックス。位置と向きの情報を持ったタートル(亀)を操作して、面白い図形を描こうというお話。平面じゃないよ、立体だよ。
レンダリングを何にするか。OpenGLは終わったし、DirectDrawは初心者には難しいし。そうだ、JavaScriptのThree.jsにしよう。これならスマホでも確認できるね。使ったことないけど。
次は三次元タートルグラフィックス。位置と向きの情報を持ったタートル(亀)を操作して、面白い図形を描こうというお話。平面じゃないよ、立体だよ。
レンダリングを何にするか。OpenGLは終わったし、DirectDrawは初心者には難しいし。そうだ、JavaScriptのThree.jsにしよう。これならスマホでも確認できるね。使ったことないけど。
2020/07/17(金) 17:49:54.25ID:vGVdpt19
>>51
出題文を読みかえしてみろ
出題文を読みかえしてみろ
2020/07/17(金) 17:51:07.65ID:vGVdpt19
ランダムに動く物体5個
57蟻人間 ◆T6xkBnTXz7B0
2020/07/17(金) 18:31:00.92ID:+x+SJT9l さて、亀は三次元の座標データP=(x, y, z)と三次元の方向ベクトルD=(dx, dy, dz) (単位ベクトルとする)で表せる訳だが、
線分を一つ引くごとに、線分を指定した位置に世界に追加する。世界の観測者の視点であるカメラは、テキトーな位置と方向で設置しておく。
描画ルーチンは、世界に追加された線分群をまとめて描く。描画エンジンは遠近法により、奥行きを持った映像を完成する。
線分を一つ引くごとに、線分を指定した位置に世界に追加する。世界の観測者の視点であるカメラは、テキトーな位置と方向で設置しておく。
描画ルーチンは、世界に追加された線分群をまとめて描く。描画エンジンは遠近法により、奥行きを持った映像を完成する。
58蟻人間 ◆T6xkBnTXz7B0
2020/07/17(金) 18:35:56.95ID:+x+SJT9l 小さなお題: Three.jsで三次元空間に線分を一本描画せよ。
59デフォルトの名無しさん
2020/07/17(金) 20:07:34.26ID:Q6g2SqxJ だめだ
何をいっているのだか私にはさっぱり
何をいっているのだか私にはさっぱり
2020/07/17(金) 20:36:03.22ID:RwfCcdVI
>>59
NGワードに糞コテを登録すればOKということだけ理解してれば大丈夫。
NGワードに糞コテを登録すればOKということだけ理解してれば大丈夫。
>>60
NGワードなんてスルー能力の足りない人が使うものですよ、私は全然使いませんね、だって必要ないし…
NGワードなんてスルー能力の足りない人が使うものですよ、私は全然使いませんね、だって必要ないし…
2020/07/17(金) 21:03:37.05ID:CFzyXZw3
クソコテスレ
63蟻人間 ◆T6xkBnTXz7B0
2020/07/17(金) 21:18:41.06ID:hZ0JaeyU こんな感じでHTMLを書けばThree.jsで三角形が描ける。
https://gist.github.com/katahiromz/cc182b4aaeaf2c7b5902238212c0f3f1
https://gist.github.com/katahiromz/cc182b4aaeaf2c7b5902238212c0f3f1
64蟻人間 ◆T6xkBnTXz7B0
2020/07/17(金) 21:29:05.44ID:hZ0JaeyU これを応用すれば、スマホでも動作するブラウザゲームを自分で作って
ゲーム会社を立ち上げることができるかも。
Three.jsがどんなものかは、
https://threejs.org/
を見ればたぶんわかる。三次元を描画するものだ。
ゲーム会社を立ち上げることができるかも。
Three.jsがどんなものかは、
https://threejs.org/
を見ればたぶんわかる。三次元を描画するものだ。
2020/07/17(金) 21:32:26.43ID:C5ummCR0
スレタイからずれすぎ
2020/07/18(土) 00:01:47.57ID:tp8HW1uL
ついに蟻人間は、3次元まで行ってしまったか
その内、Quaternion(4元数)がどうたらこうたらと、言い出しかねないw
その内、Quaternion(4元数)がどうたらこうたらと、言い出しかねないw
2020/07/18(土) 00:03:54.77ID:wH8oKg8v
>>58
分かり難いけど、描けました。
https://i.imgur.com/XZgoOTV.gif
P0(0,0,0)-P1(100,100,100)です。
//形状オブジェクトの宣言と生成
var geometry3 = new THREE.Geometry();
geometry3.vertices.push( new THREE.Vector3(0, 0, 0) );
geometry3.vertices.push( new THREE.Vector3(100, 100, 100) );
//材質オブジェクトの宣言と生成
var material3 = new THREE.LineBasicMaterial({ color: 0xFFFFFF, transparent:true,
linewidth: 8,
opacity:0.5 });
//線オブジェクトの生成
lines = new THREE.LineSegments(geometry3, material3);
//線オブジェクトのシーンへの追加
scene.add(lines);
分かり難いけど、描けました。
https://i.imgur.com/XZgoOTV.gif
P0(0,0,0)-P1(100,100,100)です。
//形状オブジェクトの宣言と生成
var geometry3 = new THREE.Geometry();
geometry3.vertices.push( new THREE.Vector3(0, 0, 0) );
geometry3.vertices.push( new THREE.Vector3(100, 100, 100) );
//材質オブジェクトの宣言と生成
var material3 = new THREE.LineBasicMaterial({ color: 0xFFFFFF, transparent:true,
linewidth: 8,
opacity:0.5 });
//線オブジェクトの生成
lines = new THREE.LineSegments(geometry3, material3);
//線オブジェクトのシーンへの追加
scene.add(lines);
2020/07/18(土) 06:18:45.66ID:yeg1h1ii
お題:何らかの数式のグラフとしてハート形を出力せよ。
使用する言語は問わない。
使用する言語は問わない。
2020/07/18(土) 10:23:44.89ID:Z+cMIoZ7
>>68
HTML5,JavaScript
<canvas id="cv" width="360" height="360"></canvas>
<script>
var ctx = document.getElementById("cv").getContext("2d");
ctx.lineWidth = 5; //線の太さ
ctx.strokeStyle = "red";
ctx.beginPath();
var r=10;var x0=0,y0=0;
for(i=0;i<=360;i+=5){
var d = i*Math.PI/180;
x0= r*(16*Math.sin(d)*Math.sin(d)*Math.sin(d));
y0= r*(13*Math.cos(d)-5*Math.cos(2*d)-2*Math.cos(3*d)-Math.cos(4*d));
ctx.lineTo(w+x0,h-y0);
}
ctx.stroke();
</script>
https://i.imgur.com/9tjfBmv.png
HTML5,JavaScript
<canvas id="cv" width="360" height="360"></canvas>
<script>
var ctx = document.getElementById("cv").getContext("2d");
ctx.lineWidth = 5; //線の太さ
ctx.strokeStyle = "red";
ctx.beginPath();
var r=10;var x0=0,y0=0;
for(i=0;i<=360;i+=5){
var d = i*Math.PI/180;
x0= r*(16*Math.sin(d)*Math.sin(d)*Math.sin(d));
y0= r*(13*Math.cos(d)-5*Math.cos(2*d)-2*Math.cos(3*d)-Math.cos(4*d));
ctx.lineTo(w+x0,h-y0);
}
ctx.stroke();
</script>
https://i.imgur.com/9tjfBmv.png
70デフォルトの名無しさん
2020/07/18(土) 10:47:53.29ID:zLRZfcZE >>68 Lua
for y=1.5,-1.5,-0.1 do
for x=-2,2,0.1 do
if (x^2+y^2-1)^3-x^2*y^3<0 then
io.write("@@")
else
io.write("__")
end
end
print()
end
for y=1.5,-1.5,-0.1 do
for x=-2,2,0.1 do
if (x^2+y^2-1)^3-x^2*y^3<0 then
io.write("@@")
else
io.write("__")
end
end
print()
end
2020/07/18(土) 10:50:14.98ID:dRuMQkW5
>>45
出題が糞過ぎたから誰も答えなかったんだぞ
出題が糞過ぎたから誰も答えなかったんだぞ
2020/07/18(土) 11:55:01.11ID:n7a2F8Nj
2020/07/18(土) 12:04:26.22ID:Z+cMIoZ7
2020/07/18(土) 12:35:48.94ID:xMoPei8m
>>69
きれい
きれい
75デフォルトの名無しさん
2020/07/18(土) 12:41:40.41ID:55gPHPOJ >>71
どこらへんが問題なのかを言わないと次も同じ問題を起こす可能性がある
どこらへんが問題なのかを言わないと次も同じ問題を起こす可能性がある
76デフォルトの名無しさん
2020/07/18(土) 12:45:26.81ID:55gPHPOJ すぐに論破されることを言う奴って何が目的なんだろう
5chを見下してるのかもしれないな
こんなサイトみてる奴は大したことないって思ってるから油断して非論理的な発言をするのかと思った
5chを見下してるのかもしれないな
こんなサイトみてる奴は大したことないって思ってるから油断して非論理的な発言をするのかと思った
2020/07/18(土) 13:00:12.87ID:Gf2oPXpD
どこに問題があるかなんて前スレでさんざん言われてただろ
あれで理解できないなら一生理解できないだろうね
あれで理解できないなら一生理解できないだろうね
2020/07/18(土) 13:01:12.49ID:n7a2F8Nj
>>75
たぶん問題が難しいか、手間がかかるからじゃないかな
たぶん問題が難しいか、手間がかかるからじゃないかな
79デフォルトの名無しさん
2020/07/18(土) 13:06:42.15ID:55gPHPOJ80デフォルトの名無しさん
2020/07/18(土) 13:09:37.97ID:LD7t+FRX イキり臭ただようコメントですね
81デフォルトの名無しさん
2020/07/18(土) 13:14:16.81ID:LD7t+FRX 問題の良し悪しよりも出題者の態度が気に入らないから取り組まない人がいるんじゃないかな
自分の正当性を主張するだけではダメで回答者のモチベーションを上げる方向に導かないと
コミュニケーションが未熟なだけだと思いました
自分の正当性を主張するだけではダメで回答者のモチベーションを上げる方向に導かないと
コミュニケーションが未熟なだけだと思いました
82デフォルトの名無しさん
2020/07/18(土) 13:17:55.61ID:LD7t+FRX 線形拘束オートマトンでこの問題解いてみて!
線形拘束オートマトンはこういう仕組みで、こういうところでも活用できるから知ってると便利だよ!
みたいにポジティブアゲアゲでいかないと
線形拘束オートマトンはこういう仕組みで、こういうところでも活用できるから知ってると便利だよ!
みたいにポジティブアゲアゲでいかないと
83デフォルトの名無しさん
2020/07/18(土) 13:20:22.31ID:55gPHPOJ2020/07/18(土) 13:21:40.49ID:n7a2F8Nj
85デフォルトの名無しさん
2020/07/18(土) 13:23:11.61ID:55gPHPOJ86デフォルトの名無しさん
2020/07/18(土) 14:02:48.54ID:LD7t+FRX >>83
ルールとして決める必要はなくて
一般的なコミュニケーションのとり方としてレスポンスが欲しいなら
自分の正当性だけを主張するやり方だと難しいよってこと
自分がこんなに頑張って問題書いたんだ、答えがないのは不誠実だ、そんな自己中発揮してたらレスポンスなくて当然かと
ルールとして決める必要はなくて
一般的なコミュニケーションのとり方としてレスポンスが欲しいなら
自分の正当性だけを主張するやり方だと難しいよってこと
自分がこんなに頑張って問題書いたんだ、答えがないのは不誠実だ、そんな自己中発揮してたらレスポンスなくて当然かと
87デフォルトの名無しさん
2020/07/18(土) 14:06:16.09ID:LD7t+FRX 線形拘束オートマトンが実装できるってすごいことだから
模範解答示したら良いと思うよ
模範解答示したら良いと思うよ
2020/07/18(土) 14:14:52.95ID:ICGznoJS
>>83
難度がうんぬんよりも問題文読んだ時点で作問者の頭が悪そう(使ってる言葉の意味わかってなさそう)って思ってスルーしたわ
ここのコテハンも同じ理由でスルー
ただ、面白そうなら気まぐれで解くこともある
解く方も出す方も好きにしたら良い
難度がうんぬんよりも問題文読んだ時点で作問者の頭が悪そう(使ってる言葉の意味わかってなさそう)って思ってスルーしたわ
ここのコテハンも同じ理由でスルー
ただ、面白そうなら気まぐれで解くこともある
解く方も出す方も好きにしたら良い
89デフォルトの名無しさん
2020/07/18(土) 14:36:05.17ID:55gPHPOJ90デフォルトの名無しさん
2020/07/18(土) 14:41:12.58ID:LD7t+FRX91デフォルトの名無しさん
2020/07/18(土) 14:42:30.19ID:LD7t+FRX 問題を起こしてしまうの主語は君がってことだよね? 君がコミュニケーション能力を身につければ解決すると思うのだけれども
2020/07/18(土) 14:42:36.88ID:vTEAacne
解いてみたいと思えない内容の上に長文でうざい
っていう感情論に近いものを明文化すんのはちょっと難しいね
っていう感情論に近いものを明文化すんのはちょっと難しいね
93デフォルトの名無しさん
2020/07/18(土) 14:50:16.06ID:LD7t+FRX 客観的に難易度は高いと思うよ
少なくとも僕は実装したこと無い
有限オートマトンが精一杯
自分で「難易度がこのスレの住人には高すぎたということか」と言ってしまうのはイキりだと思った
難易度+高慢な態度 ってところかと
少なくとも僕は実装したこと無い
有限オートマトンが精一杯
自分で「難易度がこのスレの住人には高すぎたということか」と言ってしまうのはイキりだと思った
難易度+高慢な態度 ってところかと
2020/07/18(土) 15:08:41.26ID:n7a2F8Nj
あるいは進行形で解いてるやつがいるかもしれないな
なんたってこのスレの最長解答時間は3ヵ月だからなw
なんたってこのスレの最長解答時間は3ヵ月だからなw
95デフォルトの名無しさん
2020/07/18(土) 15:10:20.71ID:LD7t+FRX レーダーのお題でしょ、あれは感動した
96デフォルトの名無しさん
2020/07/18(土) 15:12:42.37ID:LD7t+FRX チューリングマシンのお題は、僕も解いて見ようと思ってWikipedia読んでる
97デフォルトの名無しさん
2020/07/18(土) 15:13:54.80ID:LD7t+FRX 最高のチューリングマシンを見せてやるぜ、必ず帰ってくるからな、帰ったら結婚しよう
2020/07/18(土) 15:20:47.20ID:n7a2F8Nj
死亡フラグね
2020/07/18(土) 15:29:31.73ID:Bt+NBO6d
>>83
気に入らない奴は相手にされないなんて、人と人とのコミュニケーションが発生する場所なら何処でもそうだろう。仕事などの個人の感情よりやるべきことを優先すべき場面を除いては。
書かれてないから知らないなんて、小学生の屁理屈にも劣る反応だな。
気に入らない奴は相手にされないなんて、人と人とのコミュニケーションが発生する場所なら何処でもそうだろう。仕事などの個人の感情よりやるべきことを優先すべき場面を除いては。
書かれてないから知らないなんて、小学生の屁理屈にも劣る反応だな。
100デフォルトの名無しさん
2020/07/18(土) 15:34:22.37ID:55gPHPOJ 新しいことを学ぶのは素晴らしいと思うけど今まで2週間以上同じスレに居たことがないから責任持てないなぁ
現場でバリバリ使う為にはε-非決定性オートマトンとかも知っとかないと実用的じゃなくなるから学習に意味を見いだすのはかなり難しいと思うよ
現場でバリバリ使う為にはε-非決定性オートマトンとかも知っとかないと実用的じゃなくなるから学習に意味を見いだすのはかなり難しいと思うよ
>>100
非決定オートマトンを決定性オートマトンにする、とかいうお題は、やっぱりマニアックすぎますかね?
今そういう本をよんでポチポチコードを書いているので、需要があるようなら出題&採点してもいいかなって思ってます
非決定オートマトンを決定性オートマトンにする、とかいうお題は、やっぱりマニアックすぎますかね?
今そういう本をよんでポチポチコードを書いているので、需要があるようなら出題&採点してもいいかなって思ってます
102デフォルトの名無しさん
2020/07/18(土) 15:47:29.51ID:55gPHPOJ >>101
需要があるかは分からないけどとてもいいと思うよ
需要があるかは分からないけどとてもいいと思うよ
103デフォルトの名無しさん
2020/07/18(土) 15:58:37.25ID:n7a2F8Nj >>102
いなくなるかもしれないなら解答例貼っておいてよ
いなくなるかもしれないなら解答例貼っておいてよ
104デフォルトの名無しさん
2020/07/18(土) 16:51:46.46ID:2TKjWEFt sedでいいんじゃね
105デフォルトの名無しさん
2020/07/18(土) 18:01:09.47ID:k5pKf1DO >>81
まあしかし何かが出題されたら必ず誰かが解かねばならないわけでもないしな。義務は何もないからこうでなければいけないという事もない。
まあしかし何かが出題されたら必ず誰かが解かねばならないわけでもないしな。義務は何もないからこうでなければいけないという事もない。
10669
2020/07/18(土) 19:43:00.59ID:BZh66Ti/ >>74
ありがとう❣、チャレンジして良かったよ!
出題者からはなんの評価も解説もされないので
そういう反応が返って来ると嬉しい。
また、次のモチベーションに繋がる。
教科書とか勉強中のコラムとかコーヒーブレイクみたいな
息抜き程度の頭の体操になるような手軽なお題の方が答えやすいね。
結局は出題者も回答者も自己満足でしか無いから、
初級〜中級者向けくらいが丁度良いかも?
ありがとう❣、チャレンジして良かったよ!
出題者からはなんの評価も解説もされないので
そういう反応が返って来ると嬉しい。
また、次のモチベーションに繋がる。
教科書とか勉強中のコラムとかコーヒーブレイクみたいな
息抜き程度の頭の体操になるような手軽なお題の方が答えやすいね。
結局は出題者も回答者も自己満足でしか無いから、
初級〜中級者向けくらいが丁度良いかも?
107デフォルトの名無しさん
2020/07/18(土) 20:06:14.32ID:tp8HW1uL108デフォルトの名無しさん
2020/07/18(土) 20:44:45.69ID:naIVYT0v10968
2020/07/18(土) 21:39:17.47ID:yeg1h1ii いろんな回答を見たかったので早期の論評は控えてました。
>>69の出力は出題者もきれいだなって思います。
想定していたコードはどちらかいうと>>70に近くて
http://codepad.org/ICpm3J6j
こんな感じの簡単な式(x^2+y^2<100-|x|y)でも充分かなと思ってました。
ハート形を生成できる式はいくつか知られているので、バリエーションを探ってみるのはいいかなと思います。
>>69の出力は出題者もきれいだなって思います。
想定していたコードはどちらかいうと>>70に近くて
http://codepad.org/ICpm3J6j
こんな感じの簡単な式(x^2+y^2<100-|x|y)でも充分かなと思ってました。
ハート形を生成できる式はいくつか知られているので、バリエーションを探ってみるのはいいかなと思います。
110蟻人間 ◆T6xkBnTXz7B0
2020/07/19(日) 13:58:11.60ID:GV3E92FC (1) https://gist.github.com/katahiromz/694763e2060d4a004452875bebc04ee3
二次元タートルグラフィックスで八角形を描けたよ。
お題: (1)と(2)のリンクを参考にコッホ曲線を描画せよ。
(2) http://www.f.waseda.jp/sakas/java/JavaGraphicsSample.html
二次元タートルグラフィックスで八角形を描けたよ。
お題: (1)と(2)のリンクを参考にコッホ曲線を描画せよ。
(2) http://www.f.waseda.jp/sakas/java/JavaGraphicsSample.html
111蟻人間 ◆T6xkBnTXz7B0
2020/07/19(日) 14:05:25.72ID:GV3E92FC >>110 答え:
function koch(degree, step) {
if (degree == 0) {
walk(step);
} else {
koch(degree - 1, step/3);
turn_angle(60);
koch(degree - 1, step/3);
turn_angle(-120);
koch(degree - 1, step/3);
turn_angle(60);
koch(degree - 1, step/3);
}
}
function draw() {
set_pos(0, 0, 0);
set_dir(100, 0, 0);
koch(5, 75);
}
function koch(degree, step) {
if (degree == 0) {
walk(step);
} else {
koch(degree - 1, step/3);
turn_angle(60);
koch(degree - 1, step/3);
turn_angle(-120);
koch(degree - 1, step/3);
turn_angle(60);
koch(degree - 1, step/3);
}
}
function draw() {
set_pos(0, 0, 0);
set_dir(100, 0, 0);
koch(5, 75);
}
112蟻人間 ◆T6xkBnTXz7B0
2020/07/19(日) 14:45:30.46ID:GV3E92FC 小さなお題: >>110 の(1)のturn_dir関数とturn_angle関数を3次元に拡張し、
3次元タートルグラフィックスを可能にせよ。
ただし、turn_dirの引数は長さ1の方向ベクトルとし、turn_angleの引数は角度とする。
turn_dirは、引数dzが0のとき、変更前と同じ動作にせよ。
また、turn_angleの引数にもう一つの角度を追加し、追加した角度がゼロのとき、
変更前と同じ動作にせよ。
ヒント:四元数
3次元タートルグラフィックスを可能にせよ。
ただし、turn_dirの引数は長さ1の方向ベクトルとし、turn_angleの引数は角度とする。
turn_dirは、引数dzが0のとき、変更前と同じ動作にせよ。
また、turn_angleの引数にもう一つの角度を追加し、追加した角度がゼロのとき、
変更前と同じ動作にせよ。
ヒント:四元数
113デフォルトの名無しさん
2020/07/19(日) 14:48:01.51ID:EiEVeWaP 草
66 名前:デフォルトの名無しさん[sage] 投稿日:2020/07/18(土) 00:01:47.57 ID:tp8HW1uL [1/2]
ついに蟻人間は、3次元まで行ってしまったか
その内、Quaternion(4元数)がどうたらこうたらと、言い出しかねないw
66 名前:デフォルトの名無しさん[sage] 投稿日:2020/07/18(土) 00:01:47.57 ID:tp8HW1uL [1/2]
ついに蟻人間は、3次元まで行ってしまったか
その内、Quaternion(4元数)がどうたらこうたらと、言い出しかねないw
114蟻人間 ◆T6xkBnTXz7B0
2020/07/19(日) 21:17:44.37ID:T8vbWyFG さて、解けた者は挙手したまえ。
115デフォルトの名無しさん
2020/07/19(日) 21:45:13.46ID:h5vFOzT4 頭が悪いことがばれたからって
必死に数学の知識を見せようと頑張ってる
でも頭の悪さが随所に滲み出てる
自覚のないアホ
必死に数学の知識を見せようと頑張ってる
でも頭の悪さが随所に滲み出てる
自覚のないアホ
116蟻人間 ◆T6xkBnTXz7B0
2020/07/19(日) 21:56:49.40ID:GV3E92FC >>115 数学出来るなら手伝ってくれよ。。。これから面白くなるから。
function turn_angle(angle1, angle2) {
// x-y平面上のangle1度の方向ベクトル(dx, dy)。
var dx = Math.cos(angle1 * Math.PI / 180);
var dy = Math.sin(angle1 * Math.PI / 180);
// (dx, dy, 0)をx軸を中心にangle2度回転したものを(dx, dy, dz)とする。
...(ここに何か書く)...
// 実際に回転させる。
turn_dir(dx, dy, dz);
}
function turn_angle(angle1, angle2) {
// x-y平面上のangle1度の方向ベクトル(dx, dy)。
var dx = Math.cos(angle1 * Math.PI / 180);
var dy = Math.sin(angle1 * Math.PI / 180);
// (dx, dy, 0)をx軸を中心にangle2度回転したものを(dx, dy, dz)とする。
...(ここに何か書く)...
// 実際に回転させる。
turn_dir(dx, dy, dz);
}
117デフォルトの名無しさん
2020/07/19(日) 21:57:24.56ID:5kiTFqsE 誰もイキらずに淡々と問題と答えのレスだけ並んでく雰囲気は良さを感じたけど
やっぱクソコテって怖いな
やっぱクソコテって怖いな
118蟻人間 ◆T6xkBnTXz7B0
2020/07/19(日) 22:06:51.03ID:GV3E92FC >>116
dz = dy * Math.sin(angle2 * Math.PI / 180);
dy *= Math.cos(angle2 * Math.PI / 180);
次は、三次元のturn_dirね。数学、スゴクデキルんでしょ?
dz = dy * Math.sin(angle2 * Math.PI / 180);
dy *= Math.cos(angle2 * Math.PI / 180);
次は、三次元のturn_dirね。数学、スゴクデキルんでしょ?
119蟻人間 ◆T6xkBnTXz7B0
2020/07/19(日) 22:12:10.73ID:GV3E92FC お題: JavaScript
function turn_dir(dx, dy, dz) {
// (dx, dy, dz)は長さ1の方向ベクトル。
// 長さ1の方向ベクトル(turtle_dx, turtle_dy, turtle_dz)を(dx, dy, dz)だけ回転させる。
...(ここに何か書く)...
}
function turn_dir(dx, dy, dz) {
// (dx, dy, dz)は長さ1の方向ベクトル。
// 長さ1の方向ベクトル(turtle_dx, turtle_dy, turtle_dz)を(dx, dy, dz)だけ回転させる。
...(ここに何か書く)...
}
120蟻人間 ◆T6xkBnTXz7B0
2020/07/19(日) 22:16:20.98ID:GV3E92FC ♪はい、コーディングいってみよー!
はいはいはい、はいはいはい!
はいはいはい、はいはいはい!
121蟻人間 ◆T6xkBnTXz7B0
2020/07/19(日) 23:32:08.26ID:T8vbWyFG 俺はそういう悪評トリックに引っ掛からないよ。間違いは的確に指摘頂きたい。
122デフォルトの名無しさん
2020/07/20(月) 06:57:18.16ID:P7t0RBc6 >>110-121
(1)のソースにオービットコントロールを付けると楽しいですよ。
<!-- OrbitControls.jsファイルソース読込 -->
<script src="./three.js-master/examples/js/controls/OrbitControls.js"></script>
//controls変数宣言追加
var scene, renderer, camera, controls;
function init() {//イニシャライズの
・・・
camera.lookAt(0, 0, 0);
//controlsインスタンス生成してカメラとレンダラー渡すだけ
controls = new THREE.OrbitControls( camera, renderer.domElement );
scene = new THREE.Scene();
//ついでに座標軸表示もおすすめ
scene.add( new THREE.AxisHelper(50) );
}
https://i.imgur.com/uFIgx6x.png
(1)のソースにオービットコントロールを付けると楽しいですよ。
<!-- OrbitControls.jsファイルソース読込 -->
<script src="./three.js-master/examples/js/controls/OrbitControls.js"></script>
//controls変数宣言追加
var scene, renderer, camera, controls;
function init() {//イニシャライズの
・・・
camera.lookAt(0, 0, 0);
//controlsインスタンス生成してカメラとレンダラー渡すだけ
controls = new THREE.OrbitControls( camera, renderer.domElement );
scene = new THREE.Scene();
//ついでに座標軸表示もおすすめ
scene.add( new THREE.AxisHelper(50) );
}
https://i.imgur.com/uFIgx6x.png
123デフォルトの名無しさん
2020/07/20(月) 07:42:33.17ID:ozWDjdlg >>118
やってみたよ
function turn_angle(angle1, angle2) {
if( !angle2 || angle2==0){
turn_dir(Math.cos(angle1 * Math.PI / 180), Math.sin(angle1 * Math.PI / 180), 0);
}else{
// x-y平面上のangle1度の方向ベクトル(dx, dy)。
var dx = Math.cos(angle1 * Math.PI / 180);
var dy = Math.sin(angle1 * Math.PI / 180);
// (dx, dy, 0)をx軸を中心にangle2度回転したものを(dx, dy, dz)とする。
var dz = dy * Math.sin(angle2 * Math.PI / 180);
//dy *= Math.cos(angle2 * Math.PI / 180);
turtle_dz = dz;
// 実際に回転させる。
turn_dir(dx, dy, dz);
}
}
function draw() {
set_pos(0, 0, 0);
set_dir(0, 100, 0);
for (var i = 0; i < 18; ++i) {
walk(15);
//turn_angle(45);
turn_angle(45, 20);
}
}
https://i.imgur.com/CdQvIDR.png
https://i.imgur.com/G4HUVBh.png
やってみたよ
function turn_angle(angle1, angle2) {
if( !angle2 || angle2==0){
turn_dir(Math.cos(angle1 * Math.PI / 180), Math.sin(angle1 * Math.PI / 180), 0);
}else{
// x-y平面上のangle1度の方向ベクトル(dx, dy)。
var dx = Math.cos(angle1 * Math.PI / 180);
var dy = Math.sin(angle1 * Math.PI / 180);
// (dx, dy, 0)をx軸を中心にangle2度回転したものを(dx, dy, dz)とする。
var dz = dy * Math.sin(angle2 * Math.PI / 180);
//dy *= Math.cos(angle2 * Math.PI / 180);
turtle_dz = dz;
// 実際に回転させる。
turn_dir(dx, dy, dz);
}
}
function draw() {
set_pos(0, 0, 0);
set_dir(0, 100, 0);
for (var i = 0; i < 18; ++i) {
walk(15);
//turn_angle(45);
turn_angle(45, 20);
}
}
https://i.imgur.com/CdQvIDR.png
https://i.imgur.com/G4HUVBh.png
124蟻人間 ◆T6xkBnTXz7B0
2020/07/20(月) 15:09:49.43ID:rHNryQzp 傾けた木が平面にならない。
https://github.com/katahiromz/3D
(4) https://github.com/katahiromz/3D/blob/master/4.html
https://twitter.com/katahiromz/status/1285093638557466624/photo/1
何でだろ。
https://github.com/katahiromz/3D からダウンロードして下さい。
お題: (4) を修正して木が平面になるようにせよ。
https://twitter.com/5chan_nel (5ch newer account)
https://github.com/katahiromz/3D
(4) https://github.com/katahiromz/3D/blob/master/4.html
https://twitter.com/katahiromz/status/1285093638557466624/photo/1
何でだろ。
https://github.com/katahiromz/3D からダウンロードして下さい。
お題: (4) を修正して木が平面になるようにせよ。
https://twitter.com/5chan_nel (5ch newer account)
125デフォルトの名無しさん
2020/07/20(月) 16:08:13.13ID:UHinuGOV お題じゃなくて作成依頼ですか?w
126蟻人間 ◆T6xkBnTXz7B0
2020/07/20(月) 16:16:33.54ID:6GFyBW1T こういうのは数学が鬼ズバできる猛者に任せたい所だが。。。
報酬は出しちゃいかんのか。
報酬は出しちゃいかんのか。
127デフォルトの名無しさん
2020/07/20(月) 17:25:48.10ID:uvZgkaZD 出ないならやらない
128デフォルトの名無しさん
2020/07/20(月) 17:58:58.92ID:8mFfSXNu いや、そういう猛者がいるところに依頼してこいよ
報酬出すんならランサーズとかにでも行ってこい
なんでここで話題にするんだ
報酬出すんならランサーズとかにでも行ってこい
なんでここで話題にするんだ
129デフォルトの名無しさん
2020/07/20(月) 17:59:50.36ID:8mFfSXNu そういう意味不明な言動を繰り返すから糞コテ呼ばわりされるって気付いて
130蟻人間 ◆T6xkBnTXz7B0
2020/07/20(月) 18:37:44.48ID:rHNryQzp 寺へ行きました。すみません。
131デフォルトの名無しさん
2020/07/20(月) 23:40:32.05ID:5ka8Ymx5 >>124
なにこれ激重。1〜3はIEでも動くけど4はクロームでも少し時間かかる。
https://i.imgur.com/Kkti3xQ.gif
舞フレームごとに書き出してるんかな?
3Dオブジェクトコンテナにでも入れた方がいいのかな?
なにこれ激重。1〜3はIEでも動くけど4はクロームでも少し時間かかる。
https://i.imgur.com/Kkti3xQ.gif
舞フレームごとに書き出してるんかな?
3Dオブジェクトコンテナにでも入れた方がいいのかな?
132蟻人間 ◆T6xkBnTXz7B0
2020/07/20(月) 23:47:38.07ID:6GFyBW1T やろうとしてるのは、三次元フラクタルと臓器の実体化だから、超複雑な図形を再帰で描くことになる。再帰が多ければ確かに計算量は爆発するよ。
133デフォルトの名無しさん
2020/07/20(月) 23:52:17.88ID:/f9oEP+1 いい加減IE捨てろよ
134アンスタ7.2日目 ◆mqSs/N.hZs
2020/07/20(月) 23:54:27.58ID:5ka8Ymx5 >>124
https://i.imgur.com/Kkti3xQ.gif
タートルグラフィックスTreeの平面化
https://i.imgur.com/hNNvsE0.gif
3次元にしたいのか平面にしたいのかどっちなんだか。。。
変更箇所↓
function turn_angle(angle1, angle2=0) {
var dx = Math.cos(angle1 * Math.PI / 180);
var dy = Math.sin(angle1 * Math.PI / 180);
angle2 += turtle_spin;
var dz = dy * Math.sin(angle2 * Math.PI / 180);
//dy *= Math.cos(angle2 * Math.PI / 180);
turtle_z = dz;
turn_dir(dx, dy, dz);
}
function draw() {
//set_pos(0, 0, 0);
set_dir(0, 100, 0);
//koch(6, 50);
set_pos(0, 0, 0);
//set_dir(0, 100, 100);
tree(10, 40, 10);
}
https://i.imgur.com/Kkti3xQ.gif
タートルグラフィックスTreeの平面化
https://i.imgur.com/hNNvsE0.gif
3次元にしたいのか平面にしたいのかどっちなんだか。。。
変更箇所↓
function turn_angle(angle1, angle2=0) {
var dx = Math.cos(angle1 * Math.PI / 180);
var dy = Math.sin(angle1 * Math.PI / 180);
angle2 += turtle_spin;
var dz = dy * Math.sin(angle2 * Math.PI / 180);
//dy *= Math.cos(angle2 * Math.PI / 180);
turtle_z = dz;
turn_dir(dx, dy, dz);
}
function draw() {
//set_pos(0, 0, 0);
set_dir(0, 100, 0);
//koch(6, 50);
set_pos(0, 0, 0);
//set_dir(0, 100, 100);
tree(10, 40, 10);
}
135デフォルトの名無しさん
2020/07/20(月) 23:57:55.33ID:5ka8Ymx5 >>133
クロームより軽いから、捨てられなくて。。。
クロームより軽いから、捨てられなくて。。。
136蟻人間 ◆T6xkBnTXz7B0
2020/07/21(火) 00:03:34.18ID:iLwMnecK137デフォルトの名無しさん
2020/07/22(水) 22:25:22.87ID:ILXZvJ+B 「1+1は2じゃないぞ。オレたちは1+1で200だ!10倍だぞ10倍」
…が、なんとなく成り立っているように感じられるプログラムを作って発表せよ。
…が、なんとなく成り立っているように感じられるプログラムを作って発表せよ。
138デフォルトの名無しさん
2020/07/22(水) 22:30:15.48ID:IwIxQ1Ze お題: ランダムな整数が格納された長さNの配列から、偶数の要素のみを抜き出せ
Nは任意とする
Nは任意とする
139デフォルトの名無しさん
2020/07/22(水) 22:57:06.83ID:EawLE7Sy140デフォルトの名無しさん
2020/07/23(木) 00:07:39.47ID:DuCdQo+y >>137
面白いものができてしまったわ
class Integer
def +(other) 200 end
def /(other) 10 end
end
p "1+1は2じゃないぞ。オレたちは1+1で#{1 + 1}だ!#{rate = 200 / 2}倍だぞ#{rate}倍"
# => "1+1は2じゃないぞ。オレたちは1+1で200だ!10倍だぞ10倍"
https://repl.it/@vip0/override-plus-1#main.rb
面白いものができてしまったわ
class Integer
def +(other) 200 end
def /(other) 10 end
end
p "1+1は2じゃないぞ。オレたちは1+1で#{1 + 1}だ!#{rate = 200 / 2}倍だぞ#{rate}倍"
# => "1+1は2じゃないぞ。オレたちは1+1で200だ!10倍だぞ10倍"
https://repl.it/@vip0/override-plus-1#main.rb
141デフォルトの名無しさん
2020/07/23(木) 10:38:13.83ID:bJ7HfHNw142デフォルトの名無しさん
2020/07/23(木) 22:03:16.45ID:VBywRp49143デフォルトの名無しさん
2020/07/23(木) 23:12:54.26ID:QnunbgyT144デフォルトの名無しさん
2020/07/24(金) 00:24:32.57ID:F0SZWNxk145デフォルトの名無しさん
2020/07/24(金) 03:32:41.61ID:6ZonvnML146デフォルトの名無しさん
2020/07/24(金) 03:47:06.33ID:6ZonvnML >>138
Kotlin 及び Kotlin Script ではこんな風になる(a が元の配列または List)。
val b = a.filter { (it % 2) == 0 }
もちろん比較部分は (it and 1) == 0 等でも良い。it が偶数の時に true になりさえすればなんでも良い。
配列の要素数の N についてはここでは考える必要なし。
要素の型が Int かどうかも考える必要なしだが、% 2 の計算ができないとか結果が Int の 0 と比較できなければコンパイルエラー、または Script なら読んだ直後の文法チェック時にエラーだと思う。
Kotlin 及び Kotlin Script ではこんな風になる(a が元の配列または List)。
val b = a.filter { (it % 2) == 0 }
もちろん比較部分は (it and 1) == 0 等でも良い。it が偶数の時に true になりさえすればなんでも良い。
配列の要素数の N についてはここでは考える必要なし。
要素の型が Int かどうかも考える必要なしだが、% 2 の計算ができないとか結果が Int の 0 と比較できなければコンパイルエラー、または Script なら読んだ直後の文法チェック時にエラーだと思う。
147デフォルトの名無しさん
2020/07/25(土) 07:02:03.31ID:j1aQFTSL148デフォルトの名無しさん
2020/07/25(土) 11:32:49.78ID:vIjhxGJs 大抵の言語でfilter modulo一発だよね。
お題www
お題www
149デフォルトの名無しさん
2020/07/26(日) 11:42:26.03ID:467XWCJo >>138
ランダムは副作用なので、ちと面倒臭い。
(厳密には擬似乱数を作る為の種(newStdGen)だけが副作用)
Haskell
import System.Random
main = f 10 >>= print
f :: Int -> IO [Int]
f n = newStdGen >>= return.filter even.take n.randomRs (1,100)
実行結果
[56,70,100]
型指定しないと型推論が働かない。
(生成される乱数が整数とは限らない為)
戻り値は型で分かる通り、普通のリストでは無くIOなリスト。
newStdGenを使っているので、IOな値を返さないといけない。
(printもIO ()を返すのでreturnをprintに置き換えて直接出力も可能ではある)
randomRs (1,100) で1から100までの乱数の無限リストを生成。
後はtakeで無限リストから任意の個数を取り出してfilterするだけ。
(takeとfilterは順番が逆だと乱数の無限リストから偶数を任意の個数取り出すので問題の意図と違ってしまう)
問題が「出力しろ」では無く「抜き出せ」なので、あえてprintは関数の外に置いた。
ランダムは副作用なので、ちと面倒臭い。
(厳密には擬似乱数を作る為の種(newStdGen)だけが副作用)
Haskell
import System.Random
main = f 10 >>= print
f :: Int -> IO [Int]
f n = newStdGen >>= return.filter even.take n.randomRs (1,100)
実行結果
[56,70,100]
型指定しないと型推論が働かない。
(生成される乱数が整数とは限らない為)
戻り値は型で分かる通り、普通のリストでは無くIOなリスト。
newStdGenを使っているので、IOな値を返さないといけない。
(printもIO ()を返すのでreturnをprintに置き換えて直接出力も可能ではある)
randomRs (1,100) で1から100までの乱数の無限リストを生成。
後はtakeで無限リストから任意の個数を取り出してfilterするだけ。
(takeとfilterは順番が逆だと乱数の無限リストから偶数を任意の個数取り出すので問題の意図と違ってしまう)
問題が「出力しろ」では無く「抜き出せ」なので、あえてprintは関数の外に置いた。
150デフォルトの名無しさん
2020/07/26(日) 11:54:08.47ID:arqbmdN/ Haskellのコード見たいと思ってた
151デフォルトの名無しさん
2020/07/26(日) 11:55:36.48ID:Lwmxod4b 流行らなかった訳が分かった
152デフォルトの名無しさん
2020/07/26(日) 12:16:01.64ID:yLhsD6tn153デフォルトの名無しさん
2020/07/26(日) 12:31:12.02ID:XQciIU0B お題
2つの文字列の差を[]で囲って出力してください
例1
入力:abc adc
出力:a[b]c
例2
入力:abc acd
出力:a[bc]
例3
入力:abc bcc
出力:[ab]c
2つの文字列の差を[]で囲って出力してください
例1
入力:abc adc
出力:a[b]c
例2
入力:abc acd
出力:a[bc]
例3
入力:abc bcc
出力:[ab]c
154デフォルトの名無しさん
2020/07/26(日) 15:30:12.41ID:yLhsD6tn >>153
Haskell
一応、長さが違う場合、短い方に合わせる様にしてみた。
テストし切れてないかもなので、バグに気付いたら教えて下しあ。
main = putStrLn $ g "abcdefrh" "acdgefggn"
f False [] _ =[]
f False _ [] =[]
f True [] _ = "]":[]
f True _ [] = "]":[]
f flg (x:xs) (y:ys) | flg == True && x == y = ("]" ++ [x]):f False xs ys
f flg (x:xs) (y:ys) | x == y = [x]:f False xs ys
f flg (x:xs) (y:ys) | flg == False = ("[" ++ [x]):f True xs ys
f flg (x:xs) (y:ys) | flg == True = [x]:f flg xs ys
g xs = concat.f False xs
実行結果
"a[bcd]ef[rh]"
Haskell
一応、長さが違う場合、短い方に合わせる様にしてみた。
テストし切れてないかもなので、バグに気付いたら教えて下しあ。
main = putStrLn $ g "abcdefrh" "acdgefggn"
f False [] _ =[]
f False _ [] =[]
f True [] _ = "]":[]
f True _ [] = "]":[]
f flg (x:xs) (y:ys) | flg == True && x == y = ("]" ++ [x]):f False xs ys
f flg (x:xs) (y:ys) | x == y = [x]:f False xs ys
f flg (x:xs) (y:ys) | flg == False = ("[" ++ [x]):f True xs ys
f flg (x:xs) (y:ys) | flg == True = [x]:f flg xs ys
g xs = concat.f False xs
実行結果
"a[bcd]ef[rh]"
155デフォルトの名無しさん
2020/07/26(日) 17:41:12.51ID:1PJx+gwa やっぱフラグしかないのか?
156デフォルトの名無しさん
2020/07/26(日) 19:21:26.42ID:+ODzYEeD >>153 Ruby
def resolve( s )
f = true
ss = s.split.map{|w| w.chars }
ss[0].zip( ss[1] ).inject(''){|r, (c,d)|
r << ( (f)? '[': ']' ) if (c == d) != f
f = c == d
r << c
} + ((f)? '' : ']')
end
[ "abc adc", "abc acd", "abc bcc" ].each{|s|
puts "入力:#{s}"
puts "出力:#{resolve( s )}\n\n"
}
def resolve( s )
f = true
ss = s.split.map{|w| w.chars }
ss[0].zip( ss[1] ).inject(''){|r, (c,d)|
r << ( (f)? '[': ']' ) if (c == d) != f
f = c == d
r << c
} + ((f)? '' : ']')
end
[ "abc adc", "abc acd", "abc bcc" ].each{|s|
puts "入力:#{s}"
puts "出力:#{resolve( s )}\n\n"
}
157デフォルトの名無しさん
2020/07/26(日) 23:12:10.92ID:3QUkzPB/ >>155
確かこんなのあったな〜・・・と、inword/outword関数の相互再帰で書いてみた。
Haskell
main = (putStrLn.f "abcdefrt") "acdgefgg"
f xs ys | g xs ys =[]
f (x:xs) (y:ys) | x == y = outword (x:xs) (y:ys)
f xs ys = inword xs ys
inword xs ys | g xs ys = ']':[]
inword (x:xs) (y:ys) | x == y = ']':x:outword xs ys
inword (x:xs) (_:ys) = x:inword xs ys
outword xs ys | g xs ys = []
outword (x:xs) (y:ys) | x == y = x:outword xs ys
outword (x:xs) (_:ys) = '[':x:inword xs ys
g xs ys = or [null xs, null ys]
確かこんなのあったな〜・・・と、inword/outword関数の相互再帰で書いてみた。
Haskell
main = (putStrLn.f "abcdefrt") "acdgefgg"
f xs ys | g xs ys =[]
f (x:xs) (y:ys) | x == y = outword (x:xs) (y:ys)
f xs ys = inword xs ys
inword xs ys | g xs ys = ']':[]
inword (x:xs) (y:ys) | x == y = ']':x:outword xs ys
inword (x:xs) (_:ys) = x:inword xs ys
outword xs ys | g xs ys = []
outword (x:xs) (y:ys) | x == y = x:outword xs ys
outword (x:xs) (_:ys) = '[':x:inword xs ys
g xs ys = or [null xs, null ys]
158デフォルトの名無しさん
2020/07/29(水) 09:26:50.38ID:yJ6wpcWu お題1
じゃんけんを実装してください
1 = ぐー
2 = ちょき
3 = ぱー
入力: 1
出力: あなた=ぐー コンピュータ=ちょき あなたの勝ちです
お題2
あなたの勝率を指定できるようにしてください
勝率は0.0〜1.0で入力します
入力: 1 0.7
出力: あなた=ぐー コンピュータ=ちょき あなたの勝ちです
じゃんけんを実装してください
1 = ぐー
2 = ちょき
3 = ぱー
入力: 1
出力: あなた=ぐー コンピュータ=ちょき あなたの勝ちです
お題2
あなたの勝率を指定できるようにしてください
勝率は0.0〜1.0で入力します
入力: 1 0.7
出力: あなた=ぐー コンピュータ=ちょき あなたの勝ちです
159デフォルトの名無しさん
2020/07/29(水) 22:59:47.88ID:tovqwAmw >>158 Ruby
JANKEN = %w[Goo Chocky Parr]
KEKKA = %w[Win Lose Draw]
#お題1
odai1 = -> n do
r = rand(3)
'You: %s, Com: %s. %s' % [JANKEN[n - 1], JANKEN[(n + r) % 3], KEKKA[r]]
end
puts odai1[1] # => You: Goo, Com: Chocky. Win
puts odai1[2] # => You: Chocky, Com: Goo. Lose
puts odai1[3] # => You: Par, Com: Par. Draw
#お題2
odai2 = -> (n, p) do
r = rand < p ? 0 : rand(2) + 1
'You: %s, Com: %s. %s' % [JANKEN[n - 1], JANKEN[(n + r) % 3], KEKKA[r]]
end
puts odai2[1, 0] # => You: Goo, Com: Par. Lose
puts odai2[2, 1] # => You: Goo, Com: Chocky. Win
puts odai2[3, 0.3] # => You: Par, Com: Chocky. Lose
puts odai2[3, 0.3] # => You: Par, Com: Goo. Win
puts odai2[3, 0.3] # => You: Par, Com: Par. Draw
puts odai2[3, 0.3] # => You: Par, Com: Chocky. Lose
JANKEN = %w[Goo Chocky Parr]
KEKKA = %w[Win Lose Draw]
#お題1
odai1 = -> n do
r = rand(3)
'You: %s, Com: %s. %s' % [JANKEN[n - 1], JANKEN[(n + r) % 3], KEKKA[r]]
end
puts odai1[1] # => You: Goo, Com: Chocky. Win
puts odai1[2] # => You: Chocky, Com: Goo. Lose
puts odai1[3] # => You: Par, Com: Par. Draw
#お題2
odai2 = -> (n, p) do
r = rand < p ? 0 : rand(2) + 1
'You: %s, Com: %s. %s' % [JANKEN[n - 1], JANKEN[(n + r) % 3], KEKKA[r]]
end
puts odai2[1, 0] # => You: Goo, Com: Par. Lose
puts odai2[2, 1] # => You: Goo, Com: Chocky. Win
puts odai2[3, 0.3] # => You: Par, Com: Chocky. Lose
puts odai2[3, 0.3] # => You: Par, Com: Goo. Win
puts odai2[3, 0.3] # => You: Par, Com: Par. Draw
puts odai2[3, 0.3] # => You: Par, Com: Chocky. Lose
160デフォルトの名無しさん
2020/07/29(水) 23:09:16.98ID:tovqwAmw 下から5行目タイポ
puts odai2[2, 1] # => You: Chocky, Com: Parr. Win
puts odai2[2, 1] # => You: Chocky, Com: Parr. Win
161デフォルトの名無しさん
2020/07/29(水) 23:11:53.00ID:z6Fnx3oM Parr
出たか連続校正レス君
出たか連続校正レス君
162デフォルトの名無しさん
2020/07/29(水) 23:15:30.50ID:zhbinuHB 別にええやろ
163蟻人間 ◆T6xkBnTXz7B0
2020/07/29(水) 23:42:09.78ID:hGtKVe2E 子ども国会で、グー、チョキ、パーのつづりを次のように閣議決定しました。
グーはgoo、
チョキはchoki、
パーはpar、
ジャンケンはJankenとする。
グーはgoo、
チョキはchoki、
パーはpar、
ジャンケンはJankenとする。
164デフォルトの名無しさん
2020/07/30(木) 00:20:11.92ID:aEaasmNp Unicode の \u270A \u270B \u270C
165デフォルトの名無しさん
2020/07/30(木) 15:16:52.35ID:cH8Va6i2 自然数AとBがあります
A * B ではない方法で、AとBを掛けた結果を求めなさい。
ただし、AとBは4バイトの数値型で、どのような値が入ってきても
実施してからなるべく近い時間で計算終了する方が高得点とします。
A * B ではない方法で、AとBを掛けた結果を求めなさい。
ただし、AとBは4バイトの数値型で、どのような値が入ってきても
実施してからなるべく近い時間で計算終了する方が高得点とします。
166デフォルトの名無しさん
2020/07/30(木) 15:58:10.10ID:aEaasmNp >>165 Ruby
def multiply( a, b )
ans = 0
while a > 0
ans += b if a.odd?
a >>= 1
b <<= 1
end
ans
end
multiply( 0x12345678, 0x87654321 ) #=> 693779765864729976
def multiply( a, b )
ans = 0
while a > 0
ans += b if a.odd?
a >>= 1
b <<= 1
end
ans
end
multiply( 0x12345678, 0x87654321 ) #=> 693779765864729976
167デフォルトの名無しさん
2020/08/01(土) 20:01:40.49ID:eF75V+Af >>165
import Math;
int kakezan(a, b) {
int min, max = Math.sort([a, b]);
if(min == 0) return 0;
return Math.square(min) + kakezan(min, max - min);
}
printf(kakezan(0x12345678, 0x87654321)); // 693779765864729976
import Math;
int kakezan(a, b) {
int min, max = Math.sort([a, b]);
if(min == 0) return 0;
return Math.square(min) + kakezan(min, max - min);
}
printf(kakezan(0x12345678, 0x87654321)); // 693779765864729976
168デフォルトの名無しさん
2020/08/01(土) 21:52:47.76ID:xRTQ61eG >>165
function mul(a, b) {
let prod = 0;
const unit = Math.sign(a) + Math.sign(b) ? 1 : -1;
for (let i = 0; i < Math.abs(a); i++)
for (let j = 0; j < Math.abs(b); j++)
prod += unit;
return prod;
}
console.log(mul(-6, -7)); //=> 42
console.log(mul(-6, 7)); //=> -42
低得点ww
function mul(a, b) {
let prod = 0;
const unit = Math.sign(a) + Math.sign(b) ? 1 : -1;
for (let i = 0; i < Math.abs(a); i++)
for (let j = 0; j < Math.abs(b); j++)
prod += unit;
return prod;
}
console.log(mul(-6, -7)); //=> 42
console.log(mul(-6, 7)); //=> -42
低得点ww
169デフォルトの名無しさん
2020/08/04(火) 03:43:27.41ID:DYgISIVe お題: 文字列の格納された配列から重複した文字列を削除し昇順にソートせよ
['apple', 'banana', 'apple', 'chikuwa']
↓
['apple', 'banana', 'chikuwa']
['apple', 'banana', 'apple', 'chikuwa']
↓
['apple', 'banana', 'chikuwa']
170デフォルトの名無しさん
2020/08/04(火) 03:55:23.60ID:gT//RRjC >>169 Ruby
['apple', 'banana', 'apple', 'chikuwa'].uniq.sort #=> ["apple", "banana", "chikuwa"]
['apple', 'banana', 'apple', 'chikuwa'].uniq.sort #=> ["apple", "banana", "chikuwa"]
171デフォルトの名無しさん
2020/08/04(火) 05:05:40.50ID:YeoxtHaI >>153 Ruby
def resolve( str )
res = String.new # 戻り値
flag = false # [ だけを付けて、まだ ] で閉じていない状態が、true
ary = str.split # 空白で、2つに分離する
ary[ 0 ].chars.zip( ary[ 1 ].chars ) do |c0, c1| # 1文字ずつ比較する
if c0 == c1
if flag
res = res + ']' + c0
flag = false
else
res += c0
end
else
if flag
res += c0
else
res = res + '[' + c0
flag = true
end
end
end
res += ']' if flag # もし閉じていない場合は、閉じる
res
end
[ "abc adc", "abc acd", "abc bcc" ].each{ |str|
print "入力: #{ str }\n" + "出力: #{ resolve( str ) }\n\n"
}
def resolve( str )
res = String.new # 戻り値
flag = false # [ だけを付けて、まだ ] で閉じていない状態が、true
ary = str.split # 空白で、2つに分離する
ary[ 0 ].chars.zip( ary[ 1 ].chars ) do |c0, c1| # 1文字ずつ比較する
if c0 == c1
if flag
res = res + ']' + c0
flag = false
else
res += c0
end
else
if flag
res += c0
else
res = res + '[' + c0
flag = true
end
end
end
res += ']' if flag # もし閉じていない場合は、閉じる
res
end
[ "abc adc", "abc acd", "abc bcc" ].each{ |str|
print "入力: #{ str }\n" + "出力: #{ resolve( str ) }\n\n"
}
172デフォルトの名無しさん
2020/08/04(火) 18:06:57.21ID:Bm48LwqI >>169
Kotlin または Kotlin script でのやり方
a が Array<String> または List<String> でそこに元の文字列が入っているとすると。
val b = a.toSortedSet()
でbに重複削除されてソートされたSetができる。
これを List<String> にしたい場合はこうする。
val c = b.toList()
Kotlin または Kotlin script でのやり方
a が Array<String> または List<String> でそこに元の文字列が入っているとすると。
val b = a.toSortedSet()
でbに重複削除されてソートされたSetができる。
これを List<String> にしたい場合はこうする。
val c = b.toList()
173デフォルトの名無しさん
2020/08/04(火) 18:45:38.06ID:lImhU2CT >>165 チューリングマシン(Python3)
#チューリングマシン本体(不受理の場合例外が発生する)
def turingMachine(tape, state_function, current_state, final_state):
i=0
n = len(tape)
while i < n:
sf = state_function[current_state]
symbol = tape[i] if i >= 0 else None
(current_state, rsymbol, is_right) = sf[symbol]
if i >= 0:
tape[i] = rsymbol
if current_state == final_state:
return True
i += 1 if is_right else -1
return False
def TmMul(a, b):
#1000000の箇所はメモリ容量に合わせて適当に増やす
tape = ["0"] * a + ["1"] + ["0"] * b + ["1"] + [None] * 1000000
trans = [{"0":(6, None, True)},
{"0":(2, "X", True), "1":(4, "1", False)},
{"0":(2, "0", True), "1":(2, "1", True), None:(3, "0", False)},
{"0":(3, "0", False), "1":(3, "1", False), "X":(1, "X", True)},
{"X":(4, "0", False), "1":(5, "1", True)},
{"0":(5, "0", False), "1":(7, "1", False)},
{"0":(6, "0", True), "1":(1, "1", True)},
{"0":(8, "0", False), None:(7, None, True), "1":(9, None, True)},
{"0":(8, "0", False), None:(0, None, True)},
{"0":(9, None, True), "1":(10, None, True)}]
turingMachine(tape, trans, 0, 10)
return len(list(filter(lambda x: x != None, tape)))
print(TmMul(3, 8)) #=>24
#チューリングマシン本体(不受理の場合例外が発生する)
def turingMachine(tape, state_function, current_state, final_state):
i=0
n = len(tape)
while i < n:
sf = state_function[current_state]
symbol = tape[i] if i >= 0 else None
(current_state, rsymbol, is_right) = sf[symbol]
if i >= 0:
tape[i] = rsymbol
if current_state == final_state:
return True
i += 1 if is_right else -1
return False
def TmMul(a, b):
#1000000の箇所はメモリ容量に合わせて適当に増やす
tape = ["0"] * a + ["1"] + ["0"] * b + ["1"] + [None] * 1000000
trans = [{"0":(6, None, True)},
{"0":(2, "X", True), "1":(4, "1", False)},
{"0":(2, "0", True), "1":(2, "1", True), None:(3, "0", False)},
{"0":(3, "0", False), "1":(3, "1", False), "X":(1, "X", True)},
{"X":(4, "0", False), "1":(5, "1", True)},
{"0":(5, "0", False), "1":(7, "1", False)},
{"0":(6, "0", True), "1":(1, "1", True)},
{"0":(8, "0", False), None:(7, None, True), "1":(9, None, True)},
{"0":(8, "0", False), None:(0, None, True)},
{"0":(9, None, True), "1":(10, None, True)}]
turingMachine(tape, trans, 0, 10)
return len(list(filter(lambda x: x != None, tape)))
print(TmMul(3, 8)) #=>24
174デフォルトの名無しさん
2020/08/04(火) 19:24:17.96ID:lImhU2CT >>173
あーアホだったw
タブ消去の仕様だとPythonだと分けわからんことになるなw
↓貼り直した
http://codepad.org/BWRzr8fW
※会員未登録の為、一定期間後に自動消去
あーアホだったw
タブ消去の仕様だとPythonだと分けわからんことになるなw
↓貼り直した
http://codepad.org/BWRzr8fW
※会員未登録の為、一定期間後に自動消去
175デフォルトの名無しさん
2020/08/04(火) 20:26:47.42ID:BW/Lg1/b >>166
この魔法が気になる
この魔法が気になる
177デフォルトの名無しさん
2020/08/04(火) 20:43:45.04ID:ZgraBKAX 筆算じゃないの
101 b
110 a (+
---------
0
1010
10100
---------
11110
101 b
110 a (+
---------
0
1010
10100
---------
11110
178蟻人間 ◆T6xkBnTXz7B0
2020/08/04(火) 20:47:15.02ID:pnjegpbT お題: 総務省統計局の1990〜2019年までの人口データを使用して2020〜2024年の日本の人口の推計値を求めよ。人口データ以外は使用しないものとする。
179蟻人間 ◆T6xkBnTXz7B0
2020/08/04(火) 21:14:16.49ID:pnjegpbT これは電子政府の使い勝手のテストである。だれも解けないなら、電子データは活かされていないと判断する。
180デフォルトの名無しさん
2020/08/04(火) 21:16:21.27ID:02jYvMNw181デフォルトの名無しさん
2020/08/04(火) 21:26:04.52ID:lImhU2CT チューリングマシンを使って重くて複雑な乗算を再現して何の意味があるのかと思ってそうだな
ポイントは文法の中に演算を組み込める点
実社会に役に立つ具体的な例を挙げろと言われれば直ぐには思いつかないが、オートマトンの入力は文字列だけとは限らないぞ
有限木オートマトン使って静的コード解析なのか最適化なのかは分からんが、開発言語の構文木に何らかの演算が伴うルールを適用したいこともあるかもしれない
「そんなのプログラミングすればいいだけだろ」と言う声が聞こえてきそうだがそれは極論「正規表現など要らん」と言ってるのと同じだと思う
以上でもって「全てのプログラマはオートマトンとチューリングマシンをよく勉強するべき」とする俺の主張の正当性は認められる
ちなみに俺は10年以上機械学習の勉強をしたのに画期的な成果が出せなかった後悔の思いがあるから言っている
ポイントは文法の中に演算を組み込める点
実社会に役に立つ具体的な例を挙げろと言われれば直ぐには思いつかないが、オートマトンの入力は文字列だけとは限らないぞ
有限木オートマトン使って静的コード解析なのか最適化なのかは分からんが、開発言語の構文木に何らかの演算が伴うルールを適用したいこともあるかもしれない
「そんなのプログラミングすればいいだけだろ」と言う声が聞こえてきそうだがそれは極論「正規表現など要らん」と言ってるのと同じだと思う
以上でもって「全てのプログラマはオートマトンとチューリングマシンをよく勉強するべき」とする俺の主張の正当性は認められる
ちなみに俺は10年以上機械学習の勉強をしたのに画期的な成果が出せなかった後悔の思いがあるから言っている
182デフォルトの名無しさん
2020/08/04(火) 21:58:22.27ID:JHqDXk92 お題を出して解くスレで電子データは活かされていないとかどうでもいいんですが…
なんでそうやっていつもスレ趣旨からずれようとするのか?
ズレたいならよそでやってくれ
なんでそうやっていつもスレ趣旨からずれようとするのか?
ズレたいならよそでやってくれ
183デフォルトの名無しさん
2020/08/04(火) 22:11:15.82ID:02jYvMNw 片山博文MZ◆NveQN6OtcI
184デフォルトの名無しさん
2020/08/04(火) 23:36:46.28ID:L0dS0CTZ お題
両替をしてください
貨幣は次の文字列で表されます
1円 = (1)
5円 = (5)
10円 = (10)
50円 = (50)
100円 = (100)
500円 = (500)
例
入力: (1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)
出力: (10)(10)(1)(1)(1)(1)
入力: (5)(50)(5)(1)(50)(5)(10)(1)(50)(1)(10)(10)
出力: (100)(50)(10)(10)(10)(10)(5)(1)(1)(1)
両替をしてください
貨幣は次の文字列で表されます
1円 = (1)
5円 = (5)
10円 = (10)
50円 = (50)
100円 = (100)
500円 = (500)
例
入力: (1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)
出力: (10)(10)(1)(1)(1)(1)
入力: (5)(50)(5)(1)(50)(5)(10)(1)(50)(1)(10)(10)
出力: (100)(50)(10)(10)(10)(10)(5)(1)(1)(1)
185デフォルトの名無しさん
2020/08/05(水) 00:05:23.10ID:DlE2lfwB 書きたいけど寝たい
186デフォルトの名無しさん
2020/08/05(水) 02:29:32.18ID:prJIGLTT >>175
aが2とか4だったらどうなるかを紙にでも書いて考えればいずれわかると思う。
aが2とか4だったらどうなるかを紙にでも書いて考えればいずれわかると思う。
187デフォルトの名無しさん
2020/08/05(水) 02:55:46.54ID:wv4r4oF2 >>184 Ruby
def change( coin )
sum = coin.split(/[^\d]+/)[1..].inject(0){|r,c| r + c.to_i }
ret = ''
[500,100,50,10,5,1].each{|c|
next unless sum >= c
r, sum = sum.divmod( c )
ret << "(#{c})" * r
}
ret
end
[ '(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)',
'(5)(50)(5)(1)(50)(5)(10)(1)(50)(1)(10)(10)' ].each{|coin|
puts "入力: #{coin}"
puts "出力: #{change( coin ) }\n\n"
}
def change( coin )
sum = coin.split(/[^\d]+/)[1..].inject(0){|r,c| r + c.to_i }
ret = ''
[500,100,50,10,5,1].each{|c|
next unless sum >= c
r, sum = sum.divmod( c )
ret << "(#{c})" * r
}
ret
end
[ '(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)',
'(5)(50)(5)(1)(50)(5)(10)(1)(50)(1)(10)(10)' ].each{|coin|
puts "入力: #{coin}"
puts "出力: #{change( coin ) }\n\n"
}
188デフォルトの名無しさん
2020/08/05(水) 11:37:38.85ID:kVNaCqIg File "C:\Users\NEC-PCuser\.spyder-py3\temp.py", line 23, in <module>
my_data = genfromtxt('SingleECG.csv')
File "C:\Users\NEC-PCuser\anaconda3\lib\site-packages\numpy\lib\npyio.py", line 1772, in genfromtxt
fid = np.lib._datasource.open(fname, 'rt', encoding=encoding)
File "C:\Users\NEC-PCuser\anaconda3\lib\site-packages\numpy\lib\_datasource.py", line 269, in open
return ds.open(path, mode, encoding=encoding, newline=newline)
File "C:\Users\NEC-PCuser\anaconda3\lib\site-packages\numpy\lib\_datasource.py", line 623, in open
raise IOError("%s not found." % path)
グラフをプロットしたらこのエラーが出ました。対処法を教えてください
my_data = genfromtxt('SingleECG.csv')
File "C:\Users\NEC-PCuser\anaconda3\lib\site-packages\numpy\lib\npyio.py", line 1772, in genfromtxt
fid = np.lib._datasource.open(fname, 'rt', encoding=encoding)
File "C:\Users\NEC-PCuser\anaconda3\lib\site-packages\numpy\lib\_datasource.py", line 269, in open
return ds.open(path, mode, encoding=encoding, newline=newline)
File "C:\Users\NEC-PCuser\anaconda3\lib\site-packages\numpy\lib\_datasource.py", line 623, in open
raise IOError("%s not found." % path)
グラフをプロットしたらこのエラーが出ました。対処法を教えてください
189デフォルトの名無しさん
2020/08/05(水) 12:05:51.48ID:DlE2lfwB 斬新なお題だなNEC-PCuserさん
190デフォルトの名無しさん
2020/08/05(水) 12:16:18.65ID:IZQzbQjk >>188<対処法を教えるお題
一行目と最後の行IOError("%s not found." % path) から
File "C:\Users\NEC-PCuser\.spyder-py3\temp.py"
のパスが間違えていると思われるので
temp.pyを添付するか確認するように進言します
一行目と最後の行IOError("%s not found." % path) から
File "C:\Users\NEC-PCuser\.spyder-py3\temp.py"
のパスが間違えていると思われるので
temp.pyを添付するか確認するように進言します
191デフォルトの名無しさん
2020/08/05(水) 14:35:10.99ID:xKYyZvTf 心電図装置に繋がってるデバイスが機能停止したんだろ
192デフォルトの名無しさん
2020/08/05(水) 15:30:05.18ID:prJIGLTT >>184
Kotlin
https://paiza.io/projects/cVm9G2FkQCosaGf9_fQz-Q
最初は割り算したり余り出したりしてやろうと思ったんだけど、よく考えたらこの場合はその計算は無駄な感じがしたので合計から引けたらその貨幣を出すのを繰り返すようにした。
Kotlin
https://paiza.io/projects/cVm9G2FkQCosaGf9_fQz-Q
最初は割り算したり余り出したりしてやろうと思ったんだけど、よく考えたらこの場合はその計算は無駄な感じがしたので合計から引けたらその貨幣を出すのを繰り返すようにした。
193デフォルトの名無しさん
2020/08/05(水) 16:44:00.29ID:73CDpa/5 ふむ。コイン切れの対処もし易いな。
194蟻人間 ◆T6xkBnTXz7B0
2020/08/05(水) 17:59:02.96ID:TWR5sasY お題: コイにえさをやるプログラム「feed」がある。一時間ごとにfeedを実行するプログラムを書け。ただし、ビジーウェイトはしてはならない。
ダミーのfeedは、次のようなプログラムとする:
- 現在日時と「えさをやりました。」を出力する。
ダミーのfeedは、次のようなプログラムとする:
- 現在日時と「えさをやりました。」を出力する。
195蟻人間 ◆T6xkBnTXz7B0
2020/08/05(水) 18:08:26.66ID:UZ8wPONY >>194 C++/Win32
#include <windows.h>
int main(void) {
for (;;) {
Sleep(60 * 60 * 1000);
ShellExecuteA(NULL, NULL, "feed.exe", NULL, NULL, SW_SHOWNORMAL);
}
}
// feed.cpp
#include <windows.h>
#include <stdio.h>
int main(void)
{
SYSTEMTIME st;
GetLocalTime(&st);
printf("%04d.%02d.%02d %02d:%02d:%02d えさをやりました。\n",
st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond);
}
#include <windows.h>
int main(void) {
for (;;) {
Sleep(60 * 60 * 1000);
ShellExecuteA(NULL, NULL, "feed.exe", NULL, NULL, SW_SHOWNORMAL);
}
}
// feed.cpp
#include <windows.h>
#include <stdio.h>
int main(void)
{
SYSTEMTIME st;
GetLocalTime(&st);
printf("%04d.%02d.%02d %02d:%02d:%02d えさをやりました。\n",
st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond);
}
196デフォルトの名無しさん
2020/08/05(水) 19:40:23.44ID:VitQNdTl は、はやい・・・
197デフォルトの名無しさん
2020/08/05(水) 20:19:52.45ID:wv4r4oF2 >>194 Ruby (Windows)
# feed_ignition.rb
loop do
system( 'start "" feed.rb' )
sleep 60*60
end
# feed.rb
puts "#{Time.new.strftime('%Y/%m/%d %T')} えさをやりました。"
sleep 3 # 表示確認用
# feed_ignition.rb
loop do
system( 'start "" feed.rb' )
sleep 60*60
end
# feed.rb
puts "#{Time.new.strftime('%Y/%m/%d %T')} えさをやりました。"
sleep 3 # 表示確認用
198デフォルトの名無しさん
2020/08/05(水) 23:41:13.11ID:prJIGLTT >>194
Linux 等の UNIX系OS だったら普通なら crond が動いているので crontab 設定すると楽だ。
(Windows の場合はタスクの設定で似たような事ができる)。
例えばこのようにすると毎時0分に feed コマンドが実行される。
0 * * * * feed
ただ問題はこのままだと標準出力がリダイレクトされていないのでその出力がcrondからメールで送られて来る事になる。
(見たい場合は mail コマンドを使って見る)。
コマンドラインから直接やるとしたら watch コマンドというのもある。これは実行するたびに出力が変化する
ようなコマンドを定期的に動かしてその出力を画面上に表示するためのコマンドだが毎回出力が同じでも
あるいは何も出力しなかったとしても問題はない。1時間ごとに動かすならこうなる。
watch -n 3600 feed
もっと単純にシェルでループさせて実現する方法もある。(これだとようやっとプログラムっぽい見た目になる)
sh -c 'while : ; do feed ; sleep 3600 ; done'
feed コマンドについてはシェルスクリプトなら例えばこうしておけば良い。
#!/bin/sh
echo 'えさをやりました。'
Linux 等の UNIX系OS だったら普通なら crond が動いているので crontab 設定すると楽だ。
(Windows の場合はタスクの設定で似たような事ができる)。
例えばこのようにすると毎時0分に feed コマンドが実行される。
0 * * * * feed
ただ問題はこのままだと標準出力がリダイレクトされていないのでその出力がcrondからメールで送られて来る事になる。
(見たい場合は mail コマンドを使って見る)。
コマンドラインから直接やるとしたら watch コマンドというのもある。これは実行するたびに出力が変化する
ようなコマンドを定期的に動かしてその出力を画面上に表示するためのコマンドだが毎回出力が同じでも
あるいは何も出力しなかったとしても問題はない。1時間ごとに動かすならこうなる。
watch -n 3600 feed
もっと単純にシェルでループさせて実現する方法もある。(これだとようやっとプログラムっぽい見た目になる)
sh -c 'while : ; do feed ; sleep 3600 ; done'
feed コマンドについてはシェルスクリプトなら例えばこうしておけば良い。
#!/bin/sh
echo 'えさをやりました。'
199デフォルトの名無しさん
2020/08/05(水) 23:51:48.40ID:prJIGLTT >>198はfeedで現在の日付を出すのを忘れた。
日付付けるなら例えばこうする。
#!/bin/sh
echo `date` 'えさをやりました。'
date コマンドに任せてしまってこんな風にもできる。(日時は YYYY-MM-DD hh:mm:ss の形式で出る)。
#!/bin/sh
date '+%F %T えさをやりました。'
日付付けるなら例えばこうする。
#!/bin/sh
echo `date` 'えさをやりました。'
date コマンドに任せてしまってこんな風にもできる。(日時は YYYY-MM-DD hh:mm:ss の形式で出る)。
#!/bin/sh
date '+%F %T えさをやりました。'
200蟻人間 ◆T6xkBnTXz7B0
2020/08/06(木) 18:50:53.87ID:mzjhTFla お題: 現実世界でコイにえさをやるプログラム。
できるのか?
できるのか?
202デフォルトの名無しさん
2020/08/06(木) 19:06:41.72ID:cHZDAcP7 >>200
プログラムそのものは出力装置に繋がるビットをONにするとかを定期的にやれば良いだけなのでは?
で、ONになったらリレーで餌やり器のスイッチが入ってウイーンとかいって餌が一定量水槽に入る。
ていうか、全部ハードウェアだけででできないか?タイマーICってあったよね確か。
プログラムそのものは出力装置に繋がるビットをONにするとかを定期的にやれば良いだけなのでは?
で、ONになったらリレーで餌やり器のスイッチが入ってウイーンとかいって餌が一定量水槽に入る。
ていうか、全部ハードウェアだけででできないか?タイマーICってあったよね確か。
203蟻人間 ◆T6xkBnTXz7B0
2020/08/06(木) 19:21:15.27ID:mzjhTFla ハードウェアだとソフトウェア制御できない。成長を細かく制御したい。
普通のPCから安価で制御する方法はないのだろうか。
ニシキゴイを20匹ほど飼いたいのだが。
普通のPCから安価で制御する方法はないのだろうか。
ニシキゴイを20匹ほど飼いたいのだが。
204デフォルトの名無しさん
2020/08/06(木) 19:23:23.77ID:nx4HEXSE >>203
ピ・タ・ゴ・ラ・スイッチ
ピ・タ・ゴ・ラ・スイッチ
205デフォルトの名無しさん
2020/08/06(木) 19:37:26.52ID:/QKQvkvR なぜ何度ツッコまれてもスレタイからずれようとするんですか?
学習できないんですか?
学習できないんですか?
206蟻人間 ◆T6xkBnTXz7B0
2020/08/06(木) 19:46:21.15ID:mzjhTFla >>205
ハードにも興味を持ってくれるといいな、と思って企画しました by 突撃商会
ハードにも興味を持ってくれるといいな、と思って企画しました by 突撃商会
207デフォルトの名無しさん
2020/08/06(木) 19:58:03.18ID:AWtnj9QL CDトレイを開閉するソフトを作りそれで餌やり器のボタンを押せ
209デフォルトの名無しさん
2020/08/06(木) 20:18:11.34ID:nx4HEXSE 【お題】正解にたどり着くようにアシストした得点を算出するプログラムを作れ
スケールは1点以上100点未満とする
スケールは1点以上100点未満とする
211デフォルトの名無しさん
2020/08/06(木) 20:37:37.85ID:sjF+gr/I クソコテ死ねよマジで
212デフォルトの名無しさん
2020/08/06(木) 20:53:50.09ID:O/aURmUk213蟻人間 ◆T6xkBnTXz7B0
2020/08/06(木) 21:07:24.02ID:mzjhTFla214蟻人間 ◆T6xkBnTXz7B0
2020/08/06(木) 21:16:15.64ID:mzjhTFla IchigoJamというのもあるみたい。
215デフォルトの名無しさん
2020/08/06(木) 21:29:05.63ID:8sSWlLgK スレチ
◆QZaw55cn4c はうせろ
◆QZaw55cn4c はうせろ
>>215
突然、どうしたのですか?
突然、どうしたのですか?
217デフォルトの名無しさん
2020/08/06(木) 22:38:17.00ID:8sSWlLgK >>216
呼んでねえよハゲ消えろ
呼んでねえよハゲ消えろ
218蟻人間 ◆T6xkBnTXz7B0
2020/08/06(木) 23:02:55.51ID:mzjhTFla お題: 点結びパズルという簡単なパズルがある。紙の上にたくさんの点があり、それぞれの点の近くに番号が書かれていて、
番号の順に点を結べば、図案が浮かび上がるというものだ。
以下の手順に従ってモノクロPNG画像(300dpi前後)として与えられた点結びパズルを自動的に解くプログラムを作れ。画像処理。
(1) OCR技術や深層学習などにより、画像上の一文字が2mm以上6mm以下のアラビア数字(複数)を読み取り、数字の位置と数字の対を返す関数を作れ。数字の30度以上の回転は考える必要はない。
(2) 点結びパズルの点は直径0.5mm以上3mm以下の黒い丸い点だと仮定して、点と数字を関連付けるアルゴリズムを考案せよ。
ただし、数字に近い点が複数ある場合は「スマートに」割り振ること。
(3) 画像に実際に線分を描画して点結びパズルを回答するプログラムを作れ。
点と数字以外の枠線やタイトルなどは印刷されていないと仮定してもよい。
番号の順に点を結べば、図案が浮かび上がるというものだ。
以下の手順に従ってモノクロPNG画像(300dpi前後)として与えられた点結びパズルを自動的に解くプログラムを作れ。画像処理。
(1) OCR技術や深層学習などにより、画像上の一文字が2mm以上6mm以下のアラビア数字(複数)を読み取り、数字の位置と数字の対を返す関数を作れ。数字の30度以上の回転は考える必要はない。
(2) 点結びパズルの点は直径0.5mm以上3mm以下の黒い丸い点だと仮定して、点と数字を関連付けるアルゴリズムを考案せよ。
ただし、数字に近い点が複数ある場合は「スマートに」割り振ること。
(3) 画像に実際に線分を描画して点結びパズルを回答するプログラムを作れ。
点と数字以外の枠線やタイトルなどは印刷されていないと仮定してもよい。
219デフォルトの名無しさん
2020/08/07(金) 00:08:41.77ID:TzYKRTqH よく、ラズパイコンテストでやってる
水槽の中の金魚に、エサをやる装置とか
水槽の中の金魚に、エサをやる装置とか
220デフォルトの名無しさん
2020/08/07(金) 11:29:33.41ID:uQ4nbdFf 債務が多い
221デフォルトの名無しさん
2020/08/07(金) 12:51:36.49ID:lb7vo/Jy お題
文字列を大文字小文字を区別せずにソートして()でグルーピングしてください
入力: D a B c d c C A E c e B b
出力: (a A) (B B b) (c c C c) (D d) (E e)
文字列を大文字小文字を区別せずにソートして()でグルーピングしてください
入力: D a B c d c C A E c e B b
出力: (a A) (B B b) (c c C c) (D d) (E e)
222デフォルトの名無しさん
2020/08/07(金) 13:43:57.69ID:uQ4nbdFf >>221 js
const inputStr = "D a B c d c C A E c e B b"
const expectedStr = "(a A) (B B b) (c c C c) (D d) (E e)"
const charVal = c => c.toUpperCase().charCodeAt()
function groupCharSort(str) {
const chars = str.split(" ")
const groups = {}
chars.forEach(c => {
const cv = charVal(c)
if (!groups[cv]) groups[cv] = []
groups[cv].push(c)
})
return Object.values(groups).sort((g1, g2) => charVal(g1[0]) - charVal(g2[0])).map(cs => `(${cs.join(" ")})`).join(" ")
}
const resultStr = groupCharSort(inputStr)
console.log("out :" + resultStr)
console.log("expect:" + expectedStr)
console.log(resultStr == expectedStr)
const inputStr = "D a B c d c C A E c e B b"
const expectedStr = "(a A) (B B b) (c c C c) (D d) (E e)"
const charVal = c => c.toUpperCase().charCodeAt()
function groupCharSort(str) {
const chars = str.split(" ")
const groups = {}
chars.forEach(c => {
const cv = charVal(c)
if (!groups[cv]) groups[cv] = []
groups[cv].push(c)
})
return Object.values(groups).sort((g1, g2) => charVal(g1[0]) - charVal(g2[0])).map(cs => `(${cs.join(" ")})`).join(" ")
}
const resultStr = groupCharSort(inputStr)
console.log("out :" + resultStr)
console.log("expect:" + expectedStr)
console.log(resultStr == expectedStr)
223デフォルトの名無しさん
2020/08/07(金) 13:48:23.69ID:uQ4nbdFf const inputStr = "D a B c d c C A E c e B b"
const expectedStr = "(a A) (B B b) (c c C c) (D d) (E e)"
const charVal = c => c.toUpperCase().charCodeAt()
function groupCharSort(str) {
const chars = str.split(" ")
const groups = []
chars.forEach(c => {
const cv = charVal(c)
if (!groups[cv]) groups[cv] = []
groups[cv].push(c)
})
return groups.filter(Boolean).map(cs => `(${cs.join(" ")})`).join(" ")
}
const resultStr = groupCharSort(inputStr)
console.log("out :" + resultStr)
console.log("expect:" + expectedStr)
console.log(resultStr == expectedStr)
sort いらなかった
const expectedStr = "(a A) (B B b) (c c C c) (D d) (E e)"
const charVal = c => c.toUpperCase().charCodeAt()
function groupCharSort(str) {
const chars = str.split(" ")
const groups = []
chars.forEach(c => {
const cv = charVal(c)
if (!groups[cv]) groups[cv] = []
groups[cv].push(c)
})
return groups.filter(Boolean).map(cs => `(${cs.join(" ")})`).join(" ")
}
const resultStr = groupCharSort(inputStr)
console.log("out :" + resultStr)
console.log("expect:" + expectedStr)
console.log(resultStr == expectedStr)
sort いらなかった
224デフォルトの名無しさん
2020/08/07(金) 14:51:48.30ID:5vmbSLbR >>221 Ruby
# その 1
def igrouping( str )
gList = {}
str.split.each{|ch|
k = ch.downcase
gList[ k ] ||= []
gList[ k ] << ch
}
gList.keys.sort.map{|k| '(' + gList[ k ].join(' ') + ')' }.join(' ')
end
instr = 'D a B c d c C A E c e B b'
puts "入力: #{instr}"
puts "出力: #{igrouping( instr )}"
# その 1
def igrouping( str )
gList = {}
str.split.each{|ch|
k = ch.downcase
gList[ k ] ||= []
gList[ k ] << ch
}
gList.keys.sort.map{|k| '(' + gList[ k ].join(' ') + ')' }.join(' ')
end
instr = 'D a B c d c C A E c e B b'
puts "入力: #{instr}"
puts "出力: #{igrouping( instr )}"
225デフォルトの名無しさん
2020/08/07(金) 14:52:06.69ID:5vmbSLbR >>221 Ruby
# その 2
def igrouping( str )
i = 0
'(' + str.split.sort_by{|x| [ x.downcase, i += 1 ] }.join(' ').gsub( /(\w) (?!\1)/i ){"#{$1}) (#{$2}"} + ')'
end
instr = 'D a B c d c C A E c e B b'
puts "入力: #{instr}"
puts "出力: #{igrouping( instr )}"
# その 2
def igrouping( str )
i = 0
'(' + str.split.sort_by{|x| [ x.downcase, i += 1 ] }.join(' ').gsub( /(\w) (?!\1)/i ){"#{$1}) (#{$2}"} + ')'
end
instr = 'D a B c d c C A E c e B b'
puts "入力: #{instr}"
puts "出力: #{igrouping( instr )}"
226デフォルトの名無しさん
2020/08/07(金) 16:23:53.54ID:uQ4nbdFf <<=って演算子ほしいな
227デフォルトの名無しさん
2020/08/07(金) 19:28:59.75ID:P4+Ga4Bm >>221 Ruby
$><<gets.split.group_by{|c| c.ord % 32}.sort.map{|a| "(#{a.last.join ' '})"}.join(' ')
# => (a A) (B B b) (c c C c) (D d) (E e)
$><<gets.split.group_by{|c| c.ord % 32}.sort.map{|a| "(#{a.last.join ' '})"}.join(' ')
# => (a A) (B B b) (c c C c) (D d) (E e)
228デフォルトの名無しさん
2020/08/08(土) 00:04:29.62ID:b55CcwAR JavaScript では、Lodash を使うけど、
やっぱり、Ruby の方が、メソッドチェーンできるから良い
Lodash ではたまに「インスタンス.メソッド」の形にならない関数がある。
関数(オブジェクト)の形式
そこで、メソッドチェーンが途切れて、配列が実体化されてしまうから、
サイズと大きいと、ヤバイ
やっぱり、Ruby の方が、メソッドチェーンできるから良い
Lodash ではたまに「インスタンス.メソッド」の形にならない関数がある。
関数(オブジェクト)の形式
そこで、メソッドチェーンが途切れて、配列が実体化されてしまうから、
サイズと大きいと、ヤバイ
229デフォルトの名無しさん
2020/08/08(土) 07:24:36.17ID:u/td9dv4 lodash破壊的変更の関数あるの地味に謎だよな
一応 lodash/fpもあるけど
一応 lodash/fpもあるけど
230デフォルトの名無しさん
2020/08/08(土) 07:26:45.92ID:u/td9dv4 いや _.chainの話か
一瞬非推奨の流れ来たときから使ってないわ
メソッドチェーン嫌いではないけど
一瞬非推奨の流れ来たときから使ってないわ
メソッドチェーン嫌いではないけど
231デフォルトの名無しさん
2020/08/08(土) 09:18:46.19ID:b55CcwAR >>221
Elixir
input_str = "D a B c d c C A E c e B b"
list = input_str
|> String.split # 文字列を空白で分割して、配列化する
|> Enum.group_by( &String.downcase/1 ) # 小文字へ変換して、グループ化する
|> Map.values # 値を取り出す
|> Enum.map( fn list -> Enum.join( list, " " ) end ) # 各要素を空白でつなげて、1つの文字列にする
|> Enum.map( fn str -> "(" <> str <> ")" end ) # 文字列を、( ) で囲む
# IO.inspect list
Enum.join( list, " " ) # 各要素を空白でつなげて、1つの文字列にする
|> IO.puts
Elixir
input_str = "D a B c d c C A E c e B b"
list = input_str
|> String.split # 文字列を空白で分割して、配列化する
|> Enum.group_by( &String.downcase/1 ) # 小文字へ変換して、グループ化する
|> Map.values # 値を取り出す
|> Enum.map( fn list -> Enum.join( list, " " ) end ) # 各要素を空白でつなげて、1つの文字列にする
|> Enum.map( fn str -> "(" <> str <> ")" end ) # 文字列を、( ) で囲む
# IO.inspect list
Enum.join( list, " " ) # 各要素を空白でつなげて、1つの文字列にする
|> IO.puts
232デフォルトの名無しさん
2020/08/08(土) 14:04:33.02ID:JvTsLjL+233デフォルトの名無しさん
2020/08/08(土) 14:58:00.03ID:gFRxrH0y234デフォルトの名無しさん
2020/08/08(土) 15:53:05.60ID:xsg1wzC9235デフォルトの名無しさん
2020/08/08(土) 16:11:32.49ID:yUCBpeXj >>232
一般論としてデータの処理と最後の文字列の組み立てを一緒にやらない方がいい
今どきPC上ならメモリーは潤沢にあるので
・グルーピングの処理してから
・各グループを文字列化
・さらにその文字列を順次出力
とした方がわかりやすいと思う
https://ideone.com/Tsio0O
一般論としてデータの処理と最後の文字列の組み立てを一緒にやらない方がいい
今どきPC上ならメモリーは潤沢にあるので
・グルーピングの処理してから
・各グループを文字列化
・さらにその文字列を順次出力
とした方がわかりやすいと思う
https://ideone.com/Tsio0O
236デフォルトの名無しさん
2020/08/08(土) 17:07:51.92ID:HH2BebFt237デフォルトの名無しさん
2020/08/08(土) 21:09:30.55ID:JvTsLjL+238デフォルトの名無しさん
2020/08/08(土) 21:20:24.22ID:bf+w2Xl6 code golfなら基本はperlで、次点がRubyじゃないですかね
239デフォルトの名無しさん
2020/08/08(土) 21:56:24.61ID:JvTsLjL+ >>238
そういうものなのね
そういうものなのね
240231
2020/08/08(土) 22:49:25.00ID:b55CcwAR 関数型・メソッドチェーンなら、Ruby・Elixir。
長く、チェーンできるから
Elixir では関数の第一引数を、前のチェーンからの戻り値として渡せる
str = "a b c"
# 文字列を空白で分割して、配列化する
IO.inspect String.split( str )
str
|> String.split
|> IO.inspect
出力は、どちらも
["a", "b", "c"]
長く、チェーンできるから
Elixir では関数の第一引数を、前のチェーンからの戻り値として渡せる
str = "a b c"
# 文字列を空白で分割して、配列化する
IO.inspect String.split( str )
str
|> String.split
|> IO.inspect
出力は、どちらも
["a", "b", "c"]
241231
2020/08/08(土) 22:54:29.83ID:b55CcwAR 基本的に、Ruby・Elixir みたいに、
メソッドチェーンで、英語のように、左から右へ読めないとダメ
Python の内包表記みたいなのは、可読性が悪い
メソッドチェーンで、英語のように、左から右へ読めないとダメ
Python の内包表記みたいなのは、可読性が悪い
242デフォルトの名無しさん
2020/08/08(土) 23:09:35.53ID:n6UBlQy6 ざっくりとした見た目しか気にしないのでパイプライン演算子と区別がつかないrubyガイジなのであったw
243デフォルトの名無しさん
2020/08/08(土) 23:14:07.63ID:ifN2bgU4244デフォルトの名無しさん
2020/08/08(土) 23:32:15.70ID:ifN2bgU4245デフォルトの名無しさん
2020/08/09(日) 00:17:54.90ID:/K790vfJ javaでもStream使うと意外と少なくかけるんだな
utilが充実してるな
utilが充実してるな
246デフォルトの名無しさん
2020/08/09(日) 00:41:46.15ID:uywZ9h5A247デフォルトの名無しさん
2020/08/09(日) 02:47:46.35ID:Mt0Kh35r >>221
c#
using System;
using System.Linq;
class Program
{
static void Main(string[] args)
{
var input = "D a B c d c C A E c e B b";
foreach (var itm in input.Split(" ").GroupBy(p => p.ToUpper()).OrderBy(p => p.Key))
{
Console.Write("(" + string.Join(" ", itm) + ") ");
}
}
}
c#
using System;
using System.Linq;
class Program
{
static void Main(string[] args)
{
var input = "D a B c d c C A E c e B b";
foreach (var itm in input.Split(" ").GroupBy(p => p.ToUpper()).OrderBy(p => p.Key))
{
Console.Write("(" + string.Join(" ", itm) + ") ");
}
}
}
248デフォルトの名無しさん
2020/08/09(日) 04:58:28.52ID:bQgrv4ZF249デフォルトの名無しさん
2020/08/09(日) 16:07:42.42ID:HZ7sqguG お題
文字列abcdeを右に2つ回転するとdeabcとなる
文字列abcdeを左に2つ回転するとcdeabとなる
2つの文字列を入力として受け取り
2つの文字列が一致するか、または、文字列を回転させて一致した場合はtrueを返してください
さもなくばfalseを返してください
入力: abcde deabc
出力: true
入力: abcde cdeba
出力: false
文字列abcdeを右に2つ回転するとdeabcとなる
文字列abcdeを左に2つ回転するとcdeabとなる
2つの文字列を入力として受け取り
2つの文字列が一致するか、または、文字列を回転させて一致した場合はtrueを返してください
さもなくばfalseを返してください
入力: abcde deabc
出力: true
入力: abcde cdeba
出力: false
250デフォルトの名無しさん
2020/08/09(日) 16:42:31.20ID:/K790vfJ >>249 js
const isRotateStr = (a, b) => (a + a).indexOf(b) != -1
console.log(isRotateStr("abcde", "deabc"))
// true
console.log(isRotateStr("abcde", "cdeba"))
// false
const isRotateStr = (a, b) => (a + a).indexOf(b) != -1
console.log(isRotateStr("abcde", "deabc"))
// true
console.log(isRotateStr("abcde", "cdeba"))
// false
251デフォルトの名無しさん
2020/08/09(日) 16:56:20.10ID:DzMx1xPb 問題として狙ってたかしらんけど、いきなり簡単な解法来ちゃったな。
252デフォルトの名無しさん
2020/08/09(日) 16:59:23.64ID:Uo9rXbdx aaとaaaを比較したらtrueになっちゃうね
文字サイズを最初にチェックすればいいかな?
文字サイズを最初にチェックすればいいかな?
253253
2020/08/09(日) 19:01:45.47ID:UiQUiAYf >>221 Perl5
push(@{$h{uc$_}}, $_) for qw{D a B c d c C A E c e B b};
print map{"(@{$h{$_}}) "} sort keys %h;
実行結果
~ $ perl 18_221_NCS_sort_grp.pl
(a A) (B B b) (c c C c) (D d) (E e)
push(@{$h{uc$_}}, $_) for qw{D a B c d c C A E c e B b};
print map{"(@{$h{$_}}) "} sort keys %h;
実行結果
~ $ perl 18_221_NCS_sort_grp.pl
(a A) (B B b) (c c C c) (D d) (E e)
254253
2020/08/09(日) 19:17:23.16ID:A1LNtpwx >>249 Perl5
use feature qw{signatures say};
sub strot_cmp($a, $b) {
say "入力 $a $b";
say "出力 ", "$a$a" =~ /$b/ ? 'true' : 'false';
}
strot_cmp qw{abcde deabc};
strot_cmp qw{abcde cdeba};
実行結果
~ $ perl 18_249_strot_cmp.pl
The signatures feature is experimental at 18_249_strot_cmp.pl line 2.
入力 abcde deabc
出力 true
入力 abcde cdeba
出力 false
use feature qw{signatures say};
sub strot_cmp($a, $b) {
say "入力 $a $b";
say "出力 ", "$a$a" =~ /$b/ ? 'true' : 'false';
}
strot_cmp qw{abcde deabc};
strot_cmp qw{abcde cdeba};
実行結果
~ $ perl 18_249_strot_cmp.pl
The signatures feature is experimental at 18_249_strot_cmp.pl line 2.
入力 abcde deabc
出力 true
入力 abcde cdeba
出力 false
255デフォルトの名無しさん
2020/08/09(日) 20:09:27.60ID:sb6ynJ/q Jニキも披露してくれよ
256デフォルトの名無しさん
2020/08/09(日) 22:00:05.82ID:BOQzPYI8257253
2020/08/09(日) 22:27:07.62ID:iNMqPGBy >>253 それだと「文字列を回転させて一致」のみならず「含まれている」場合もtrueになってしまうので修正
>>249 Perl5
use feature qw{signatures say};
sub strot_cmp($a, $b) {
say "入力 $a $b";
@a = "$a$a" =~ /^(.*)($b)(.*)$/;
say "出力 ", (@a and "$a[2]$a[0]" eq $b) ? 'true' : 'false';
}
strot_cmp qw{abcde deabc};
strot_cmp qw{abcde cdeba};
strot_cmp qw{aaaaa aaa};
実行結果
~ $ perl 18_249_strot_cmp.pl
The signatures feature is experimental at 18_249_strot_cmp.pl line 2.
入力 abcde deabc
出力 true
入力 abcde cdeba
出力 false
入力 aaaaa aaa
出力 false
>>249 Perl5
use feature qw{signatures say};
sub strot_cmp($a, $b) {
say "入力 $a $b";
@a = "$a$a" =~ /^(.*)($b)(.*)$/;
say "出力 ", (@a and "$a[2]$a[0]" eq $b) ? 'true' : 'false';
}
strot_cmp qw{abcde deabc};
strot_cmp qw{abcde cdeba};
strot_cmp qw{aaaaa aaa};
実行結果
~ $ perl 18_249_strot_cmp.pl
The signatures feature is experimental at 18_249_strot_cmp.pl line 2.
入力 abcde deabc
出力 true
入力 abcde cdeba
出力 false
入力 aaaaa aaa
出力 false
258デフォルトの名無しさん
2020/08/09(日) 22:40:05.17ID:/K790vfJ octave文法好みだけど結構古い言語なんだな
259253
2020/08/09(日) 23:21:31.30ID:dFp53gtH >>221 Python3
s = "D a B c d c C A E c e B b".split();
d = {}
for c in s:
u = c.upper()
if u in d: d[u] += ' ' + c
else: d[u] = c
ks = sorted(d.keys())
print(' '.join(map(lambda x: '(%s)' % d[x], ks)))
実行結果
~ $ py 18_221_NCS_sort_grp.py
(a A) (B B b) (c c C c) (D d) (E e)
s = "D a B c d c C A E c e B b".split();
d = {}
for c in s:
u = c.upper()
if u in d: d[u] += ' ' + c
else: d[u] = c
ks = sorted(d.keys())
print(' '.join(map(lambda x: '(%s)' % d[x], ks)))
実行結果
~ $ py 18_221_NCS_sort_grp.py
(a A) (B B b) (c c C c) (D d) (E e)
260デフォルトの名無しさん
2020/08/09(日) 23:56:04.43ID:DzMx1xPb Perlだとこの程度でも正規表現使わないといかんのか?
261253
2020/08/10(月) 00:02:07.64ID:5Aj+dIHX263253
2020/08/10(月) 01:07:06.98ID:mTkq56mc >>260
>>257は一致する場合に対応するようあせって書いた面があり
正規表現を使うのはやりすぎ感があったのは確かなので
顕に正規表現を使わずに書きを考えてみた。
もっとも簡素な書き方として思いついたのがsplitで三分割して
前後の余った文字列を連結したらそれも一致するかなので
>>249 Perl5
use feature qw{signatures say};
sub strot_cmp($a, $b) {
say "入力 $a $b";
@a = split "$b", "$a$a", 3;
say "出力 ", ("$a[2]$a[0]" eq $b) ? 'true' : 'false';
}
strot_cmp qw{abcde deabc};
strot_cmp qw{abcde cdeba};
strot_cmp qw{aaaaa aaa};
…でもsplitも実は正規表現で分離する機能を持つので、起きていることは実は>>257と一緒なんだよね
>>257は一致する場合に対応するようあせって書いた面があり
正規表現を使うのはやりすぎ感があったのは確かなので
顕に正規表現を使わずに書きを考えてみた。
もっとも簡素な書き方として思いついたのがsplitで三分割して
前後の余った文字列を連結したらそれも一致するかなので
>>249 Perl5
use feature qw{signatures say};
sub strot_cmp($a, $b) {
say "入力 $a $b";
@a = split "$b", "$a$a", 3;
say "出力 ", ("$a[2]$a[0]" eq $b) ? 'true' : 'false';
}
strot_cmp qw{abcde deabc};
strot_cmp qw{abcde cdeba};
strot_cmp qw{aaaaa aaa};
…でもsplitも実は正規表現で分離する機能を持つので、起きていることは実は>>257と一緒なんだよね
264253
2020/08/10(月) 01:18:32.03ID:mTkq56mc265253
2020/08/10(月) 01:58:56.02ID:5YDTUTIu267デフォルトの名無しさん
2020/08/10(月) 05:44:26.44ID:SKFyjjt9 お題:
Brainfuck実行環境を作成し,以下のhello.bfを読み込み実行してください
入力: https://github.com/pablojorge/brainfuck/blob/master/programs/hello.bf
出力: "Hello World!"
Brainfuck実行環境を作成し,以下のhello.bfを読み込み実行してください
入力: https://github.com/pablojorge/brainfuck/blob/master/programs/hello.bf
出力: "Hello World!"
268デフォルトの名無しさん
2020/08/10(月) 08:49:19.32ID:SwBLGnEH >>267 Ruby
require 'open-uri'
str = open('https://raw.githubusercontent.com/pablojorge/brainfuck/master/programs/hello.bf').read
M = 256
i = p = s = 0
h = Hash.new(0)
m = [0] * M
while i < str.length
case str[i]
when ?+ then m[p] += 1
when ?- then m[p] -= 1
when ?[ then h[s += 1] = i
when ?] then m[p].zero? ? s -= 1 : i = h[s]
when ?> then p += 1
when ?< then p -= 1
when ?. then $><<m[p].chr
when ?, then m[p] += $<.getc.ord
end
i += 1
end
# => Hello World!
require 'open-uri'
str = open('https://raw.githubusercontent.com/pablojorge/brainfuck/master/programs/hello.bf').read
M = 256
i = p = s = 0
h = Hash.new(0)
m = [0] * M
while i < str.length
case str[i]
when ?+ then m[p] += 1
when ?- then m[p] -= 1
when ?[ then h[s += 1] = i
when ?] then m[p].zero? ? s -= 1 : i = h[s]
when ?> then p += 1
when ?< then p -= 1
when ?. then $><<m[p].chr
when ?, then m[p] += $<.getc.ord
end
i += 1
end
# => Hello World!
269デフォルトの名無しさん
2020/08/10(月) 08:49:26.47ID:OSJh6/O/270デフォルトの名無しさん
2020/08/10(月) 17:10:10.24ID:Z7zFlWuQ >>249
Kotlin
簡単なやり方は出尽くしたのであえてグルグル回すだけのIteratorを作成した。
https://paiza.io/projects/TxupVLPTStBv7o1MiTuDEQ
Kotlin
簡単なやり方は出尽くしたのであえてグルグル回すだけのIteratorを作成した。
https://paiza.io/projects/TxupVLPTStBv7o1MiTuDEQ
271デフォルトの名無しさん
2020/08/10(月) 17:10:16.38ID:SKFyjjt9272デフォルトの名無しさん
2020/08/10(月) 18:01:14.12ID:Z7zFlWuQ >>267
Kotlin
とりあえず簡単そうだったので Kotlin へのコンバータを作った(コンバータなのでKotlinのソースを出力するだけ)。
実行したい場合はその出力を Kotlin コンパイラに読ませてコンパイルしてから Java VM で動かす必要がある。
https://paiza.io/projects/q8vkgGoAei9W2gfLA4xP4Q
こちらの Linux 環境でコマンドラインの kotlinc を使ってやった時はこうやった。(BF2Kotlin.kt がコンバータ。hello.bf はダウンロードしたプログラム)
$ kotlinc BF2Kotlin.kt
$ kotlin BF2KotlinKt < hello.bf > hello.kt
$ kotlinc hello.kt
$ kotlin HelloKt
Hello World!
Kotlin
とりあえず簡単そうだったので Kotlin へのコンバータを作った(コンバータなのでKotlinのソースを出力するだけ)。
実行したい場合はその出力を Kotlin コンパイラに読ませてコンパイルしてから Java VM で動かす必要がある。
https://paiza.io/projects/q8vkgGoAei9W2gfLA4xP4Q
こちらの Linux 環境でコマンドラインの kotlinc を使ってやった時はこうやった。(BF2Kotlin.kt がコンバータ。hello.bf はダウンロードしたプログラム)
$ kotlinc BF2Kotlin.kt
$ kotlin BF2KotlinKt < hello.bf > hello.kt
$ kotlinc hello.kt
$ kotlin HelloKt
Hello World!
273デフォルトの名無しさん
2020/08/10(月) 18:43:36.36ID:TsKVv45J274デフォルトの名無しさん
2020/08/10(月) 21:10:04.86ID:EfqLUS40 >>249 Python3
def f(a, b): return len(a) == len(b) and a in b + b
def f(a, b): return len(a) == len(b) and a in b + b
275デフォルトの名無しさん
2020/08/10(月) 22:32:27.25ID:tDeKMBiv276デフォルトの名無しさん
2020/08/10(月) 23:41:40.77ID:SKFyjjt9277デフォルトの名無しさん
2020/08/10(月) 23:46:58.70ID:lJp+wmfa bfってループの入れ子できたっけ?
278デフォルトの名無しさん
2020/08/10(月) 23:47:11.22ID:SwBLGnEH >>277
できる
できる
279272
2020/08/11(火) 01:47:49.41ID:RwCZynCZ280デフォルトの名無しさん
2020/08/11(火) 01:50:50.24ID:RwCZynCZ281デフォルトの名無しさん
2020/08/11(火) 07:40:40.35ID:RSsrE9PW282デフォルトの名無しさん
2020/08/11(火) 14:40:27.33ID:psN1NwFJ こんなに暑いと座禅プログラムで涼みたい。
283デフォルトの名無しさん
2020/08/12(水) 10:55:20.81ID:WiVroiaz 警策を上から振り下ろす動作の機械を作り、そこにマイコンを接続。更に行ったり
来たりするルンバのようなものの上にそれを乗せ、そこにもマイコンを接続。
そのマイコンのコントロールプログラムを作成。
来たりするルンバのようなものの上にそれを乗せ、そこにもマイコンを接続。
そのマイコンのコントロールプログラムを作成。
284デフォルトの名無しさん
2020/08/12(水) 11:07:50.98ID:WiVroiaz285デフォルトの名無しさん
2020/08/12(水) 16:50:07.72ID:xjprAYba 令和のコペルニクス
https://youtu.be/7DbdPKWhrpY
https://youtu.be/7DbdPKWhrpY
286デフォルトの名無しさん
2020/08/12(水) 19:58:36.03ID:j5y8ZKQl お題
Brainfuckのの'+','-','.'の 3つの命令のみで
特定の文字列を表示するBrainfucの
ソースコードを生成するプログラム。
Brainfuckのの'+','-','.'の 3つの命令のみで
特定の文字列を表示するBrainfucの
ソースコードを生成するプログラム。
287デフォルトの名無しさん
2020/08/12(水) 20:07:13.01ID:kGuev0jH >>286 Ruby
puts "Hello, World!\n".codepoints.unshift(0).each_cons(2).map{|a, b| '%s.' % ((b > a ? ?+ : ?-) * (b - a).abs)}*''
# =>
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
+++++++++++++++++++++++++++++.+++++++..+++.[略]
puts "Hello, World!\n".codepoints.unshift(0).each_cons(2).map{|a, b| '%s.' % ((b > a ? ?+ : ?-) * (b - a).abs)}*''
# =>
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
+++++++++++++++++++++++++++++.+++++++..+++.[略]
288デフォルトの名無しさん
2020/08/12(水) 23:55:21.87ID:WiVroiaz 差分出すっていうと ADPCM の圧縮を思い出すな。
289デフォルトの名無しさん
2020/08/13(木) 01:08:54.66ID:TUx4JMNp >>286
Perl5
プログラムの構造は >>287 と同じだがワンライナー。
行単位で標準入力から入力して標準出力に出力する。入力の最後の改行は削除している。行ごとに直前の文字は0にリセットしている。
見易くするために '.' の後には改行を出力している。
以下は Linux のシェルのコマンドラインで実行して abc と Hello, world. を入力した時のコピペ。
$ perl -ne 'BEGIN{$o=0}chomp;for(split //){$c=ord($_);print((($o < $c ? "+" : "-") x abs($o - $c)) . ".\n");$o=$c}$o=0'
abc
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
+.
+.
Hello, world.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
+++++++++++++++++++++++++++++.
+++++++.
.
+++.
-------------------------------------------------------------------.
------------.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
--------.
+++.
------.
--------.
------------------------------------------------------.
$
Perl5
プログラムの構造は >>287 と同じだがワンライナー。
行単位で標準入力から入力して標準出力に出力する。入力の最後の改行は削除している。行ごとに直前の文字は0にリセットしている。
見易くするために '.' の後には改行を出力している。
以下は Linux のシェルのコマンドラインで実行して abc と Hello, world. を入力した時のコピペ。
$ perl -ne 'BEGIN{$o=0}chomp;for(split //){$c=ord($_);print((($o < $c ? "+" : "-") x abs($o - $c)) . ".\n");$o=$c}$o=0'
abc
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
+.
+.
Hello, world.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
+++++++++++++++++++++++++++++.
+++++++.
.
+++.
-------------------------------------------------------------------.
------------.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
--------.
+++.
------.
--------.
------------------------------------------------------.
$
290デフォルトの名無しさん
2020/08/13(木) 01:49:54.11ID:CZu90IWX >>286 Ruby
"Hello World!\n".codepoints.inject(''){|r,c| r << '+' * c + '.[-]' }
"Hello World!\n".codepoints.inject(''){|r,c| r << '+' * c + '.[-]' }
291デフォルトの名無しさん
2020/08/13(木) 03:32:09.93ID:CZu90IWX >>286 Ruby
"Hello World!\n".codepoints.map{|c| '+' * c + '.' }.join( '[-]' )
"Hello World!\n".codepoints.map{|c| '+' * c + '.' }.join( '[-]' )
292デフォルトの名無しさん
2020/08/13(木) 05:51:07.18ID:CZu90IWX293デフォルトの名無しさん
2020/08/13(木) 06:48:39.25ID:9ZM4Lmsz294デフォルトの名無しさん
2020/08/13(木) 12:37:03.85ID:8zEuDtsy なるほどbrainfuckでは[-]で現在指してるメモリの値を0クリアできるのか
295デフォルトの名無しさん
2020/08/14(金) 01:20:11.50ID:CuxcYYZ5 お題:変数a, b, cを32ビット符号付き整数の最大値で初期化、または代入せよ。
octave
https://ideone.com/62dSzC
ada95
https://ideone.com/26IGLZ
octave
https://ideone.com/62dSzC
ada95
https://ideone.com/26IGLZ
296デフォルトの名無しさん
2020/08/14(金) 03:17:07.09ID:cCFmHkiX >>295 Ruby
# 初期化だけ
a = b = c = 2**31 - 1
# 初期化して表示
p *(a,b,c = [2**31-1] * 3) #=> 2147483647\n2147483647\n2147483647\n
# 初期化だけ
a = b = c = 2**31 - 1
# 初期化して表示
p *(a,b,c = [2**31-1] * 3) #=> 2147483647\n2147483647\n2147483647\n
297デフォルトの名無しさん
2020/08/14(金) 07:01:38.27ID:cCFmHkiX >>295 Ruby
お題とずれるけど INT32_MAX, INT32_MIN を普通の演算以外で作ってみた
# 定数 0,1 から INT32_MAX, INT32_MIN
[~0].pack('l').unpack('L').first >> 1 #=> 2147483647
[~0].pack('l').unpack('N').first >> 1 #=> -2147483648
# 定数 1 から INT32_MAX, INT32_MIN
[~1].pack('l<').unpack('b*').pack('B*').unpack('l>').first #=> 2147483647
[1].pack('l<').unpack('b*').pack('B*').unpack('l>').first #=> -2147483648
お題とずれるけど INT32_MAX, INT32_MIN を普通の演算以外で作ってみた
# 定数 0,1 から INT32_MAX, INT32_MIN
[~0].pack('l').unpack('L').first >> 1 #=> 2147483647
[~0].pack('l').unpack('N').first >> 1 #=> -2147483648
# 定数 1 から INT32_MAX, INT32_MIN
[~1].pack('l<').unpack('b*').pack('B*').unpack('l>').first #=> 2147483647
[1].pack('l<').unpack('b*').pack('B*').unpack('l>').first #=> -2147483648
298デフォルトの名無しさん
2020/08/14(金) 08:01:01.07ID:sgFs/qSh299デフォルトの名無しさん
2020/08/14(金) 08:17:19.00ID:jifd8sPx300デフォルトの名無しさん
2020/08/14(金) 08:18:37.41ID:jifd8sPx あ maxとminが逆だった
301デフォルトの名無しさん
2020/08/14(金) 08:20:39.60ID:jifd8sPx しかもお題と関係ない スマソ
302デフォルトの名無しさん
2020/08/14(金) 08:21:04.21ID:hpI++Bi7303デフォルトの名無しさん
2020/08/14(金) 08:38:19.44ID:jifd8sPx >>295 C++(訂正)
#include <iostream>
#include <tuple>
int main() {
int32_t max = ~(1 << 31);
const auto [a, b, c] = [&]() { return std::tie(max, max, max); }();
std::cout << a << std::endl;
std::cout << b << std::endl;
std::cout << c << std::endl;
}
#include <iostream>
#include <tuple>
int main() {
int32_t max = ~(1 << 31);
const auto [a, b, c] = [&]() { return std::tie(max, max, max); }();
std::cout << a << std::endl;
std::cout << b << std::endl;
std::cout << c << std::endl;
}
304デフォルトの名無しさん
2020/08/14(金) 09:05:58.49ID:jifd8sPx const auto [a, b, c] = std::tie(max, max, max);
これだけでよかったorz
これだけでよかったorz
305デフォルトの名無しさん
2020/08/14(金) 14:02:54.65ID:9qHjnK+i お題:任意文字列を含むビットコインアドレスを生成するスクリプト
BitCoinDescriptionAddress
↓
1BitCoinDescriptionAddressadTvGDH
BitCoinDescriptionAddress
↓
1BitCoinDescriptionAddressadTvGDH
306デフォルトの名無しさん
2020/08/15(土) 16:58:24.79ID:gFfdk9Ij >>295
Kotlin 及び Kotlin script
普通にただ Int.MAX_VALUE を代入するだけだとつまらないので List 使ってまとめて代入。
val (a, b, c) = listOf(Int.MAX_VALUE, Int.MAX_VALUE, Int.MAX_VALUE)
この形式は実際には a に List のインスタンスの component1() メソッドを実行して結果を代入、
b に component2() の結果を代入、c に component3() の結果を代入という具合に componentN()
のメソッドを呼び出しているだけだ。(コンパイラが自動でそういう風にしてくれる。但し定数の代入
だったら最終的にはうまい事最適化してくれてただの値の代入になっているんじゃないかと思う)。
それで、List インターフェースには component5() までしかないのでそのままだと 5 個の変数にしか
代入できない。しかし自分で下記のように component6() という拡張関数を作れば 6 個目の変数への
代入ができるようになる。
fun <T> List<T>.component6() = get(5)
val (a, b, c, d, e, f) = listOf(Int.MAX_VALUE, Int.MAX_VALUE, Int.MAX_VALUE, 1, 2, 3)
これで f には 3 が代入される。
まあしかしこのような形式でまとめて複数の変数を初期化をするのは変数が多くなればなるほど
見辛くなってどれがどれに代入されるか分かり辛くなるのであまりお勧めする気は起きない。
Kotlin 及び Kotlin script
普通にただ Int.MAX_VALUE を代入するだけだとつまらないので List 使ってまとめて代入。
val (a, b, c) = listOf(Int.MAX_VALUE, Int.MAX_VALUE, Int.MAX_VALUE)
この形式は実際には a に List のインスタンスの component1() メソッドを実行して結果を代入、
b に component2() の結果を代入、c に component3() の結果を代入という具合に componentN()
のメソッドを呼び出しているだけだ。(コンパイラが自動でそういう風にしてくれる。但し定数の代入
だったら最終的にはうまい事最適化してくれてただの値の代入になっているんじゃないかと思う)。
それで、List インターフェースには component5() までしかないのでそのままだと 5 個の変数にしか
代入できない。しかし自分で下記のように component6() という拡張関数を作れば 6 個目の変数への
代入ができるようになる。
fun <T> List<T>.component6() = get(5)
val (a, b, c, d, e, f) = listOf(Int.MAX_VALUE, Int.MAX_VALUE, Int.MAX_VALUE, 1, 2, 3)
これで f には 3 が代入される。
まあしかしこのような形式でまとめて複数の変数を初期化をするのは変数が多くなればなるほど
見辛くなってどれがどれに代入されるか分かり辛くなるのであまりお勧めする気は起きない。
307295
2020/08/15(土) 17:28:56.25ID:nnj+MvqH308デフォルトの名無しさん
2020/08/15(土) 17:57:15.54ID:uqmyrozg お題
長さNの順列を全列挙してください
入力: N
出力: N!行の1からNの整数を用いた順列
例
入力: 3
出力:
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
長さNの順列を全列挙してください
入力: N
出力: N!行の1からNの整数を用いた順列
例
入力: 3
出力:
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
309デフォルトの名無しさん
2020/08/15(土) 18:04:12.38ID:WnA8LB9O310デフォルトの名無しさん
2020/08/15(土) 18:07:06.59ID:nnj+MvqH311デフォルトの名無しさん
2020/08/15(土) 19:24:16.43ID:4GsEJ4Sf お題
HTMLドキュメントをwebブラウアザ上に表示するプログラムを作りなさい。
内容は、html、head、meta、title、body、h1 を含み、
UTF-8で表示するものとする、
Hello World!
HTMLドキュメントをwebブラウアザ上に表示するプログラムを作りなさい。
内容は、html、head、meta、title、body、h1 を含み、
UTF-8で表示するものとする、
Hello World!
312デフォルトの名無しさん
2020/08/15(土) 20:07:59.51ID:nR02Shr3 お題: 整数の0,1を真偽値のfalse,trueに変換しなさい
313デフォルトの名無しさん
2020/08/15(土) 20:22:45.39ID:BUqVCKAW >>311 Ruby
require 'webrick'
BrowserPath = 'C:/Program Files/Mozilla Firefox/firefox.exe'
srv = WEBrick::HTTPServer.new( {BindAddress: '127.0.0.1', Port: 55080} )
trap("INT"){ srv.shutdown }
srv.mount_proc('/') do |req, res|
html = <<_EOT_
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Title</title></head>
<body>
<h1>Hello World!</h1>#{Time.now.strftime('%y/%m/%d %T')}<br></body></html>
_EOT_
res.body = html.encode( Encoding::UTF_8 )
res['Content-Type'] = 'text/html'
end
Thread.new { sleep 1; system( %Q{"#{BrowserPath}" http://127.0.0.1:55080/} ) }
srv.start
require 'webrick'
BrowserPath = 'C:/Program Files/Mozilla Firefox/firefox.exe'
srv = WEBrick::HTTPServer.new( {BindAddress: '127.0.0.1', Port: 55080} )
trap("INT"){ srv.shutdown }
srv.mount_proc('/') do |req, res|
html = <<_EOT_
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Title</title></head>
<body>
<h1>Hello World!</h1>#{Time.now.strftime('%y/%m/%d %T')}<br></body></html>
_EOT_
res.body = html.encode( Encoding::UTF_8 )
res['Content-Type'] = 'text/html'
end
Thread.new { sleep 1; system( %Q{"#{BrowserPath}" http://127.0.0.1:55080/} ) }
srv.start
314デフォルトの名無しさん
2020/08/15(土) 20:34:31.85ID:BUqVCKAW >>312 Ruby
def i2b( x )
if x.is_a?( Integer )
return false if x == 0
return true if x == 1
end
x
end
[ 'foo', 7, 1, 1.0, [], true, false, 0, {} ].each{|x|
puts "%5p : %5p" % [x, i2b( x )]
}
# =>
"foo" : "foo"
7 : 7
1 : true
1.0 : 1.0
[] : []
true : true
false : false
0 : false
0 : false
{} : {}
def i2b( x )
if x.is_a?( Integer )
return false if x == 0
return true if x == 1
end
x
end
[ 'foo', 7, 1, 1.0, [], true, false, 0, {} ].each{|x|
puts "%5p : %5p" % [x, i2b( x )]
}
# =>
"foo" : "foo"
7 : 7
1 : true
1.0 : 1.0
[] : []
true : true
false : false
0 : false
0 : false
{} : {}
316デフォルトの名無しさん
2020/08/15(土) 20:49:55.10ID:WnA8LB9O317デフォルトの名無しさん
2020/08/15(土) 20:59:34.51ID:nnj+MvqH >>312 ocaml
https://ideone.com/nSKbMo
let f = function 0 -> false | 1 -> true
let () = Printf.printf "%B %B" (f 0) (f 1)
>>312 c++
https://ideone.com/Dm4QrP
#include <iostream>
#include <iomanip>
int main() {
std::cout << std::boolalpha << 0 << !!0 << 1 << !!1 << std::endl;
return 0;
}
https://ideone.com/nSKbMo
let f = function 0 -> false | 1 -> true
let () = Printf.printf "%B %B" (f 0) (f 1)
>>312 c++
https://ideone.com/Dm4QrP
#include <iostream>
#include <iomanip>
int main() {
std::cout << std::boolalpha << 0 << !!0 << 1 << !!1 << std::endl;
return 0;
}
318デフォルトの名無しさん
2020/08/15(土) 21:22:21.80ID:v9cGseLQ319デフォルトの名無しさん
2020/08/15(土) 23:19:07.77ID:gFfdk9Ij >>312
Kotlin 及び Kotlin Script
まず、こういう拡張関数を定義しておく。
fun Int.toBoolean() = this != 0
この後は Int 型のインスタンスに対して .toBoolean() で 0 なら false, 0 以外なら true が返る。
例
0.toBoolean() は false になる。
1.toBoolean() は true になる。
x.toBoolean() は x の型が Int で 0 なら false, 0 以外なら true になる。x がその他の型だとコンパイルエラー。
Kotlin 及び Kotlin Script
まず、こういう拡張関数を定義しておく。
fun Int.toBoolean() = this != 0
この後は Int 型のインスタンスに対して .toBoolean() で 0 なら false, 0 以外なら true が返る。
例
0.toBoolean() は false になる。
1.toBoolean() は true になる。
x.toBoolean() は x の型が Int で 0 なら false, 0 以外なら true になる。x がその他の型だとコンパイルエラー。
320デフォルトの名無しさん
2020/08/16(日) 02:10:15.75ID:aQEvXwVj321デフォルトの名無しさん
2020/08/16(日) 10:54:19.77ID:DGzsHTxH322デフォルトの名無しさん
2020/08/16(日) 11:17:36.83ID:x8ZjthFZ323デフォルトの名無しさん
2020/08/16(日) 19:28:34.07ID:Stgr85a5324蟻人間 ◆T6xkBnTXz7B0
2020/08/16(日) 19:41:54.77ID:GwA/W8AI お題: 浮動小数点数の区間演算の加減乗除(+、-、*、/)を実現しなさい。開区間は丸カッコを、閉区間は角カッコを使う。
区間はカッコで囲まれた数の対で表すものとする。ここで対の最初の要素は対の最後の要素以下とする。
例)
[1, 3) + 2 → [3, 5).
[2, 8] - [1, 2] → [0, 7].
(-3, 2] * (1, [2, 3)) → (-9, 6).
区間はカッコで囲まれた数の対で表すものとする。ここで対の最初の要素は対の最後の要素以下とする。
例)
[1, 3) + 2 → [3, 5).
[2, 8] - [1, 2] → [0, 7].
(-3, 2] * (1, [2, 3)) → (-9, 6).
325デフォルトの名無しさん
2020/08/16(日) 19:47:13.56ID:WQRWSQYc326蟻人間 ◆T6xkBnTXz7B0
2020/08/16(日) 19:54:55.84ID:GwA/W8AI327デフォルトの名無しさん
2020/08/16(日) 19:59:26.75ID:WQRWSQYc >>326
任意の区間に対してどのように順序を定義して全順序集合を構成するのか考えてから言えよクソ雑魚が
任意の区間に対してどのように順序を定義して全順序集合を構成するのか考えてから言えよクソ雑魚が
328デフォルトの名無しさん
2020/08/16(日) 20:01:44.11ID:5GlLVozn そもそも 2 と [2, 2] が同じだと思ってる時点でやばいよ
ペアノ系で 0 = 1 って言ってるようなもんだぞ
ペアノ系で 0 = 1 って言ってるようなもんだぞ
329蟻人間 ◆T6xkBnTXz7B0
2020/08/16(日) 20:08:52.13ID:GwA/W8AI >>327
任意の[x, y]についてx<=yと仮定する。
[a, b] + [c, d] == [a+c, b+d].
[a, b] - [c, d] == [a-d, b-c].
[a, b] * [c, d] == [min(a*c, b*c, a*d, b*d), max(a*c, b*c, a*d, b*d)].
[a, b] / [c, d] == [min(a/c, b/c, a/d, b/d), max(a/c, b/c, a/d, b/d)].
任意の[x, y]についてx<=yと仮定する。
[a, b] + [c, d] == [a+c, b+d].
[a, b] - [c, d] == [a-d, b-c].
[a, b] * [c, d] == [min(a*c, b*c, a*d, b*d), max(a*c, b*c, a*d, b*d)].
[a, b] / [c, d] == [min(a/c, b/c, a/d, b/d), max(a/c, b/c, a/d, b/d)].
330デフォルトの名無しさん
2020/08/16(日) 20:11:24.43ID:WQRWSQYc >>329
順序の定義しろっつってんだろクソが
「(1, [2, 3))」かつ「対の最初の要素は対の最後の要素以下とする」って言ってるってことは
[1, 1] <= [2, 3) なんだろ?
任意の区間の間で矛盾なく順序を定義しろや
順序の定義しろっつってんだろクソが
「(1, [2, 3))」かつ「対の最初の要素は対の最後の要素以下とする」って言ってるってことは
[1, 1] <= [2, 3) なんだろ?
任意の区間の間で矛盾なく順序を定義しろや
331蟻人間 ◆T6xkBnTXz7B0
2020/08/16(日) 20:24:24.91ID:GwA/W8AI >>330
すみません。カッコの入れ子はややこしいので止めます、、、
というのは簡単だが、あえて考える。
b<=cならば、間違いなく[a, b] <= [c, d]は真。
d<aならば、[a, b] <= [c, d]は偽。
それ以外は[a, b] <= [c, d]の論理値は不定とし、実行時エラーを発生させる。
すみません。カッコの入れ子はややこしいので止めます、、、
というのは簡単だが、あえて考える。
b<=cならば、間違いなく[a, b] <= [c, d]は真。
d<aならば、[a, b] <= [c, d]は偽。
それ以外は[a, b] <= [c, d]の論理値は不定とし、実行時エラーを発生させる。
332デフォルトの名無しさん
2020/08/16(日) 20:32:34.77ID:WQRWSQYc >>331
完全律すら成り立たない順序ってなんだよ
「カッコの入れ子はややこしい」とかそういうレベルじゃねえんだよ
だいたい [a, b] - [a, b] = [a - b, b - a] != 0 ってクッソきもいんですけど
お前群論なめてんのか
完全律すら成り立たない順序ってなんだよ
「カッコの入れ子はややこしい」とかそういうレベルじゃねえんだよ
だいたい [a, b] - [a, b] = [a - b, b - a] != 0 ってクッソきもいんですけど
お前群論なめてんのか
333デフォルトの名無しさん
2020/08/16(日) 20:34:23.06ID:1lLvvYB6 計算の順番を変えたりするだけで簡単に全部エラーにできるから流石にお粗末だね
334デフォルトの名無しさん
2020/08/16(日) 20:50:12.97ID:5EzRC1Sr >>331
死ねカス
死ねカス
335蟻人間 ◆T6xkBnTXz7B0
2020/08/16(日) 20:54:18.06ID:GwA/W8AI >>332
> だいたい [a, b] - [a, b] = [a - b, b - a] != 0 ってクッソきもいんですけど
[a - b, b - a] はゼロを中心とした区間の誤差範囲を表してるから間違いではない。計算機の内部には群論が成り立たない汚い演算もある。
> だいたい [a, b] - [a, b] = [a - b, b - a] != 0 ってクッソきもいんですけど
[a - b, b - a] はゼロを中心とした区間の誤差範囲を表してるから間違いではない。計算機の内部には群論が成り立たない汚い演算もある。
336デフォルトの名無しさん
2020/08/16(日) 20:57:11.13ID:rY4w2Ca/ まーたスレタイからズレてるよ
問題に不備があったなら取り下げて勉強し直してこい
群論を教えるスレじゃない
何があえて考えてみるだ
問題に不備があったなら取り下げて勉強し直してこい
群論を教えるスレじゃない
何があえて考えてみるだ
337デフォルトの名無しさん
2020/08/16(日) 21:13:43.55ID:WQRWSQYc where 0 < a < b
0 = 0 * [0, 1]
= ([a, b] + [-a, -b]) * [0, 1]
= [a, b] * [0, 1] + [-a, -b] * [0, 1]
= [0, b] + [-b, 0]
= [-b, b]
!= [0, 0] = 0
矛盾
死ね
消えろ
0 = 0 * [0, 1]
= ([a, b] + [-a, -b]) * [0, 1]
= [a, b] * [0, 1] + [-a, -b] * [0, 1]
= [0, b] + [-b, 0]
= [-b, b]
!= [0, 0] = 0
矛盾
死ね
消えろ
339デフォルトの名無しさん
2020/08/16(日) 21:29:26.85ID:WQRWSQYc340デフォルトの名無しさん
2020/08/16(日) 21:34:29.96ID:1lLvvYB6 [0, 1]*[0, 1] = [0, 1]
<=> [0, 1]*([0, 1] - 1) = 0
<=> [0, 1]*[-1, 0] = 0
<=> [-1, 0] = 0
流石にひどいって
<=> [0, 1]*([0, 1] - 1) = 0
<=> [0, 1]*[-1, 0] = 0
<=> [-1, 0] = 0
流石にひどいって
341蟻人間 ◆T6xkBnTXz7B0
2020/08/16(日) 21:48:28.85ID:GwA/W8AI 加法
(1) 交換法則
(2) 結合法則
(3) 単位元の存在
(4) 逆元の存在
乗法
(5) 交換法則
(6) 結合法則
(7) 分配法則
(1) 交換法則
(2) 結合法則
(3) 単位元の存在
(4) 逆元の存在
乗法
(5) 交換法則
(6) 結合法則
(7) 分配法則
342蟻人間 ◆T6xkBnTXz7B0
2020/08/16(日) 22:04:28.19ID:GwA/W8AI 逆元がないから、減法が壊れてる。
区間に逆元があるように減法を定義することはできない。
すみません、取り下げます。
区間に逆元があるように減法を定義することはできない。
すみません、取り下げます。
343デフォルトの名無しさん
2020/08/16(日) 22:08:12.76ID:WQRWSQYc344デフォルトの名無しさん
2020/08/16(日) 22:16:18.77ID:UYHP6Cr3 問題を解くスキル<<<<<解ける問題を作るスキル
だったりするかも
だったりするかも
345デフォルトの名無しさん
2020/08/16(日) 22:26:48.34ID:Nztll5gc346蟻人間 ◆T6xkBnTXz7B0
2020/08/16(日) 22:46:06.78ID:GwA/W8AI やり直し。
お題: 区間と演算子によって構成される計算式が入力として与えられる。下記に従って浮動小数点数の区間に対する二項演算(+、-、*、/)を実現し、計算後の区間を出力しなさい。入力される区間は閉区間のみとする。
閉区間は角カッコで囲まれた浮動小数点数の対で表すものとする。ここで対の最初の要素は対の最後の要素以下とする。すなわち[a, b]という式があればa<=bでなければならない。
式が正当でないか、ゼロ除算があれば、実行時エラーを発生させること。
演算の定義:
[a, b] + [c, d] := [a+c, b+d].
[a, b] - [c, d] := [a-d, b-c].
[a, b] * [c, d] := [min(a*c, b*c, a*d, b*d), max(a*c, b*c, a*d, b*d)].
[a, b] / [c, d] := [min(a/c, b/c, a/d, b/d), max(a/c, b/c, a/d, b/d)].
例)
[1, 3] + [2, 2] → [3, 5].
[2, 8] - [1, 2] → [0, 7].
[-3, 2] * [1, 3] → [-9, 6].
お題: 区間と演算子によって構成される計算式が入力として与えられる。下記に従って浮動小数点数の区間に対する二項演算(+、-、*、/)を実現し、計算後の区間を出力しなさい。入力される区間は閉区間のみとする。
閉区間は角カッコで囲まれた浮動小数点数の対で表すものとする。ここで対の最初の要素は対の最後の要素以下とする。すなわち[a, b]という式があればa<=bでなければならない。
式が正当でないか、ゼロ除算があれば、実行時エラーを発生させること。
演算の定義:
[a, b] + [c, d] := [a+c, b+d].
[a, b] - [c, d] := [a-d, b-c].
[a, b] * [c, d] := [min(a*c, b*c, a*d, b*d), max(a*c, b*c, a*d, b*d)].
[a, b] / [c, d] := [min(a/c, b/c, a/d, b/d), max(a/c, b/c, a/d, b/d)].
例)
[1, 3] + [2, 2] → [3, 5].
[2, 8] - [1, 2] → [0, 7].
[-3, 2] * [1, 3] → [-9, 6].
347デフォルトの名無しさん
2020/08/16(日) 22:58:27.46ID:bYLilpPQ つーか
boost::numeric::interval
とかいう実装があってな
あながちおかしな話ではない
かと言って
そんな車輪の再生産みたいなお題を受けたい気はしないのだが
boost::numeric::interval
とかいう実装があってな
あながちおかしな話ではない
かと言って
そんな車輪の再生産みたいなお題を受けたい気はしないのだが
349253
2020/08/16(日) 23:50:47.82ID:G5r8RAij >>308 Perl5
use Data::Dump 'dump';
sub fn {
my ($le, $pv, @ri) = @_;
defined $pv ? map {[$pv, @$_]} fn([], @$le, @ri) : ([])
,
@ri ? fn([@$le, $pv], @ri) : ()
}
$N = 3;
@a = 1..$N;
print dump(fn [], @a);
実行結果
$ perl 18_308_N_permutation.pl
([1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 1, 2], [3, 2, 1])
use Data::Dump 'dump';
sub fn {
my ($le, $pv, @ri) = @_;
defined $pv ? map {[$pv, @$_]} fn([], @$le, @ri) : ([])
,
@ri ? fn([@$le, $pv], @ri) : ()
}
$N = 3;
@a = 1..$N;
print dump(fn [], @a);
実行結果
$ perl 18_308_N_permutation.pl
([1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 1, 2], [3, 2, 1])
350デフォルトの名無しさん
2020/08/17(月) 01:49:55.07ID:Nup7rIuH 前の書き方だとやる気が出ないみたいなので再掲
お題 任意文字列を含む有効なビットコインアドレスを生成するにはどうすればいいか
ビットコインアドレスの形式は
[プレフィックス 1バイト] [本体データ 160ビット] [チェックサム 4バイト]
をbase58(58進数)で表現したもの
プレフィックスは0x00とする
チェックサムはプレフィックス+本体データをsha256に二回かけた後の先頭4バイト
詳細
https://www.tottemoyasashiibitcoin.net/entry/2018/02/04/165300
例:
1BitCoinDescriptionAddressadTvGDH
1MayukoMuraokaXXXXXXXXXXXXXXX5f8QC
これはどっちも有効なビットコインアドレスになってる
https://chainflyer.bitflyer.com/Address/1BitCoinDescriptionAddressadTvGDH
https://chainflyer.bitflyer.jp/Address/1MayukoMuraokaXXXXXXXXXXXXXXX5f8QC
お題 任意文字列を含む有効なビットコインアドレスを生成するにはどうすればいいか
ビットコインアドレスの形式は
[プレフィックス 1バイト] [本体データ 160ビット] [チェックサム 4バイト]
をbase58(58進数)で表現したもの
プレフィックスは0x00とする
チェックサムはプレフィックス+本体データをsha256に二回かけた後の先頭4バイト
詳細
https://www.tottemoyasashiibitcoin.net/entry/2018/02/04/165300
例:
1BitCoinDescriptionAddressadTvGDH
1MayukoMuraokaXXXXXXXXXXXXXXX5f8QC
これはどっちも有効なビットコインアドレスになってる
https://chainflyer.bitflyer.com/Address/1BitCoinDescriptionAddressadTvGDH
https://chainflyer.bitflyer.jp/Address/1MayukoMuraokaXXXXXXXXXXXXXXX5f8QC
351デフォルトの名無しさん
2020/08/17(月) 06:10:10.64ID:sRZ0bbBO >>346
消えろカス
消えろカス
352デフォルトの名無しさん
2020/08/17(月) 08:34:59.13ID:4e6PsksO >>351
お前うざいよ
お前うざいよ
353デフォルトの名無しさん
2020/08/17(月) 09:10:13.06ID:CGaaR/Ic どうすればいいか?ってのがよくわからない
354デフォルトの名無しさん
2020/08/17(月) 09:11:51.56ID:CGaaR/Ic 入力と出力をはっきりさせてほしい
それとも取引所の仕様を理解しろって話なの?
それとも取引所の仕様を理解しろって話なの?
355デフォルトの名無しさん
2020/08/17(月) 11:17:26.81ID:2KNIyB/f ブルートフォースアタックしか思い浮かばない。
356デフォルトの名無しさん
2020/08/17(月) 18:12:59.56ID:Nup7rIuH 入力が任意文字列で出力がそれを含む有効なビットコインアドレス
例にあるやつだとMayukoMuraokaが任意文字列の部分
XXX…っていうのはただの本体データ160bitのあまりスペースを埋めてるだけだからなんでもいい
それに対応して最後のチェックサムも任意性がある
直感だとブルートフォースが必要そうだけど実際は単純なやり方でできる
例にあるやつだとMayukoMuraokaが任意文字列の部分
XXX…っていうのはただの本体データ160bitのあまりスペースを埋めてるだけだからなんでもいい
それに対応して最後のチェックサムも任意性がある
直感だとブルートフォースが必要そうだけど実際は単純なやり方でできる
357デフォルトの名無しさん
2020/08/17(月) 19:37:06.53ID:4e6PsksO 秘密鍵でデコードできなくてもいんでしょ?
じゃあbase58で表されたバイト値と文字列を変換するだけじゃん
じゃあbase58で表されたバイト値と文字列を変換するだけじゃん
358デフォルトの名無しさん
2020/08/17(月) 19:45:01.16ID:Nup7rIuH0 基本的にはそれだけのこと
実際の手順を考えるとちょっとややこしいことがあるくらい
ということで実装してみよう
実際の手順を考えるとちょっとややこしいことがあるくらい
ということで実装してみよう
359デフォルトの名無しさん
2020/08/17(月) 22:43:06.44ID:sRZ0bbBO >>352
お前がうぜえよ死ね
お前がうぜえよ死ね
360デフォルトの名無しさん
2020/08/17(月) 22:47:24.50ID:4e6PsksO >>359
お前が死ね
お前が死ね
361デフォルトの名無しさん
2020/08/17(月) 22:50:53.21ID:3fwftKf8 よし俺がしぬよ
362デフォルトの名無しさん
2020/08/17(月) 22:53:16.60ID:UMcd904E 夏だなあ
363デフォルトの名無しさん
2020/08/17(月) 22:56:52.65ID:4e6PsksO >>361
じゃあ俺が死ぬよ
じゃあ俺が死ぬよ
364デフォルトの名無しさん
2020/08/17(月) 22:57:17.04ID:3fwftKf8 お題: 『死』を表現せよ
365デフォルトの名無しさん
2020/08/17(月) 22:57:32.35ID:3fwftKf8 >>363
どうぞうどうぞ
どうぞうどうぞ
366デフォルトの名無しさん
2020/08/17(月) 22:58:07.77ID:sRZ0bbBO >>363
じゃあ死ねよ
じゃあ死ねよ
367デフォルトの名無しさん
2020/08/17(月) 23:05:20.89ID:4e6PsksO368デフォルトの名無しさん
2020/08/17(月) 23:05:35.92ID:4e6PsksO じゃあ俺が死ぬよ
369デフォルトの名無しさん
2020/08/17(月) 23:05:59.92ID:4e6PsksO くるよくるよ
370デフォルトの名無しさん
2020/08/17(月) 23:06:13.27ID:4e6PsksO ドキドキ
371デフォルトの名無しさん
2020/08/17(月) 23:39:35.54ID:4e6PsksO 逃げたか
372デフォルトの名無しさん
2020/08/17(月) 23:39:58.23ID:4e6PsksO 笑いから逃げるな
373デフォルトの名無しさん
2020/08/18(火) 00:15:03.77ID:/+dAg+CW お題: 二人の煽り耐性から「死ね」と言い合うプログラム
煽り耐性 0.1〜1
死ねと言い返す確率 (1-煽り耐性) * 100%
最初に死ねと言うのはA
入力 {Aの煽り耐性} {Bの煽り耐性}
例
> 0.1 0.8
A「死ね」
B「死ね」
A「死ね」
煽り耐性 0.1〜1
死ねと言い返す確率 (1-煽り耐性) * 100%
最初に死ねと言うのはA
入力 {Aの煽り耐性} {Bの煽り耐性}
例
> 0.1 0.8
A「死ね」
B「死ね」
A「死ね」
374デフォルトの名無しさん
2020/08/18(火) 01:25:39.14ID:IZwRntbA if (>>373{A}%3 ==0.1&&0.8<<373{B}) print "オモロー" & "アキラ" *100% ;
375デフォルトの名無しさん
2020/08/18(火) 01:35:33.42ID:Vl5MoMXT0 >>350 js
const input = "programmingodaisure"
let tmp_str = input;
let tmp_hex = new Uint8Array();
do {
tmp_str += "X";
tmp_hex = [0x00, ...Base58.decode(tmp_str)];
} while (tmp_hex.length < 25)
const prefix_and_data = tmp_hex.slice(0, -4);
const doubleSha256 = sha256.digest(sha256.digest(prefix_and_data))
const checkSum = doubleSha256.slice(0, 4);
const result_hex = new Uint8Array([...prefix_and_data, ...checkSum]);
const result_str = Base58.encode(result_hex);
console.log(result_str);
→ "1programmingodaisureXXXXXXXZHx9sj"
https://chainflyer.bitflyer.jp/Address/1programmingodaisureXXXXXXXZHx9sj
BASE58とSHA256のライブラリ
https://cdn.jsdelivr.net/npm/base-58@0.0.1/Base58.min.js
https://cdn.jsdelivr.net/npm/js-sha256@0.9.0/src/sha256.min.js
const input = "programmingodaisure"
let tmp_str = input;
let tmp_hex = new Uint8Array();
do {
tmp_str += "X";
tmp_hex = [0x00, ...Base58.decode(tmp_str)];
} while (tmp_hex.length < 25)
const prefix_and_data = tmp_hex.slice(0, -4);
const doubleSha256 = sha256.digest(sha256.digest(prefix_and_data))
const checkSum = doubleSha256.slice(0, 4);
const result_hex = new Uint8Array([...prefix_and_data, ...checkSum]);
const result_str = Base58.encode(result_hex);
console.log(result_str);
→ "1programmingodaisureXXXXXXXZHx9sj"
https://chainflyer.bitflyer.jp/Address/1programmingodaisureXXXXXXXZHx9sj
BASE58とSHA256のライブラリ
https://cdn.jsdelivr.net/npm/base-58@0.0.1/Base58.min.js
https://cdn.jsdelivr.net/npm/js-sha256@0.9.0/src/sha256.min.js
376デフォルトの名無しさん
2020/08/19(水) 16:18:46.79ID:ltFkDVN7377デフォルトの名無しさん
2020/08/19(水) 18:40:23.70ID:d4bqPFA7 「生」の読みはたくさんあるのに、
「死」の読みはひとつだけ。
示唆に富んでいる。
「死」の読みはひとつだけ。
示唆に富んでいる。
378デフォルトの名無しさん
2020/08/19(水) 18:45:07.34ID:OrygHj4v 略して示唆トン。
379デフォルトの名無しさん
2020/08/20(木) 11:35:09.25ID:nWR09WFB >>249
Elixir
# 蓄積変数 set は、すべての文字列の集合。abcde, bcdea などの5つ。
# word は、1文字ずらした文字列
src_word = 'abcde'
%{ set: set } = Enum.reduce_while( 1..length( src_word ), %{ set: MapSet.new, word: src_word }, fn _count, acc ->
[ head | tail ] = acc.word
next_word = tail ++ [ head ] # 1文字ずらす
acc = %{ acc | word: next_word }
if MapSet.member?( acc.set, next_word ) do
{ :halt, acc } # 既に存在すれば、break
else
acc = %{ acc | set: MapSet.put( acc.set, next_word ) }
{ :cont, acc } # ループを続ける
end
end )
# IO.inspect set
# 文字列が、集合の中に含まれているか?
[ 'deabc', 'cdeba' ]
|> Enum.map( fn str -> MapSet.member?( set, str ) end )
|> IO.inspect # [true, false]
Elixir
# 蓄積変数 set は、すべての文字列の集合。abcde, bcdea などの5つ。
# word は、1文字ずらした文字列
src_word = 'abcde'
%{ set: set } = Enum.reduce_while( 1..length( src_word ), %{ set: MapSet.new, word: src_word }, fn _count, acc ->
[ head | tail ] = acc.word
next_word = tail ++ [ head ] # 1文字ずらす
acc = %{ acc | word: next_word }
if MapSet.member?( acc.set, next_word ) do
{ :halt, acc } # 既に存在すれば、break
else
acc = %{ acc | set: MapSet.put( acc.set, next_word ) }
{ :cont, acc } # ループを続ける
end
end )
# IO.inspect set
# 文字列が、集合の中に含まれているか?
[ 'deabc', 'cdeba' ]
|> Enum.map( fn str -> MapSet.member?( set, str ) end )
|> IO.inspect # [true, false]
380デフォルトの名無しさん
2020/08/23(日) 18:52:15.52ID:kIX3/Jw/ お題:
縦H、横Wの迷路が与えられます。
スタートからゴールに至る道順の個数を求めてください。
迷路は通路から通路へ、上下左右の4方向へのみ移動できます。
ただし、一度通った通路を引き返すような道順は無効です。
また、スタートとゴールは通路です。
1行目に迷路の高さと幅を表す整数H、Wが与えられます。
2行目からH行にわたって、迷路を表す長さWの文字列が与えられます。
文字列は 'S' 'G' '.' '#' の文字のみからなり、それぞれスタート、ゴール、通路、壁です。
例1:
入力:
5 5
S....
##.#.
...#.
##.#.
....G
出力:
2
例2:
入力:
5 5
S....
##.#.
...#.
...#.
....G
出力:
12
縦H、横Wの迷路が与えられます。
スタートからゴールに至る道順の個数を求めてください。
迷路は通路から通路へ、上下左右の4方向へのみ移動できます。
ただし、一度通った通路を引き返すような道順は無効です。
また、スタートとゴールは通路です。
1行目に迷路の高さと幅を表す整数H、Wが与えられます。
2行目からH行にわたって、迷路を表す長さWの文字列が与えられます。
文字列は 'S' 'G' '.' '#' の文字のみからなり、それぞれスタート、ゴール、通路、壁です。
例1:
入力:
5 5
S....
##.#.
...#.
##.#.
....G
出力:
2
例2:
入力:
5 5
S....
##.#.
...#.
...#.
....G
出力:
12
381デフォルトの名無しさん
2020/08/24(月) 04:30:51.55ID:qrCNAVcy382デフォルトの名無しさん
2020/08/24(月) 11:49:18.16ID:2DIU31aQ383蟻人間 ◆T6xkBnTXz7B0
2020/08/29(土) 20:44:46.53ID:GYyhmMZY お題: ロシアンルーレット。
リボルバーを回しますか? (Y/n) Y
1回目: 不発
リボルバーを回しますか? (Y/n) Y
2回目: 不発
リボルバーを回しますか? (Y/n) n
3回目: バーン!
リボルバーを回しますか? (Y/n) Y
1回目: 不発
リボルバーを回しますか? (Y/n) Y
2回目: 不発
リボルバーを回しますか? (Y/n) n
3回目: バーン!
384デフォルトの名無しさん
2020/08/29(土) 21:04:26.78ID:KxRf/0sH >>383
仕様がわからない
仕様がわからない
385蟻人間 ◆T6xkBnTXz7B0
2020/08/29(土) 21:07:51.24ID:GYyhmMZY386蟻人間 ◆T6xkBnTXz7B0
2020/08/29(土) 21:24:48.99ID:GYyhmMZY >>383-384 こんな感じか?
最初にリボルバーを回します。
(弾丸の位置を設定)
こめかみor天井?(K/t) K
1回目: 不発
もう一度リボルバーを回しますか? (Y/n) Y
(弾丸を回転)
こめかみor天井?(K/t) K
2回目: 不発
もう一度リボルバーを回しますか? (Y/n) n
こめかみor天井?(K/t) K
3回目: バーン!
あなたの負けです。
最初にリボルバーを回します。
(弾丸の位置を設定)
こめかみor天井?(K/t) K
1回目: 不発
もう一度リボルバーを回しますか? (Y/n) Y
(弾丸を回転)
こめかみor天井?(K/t) K
2回目: 不発
もう一度リボルバーを回しますか? (Y/n) n
こめかみor天井?(K/t) K
3回目: バーン!
あなたの負けです。
387蟻人間 ◆T6xkBnTXz7B0
2020/08/29(土) 22:00:32.12ID:GYyhmMZY えっ、拳銃見たことないの?
388デフォルトの名無しさん
2020/08/29(土) 22:14:20.91ID:bYj4gZFd 銃の弾数と空砲/実包の割合とか
オートマとリボルバーどっちかとか特定してからにしてくれ
オートマとリボルバーどっちかとか特定してからにしてくれ
389デフォルトの名無しさん
2020/08/29(土) 22:51:06.10ID:yG/yQHuO jsインタラクティブ入力に弱い
390デフォルトの名無しさん
2020/08/29(土) 23:12:55.70ID:yG/yQHuO >>383
https://repl.it/@vip0/bullet#index.js
// 0-5
const rand6 = () => Math.floor(Math.random() * 6);
const gun = (() => {
let pos = 0;
const shuffle = () => (pos = rand6());
shuffle();
const shut = () => pos-- === -1
return { shuffle, pos, shut }
})()
// mock 1/2 rand
const readDoShuffleAsync = () => {
const y = Math.random() >= 0.5
console.log(y ? "y" : "n")
return y
}
let i = 1;
while (true) {
console.log("リボルバーを回しますか?");
if (readDoShuffleAsync()) gun.shuffle()
const bomb = gun.shut();
console.log(`${i}回目: ${bomb ? "バーン!" : "不発"}`);
i++;
if (bomb) break
}
https://repl.it/@vip0/bullet#index.js
// 0-5
const rand6 = () => Math.floor(Math.random() * 6);
const gun = (() => {
let pos = 0;
const shuffle = () => (pos = rand6());
shuffle();
const shut = () => pos-- === -1
return { shuffle, pos, shut }
})()
// mock 1/2 rand
const readDoShuffleAsync = () => {
const y = Math.random() >= 0.5
console.log(y ? "y" : "n")
return y
}
let i = 1;
while (true) {
console.log("リボルバーを回しますか?");
if (readDoShuffleAsync()) gun.shuffle()
const bomb = gun.shut();
console.log(`${i}回目: ${bomb ? "バーン!" : "不発"}`);
i++;
if (bomb) break
}
391デフォルトの名無しさん
2020/08/29(土) 23:34:19.24ID:2f/XylsB VSCode の拡張機能、Quokka.js を使えば?
変数を書くだけで、内容が表示される
var a = 1
a // 1 と表示される
変数を書くだけで、内容が表示される
var a = 1
a // 1 と表示される
392デフォルトの名無しさん
2020/08/29(土) 23:41:03.13ID:yG/yQHuO swift playgroundとかjestのinlineSnapshotみたいな感じか
使うときがあるか微妙
使うときがあるか微妙
393デフォルトの名無しさん
2020/08/30(日) 01:02:17.18ID:xjthqQ7x お題
nを受け取って1からnまでインクリメントされた配列を返してください
インクリメントするごとに値の数だけ配列に値を追加してください
例
入力: 1
出力: [1]
入力: 3
出力: [1, 2, 2, 3, 3, 3]
nを受け取って1からnまでインクリメントされた配列を返してください
インクリメントするごとに値の数だけ配列に値を追加してください
例
入力: 1
出力: [1]
入力: 3
出力: [1, 2, 2, 3, 3, 3]
394デフォルトの名無しさん
2020/08/30(日) 01:33:41.99ID:xjthqQ7x お題
配列をソートする関数を受け取って安定ソートか否かを判定する
プログラムを作成してください
配列をソートする関数を受け取って安定ソートか否かを判定する
プログラムを作成してください
395デフォルトの名無しさん
2020/08/30(日) 06:49:46.06ID:a0VCHWdX お題: splitを実装せよ(ただし組み込みやライブラリのsplitは使ってはならない)
例:
>> split('abc:def:ghi', ':')
>> ['abc', 'def', 'ghi']
例:
>> split('abc:def:ghi', ':')
>> ['abc', 'def', 'ghi']
396デフォルトの名無しさん
2020/08/30(日) 08:02:58.80ID:Ui9A3dkW >>393 J
f =: #~ @: >: @ i.
f =: #~ @: >: @ i.
397デフォルトの名無しさん
2020/08/30(日) 09:40:37.84ID:rD3R6mry398デフォルトの名無しさん
2020/08/30(日) 09:41:22.98ID:ka/TVb/i399デフォルトの名無しさん
2020/08/30(日) 09:43:25.32ID:pWMgwPJi >>395
JS
let minSplit = (string, separator) => {
let array = [];
let splitter = (st, sp) => {
let pos = st.indexOf(sp);
if (pos == -1) {return [st,void(0)]} else {return [st.slice(0,pos),st.slice(pos+1)]}
}
while (true) {
if (string.length == 0) {array.push(string); break}
let temp = splitter(string, separator)
if (temp[1] == void(0)) {array.push(temp[0]); break}
else {array.push(temp[0]); string = temp[1]}
}
return array
}
let minSplit2 = (string, separator) => {
let reg = new RegExp(`[^(${separator})]+${separator}?`, "g");
return `${string} `.match(reg).map(x=>x.slice(0,-1))
}
JS
let minSplit = (string, separator) => {
let array = [];
let splitter = (st, sp) => {
let pos = st.indexOf(sp);
if (pos == -1) {return [st,void(0)]} else {return [st.slice(0,pos),st.slice(pos+1)]}
}
while (true) {
if (string.length == 0) {array.push(string); break}
let temp = splitter(string, separator)
if (temp[1] == void(0)) {array.push(temp[0]); break}
else {array.push(temp[0]); string = temp[1]}
}
return array
}
let minSplit2 = (string, separator) => {
let reg = new RegExp(`[^(${separator})]+${separator}?`, "g");
return `${string} `.match(reg).map(x=>x.slice(0,-1))
}
400デフォルトの名無しさん
2020/08/30(日) 17:51:57.01ID:9TpSDH8X >>395 octave
f = @(s, d) arrayfun(@(b, e) {s(b:e)}, [1 find(s == d) + 1], [find(s == d) - 1 numel(s)]);
f('abc:def:ghi', ':')
f = @(s, d) arrayfun(@(b, e) {s(b:e)}, [1 find(s == d) + 1], [find(s == d) - 1 numel(s)]);
f('abc:def:ghi', ':')
401400
2020/08/30(日) 18:29:58.33ID:9TpSDH8X402デフォルトの名無しさん
2020/08/30(日) 18:55:27.84ID:uG01djUi >>395 js
const replaceAll = (s, from, to) => s.replace(new RegExp(from, "g"), to)
const split = (str, sep) => JSON.parse(`["${replaceAll(str, sep, '","')}"]`)
split('abc:def:ghi', ':')
// [ 'abc', 'def', 'ghi' ]
ずるいしダブルクォート対応できてないけど思いつき
const replaceAll = (s, from, to) => s.replace(new RegExp(from, "g"), to)
const split = (str, sep) => JSON.parse(`["${replaceAll(str, sep, '","')}"]`)
split('abc:def:ghi', ':')
// [ 'abc', 'def', 'ghi' ]
ずるいしダブルクォート対応できてないけど思いつき
403デフォルトの名無しさん
2020/08/30(日) 19:52:13.41ID:KMqOjvFr >>395 Ruby
# セパレーターの仕様が文字か文字列か分からなかったので文字列にした
def split( str, sep )
res = []
(str + sep).scan( /(.*?)#{Regexp.escape(sep)}/ ){ res << $1 }
res
end
split('abc:def:ghi', ':') #=> ["abc", "def", "ghi"]
# セパレーターの仕様が文字か文字列か分からなかったので文字列にした
def split( str, sep )
res = []
(str + sep).scan( /(.*?)#{Regexp.escape(sep)}/ ){ res << $1 }
res
end
split('abc:def:ghi', ':') #=> ["abc", "def", "ghi"]
404デフォルトの名無しさん
2020/08/30(日) 19:55:11.73ID:OKCM85cL >> 393 C++
https://ideone.com/ztBnmn
>> 394 C++
https://ideone.com/8YhzWh
合ってるか分からない
(とりあえずバブルソートが安定だからそれと比較した)
>> 395 C++
https://ideone.com/lmYLkx
https://ideone.com/ztBnmn
>> 394 C++
https://ideone.com/8YhzWh
合ってるか分からない
(とりあえずバブルソートが安定だからそれと比較した)
>> 395 C++
https://ideone.com/lmYLkx
405デフォルトの名無しさん
2020/08/30(日) 23:05:46.03ID:HaB2mhSL406デフォルトの名無しさん
2020/08/30(日) 23:23:11.11ID:OKCM85cL operator[]がconstexprなのはC++17以降らしいね
407デフォルトの名無しさん
2020/08/31(月) 00:36:58.36ID:Sr2UUXBk 宇宙創生から現在まで【宇宙の歴史@(過去編)】
https://www.youtube.com/watch?v=1qUrdcRkRLc
期待値が無限大な賭け(サンクトペテルブルクのパラドックス)
https://www.youtube.com/watch?v=B__gzT-rQjw
もしも生徒が全員予備校講師だったら
https://www.youtube.com/watch?v=Lk
eが超越数であることの証明
https://www.youtube.com/watch?v=_DJfeP0cmI8
【受験生へ】勉強のモチベーションをあげる3つの方法
https://www.youtube.com/watch?v=4MAPBivBEhM
線を描くだけ!万能視覚的かけ算【インド式計算】
https://www.youtube.com/watch?v=Sj6Y43D76GA
全受験生が理解するべき!偏差値とは何か
https://www.youtube.com/watch?v=Xt7VN0xCbt8
楽しいことを増やそう!科学の眼鏡をかけた1日とは【ヨビノリたくみ特別公演】
https://www.youtube.com/watch?v=u5al7kwy64k
数学の魅力とは?中田敦彦と人気教育系YouTuberヨビノリたくみ先生が初コラボ
https://www.youtube.com/watch?v=qxiAyyotAM0
https://www.youtube.com/watch?v=1qUrdcRkRLc
期待値が無限大な賭け(サンクトペテルブルクのパラドックス)
https://www.youtube.com/watch?v=B__gzT-rQjw
もしも生徒が全員予備校講師だったら
https://www.youtube.com/watch?v=Lk
eが超越数であることの証明
https://www.youtube.com/watch?v=_DJfeP0cmI8
【受験生へ】勉強のモチベーションをあげる3つの方法
https://www.youtube.com/watch?v=4MAPBivBEhM
線を描くだけ!万能視覚的かけ算【インド式計算】
https://www.youtube.com/watch?v=Sj6Y43D76GA
全受験生が理解するべき!偏差値とは何か
https://www.youtube.com/watch?v=Xt7VN0xCbt8
楽しいことを増やそう!科学の眼鏡をかけた1日とは【ヨビノリたくみ特別公演】
https://www.youtube.com/watch?v=u5al7kwy64k
数学の魅力とは?中田敦彦と人気教育系YouTuberヨビノリたくみ先生が初コラボ
https://www.youtube.com/watch?v=qxiAyyotAM0
408デフォルトの名無しさん
2020/08/31(月) 08:12:50.04ID:o+KAewBM409デフォルトの名無しさん
2020/08/31(月) 09:50:22.54ID:3l02ZOhc >>396
何やってんのか分かんねぇ…
何やってんのか分かんねぇ…
410デフォルトの名無しさん
2020/08/31(月) 12:53:04.32ID:DeTlQxvW f#(@:m:@ )顔文字にしか見えん
411デフォルトの名無しさん
2020/08/31(月) 13:15:43.55ID:0jcGZySh \(._. \)
412蟻人間 ◆T6xkBnTXz7B0
2020/08/31(月) 13:37:09.03ID:tSOV4fJk お題: 覆面算パズルをランダムに自動生成せよ。
単語は大文字のアルファベットのみとする。
各単語は自然数を表している。
単語の各文字は数字を表している。
各単語の先頭はゼロではない。
同じ文字は同じ数字が入る。文字が違えば、数字も違う。
各単語は、3文字以上6文字以下とする。
答えは一つでなければいけない。
今回は、簡単な足し算のみとする。
例)
SEND+MORE=MONEY.
BASE+BALL=GAMES.
単語リスト:https://gist.github.com/deekayen/4148741
単語は大文字のアルファベットのみとする。
各単語は自然数を表している。
単語の各文字は数字を表している。
各単語の先頭はゼロではない。
同じ文字は同じ数字が入る。文字が違えば、数字も違う。
各単語は、3文字以上6文字以下とする。
答えは一つでなければいけない。
今回は、簡単な足し算のみとする。
例)
SEND+MORE=MONEY.
BASE+BALL=GAMES.
単語リスト:https://gist.github.com/deekayen/4148741
413蟻人間 ◆T6xkBnTXz7B0
2020/08/31(月) 13:41:36.35ID:tSOV4fJk お題:覆面算パズルを解くプログラム。
例)
SEND+MORE=MONEY
→9567+1085=10652.
BASE+BALL=GAMES
→7483+7455=14938.
例)
SEND+MORE=MONEY
→9567+1085=10652.
BASE+BALL=GAMES
→7483+7455=14938.
414デフォルトの名無しさん
2020/08/31(月) 14:49:18.65ID:7ZWcUsrI >>393
Elixir
# 再帰で、蓄積リスト・ary に、連結していく
defmodule MyList do
def add( num ), do: _add( num, [ ] )
defp _add( 0, ary ) do
ary
end
defp _add( num, ary ) when num > 0 do
_add( num - 1, List.duplicate( num, num ) ++ ary )
end
end
ary = MyList.add 3
IO.inspect ary #=> [1, 2, 2, 3, 3, 3]
Elixir
# 再帰で、蓄積リスト・ary に、連結していく
defmodule MyList do
def add( num ), do: _add( num, [ ] )
defp _add( 0, ary ) do
ary
end
defp _add( num, ary ) when num > 0 do
_add( num - 1, List.duplicate( num, num ) ++ ary )
end
end
ary = MyList.add 3
IO.inspect ary #=> [1, 2, 2, 3, 3, 3]
416蟻人間 ◆T6xkBnTXz7B0
2020/08/31(月) 16:12:08.02ID:lWn/zYPT ヒント: 各文字を変数とした連立方程式。
417蟻人間 ◆T6xkBnTXz7B0
2020/08/31(月) 16:24:48.19ID:lWn/zYPT 文字の数が少ないんだから、ブルートフォースでも解けるか。。。
418デフォルトの名無しさん
2020/08/31(月) 18:26:24.52ID:qQr3mFGF 間違えてなければO(10!)のはずだから充分多いのでは
419デフォルトの名無しさん
2020/08/31(月) 18:26:56.47ID:qQr3mFGF ごめん10!はめちゃくちゃ小さかった
420デフォルトの名無しさん
2020/08/31(月) 18:43:24.02ID:hr5jjNmH この手の問題は総当りしたほうが速いことすらある
421デフォルトの名無しさん
2020/08/31(月) 19:18:49.49ID:J48xi6fS しかもとっさにcombination用意できなければ(vimなどで)for文10個書いたほうが早いまである
422デフォルトの名無しさん
2020/08/31(月) 19:23:55.64ID:fdwPQ6pV 覆面算を制約論理プログラム iZ-Cを使って解きます。の記事があります。
https://sunasunax.hatenablog.com
https://sunasunax.hatenablog.com
423デフォルトの名無しさん
2020/08/31(月) 21:02:28.99ID:Sr2UUXBk デキる人ほどフリーランス化する?★働き方改革
https://www.youtube.com/watch?v=ALflcwYOJtQ
年収890万円以下は社会のお荷物★騙される労働者
https://www.youtube.com/watch?v=CAp-ZrJpF54
騙されたくなかったら勉強しろ★他人のルールは損をする
https://www.youtube.com/watch?v=s176O6qKuPw
底辺の99%は一生底辺★10年後が見えない同僚たち
https://www.youtube.com/watch?v=4Mfiwn2sPD8
稼ぎたければ働くな★4千万円ぽっちも稼げないのはなぜ?
https://www.youtube.com/watch?v=Fi7bILN4wes
サラリーマン思考では儲からない理由
https://www.youtube.com/watch?v=iW6oAo0q0ZI
で、無職は稼いでるの?★YouTube収益はアホにも分かりやすい
https://www.youtube.com/watch?v=md0WPAsfarY
「で、年収は?」と聞くバカとは合わない社長業
https://www.youtube.com/watch?v=nEELEUhBLDk
https://www.youtube.com/watch?v=ALflcwYOJtQ
年収890万円以下は社会のお荷物★騙される労働者
https://www.youtube.com/watch?v=CAp-ZrJpF54
騙されたくなかったら勉強しろ★他人のルールは損をする
https://www.youtube.com/watch?v=s176O6qKuPw
底辺の99%は一生底辺★10年後が見えない同僚たち
https://www.youtube.com/watch?v=4Mfiwn2sPD8
稼ぎたければ働くな★4千万円ぽっちも稼げないのはなぜ?
https://www.youtube.com/watch?v=Fi7bILN4wes
サラリーマン思考では儲からない理由
https://www.youtube.com/watch?v=iW6oAo0q0ZI
で、無職は稼いでるの?★YouTube収益はアホにも分かりやすい
https://www.youtube.com/watch?v=md0WPAsfarY
「で、年収は?」と聞くバカとは合わない社長業
https://www.youtube.com/watch?v=nEELEUhBLDk
424253
2020/08/31(月) 21:47:00.41ID:Mm8nXRhv >>393 Perl5
use feature qw{signatures};
sub f($n) {
$n ? (f($n-1), ($n) x $n) : ()
}
@a = f(3);
print "@a\n";
実行結果
~ $ perl 18_393_inc_ary.pl
The signatures feature is experimental at 18_393_inc_ary.pl line 2.
1 2 2 3 3 3
use feature qw{signatures};
sub f($n) {
$n ? (f($n-1), ($n) x $n) : ()
}
@a = f(3);
print "@a\n";
実行結果
~ $ perl 18_393_inc_ary.pl
The signatures feature is experimental at 18_393_inc_ary.pl line 2.
1 2 2 3 3 3
425253
2020/08/31(月) 21:54:06.64ID:pmRcaHIk >>393 Perl5、単にmapで値個数要素のリストに展開
$n = 3;
@a = map{($_) x $_} 1..$n;
print "@a\n";
j実行結果
~ $ perl 18_393_inc_ary_map.pl
1 2 2 3 3 3
$n = 3;
@a = map{($_) x $_} 1..$n;
print "@a\n";
j実行結果
~ $ perl 18_393_inc_ary_map.pl
1 2 2 3 3 3
426デフォルトの名無しさん
2020/08/31(月) 23:33:38.47ID:0jcGZySh427デフォルトの名無しさん
2020/09/01(火) 00:01:02.40ID:1mY8ta+4428デフォルトの名無しさん
2020/09/01(火) 00:18:24.24ID:vTrOzHSW429デフォルトの名無しさん
2020/09/01(火) 14:16:37.60ID:3qKfeSqF 全く知らない構文の言語でカンでいじっても構文エラーも止められずに
動かない機械ガチャガチャしてるだけ感すごいよな
動かない機械ガチャガチャしてるだけ感すごいよな
430蟻人間 ◆T6xkBnTXz7B0
2020/09/01(火) 18:47:08.83ID:4meeAMMW お題: テキストファイル「input.txt」の中の" dot "を"."に置換し、さらに" at "を"@"に置換したときに、RFCに従ったメールアドレスになる部分文字列を抽出し、そのメールアドレスのリストを改行区切りで出力せよ。
431デフォルトの名無しさん
2020/09/01(火) 18:47:54.44ID:Y09tsFBY432デフォルトの名無しさん
2020/09/01(火) 18:48:39.88ID:PZXbhIm5 >>430
テスト用のinput.txtちょーだい!
テスト用のinput.txtちょーだい!
433蟻人間 ◆T6xkBnTXz7B0
2020/09/01(火) 18:54:57.84ID:4meeAMMW >>432
「これはテキトーなテキストデータである。
例えば
user at example dot com
とか
user at example dot co dot jp
とか
katayama dot hirofumi dot mz at example dot net
とかあるでしょ。
詐欺メールに引っ掛からないためには、URLのドメインを確認することが一番。
google.com
google.co.jp
まあ、いろいろあるっしょ。」
「これはテキトーなテキストデータである。
例えば
user at example dot com
とか
user at example dot co dot jp
とか
katayama dot hirofumi dot mz at example dot net
とかあるでしょ。
詐欺メールに引っ掛からないためには、URLのドメインを確認することが一番。
google.com
google.co.jp
まあ、いろいろあるっしょ。」
434デフォルトの名無しさん
2020/09/01(火) 18:57:45.00ID:PZXbhIm5 >>433
あざーす!
あざーす!
435デフォルトの名無しさん
2020/09/01(火) 19:10:04.73ID:y/wdSyKD >>430
Mail::RFC822::Address: regexp-based address validatio
http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html
Mail::RFC822::Address: regexp-based address validatio
http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html
436蟻人間 ◆T6xkBnTXz7B0
2020/09/01(火) 20:18:24.49ID:4meeAMMW ヒント: 文字列置換と正規表現
437デフォルトの名無しさん
2020/09/01(火) 22:43:25.27ID:PZXbhIm5438デフォルトの名無しさん
2020/09/01(火) 22:55:31.34ID:PZXbhIm5439253
2020/09/02(水) 00:54:35.54ID:GpxOT2yi >>393 Python3
(n, a) = (3, [])
for i in range(1, n+1):
a.extend([i] * i)
print(a)
実行結果
~ $ python 18_393_incary.py
[1, 2, 2, 3, 3, 3]
(n, a) = (3, [])
for i in range(1, n+1):
a.extend([i] * i)
print(a)
実行結果
~ $ python 18_393_incary.py
[1, 2, 2, 3, 3, 3]
440デフォルトの名無しさん
2020/09/02(水) 23:08:34.85ID:KTyhBksd441デフォルトの名無しさん
2020/09/02(水) 23:31:10.43ID:KTyhBksd442デフォルトの名無しさん
2020/09/03(木) 16:10:13.26ID:dE9fk8zR >>395 Ruby
def f(s,d)
eval("['"+s.gsub(d,"','")+"']")
end
p f("1 2 3 4"," ")
実行結果
["1", "2", "3", "4"]
def f(s,d)
eval("['"+s.gsub(d,"','")+"']")
end
p f("1 2 3 4"," ")
実行結果
["1", "2", "3", "4"]
443蟻人間 ◆T6xkBnTXz7B0
2020/09/03(木) 19:41:51.27ID:0EoV326K お題: バイナリファイルを読み込んで各バイトの各ビットについて、上位ビットから順に、ゼロをシフトJISの半角カナの「タ」に、いち(1)を同じくの「ヒ」に変換する変換器。
445デフォルトの名無しさん
2020/09/03(木) 21:11:58.06ID:97aiR77+ >>443 Ruby
Fpath = 'test.bin'
File.open( Fpath, 'wb' ){|fh| fh.write "Hello word\n" }
Tbl10 = "\xC0\xCB".force_encoding(Encoding::BINARY)
tb = (0..255).to_a.map{|x| ('%08b' % x).tr( '10', Tbl10 ) }
buff = File.open( Fpath, 'rb' ).each_byte.map{|x| tb[x] }
puts buff.join().encode( Encoding::UTF_8, Encoding::CP932 )
print buff.map{|x| x.tr( Tbl10, '10' ).to_i(2).chr }.join
#=> ヒタヒヒタヒヒヒヒタタヒヒタヒタヒタタヒタタヒヒヒタタヒタタヒヒヒタタヒタタタタヒヒタヒヒヒヒヒヒタタタヒタタタヒタタヒタタタタヒタタタヒヒタヒヒタタヒヒタヒヒヒヒヒヒタヒタヒ
#=> Hello word
Fpath = 'test.bin'
File.open( Fpath, 'wb' ){|fh| fh.write "Hello word\n" }
Tbl10 = "\xC0\xCB".force_encoding(Encoding::BINARY)
tb = (0..255).to_a.map{|x| ('%08b' % x).tr( '10', Tbl10 ) }
buff = File.open( Fpath, 'rb' ).each_byte.map{|x| tb[x] }
puts buff.join().encode( Encoding::UTF_8, Encoding::CP932 )
print buff.map{|x| x.tr( Tbl10, '10' ).to_i(2).chr }.join
#=> ヒタヒヒタヒヒヒヒタタヒヒタヒタヒタタヒタタヒヒヒタタヒタタヒヒヒタタヒタタタタヒヒタヒヒヒヒヒヒタタタヒタタタヒタタヒタタタタヒタタタヒヒタヒヒタタヒヒタヒヒヒヒヒヒタヒタヒ
#=> Hello word
446デフォルトの名無しさん
2020/09/03(木) 23:01:51.02ID:ZdR77D/Z >>442
f("'", ?,)
# =>SyntaxError: (eval):1: unterminated string meets end of file
[''']
^
(eval):1: syntax error, unexpected end-of-input, expecting ']'
f("'", ?,)
# =>SyntaxError: (eval):1: unterminated string meets end of file
[''']
^
(eval):1: syntax error, unexpected end-of-input, expecting ']'
447253
2020/09/04(金) 00:01:38.15ID:7q8p4uRD >>443 Perl5
print map{qw(ヒ タ)[$_]} map{split '', sprintf '%08b', ord} split'','Hello word';
実行結果
~ $ perl 18_443_タヒ.pl
ヒタヒヒタヒヒヒヒタタヒヒタヒタヒタタヒタタヒヒヒタタヒタタヒヒヒタタヒタタタタヒヒタヒヒヒヒヒヒタタタヒタタタヒタタヒタタタタヒタタタヒヒタヒヒタタヒヒタヒヒ
print map{qw(ヒ タ)[$_]} map{split '', sprintf '%08b', ord} split'','Hello word';
実行結果
~ $ perl 18_443_タヒ.pl
ヒタヒヒタヒヒヒヒタタヒヒタヒタヒタタヒタタヒヒヒタタヒタタヒヒヒタタヒタタタタヒヒタヒヒヒヒヒヒタタタヒタタタヒタタヒタタタタヒタタタヒヒタヒヒタタヒヒタヒヒ
448デフォルトの名無しさん
2020/09/04(金) 00:03:39.28ID:0wfgbo8M450デフォルトの名無しさん
2020/09/04(金) 14:52:11.79ID:Wl7qFIBb >>443
Elixir。CP932 が無いので、途中までしか出来ません!
# 8桁・2進数・0埋め
_ = 'abc'
|> Enum.map( fn char -> :io.format( "~8.2.0B", [ char ] ) end )
# 01100001_01100010_01100011
Elixir。CP932 が無いので、途中までしか出来ません!
# 8桁・2進数・0埋め
_ = 'abc'
|> Enum.map( fn char -> :io.format( "~8.2.0B", [ char ] ) end )
# 01100001_01100010_01100011
451デフォルトの名無しさん
2020/09/04(金) 23:27:10.30ID:1jfeDIRi >>443
POSIX sh
変換 (https://paiza.io/projects/Yk6wcUtik7BZZ0AHspdZFw?language=bash)
for _b in $(od -v -A n -t d1); do
printf '%b' \
"\\$(( $_b & 128 ? 300 : 313 ))" \
"\\$(( $_b & 64 ? 300 : 313 ))" \
"\\$(( $_b & 32 ? 300 : 313 ))" \
"\\$(( $_b & 16 ? 300 : 313 ))" \
"\\$(( $_b & 8 ? 300 : 313 ))" \
"\\$(( $_b & 4 ? 300 : 313 ))" \
"\\$(( $_b & 2 ? 300 : 313 ))" \
"\\$(( $_b & 1 ? 300 : 313 ))"
done
逆変換 (https://paiza.io/projects/AN6vfPgtdJODnYL9jW8MDQ?language=bash)
od -v -A n -t o1 |
fold -b -w 32 |
while read _b8 _b7 _b6 _b5 _b4 _b3 _b2 _b1; do
printf '%b' "\\$((
($_b8 == 300 ? 200 : 0) +
($_b7 == 300 ? 100 : 0) +
($_b6 == 300 ? 40 : 0) +
($_b5 == 300 ? 20 : 0) +
($_b4 == 300 ? 10 : 0) +
($_b3 == 300 ? 4 : 0) +
($_b2 == 300 ? 2 : 0) +
($_b1 == 300 ? 1 : 0) ))"
done
POSIX sh
変換 (https://paiza.io/projects/Yk6wcUtik7BZZ0AHspdZFw?language=bash)
for _b in $(od -v -A n -t d1); do
printf '%b' \
"\\$(( $_b & 128 ? 300 : 313 ))" \
"\\$(( $_b & 64 ? 300 : 313 ))" \
"\\$(( $_b & 32 ? 300 : 313 ))" \
"\\$(( $_b & 16 ? 300 : 313 ))" \
"\\$(( $_b & 8 ? 300 : 313 ))" \
"\\$(( $_b & 4 ? 300 : 313 ))" \
"\\$(( $_b & 2 ? 300 : 313 ))" \
"\\$(( $_b & 1 ? 300 : 313 ))"
done
逆変換 (https://paiza.io/projects/AN6vfPgtdJODnYL9jW8MDQ?language=bash)
od -v -A n -t o1 |
fold -b -w 32 |
while read _b8 _b7 _b6 _b5 _b4 _b3 _b2 _b1; do
printf '%b' "\\$((
($_b8 == 300 ? 200 : 0) +
($_b7 == 300 ? 100 : 0) +
($_b6 == 300 ? 40 : 0) +
($_b5 == 300 ? 20 : 0) +
($_b4 == 300 ? 10 : 0) +
($_b3 == 300 ? 4 : 0) +
($_b2 == 300 ? 2 : 0) +
($_b1 == 300 ? 1 : 0) ))"
done
452253
2020/09/04(金) 23:39:14.02ID:tinAGSqp >>443>>444 Perl5、バイナリコード(ln)を含むデータをファイルから読み込み、変換》逆変換
undef $/; # slurp
$s = <>;
@b = map{qw(ヒ タ)[$_]} split'', unpack 'B*', $s;
print @b, "\n";
%h = qw(ヒ 0 タ 1);
$t = pack 'B*', join '', map{$h{$_}} @b;
print $t;
実行結果
$ od -xc Hello_world_ln.txt
0000000 6548 6c6c 206f 6f77 6c72 0a64
H e l l o w o r l d \n
$ cat Hello_world_ln.txt
Hello world
$ perl 18_443_444_ヒタ.pl < Hello_world_ln.txt
ヒタヒヒタヒヒヒヒタタヒヒタヒタヒタタヒタタヒヒヒタタヒタタヒヒヒタタヒタタタタヒヒタヒヒヒヒヒヒタタタヒタタタヒタタヒタタタタヒタタタヒヒタヒヒタタヒタタヒヒヒタタヒヒタヒヒヒヒヒヒタヒタヒ
Hello world
undef $/; # slurp
$s = <>;
@b = map{qw(ヒ タ)[$_]} split'', unpack 'B*', $s;
print @b, "\n";
%h = qw(ヒ 0 タ 1);
$t = pack 'B*', join '', map{$h{$_}} @b;
print $t;
実行結果
$ od -xc Hello_world_ln.txt
0000000 6548 6c6c 206f 6f77 6c72 0a64
H e l l o w o r l d \n
$ cat Hello_world_ln.txt
Hello world
$ perl 18_443_444_ヒタ.pl < Hello_world_ln.txt
ヒタヒヒタヒヒヒヒタタヒヒタヒタヒタタヒタタヒヒヒタタヒタタヒヒヒタタヒタタタタヒヒタヒヒヒヒヒヒタタタヒタタタヒタタヒタタタタヒタタタヒヒタヒヒタタヒタタヒヒヒタタヒヒタヒヒヒヒヒヒタヒタヒ
Hello world
453デフォルトの名無しさん
2020/09/05(土) 15:41:23.97ID:dAk5cbFF お題
UTF-8 は以下のように、先頭ニブル・4ビットで、1〜4バイト文字を判別しています。
この法則を使って、この文字列のバイト数を求めよ
あaθ💀xΩ死🄫
1バイト文字: 0000〜0111: 0〜7
多バイト文字の2バイト目以降
1000〜1011: 8〜11(8〜B)
2バイト文字: 1100〜1101: 12〜13(C〜D)
3バイト文字: 1110: 14(E)
4バイト文字: 1111: 15(F)
Unicode
https://seiai.ed.jp/sys/text/csd/cf14/c14a070.html
UTF-8 は以下のように、先頭ニブル・4ビットで、1〜4バイト文字を判別しています。
この法則を使って、この文字列のバイト数を求めよ
あaθ💀xΩ死🄫
1バイト文字: 0000〜0111: 0〜7
多バイト文字の2バイト目以降
1000〜1011: 8〜11(8〜B)
2バイト文字: 1100〜1101: 12〜13(C〜D)
3バイト文字: 1110: 14(E)
4バイト文字: 1111: 15(F)
Unicode
https://seiai.ed.jp/sys/text/csd/cf14/c14a070.html
454デフォルトの名無しさん
2020/09/05(土) 15:42:06.74ID:gCThzAly お題:
左から右へ、1から10までの番号が付いたマスが順番に隙間なく並んでいます。
今日、訪問者N人があなたに会いにやってきます。各訪問者i(1≦i≦N)は時刻TiにマスPiを訪れます。
ここで、あなたが時刻TiにマスPiに居たのならば「訪問者iは満足した」とします。
最大で何人の訪問者を満足させられるか求めてください。
制約:
最初、時刻は0とする。
あなたは最初、マス1にいる。
あなたは隣り合うマスへの移動手段しか持たない。
1マス移動した場合にも、移動せずに現在マスに留まった場合にも時間1を消費する。
Ti == Tj で Pi == Pj ならば i == j
1≦N ≦10^5
1≦Ti≦10^5
1≦Pi≦10
入力:
N
T1 P1
T2 P2
...
TN PN
出力:
(最大で何人を満足させられるか)
例1:
入力:
5
5 4
2 3
3 2
3 4
4 4
出力:
4
左から右へ、1から10までの番号が付いたマスが順番に隙間なく並んでいます。
今日、訪問者N人があなたに会いにやってきます。各訪問者i(1≦i≦N)は時刻TiにマスPiを訪れます。
ここで、あなたが時刻TiにマスPiに居たのならば「訪問者iは満足した」とします。
最大で何人の訪問者を満足させられるか求めてください。
制約:
最初、時刻は0とする。
あなたは最初、マス1にいる。
あなたは隣り合うマスへの移動手段しか持たない。
1マス移動した場合にも、移動せずに現在マスに留まった場合にも時間1を消費する。
Ti == Tj で Pi == Pj ならば i == j
1≦N ≦10^5
1≦Ti≦10^5
1≦Pi≦10
入力:
N
T1 P1
T2 P2
...
TN PN
出力:
(最大で何人を満足させられるか)
例1:
入力:
5
5 4
2 3
3 2
3 4
4 4
出力:
4
455デフォルトの名無しさん
2020/09/05(土) 15:55:10.03ID:gCThzAly 前回のお題はC++の方からしか回答を頂けなかったので、他の言語の方も考えていただけると嬉しいです
456デフォルトの名無しさん
2020/09/05(土) 17:01:13.99ID:4vfoT7Xn Tが10^5のそれぞれのマスにいたときの点数を求める(客がいた場合1、いなかったら0)
Tが10^5-1のときのマスの点数を求める(そこに客がいたなら1、いなかったら0
更にそこから次の時間に移動可能なマスの最大の点数のものを加える)
Tが1までくり返す
これで良さそうな気がするけど書くのがめんどくさい
Tが10^5-1のときのマスの点数を求める(そこに客がいたなら1、いなかったら0
更にそこから次の時間に移動可能なマスの最大の点数のものを加える)
Tが1までくり返す
これで良さそうな気がするけど書くのがめんどくさい
457デフォルトの名無しさん
2020/09/05(土) 17:35:24.39ID:s0GYNWbk458デフォルトの名無しさん
2020/09/05(土) 18:43:21.60ID:EHHCviTW 文字コードまわりの難しさにぶつかったことないから何が何やら
459デフォルトの名無しさん
2020/09/05(土) 19:37:20.09ID:PsWvtVS4 >>453 Ruby
文字数とバイト数を適当に出力
require "cgi"
require "cgi"
str = CGI.unescapeHTML( "あaθ💀xΩ死🄫" )
sbs = str.bytes
i = n = 0
while i < sbs.size
case sbs[i] >> 4
when 0..7; i += 1
when 8..11; warn "Error"
when 12,13; i += 2
when 14; i += 3
when 15
case sbs[i] & 0xF
when 0..7; i += 4
when 8..11; i += 5
when 12,13; i += 6
else warn "Error"
end
end
n += 1
end
puts "#{n} chars\n#{str.size} chars"
puts "#{str.force_encoding( Encoding::BINARY ).size} bytes\n#{sbs.size} bytes"
puts str.bytes.map{|x| '%02X' % x }.join(' ')
#=>
8 chars
8 chars
20 bytes
20 bytes
E3 81 82 61 CE B8 F0 9F 92 80 78 CE A9 E6 AD BB F0 9F 84 AB
文字数とバイト数を適当に出力
require "cgi"
require "cgi"
str = CGI.unescapeHTML( "あaθ💀xΩ死🄫" )
sbs = str.bytes
i = n = 0
while i < sbs.size
case sbs[i] >> 4
when 0..7; i += 1
when 8..11; warn "Error"
when 12,13; i += 2
when 14; i += 3
when 15
case sbs[i] & 0xF
when 0..7; i += 4
when 8..11; i += 5
when 12,13; i += 6
else warn "Error"
end
end
n += 1
end
puts "#{n} chars\n#{str.size} chars"
puts "#{str.force_encoding( Encoding::BINARY ).size} bytes\n#{sbs.size} bytes"
puts str.bytes.map{|x| '%02X' % x }.join(' ')
#=>
8 chars
8 chars
20 bytes
20 bytes
E3 81 82 61 CE B8 F0 9F 92 80 78 CE A9 E6 AD BB F0 9F 84 AB
460デフォルトの名無しさん
2020/09/05(土) 19:47:45.16ID:EHHCviTW 普通に処理系がchar配列にしたときサイズを入れてくれるからそれでわかっちゃうw
461453
2020/09/05(土) 21:41:42.84ID:dAk5cbFF 書いてある条件だけで、求めて下さい!
他の方法では、簡単すぎるので
他の方法では、簡単すぎるので
462デフォルトの名無しさん
2020/09/05(土) 21:46:41.80ID:qef5ttAc それだったら宿題スレで頼みなよ
463デフォルトの名無しさん
2020/09/05(土) 22:24:40.63ID:s0GYNWbk >>461
もう一度訊くけど,
ほんとに「バイト数」を求めたいの?
だったら
$ echo ' あaθ💀xΩ死🄫 ' | wc -c
これで一瞬だけど。
文字数なら,UTF-8を扱える言語で数えるか,
POSIX shでやるなら……面倒だな……。
https://gist.github.com/cmplstofB/0b0ce2bf052b3bb64d091fc83504fc32#file-u8dec-sh
こういうの使えばいいかな。
なお,wc -mはPOSIXでは必ずしも
UTF-8文字列を扱えるとは既定されていないので今回の目的には適さない。
もう一度訊くけど,
ほんとに「バイト数」を求めたいの?
だったら
$ echo ' あaθ💀xΩ死🄫 ' | wc -c
これで一瞬だけど。
文字数なら,UTF-8を扱える言語で数えるか,
POSIX shでやるなら……面倒だな……。
https://gist.github.com/cmplstofB/0b0ce2bf052b3bb64d091fc83504fc32#file-u8dec-sh
こういうの使えばいいかな。
なお,wc -mはPOSIXでは必ずしも
UTF-8文字列を扱えるとは既定されていないので今回の目的には適さない。
464デフォルトの名無しさん
2020/09/05(土) 22:25:44.48ID:s0GYNWbk465デフォルトの名無しさん
2020/09/05(土) 22:49:41.81ID:BjVkDMA6466253
2020/09/06(日) 00:11:00.10ID:Lo+HJN6n >>380 Perl5
($H, $W) = split' ',<DATA>; @a = map{[split/\s*/]} <DATA>;
for $h (0..$H-1) { for $w (0..$W-1) {
$c = $a[$h][$w];
$S = "$h,$w" if $c eq 'S'; $G = "$h,$w" if $c eq 'G';
if ($c ne '#') {
$e{($h-1).",$w $h,$w"}++ if $h and $a[$h-1][$w] =~ /[.SG]/;
$e{"$h,".($w-1)." $h,$w"}++ if $w and $a[$h][$w-1] =~ /[.SG]/;
}}}
use feature qw{current_sub say}; no warnings 'experimental';
sub {
my $p = @_[-1];
for my $q (map{s/ *$p *//; $_} grep{/$p/} keys %e) {
if ($q eq $G) { $h{"@{[@_, $q]}"}++ }
else { __SUB__->(@_, $q) unless grep{/$q/} @_ }
}
}->($S);
say scalar keys %h;
__DATA__
5 5
S....
##.#.
...#.
...#.
....G
実行結果
~ $ perl 18_380_maze_paths.pl
12
($H, $W) = split' ',<DATA>; @a = map{[split/\s*/]} <DATA>;
for $h (0..$H-1) { for $w (0..$W-1) {
$c = $a[$h][$w];
$S = "$h,$w" if $c eq 'S'; $G = "$h,$w" if $c eq 'G';
if ($c ne '#') {
$e{($h-1).",$w $h,$w"}++ if $h and $a[$h-1][$w] =~ /[.SG]/;
$e{"$h,".($w-1)." $h,$w"}++ if $w and $a[$h][$w-1] =~ /[.SG]/;
}}}
use feature qw{current_sub say}; no warnings 'experimental';
sub {
my $p = @_[-1];
for my $q (map{s/ *$p *//; $_} grep{/$p/} keys %e) {
if ($q eq $G) { $h{"@{[@_, $q]}"}++ }
else { __SUB__->(@_, $q) unless grep{/$q/} @_ }
}
}->($S);
say scalar keys %h;
__DATA__
5 5
S....
##.#.
...#.
...#.
....G
実行結果
~ $ perl 18_380_maze_paths.pl
12
467253
2020/09/06(日) 00:30:27.55ID:WEZ/j7UH468デフォルトの名無しさん
2020/09/06(日) 00:34:53.48ID:T9SJW9BR >>395
Kotlin
https://paiza.io/projects/N9X2CVAQj3NJ0RXPrk7i0g
区切りは文字列で指定出来るとか、大文字小文字無視とか、最大分割数を決められるだとか、色々と機能を追加してしまった。
Kotlin
https://paiza.io/projects/N9X2CVAQj3NJ0RXPrk7i0g
区切りは文字列で指定出来るとか、大文字小文字無視とか、最大分割数を決められるだとか、色々と機能を追加してしまった。
469デフォルトの名無しさん
2020/09/06(日) 03:34:19.13ID:0eLnTbkJ お題
4999の逆数を小数点 以下48桁まで求める。
4999の逆数を小数点 以下48桁まで求める。
470デフォルトの名無しさん
2020/09/06(日) 07:27:16.04ID:+WaXk/Ri471デフォルトの名無しさん
2020/09/06(日) 08:14:24.88ID:CxoRMtYI472デフォルトの名無しさん
2020/09/06(日) 09:37:57.61ID:yqdZF37w473デフォルトの名無しさん
2020/09/06(日) 10:17:30.08ID:uXWEOXeO474デフォルトの名無しさん
2020/09/06(日) 10:30:03.37ID:r+7yP+3C475デフォルトの名無しさん
2020/09/06(日) 10:58:30.52ID:5MBR0P77 1京くらいのループで解けるなら実用性はかろうじてある
競技性は無い
競技性は無い
476デフォルトの名無しさん
2020/09/06(日) 11:04:38.70ID:OF7UMaiS 最悪でも2^n組みしかなくね
477デフォルトの名無しさん
2020/09/06(日) 11:07:12.07ID:uXWEOXeO >>465 はlast_time(10^5)回のループの中でCOL(10)回ループ入れてるし、10^6では?
478デフォルトの名無しさん
2020/09/06(日) 11:29:22.40ID:r+7yP+3C >>476
いや,総当たりなら,3^(10^5)。
時刻が1--10^5までの間に,
「留まる」「右/左に移動する」の計3通りを
互いに独立に(以前の行動に影響されずに)
行うから。
書いていて思ったけど,端に居るときは
行動可能性が2通りに減るけど,
それでも2^N通りでは済まない。
いや,総当たりなら,3^(10^5)。
時刻が1--10^5までの間に,
「留まる」「右/左に移動する」の計3通りを
互いに独立に(以前の行動に影響されずに)
行うから。
書いていて思ったけど,端に居るときは
行動可能性が2通りに減るけど,
それでも2^N通りでは済まない。
480デフォルトの名無しさん
2020/09/06(日) 12:31:12.27ID:OF7UMaiS >>478
1人が満足することで1点得るとする
点数の最大値は入力されたnの数しかないからn点で
それぞれについて1点得るか得ないかの2^nしかない
あとはそれを実現できるか移動があるかどうかが焦点になる
なので全移動経路を総当りする必要性はない
1人が満足することで1点得るとする
点数の最大値は入力されたnの数しかないからn点で
それぞれについて1点得るか得ないかの2^nしかない
あとはそれを実現できるか移動があるかどうかが焦点になる
なので全移動経路を総当りする必要性はない
481デフォルトの名無しさん
2020/09/06(日) 13:12:26.24ID:GcXxHJb3 >>469 C++
#include <iostream>
int main(){
const int d = 4999;
int n = 1;
std::cout << "0b0.";
for( int i = 1; i <= 48; ++ i ){
n <<= 1;
if( n >= d ){
n -= d;
std::cout << '1';
} else {
std::cout << '0';
}
}
std::cout << std::endl;
return 0;
}
// STDOUT
0b0.000000000000110100011100000111010100101011010001
#include <iostream>
int main(){
const int d = 4999;
int n = 1;
std::cout << "0b0.";
for( int i = 1; i <= 48; ++ i ){
n <<= 1;
if( n >= d ){
n -= d;
std::cout << '1';
} else {
std::cout << '0';
}
}
std::cout << std::endl;
return 0;
}
// STDOUT
0b0.000000000000110100011100000111010100101011010001
482デフォルトの名無しさん
2020/09/06(日) 13:48:19.34ID:r+7yP+3C >>480
I see! Thanks.
I see! Thanks.
483デフォルトの名無しさん
2020/09/06(日) 15:12:48.21ID:JPL9qi8o484デフォルトの名無しさん
2020/09/06(日) 15:20:10.24ID:JPL9qi8o でその状態数の方が全経路数より圧倒的に少ないので
経路に沿ってではなくて状態について解いていく
経路に沿ってではなくて状態について解いていく
485デフォルトの名無しさん
2020/09/06(日) 16:31:54.76ID:SNogxihD486デフォルトの名無しさん
2020/09/06(日) 16:34:17.02ID:r+7yP+3C487デフォルトの名無しさん
2020/09/06(日) 16:57:26.53ID:JPL9qi8o だから遡って計算していくときは隣り合うマスの結果しか参照しないよ
488デフォルトの名無しさん
2020/09/06(日) 17:01:50.06ID:SNogxihD489デフォルトの名無しさん
2020/09/06(日) 17:02:55.61ID:JPL9qi8o >>465のコードは多分バグがある気がする
51行目と57行目を
a = score[j-1] + bit_test(timeline + i, j);
a = score[j+1] + bit_test(timeline + i, j);
こう変えて
43行目を
for(i = last_time-1; i >= 0; i--){
こうするのが正しいと思う
51行目と57行目を
a = score[j-1] + bit_test(timeline + i, j);
a = score[j+1] + bit_test(timeline + i, j);
こう変えて
43行目を
for(i = last_time-1; i >= 0; i--){
こうするのが正しいと思う
490253
2020/09/06(日) 18:02:02.21ID:EhLQImvS >>454 Perl5、人の訪問を待ち受け得るすべての場合を愚直に総当りで最大満足数を探す
$T = <DATA>;
use feature qw{signatures say}; no warnings 'experimental';
chomp $T;
push @{$p{$$_[0]}}, $$_[1] for map{[split' ']}<DATA>;
use List::Util 'max';
sub f($t, $p, $s) {
if ($t++ < $T) {
if (0 < $p and $p < 11) {
$s++ if grep/$p/, @{$p{$t}};
$s += max(f($t, $p-1, $s), f($t, $p, $s), f($t, $p+1, $s))
}
return $s
}
0
}
say f(0, 1, 0);
__DATA__
5
5 4
2 3
3 2
3 4
4 4
~ $ perl 18_454_N_vztr.pl
4
$T = <DATA>;
use feature qw{signatures say}; no warnings 'experimental';
chomp $T;
push @{$p{$$_[0]}}, $$_[1] for map{[split' ']}<DATA>;
use List::Util 'max';
sub f($t, $p, $s) {
if ($t++ < $T) {
if (0 < $p and $p < 11) {
$s++ if grep/$p/, @{$p{$t}};
$s += max(f($t, $p-1, $s), f($t, $p, $s), f($t, $p+1, $s))
}
return $s
}
0
}
say f(0, 1, 0);
__DATA__
5
5 4
2 3
3 2
3 4
4 4
~ $ perl 18_454_N_vztr.pl
4
491デフォルトの名無しさん
2020/09/06(日) 18:12:25.67ID:OF7UMaiS492デフォルトの名無しさん
2020/09/06(日) 18:13:41.84ID:65q5IvB9494253
2020/09/06(日) 19:04:52.54ID:EhLQImvS >>490 Perl5、>>489 のBug Fix、同じ所を何度も通るので漸化式かメモ化使って動的計画法で解けるようにできるかもしれない
use feature qw{signatures say}; no warnings 'experimental';
$T = <DATA>; chomp $T;
push @{$p{$$_[0]}}, $$_[1] for map{[split' ']}<DATA>;
use List::Util 'max';
sub f($t, $p) {
my $s = 0;
if ($t <= $T) {
if (0 < $p and $p < 11) {
$s++ if grep{$_ eq $p} @{$p{$t}};
$t++;
$s += max(f($t, $p-1), f($t, $p), f($t, $p+1));
}
}
$s
}
say f(0, 1);
__DATA__
11
3 2
2 3
3 4
4 4
5 4
4 7
5 7
6 7
7 7
8 7
7 10
use feature qw{signatures say}; no warnings 'experimental';
$T = <DATA>; chomp $T;
push @{$p{$$_[0]}}, $$_[1] for map{[split' ']}<DATA>;
use List::Util 'max';
sub f($t, $p) {
my $s = 0;
if ($t <= $T) {
if (0 < $p and $p < 11) {
$s++ if grep{$_ eq $p} @{$p{$t}};
$t++;
$s += max(f($t, $p-1), f($t, $p), f($t, $p+1));
}
}
$s
}
say f(0, 1);
__DATA__
11
3 2
2 3
3 4
4 4
5 4
4 7
5 7
6 7
7 7
8 7
7 10
496465
2020/09/06(日) 20:59:44.84ID:I1QXsub5 >>489
ご指摘の通りバグってたので再投稿します。
https://ideone.com/VxDLwz
やりたかったことは>>456が言っていることと全く同じです。
イメージとしてはhttps://imgur.com/j0azhSf.jpg (※お題を考えたい人は閲覧注意)
>>465のコードは大抵の場合なぜかうまくいくコードのようです。
ご指摘の通りバグってたので再投稿します。
https://ideone.com/VxDLwz
やりたかったことは>>456が言っていることと全く同じです。
イメージとしてはhttps://imgur.com/j0azhSf.jpg (※お題を考えたい人は閲覧注意)
>>465のコードは大抵の場合なぜかうまくいくコードのようです。
497253
2020/09/06(日) 21:09:12.93ID:loE/lDca >>454 Perl5、>>494 を動的計画法で解くように改良(但し再帰呼び出しを使っているので10^5など規模が大きい問題を解くなら下から上に計算してくる単純ループに書き換えた方が良い)
no warnings 'experimental';
use feature qw{signatures say};
$T = <>;
chomp $T;
push @{$p{$$_[0]}}, $$_[1] for map{[split' ']}<>;
use List::Util 'max';
sub f($t, $i) {
my $s = 0;
if (0 < $i and $i < 11) {
return $m[$t][$i] if defined $m[$t][$i];
$s++ if grep{$_ == $i} @{$p{$t}};
$s += max(f($t+1, $i-1), f($t+1, $i), f($t+1, $i+1))
if $t < $T;
$m[$t][$i] = $s;
}
$s
}
say f(0, 1);
no warnings 'experimental';
use feature qw{signatures say};
$T = <>;
chomp $T;
push @{$p{$$_[0]}}, $$_[1] for map{[split' ']}<>;
use List::Util 'max';
sub f($t, $i) {
my $s = 0;
if (0 < $i and $i < 11) {
return $m[$t][$i] if defined $m[$t][$i];
$s++ if grep{$_ == $i} @{$p{$t}};
$s += max(f($t+1, $i-1), f($t+1, $i), f($t+1, $i+1))
if $t < $T;
$m[$t][$i] = $s;
}
$s
}
say f(0, 1);
498253
2020/09/06(日) 21:11:43.16ID:loE/lDca >>497 の実行結果
~ $ cat 18_454_ex1.txt
5
5 4
2 3
3 2
3 4
4 4
~ $ cat 18_454_ex1.txt | perl 18_454_N_vztr_DP_rec.pl
4
~ $ cat 18_454_ex2.txt
11
3 2
2 3
3 4
4 4
5 4
4 7
5 7
6 7
7 7
8 7
7 10
~ $ cat 18_454_ex2.txt | perl 18_454_N_vztr_DP_rec.pl
5
~ $ cat 18_454_ex1.txt
5
5 4
2 3
3 2
3 4
4 4
~ $ cat 18_454_ex1.txt | perl 18_454_N_vztr_DP_rec.pl
4
~ $ cat 18_454_ex2.txt
11
3 2
2 3
3 4
4 4
5 4
4 7
5 7
6 7
7 7
8 7
7 10
~ $ cat 18_454_ex2.txt | perl 18_454_N_vztr_DP_rec.pl
5
499253
2020/09/07(月) 00:59:21.14ID:5qB4CD7g >>469 Perl5、小数点以下48桁で「丸め」
use bignum(p=>-48);
print 1/4999, "\n";
実行結果
$ perl 18_468_1_4999-48p.pl
0.000200040008001600320064012802560512102420484097
use bignum(p=>-48);
print 1/4999, "\n";
実行結果
$ perl 18_468_1_4999-48p.pl
0.000200040008001600320064012802560512102420484097
500453
2020/09/07(月) 18:47:15.23ID:IF51aHwX >>453
Elixir
ary = for << byte <- "あaθ💀xΩ死🄫" >> do # 1バイトずつ、ループ
<< nibble::size( 4 ), _::size( 4 ) >> = << byte >> # 先頭の4ビット
case nibble do
n when n in 0..7 -> 1
n when n in 8..11 -> 0
n when n in 12..13 -> 2
14 -> 3
15 -> 4
end
end
res = Enum.reject( ary, fn n -> n == 0 end ) # 0 を削除する
IO.inspect res
# [3, 1, 2, 4, 1, 2, 3, 4]
IO.puts( length res ) # 8文字
IO.puts( Enum.sum res ) # 20バイト
Elixir
ary = for << byte <- "あaθ💀xΩ死🄫" >> do # 1バイトずつ、ループ
<< nibble::size( 4 ), _::size( 4 ) >> = << byte >> # 先頭の4ビット
case nibble do
n when n in 0..7 -> 1
n when n in 8..11 -> 0
n when n in 12..13 -> 2
14 -> 3
15 -> 4
end
end
res = Enum.reject( ary, fn n -> n == 0 end ) # 0 を削除する
IO.inspect res
# [3, 1, 2, 4, 1, 2, 3, 4]
IO.puts( length res ) # 8文字
IO.puts( Enum.sum res ) # 20バイト
501デフォルトの名無しさん
2020/09/08(火) 22:13:29.34ID:r41CjiKh502253
2020/09/08(火) 23:15:40.17ID:TMzoRSJV >>454 go 動的計画法
package main
import ( "fmt" )
var m [][]int
func v(t int, p int) int {
if 1 <= p && p <= 10 { return m[t][p] }; return 0 }
func max3(n1 int, n2 int, n3 int) int {
n := n1; if n < n2 { n = n2 }; if n < n3 { n = n3 }; return n }
func main() {
var n, t, p, i, T int
fmt.Scan(&n)
var a [][]int = make([][]int, n)
for i=0; i<n; i++ {
fmt.Scanf("%d %d", &t, &p)
a[i] = []int{ t, p }
if t > T { T = t }
}
m = make([][]int, T+1)
for t=0; t<=T; t++ {
m[t] = make([]int, 11)
for p=1; p<=10; p++ { m[t][p] = 0 }
}
for i=0; i<n; i++ { m[a[i][0]][a[i][1]] = 1 }
for t=T-1; 0<=t; t-- {
for p=1; p<=10; p++ {
m[t][p] += max3(v(t+1, p-1), v(t+1, p), v(t+1, p+1))
}
}
fmt.Println(m[0][1])
}
package main
import ( "fmt" )
var m [][]int
func v(t int, p int) int {
if 1 <= p && p <= 10 { return m[t][p] }; return 0 }
func max3(n1 int, n2 int, n3 int) int {
n := n1; if n < n2 { n = n2 }; if n < n3 { n = n3 }; return n }
func main() {
var n, t, p, i, T int
fmt.Scan(&n)
var a [][]int = make([][]int, n)
for i=0; i<n; i++ {
fmt.Scanf("%d %d", &t, &p)
a[i] = []int{ t, p }
if t > T { T = t }
}
m = make([][]int, T+1)
for t=0; t<=T; t++ {
m[t] = make([]int, 11)
for p=1; p<=10; p++ { m[t][p] = 0 }
}
for i=0; i<n; i++ { m[a[i][0]][a[i][1]] = 1 }
for t=T-1; 0<=t; t-- {
for p=1; p<=10; p++ {
m[t][p] += max3(v(t+1, p-1), v(t+1, p), v(t+1, p+1))
}
}
fmt.Println(m[0][1])
}
503253
2020/09/08(火) 23:16:27.70ID:TMzoRSJV >>502 の実行結果
~ $ cat 18_454_ex1.txt
5
5 4
2 3
3 2
3 4
4 4
~ $ cat 18_454_ex1.txt | go run 18_454_N_vztr_DP.go
4
~ $ cat 18_454_ex2.txt
11
3 2
2 3
3 4
4 4
5 4
4 7
5 7
6 7
7 7
8 7
7 10
~ $ cat 18_454_ex2.txt | go run 18_454_N_vztr_DP.go
5
~ $ cat 18_454_ex1.txt
5
5 4
2 3
3 2
3 4
4 4
~ $ cat 18_454_ex1.txt | go run 18_454_N_vztr_DP.go
4
~ $ cat 18_454_ex2.txt
11
3 2
2 3
3 4
4 4
5 4
4 7
5 7
6 7
7 7
8 7
7 10
~ $ cat 18_454_ex2.txt | go run 18_454_N_vztr_DP.go
5
504253
2020/09/09(水) 09:03:14.92ID:GqQ7+Mc6 >>454 Python3
n = int(input())
a = [list(map(int, input().split())) for i in range(n)]
T = max([a[i][0] for i in range(n)])
m = [[0] * 11 for t in range(T+1)]
for i in range(n):
m[a[i][0]][a[i][1]] = 1
def v(t, p):
return m[t][p] if 0 < p and p < 11 else 0
for t in reversed(range(T)):
for p in range(1, 11):
m[t][p] += max(v(t+1, p-1), v(t+1, p), v(t+1, p+1))
print(m[0][1])
実行結果 (>>503 と同じテキストファイル 18_454_ex1.txt, 18_454_ex2.txt を入力に使用)
~ $ cat 18_454_ex1.txt | python 18_454_N_vztr_DP.py
4
~ $ cat 18_454_ex2.txt | python 18_454_N_vztr_DP.py
5
n = int(input())
a = [list(map(int, input().split())) for i in range(n)]
T = max([a[i][0] for i in range(n)])
m = [[0] * 11 for t in range(T+1)]
for i in range(n):
m[a[i][0]][a[i][1]] = 1
def v(t, p):
return m[t][p] if 0 < p and p < 11 else 0
for t in reversed(range(T)):
for p in range(1, 11):
m[t][p] += max(v(t+1, p-1), v(t+1, p), v(t+1, p+1))
print(m[0][1])
実行結果 (>>503 と同じテキストファイル 18_454_ex1.txt, 18_454_ex2.txt を入力に使用)
~ $ cat 18_454_ex1.txt | python 18_454_N_vztr_DP.py
4
~ $ cat 18_454_ex2.txt | python 18_454_N_vztr_DP.py
5
505253
2020/09/09(水) 09:34:15.87ID:GqQ7+Mc6 >>504
for p in range(1, 11):
m[t][p] += max(v(t+1, p-1), v(t+1, p), v(t+1, p+1))
を
for p in range(1, 11):
if t+1 < p: continue
m[t][p] += max(v(t+1, p-1), v(t+1, p), v(t+1, p+1))
とか書くと、右上三角の不要な計算を省けるが10^5などtが大きいと大勢に影響はないな…
for p in range(1, 11):
m[t][p] += max(v(t+1, p-1), v(t+1, p), v(t+1, p+1))
を
for p in range(1, 11):
if t+1 < p: continue
m[t][p] += max(v(t+1, p-1), v(t+1, p), v(t+1, p+1))
とか書くと、右上三角の不要な計算を省けるが10^5などtが大きいと大勢に影響はないな…
506デフォルトの名無しさん
2020/09/10(木) 01:27:25.37ID:8z9ZctT6507453
2020/09/10(木) 16:14:51.93ID:ypm5ktrY お題
>>453
のルールに基いて、以下の3つの10進数のバイト列を、先頭(1バイト目)からチェックしていく時、
最初にルール違反となるのは、何バイト目か
129 130
120 169
240 159 146 206 184
>>453
のルールに基いて、以下の3つの10進数のバイト列を、先頭(1バイト目)からチェックしていく時、
最初にルール違反となるのは、何バイト目か
129 130
120 169
240 159 146 206 184
508デフォルトの名無しさん
2020/09/10(木) 22:23:57.36ID:8z9ZctT6509デフォルトの名無しさん
2020/09/12(土) 21:24:36.97ID:2KEhs3KT510デフォルトの名無しさん
2020/09/13(日) 00:20:13.60ID:OR+CcCGz511デフォルトの名無しさん
2020/09/13(日) 00:35:46.34ID:42xWDo9L512蟻人間 ◆T6xkBnTXz7B0
2020/09/13(日) 22:12:25.49ID:p9JSm0uj お題: 「ジャンケンすたじあむ オンライン」というソーシャルゲームのウェブサイト、もしくはソフトウェアパッケージを制作・運営せよ。
ジャンケンをしたい人が集まって、ひたすらジャンケンをして、勝ち数を競うというソーシャルゲーム。
ジャンケン試合は2人組になり、お互いに出す手を事前に申告し、両者が申告したところでシステムが自動で勝敗を判定する。
ジャンケンをしたい人が集まって、ひたすらジャンケンをして、勝ち数を競うというソーシャルゲーム。
ジャンケン試合は2人組になり、お互いに出す手を事前に申告し、両者が申告したところでシステムが自動で勝敗を判定する。
513デフォルトの名無しさん
2020/09/13(日) 22:17:50.99ID:phcl8RYj >>512
消えろ
消えろ
514デフォルトの名無しさん
2020/09/13(日) 22:22:25.86ID:lu6eiMc4 動的計画法ってちゃんと勉強しないとなかなか思いつかないよな
515デフォルトの名無しさん
2020/09/14(月) 12:06:08.48ID:u8/qg5cq >>509
Haskell
f x = head [ d | d <- [(ceiling $ sqrt $ fromInteger x)..], mod x d == 0]
main = mapM_ print [(x,f x) | x<-[100..130]]
Haskell
f x = head [ d | d <- [(ceiling $ sqrt $ fromInteger x)..], mod x d == 0]
main = mapM_ print [(x,f x) | x<-[100..130]]
516蟻人間 ◆T6xkBnTXz7B0
2020/09/14(月) 14:12:59.44ID:/Fwk/gkb お題: 沖縄の名物「シークワーサー」のことが書かれた記事のUTF-8日本語テキストファイル「input.txt」がある。
しかし、記事の執筆に多数の編集者が関わったため、シークワーサーの表記がぶれていることが分かった(次のリンクを参照)。
https://ja.m.wikipedia.org/wiki/%E3%82%B7%E3%83%BC%E3%82%AF%E3%83%AE%E3%83%BC%E3%82%B5%E3%83%BC
表記のぶれを「シークワーサー」に表記を統一したテキストファイル「output.txt」を出力せよ。
しかし、記事の執筆に多数の編集者が関わったため、シークワーサーの表記がぶれていることが分かった(次のリンクを参照)。
https://ja.m.wikipedia.org/wiki/%E3%82%B7%E3%83%BC%E3%82%AF%E3%83%AE%E3%83%BC%E3%82%B5%E3%83%BC
表記のぶれを「シークワーサー」に表記を統一したテキストファイル「output.txt」を出力せよ。
517デフォルトの名無しさん
2020/09/14(月) 17:05:19.85ID:xV8mpaUY エンジニアが書いてるならシークワーサだな
間違いない
間違いない
518蟻人間 ◆T6xkBnTXz7B0
2020/09/14(月) 17:29:10.23ID:yesAwSRz >>516 input.txtの中身:
「シークヮーサーは、別名シイークワシャーと呼ばれ、シークヮーサーの香りがするシークヮーシャーのような柑橘系の果物である。シィークアーサーはアーサー王とは関係がないと思われる。」
「シークヮーサーは、別名シイークワシャーと呼ばれ、シークヮーサーの香りがするシークヮーシャーのような柑橘系の果物である。シィークアーサーはアーサー王とは関係がないと思われる。」
519デフォルトの名無しさん
2020/09/14(月) 18:00:53.92ID:wBiJ2Dx0 "/シ(?:イ?ー|ィー?)ク[アワァヮ]ー?(?:サ|シャ)ー?/シークヮーサー/g"
520蟻人間 ◆T6xkBnTXz7B0
2020/09/14(月) 20:32:57.79ID:/Fwk/gkb お題: お使いのプログラム言語で、COBOLに負けない最強の通貨型を設計せよ。
任意の桁数の10進整数を扱えること。
任意の有効桁数の10進小数を扱えること(10進浮動小数点数)。
加減乗除、剰余、任意桁での切り捨て・切り上げ・四捨五入が可能。
10進数表記で入出力できること。
比較的高速に演算できること。
任意の桁数の10進整数を扱えること。
任意の有効桁数の10進小数を扱えること(10進浮動小数点数)。
加減乗除、剰余、任意桁での切り捨て・切り上げ・四捨五入が可能。
10進数表記で入出力できること。
比較的高速に演算できること。
521蟻人間 ◆T6xkBnTXz7B0
2020/09/14(月) 20:55:28.62ID:/Fwk/gkb 1÷3をどう扱うかという問題があるようだ。
522デフォルトの名無しさん
2020/09/14(月) 21:04:18.95ID:I0h6BMX6 割り算するときに桁数していするだけっしょ
523デフォルトの名無しさん
2020/09/14(月) 21:07:19.27ID:I0h6BMX6 蟻人間さんにお題:銀行丸めを整数型のみを使用して実装してください
524デフォルトの名無しさん
2020/09/14(月) 21:08:24.84ID:SHGAz9ig >>517
草
草
525デフォルトの名無しさん
2020/09/14(月) 21:24:52.09ID:6FD493+N 昔から思っているんだけど、分数で持っていて最後に一回だけ割り算するんじゃなんでいけないのかな?
526デフォルトの名無しさん
2020/09/14(月) 21:26:17.95ID:6FD493+N 昔から思っているんだけど、分数で持っていて最後に一回だけ割り算するんじゃなんでいけないのかな?
527デフォルトの名無しさん
2020/09/14(月) 21:49:38.28ID:SHGAz9ig 分子や分母に分数が入ってきた場合
精度の面で面倒なことになるぞ
精度の面で面倒なことになるぞ
528蟻人間 ◆T6xkBnTXz7B0
2020/09/14(月) 23:12:41.48ID:yesAwSRz529デフォルトの名無しさん
2020/09/14(月) 23:41:27.65ID:5nyvo7WN >>528
一生ここまでにしろ
一生ここまでにしろ
530デフォルトの名無しさん
2020/09/15(火) 00:21:13.43ID:2J2Mo0F/531蟻人間 ◆T6xkBnTXz7B0
2020/09/15(火) 02:31:45.89ID:39uvi0pE 現実問題では、long double型で十分な精度が出るから、独自の浮動小数点数は必要なさそう。
残りは四捨五入とか銀行丸めなどの端数処理。
残りは四捨五入とか銀行丸めなどの端数処理。
532デフォルトの名無しさん
2020/09/15(火) 09:10:08.88ID:gc4PCUOV 工エエェェ(´д`)ェェエエ工
533デフォルトの名無しさん
2020/09/15(火) 14:07:27.97ID:2J2Mo0F/ bc コマンド使えば良い。
他の言語から使いたい場合はライブラリをリンクするか、またはこっそり裏で fork(), exec() してパイプで繋いで計算させるw
他の言語から使いたい場合はライブラリをリンクするか、またはこっそり裏で fork(), exec() してパイプで繋いで計算させるw
534蟻人間 ◆T6xkBnTXz7B0
2020/09/15(火) 21:40:23.58ID:9dtbuAF3535デフォルトの名無しさん
2020/09/15(火) 21:59:54.94ID:ky+PawN1 >>534
誰も待ってないから一生滞ってろ
誰も待ってないから一生滞ってろ
538デフォルトの名無しさん
2020/09/15(火) 22:56:56.50ID:ky+PawN1 ここはお前の日記帳じゃねぇっての
スレチはお前
スレチはお前
539デフォルトの名無しさん
2020/09/16(水) 10:06:16.52ID:eJDvfDFO ぶぶ漬けどうぞと言われて、美味しくいただいてさらに食レポまで始めてるような状態かな
540デフォルトの名無しさん
2020/09/16(水) 21:28:53.90ID:XXyygoNj 嫌味なことするなよ
541デフォルトの名無しさん
2020/09/17(木) 00:07:22.39ID:jOQPl4C7 京都のおっかさんも口あんぐりやで
542デフォルトの名無しさん
2020/09/17(木) 01:09:05.65ID:FJaokp+J543デフォルトの名無しさん
2020/09/17(木) 07:37:06.63ID:Lu9ZyyRf お題: (複数行のバックグラウンド、座標テキスト、座標)から合成テキストを返す関数を作れ
座標テキストとバックグラウンドは同じサイズ(とりあえず横4縦3とする)
background
┏┓┏┓
┃┗┛┃
┗━━┛
座標テキスト
ab23
9014
8765
座標が
0なら
┏┓┏┓
┃*┛┃
┗━━┛
6なら
┏┓┏┓
┃┗┛┃
┗━*┛
11なら
┏*┏┓
┃┗┛┃
┗━━┛
あまり綺麗な実装が出来なかったから問題にした https://repl.it/@vip0/analogclock#index.js
座標テキストとバックグラウンドは同じサイズ(とりあえず横4縦3とする)
background
┏┓┏┓
┃┗┛┃
┗━━┛
座標テキスト
ab23
9014
8765
座標が
0なら
┏┓┏┓
┃*┛┃
┗━━┛
6なら
┏┓┏┓
┃┗┛┃
┗━*┛
11なら
┏*┏┓
┃┗┛┃
┗━━┛
あまり綺麗な実装が出来なかったから問題にした https://repl.it/@vip0/analogclock#index.js
544デフォルトの名無しさん
2020/09/17(木) 08:03:03.74ID:dVFtUKnH >>543 Ruby
def analogClockStr( h, bg, positions )
(clockStr = bg.dup)[ positions.index( h.to_s(16) ) ] = '*'
clockStr
end
background = '
┏┓┏┓
┃┗┛┃
┗━━┛
'.strip.freeze
positions = '
ab23
9014
8765
'.strip.freeze
puts analogClockStr( 0, background, positions )
puts analogClockStr( 6, background, positions )
puts analogClockStr( 11, background, positions )
def analogClockStr( h, bg, positions )
(clockStr = bg.dup)[ positions.index( h.to_s(16) ) ] = '*'
clockStr
end
background = '
┏┓┏┓
┃┗┛┃
┗━━┛
'.strip.freeze
positions = '
ab23
9014
8765
'.strip.freeze
puts analogClockStr( 0, background, positions )
puts analogClockStr( 6, background, positions )
puts analogClockStr( 11, background, positions )
545デフォルトの名無しさん
2020/09/17(木) 08:08:23.20ID:Lu9ZyyRf げっ確かに行ごとにreplace必要ないじゃん
何やってんだ俺
ありがとう
何やってんだ俺
ありがとう
546デフォルトの名無しさん
2020/09/17(木) 13:17:16.17ID:GTUBgTcD >>543
問題の意味がわからない。
問題の意味がわからない。
547デフォルトの名無しさん
2020/09/17(木) 13:30:29.78ID:/h1W7gqa >>543
くだらない質問スレか初心者質問スレ行け
くだらない質問スレか初心者質問スレ行け
548デフォルトの名無しさん
2020/09/17(木) 13:34:08.96ID:Lu9ZyyRf ほんとにどの問題よりもクソみたいな問題だと思っています
本当にすいませんでした
本当にすいませんでした
549デフォルトの名無しさん
2020/09/17(木) 13:42:30.73ID:Lu9ZyyRf ただ私は純粋にプログラミングが好きで
全く質問したかったわけじゃないのはわかってほしい
二次配列じゃないと処理できないものだと勘違いしていたのが甘いしシンプルにしすぎて問題が破綻してしまった
全く質問したかったわけじゃないのはわかってほしい
二次配列じゃないと処理できないものだと勘違いしていたのが甘いしシンプルにしすぎて問題が破綻してしまった
550デフォルトの名無しさん
2020/09/17(木) 13:48:33.25ID:Lu9ZyyRf 純粋にここにいる人たちが解法として書くコードは好きだし
たまに驚くべき角度から解を出す人もいるしマイナーなアルゴリズムも知れて尊敬してる
今回もスマートなコードが見れるんじゃないかと純粋に期待して問題にしてみたんだ
スレも今流れ遅かったし
たまに驚くべき角度から解を出す人もいるしマイナーなアルゴリズムも知れて尊敬してる
今回もスマートなコードが見れるんじゃないかと純粋に期待して問題にしてみたんだ
スレも今流れ遅かったし
551デフォルトの名無しさん
2020/09/17(木) 13:50:39.09ID:Lu9ZyyRf しかしお前らは牙を向いた
純粋に問題作成初心者の心を無碍にして
鋭い刃のような言葉を投げつけてきた
お前らは今日から敵とみなす
あばよ😎✋絶望しな
純粋に問題作成初心者の心を無碍にして
鋭い刃のような言葉を投げつけてきた
お前らは今日から敵とみなす
あばよ😎✋絶望しな
>>551
奏ちゃん「自意識過剰なんじゃないですか?」
奏ちゃん「自意識過剰なんじゃないですか?」
553デフォルトの名無しさん
2020/09/17(木) 22:33:12.99ID:H8Ldt8Jg お題:文字列の末尾の数字をインクリメントしてください
入力
IB0AAYR8ZZcUXLxKmL1ow8RxZAAUCS1j6pYOJo9n52mwITWoimM3UArCpKAGzSRZrA1vUpAerENynuJXTYuJb9HlO9NZvHdpFvCMsThVOnxhgx3T5jCfRhanH4bJJOvjoaTMdixKg4TC90zOCwyeVKJ62KAgv47P72sfPsQaH8jaG8yWnqbwtyv0OeKZa7qISm6g2MHrOlNb8RVzt36jau1hYCqKuuUBGLGuFToYptzqjkfdAoxAqqmeQO7PVcUS
出力
IB0AAYR8ZZcUXLxKmL1ow8RxZAAUCS1j6pYOJo9n52mwITWoimM3UArCpKAGzSRZrA1vUpAerENynuJXTYuJb9HlO9NZvHdpFvCMsThVOnxhgx3T5jCfRhanH4bJJOvjoaTMdixKg4TC90zOCwyeVKJ62KAgv47P72sfPsQaH8jaG8yWnqbwtyv0OeKZa7qISm6g2MHrOlNb8RVzt36jau1hYCqKuuUBGLGuFToYptzqjkfdAoxAqqmeQO8PVcUS
入力
IB0AAYR8ZZcUXLxKmL1ow8RxZAAUCS1j6pYOJo9n52mwITWoimM3UArCpKAGzSRZrA1vUpAerENynuJXTYuJb9HlO9NZvHdpFvCMsThVOnxhgx3T5jCfRhanH4bJJOvjoaTMdixKg4TC90zOCwyeVKJ62KAgv47P72sfPsQaH8jaG8yWnqbwtyv0OeKZa7qISm6g2MHrOlNb8RVzt36jau1hYCqKuuUBGLGuFToYptzqjkfdAoxAqqmeQO7PVcUS
出力
IB0AAYR8ZZcUXLxKmL1ow8RxZAAUCS1j6pYOJo9n52mwITWoimM3UArCpKAGzSRZrA1vUpAerENynuJXTYuJb9HlO9NZvHdpFvCMsThVOnxhgx3T5jCfRhanH4bJJOvjoaTMdixKg4TC90zOCwyeVKJ62KAgv47P72sfPsQaH8jaG8yWnqbwtyv0OeKZa7qISm6g2MHrOlNb8RVzt36jau1hYCqKuuUBGLGuFToYptzqjkfdAoxAqqmeQO8PVcUS
554デフォルトの名無しさん
2020/09/17(木) 22:56:25.54ID:ockp6LF+555デフォルトの名無しさん
2020/09/17(木) 23:01:20.65ID:ockp6LF+ >>553 Ruby
$><<gets.sub(/\d+(?=\D+$)/, &:succ)
# => IB0AAYR8ZZcUXLxKmL1ow8RxZAAUCS1j6pYOJo9n52mwITWoim
M3UArCpKAGzSRZrA1vUpAerENynuJXTYuJb9HlO9NZvHdpFvCMsThVOn
xhgx3T5jCfRhanH4bJJOvjoaTMdixKg4TC90zOCwyeVKJ62KAgv47P72sfP
sQaH8jaG8yWnqbwtyv0OeKZa7qISm6g2MHrOlNb8RVzt36jau1hYCqKuu
UBGLGuFToYptzqjkfdAoxAqqmeQO8PVcUS
$><<gets.sub(/\d+(?=\D+$)/, &:succ)
# => IB0AAYR8ZZcUXLxKmL1ow8RxZAAUCS1j6pYOJo9n52mwITWoim
M3UArCpKAGzSRZrA1vUpAerENynuJXTYuJb9HlO9NZvHdpFvCMsThVOn
xhgx3T5jCfRhanH4bJJOvjoaTMdixKg4TC90zOCwyeVKJ62KAgv47P72sfP
sQaH8jaG8yWnqbwtyv0OeKZa7qISm6g2MHrOlNb8RVzt36jau1hYCqKuu
UBGLGuFToYptzqjkfdAoxAqqmeQO8PVcUS
556デフォルトの名無しさん
2020/09/18(金) 01:44:05.02ID:hhldwLbP >>553
Perl
コマンドラインで以下のように入力後に標準入力から文字列を読ませると標準出力に出力される。
perl -pe 's/(\d+)(\D+)$/($1+1).$2/ge'
あるいはファイルに内容を入れておいてそのファイルを指定する。
Perl
コマンドラインで以下のように入力後に標準入力から文字列を読ませると標準出力に出力される。
perl -pe 's/(\d+)(\D+)$/($1+1).$2/ge'
あるいはファイルに内容を入れておいてそのファイルを指定する。
557デフォルトの名無しさん
2020/09/18(金) 03:22:29.90ID:Pz26zoiQ js
window.prompt().replace(/\d(?=\D+$)/,i=>i*1+1)
window.prompt().replace(/\d(?=\D+$)/,i=>i*1+1)
558デフォルトの名無しさん
2020/09/18(金) 06:23:31.29ID:QICqPxzN559デフォルトの名無しさん
2020/09/18(金) 06:53:31.48ID:5l49iFOd560デフォルトの名無しさん
2020/09/18(金) 21:10:31.47ID:JxxZTRpA561デフォルトの名無しさん
2020/09/18(金) 21:36:05.11ID:JxxZTRpA562デフォルトの名無しさん
2020/09/18(金) 21:54:28.27ID:WsEcPr9A >>553
haskell
theStr = "B0AAYR8ZZcUXLxKmL1ow8RxZAAUCS1j6pYOJo9n52mwITWoimM3UArCpKAGzSRZrA1vUpAerENynuJXTYuJb9HlO9NZvHdpFvCMsThVOnxhgx3T5jCfRhanH4bJJOvjoaTMdixKg4TC90zOCwyeVKJ62KAgv47P72sfPsQaH8jaG8yWnqbwtyv0OeKZa7qISm6g2MHrOlNb8RVzt36jau1hYCqKuuUBGLGuFToYptzqjkfdAoxAqqmeQO7PVcUS"
f x = let
(a,b) = span (\x-> (x<'0') || (x>'9')) $ reverse x
c = show $ (+1) $ read $ return $ head b
in reverse $ a++c++(tail b)
main = do
print $ f theStr
haskell
theStr = "B0AAYR8ZZcUXLxKmL1ow8RxZAAUCS1j6pYOJo9n52mwITWoimM3UArCpKAGzSRZrA1vUpAerENynuJXTYuJb9HlO9NZvHdpFvCMsThVOnxhgx3T5jCfRhanH4bJJOvjoaTMdixKg4TC90zOCwyeVKJ62KAgv47P72sfPsQaH8jaG8yWnqbwtyv0OeKZa7qISm6g2MHrOlNb8RVzt36jau1hYCqKuuUBGLGuFToYptzqjkfdAoxAqqmeQO7PVcUS"
f x = let
(a,b) = span (\x-> (x<'0') || (x>'9')) $ reverse x
c = show $ (+1) $ read $ return $ head b
in reverse $ a++c++(tail b)
main = do
print $ f theStr
563デフォルトの名無しさん
2020/09/18(金) 23:21:52.09ID:hhldwLbP >>558
そうだった。 + じゃなくて * だったな。
そうだった。 + じゃなくて * だったな。
564253
2020/09/18(金) 23:34:45.95ID:/yEGF/vF565253
2020/09/18(金) 23:36:27.35ID:/yEGF/vF いや、違うな…
因数のうちイチバン大きいものでは、ダメだわ
因数のうちイチバン大きいものでは、ダメだわ
566デフォルトの名無しさん
2020/09/19(土) 00:05:40.30ID:HLFklpM8567デフォルトの名無しさん
2020/09/19(土) 00:59:21.89ID:HX0Lirqs √n以上の最小の約数
568デフォルトの名無しさん
2020/09/19(土) 12:14:05.54ID:iLwsU5Ay 初出題
数学板の問題より
5つのサイコロの1〜6の面がそれぞれ赤白黄青緑にそれぞれ
["byrbwg", "yrgwbb", "gbrwwy", "gyrbww", "gbrybw"]
と塗り分けられている
この状態では1-6を天地の軸として2〜5の側面にはそれぞれ
["yrbyb","rgrrr","bwwby","wbwwb"]
となっている
それぞれのサイコロを適当に回転させて全ての側面にrwybgがちょうど一回ずつとなるようにしたい
そのような回転の組み合わせは何通りか
本質的に同じものを重複して数えるのを避けるために最初のサイコロの回転は
・動かさない
・1→2,2→3,3→1,4→6,5→4,6→5
・1→3,2→1,3→2,4→5,5→6,6→4
の3つのうちどれかのみを許すとする
(出力)
["yrbgbw","gbybrw","bgwryw","bygwwr","bwrygb"]
["yrbgbw","gbybrw","wywrgb","rwgwyb","bgrywb"]
["rbywgb","gyrbbw","wwgyrb","ygbrww","brwgyb"]
["rbywgb","wybrbg","wwgyrb","wgrbwy","brwgyb"]
数学板の問題より
5つのサイコロの1〜6の面がそれぞれ赤白黄青緑にそれぞれ
["byrbwg", "yrgwbb", "gbrwwy", "gyrbww", "gbrybw"]
と塗り分けられている
この状態では1-6を天地の軸として2〜5の側面にはそれぞれ
["yrbyb","rgrrr","bwwby","wbwwb"]
となっている
それぞれのサイコロを適当に回転させて全ての側面にrwybgがちょうど一回ずつとなるようにしたい
そのような回転の組み合わせは何通りか
本質的に同じものを重複して数えるのを避けるために最初のサイコロの回転は
・動かさない
・1→2,2→3,3→1,4→6,5→4,6→5
・1→3,2→1,3→2,4→5,5→6,6→4
の3つのうちどれかのみを許すとする
(出力)
["yrbgbw","gbybrw","bgwryw","bygwwr","bwrygb"]
["yrbgbw","gbybrw","wywrgb","rwgwyb","bgrywb"]
["rbywgb","gyrbbw","wwgyrb","ygbrww","brwgyb"]
["rbywgb","wybrbg","wwgyrb","wgrbwy","brwgyb"]
569デフォルトの名無しさん
2020/09/19(土) 15:12:41.86ID:BWMKzapi https://rio2016.5ch.net/test/read.cgi/math/1598637093/133-
わけわからん問題文にするなよ・・・
わけわからん問題文にするなよ・・・
570デフォルトの名無しさん
2020/09/19(土) 16:07:21.18ID:wSOXcncc 全然違って草
571デフォルトの名無しさん
2020/09/19(土) 16:29:35.90ID:HLFklpM8 >>568
君が何を言わんとしているのかが全くわからない。
君が何を言わんとしているのかが全くわからない。
572253
2020/09/19(土) 17:15:41.66ID:6KnxgpBj573デフォルトの名無しさん
2020/09/19(土) 21:37:57.70ID:HX0Lirqs574デフォルトの名無しさん
2020/09/19(土) 21:39:46.15ID:HX0Lirqs >>572
計算量減らすなら√n以下の最大の約数d求めてn/dを出力すれば計算量は減るな
計算量減らすなら√n以下の最大の約数d求めてn/dを出力すれば計算量は減るな
575デフォルトの名無しさん
2020/09/19(土) 21:40:46.29ID:wSOXcncc 減るというかそもそも計算量が同じというか
576デフォルトの名無しさん
2020/09/19(土) 21:46:21.17ID:HX0Lirqs イヤnが素数の場合に√nから上むきに探索すると計算量はnになるけど下向きなら√nになる
√n以上の約数と√n以下の約数は同数だけど整数そのものは下側には√nしかなく、上にはn-√nあるので下向きに探していった方が速い
√n以上の約数と√n以下の約数は同数だけど整数そのものは下側には√nしかなく、上にはn-√nあるので下向きに探していった方が速い
577デフォルトの名無しさん
2020/09/20(日) 00:25:54.87ID:ZGoKBb8Y ポラード・ロー法使えばもっと計算量は減る
素数判定と組み合わせればモンテカルロ法ではなくラスベガス法になるから、正当性も担保される
素数判定と組み合わせればモンテカルロ法ではなくラスベガス法になるから、正当性も担保される
578デフォルトの名無しさん
2020/09/20(日) 01:39:54.18ID:wHMtOvf4 素因数分解利用するなら素因数分解そのものが手早くできてもダメでしょ?
それを何個か使って最も√nに近いもの探すのはかなり難しいんじゃなかったっけ?
つまり素因数分解n=Πpi^eiが与えられたとして、つぎは
0≦xi≦eiを動かすときΣxi log(pi) が1/2 log(n)に最も近くなるものを決定しなければならない
コレなんか名前ついてる問題で指数オーダーのアルゴリズムしか見つかってないんじゃなかったっけ?
素因子の数はlog(n)のオーダーで増えていくから、結局exp(c log(n)) のオーダーになって、cがどれくらいに収められるか、そもそも指数オーダー必要なのかも未解決なんじゃなかったっけ?
それを何個か使って最も√nに近いもの探すのはかなり難しいんじゃなかったっけ?
つまり素因数分解n=Πpi^eiが与えられたとして、つぎは
0≦xi≦eiを動かすときΣxi log(pi) が1/2 log(n)に最も近くなるものを決定しなければならない
コレなんか名前ついてる問題で指数オーダーのアルゴリズムしか見つかってないんじゃなかったっけ?
素因子の数はlog(n)のオーダーで増えていくから、結局exp(c log(n)) のオーダーになって、cがどれくらいに収められるか、そもそも指数オーダー必要なのかも未解決なんじゃなかったっけ?
579デフォルトの名無しさん
2020/09/20(日) 06:22:49.81ID:OZ4qNDWZ >>576
素数判定はそもそも計算量少ない
素数判定はそもそも計算量少ない
580デフォルトの名無しさん
2020/09/20(日) 10:19:03.22ID:mk/D54YH >>579
√n以上の最小の約数をdとして上むき探索に必要な時間はすうがく/d-√n\、下向き探索のそれは\√n-n/d/ (/〜\と\〜/はfloorとceiling)
差は/d-√n\-\√n-n/d/ =\d+n/d-2√n/はam≧gmと\〜/の広義単調性から0以上で上むき探索は素数であるか否かに限らず常に計算量は同じかそれ以上
素数であるか予備検査しても結局上向きに探索したら計算量は同じ以上かかる
√n以上の最小の約数をdとして上むき探索に必要な時間はすうがく/d-√n\、下向き探索のそれは\√n-n/d/ (/〜\と\〜/はfloorとceiling)
差は/d-√n\-\√n-n/d/ =\d+n/d-2√n/はam≧gmと\〜/の広義単調性から0以上で上むき探索は素数であるか否かに限らず常に計算量は同じかそれ以上
素数であるか予備検査しても結局上向きに探索したら計算量は同じ以上かかる
581デフォルトの名無しさん
2020/09/20(日) 10:50:48.99ID:g28HruB5 あ、間違えた
上向き探索の探索量はd-/√n\+1=/d-√n+1\で/~\はceiling
下向き探索の探索量は\√n/-n/d+1=\√n-n/d+1/で\~/はfloor
まぁ常に上向きの方が計算量は増える
まぁもちろんnをまともに素因数分解して>>578みたいな方法で√nオーダーより真に早いのがあるなら上向きも下向きもないけど、もうそこまで行ったら研究者レベルの話でしかない気がする
上向き探索の探索量はd-/√n\+1=/d-√n+1\で/~\はceiling
下向き探索の探索量は\√n/-n/d+1=\√n-n/d+1/で\~/はfloor
まぁ常に上向きの方が計算量は増える
まぁもちろんnをまともに素因数分解して>>578みたいな方法で√nオーダーより真に早いのがあるなら上向きも下向きもないけど、もうそこまで行ったら研究者レベルの話でしかない気がする
582デフォルトの名無しさん
2020/09/20(日) 11:23:17.24ID:MLu0Cj9r >>550-551
短いこの間でダークサイドに堕ちてて草
短いこの間でダークサイドに堕ちてて草
583デフォルトの名無しさん
2020/09/20(日) 11:58:05.82ID:FaUtZa6z584デフォルトの名無しさん
2020/09/20(日) 12:47:09.77ID:MLu0Cj9r 感情豊かでかわいいw
585デフォルトの名無しさん
2020/09/20(日) 12:59:00.77ID:wHMtOvf4 気分を変えてまた数学板より
自然数nに対して格子点の集合{(a,b) | a,bは1〜nの整数}の中の相異なる4点の組みで同一円周上に並ぶものの個数を数え上げよ
n:1〜8では
[0,1,14,194,826,2491,6364,14564]
のハズ
自然数nに対して格子点の集合{(a,b) | a,bは1〜nの整数}の中の相異なる4点の組みで同一円周上に並ぶものの個数を数え上げよ
n:1〜8では
[0,1,14,194,826,2491,6364,14564]
のハズ
586デフォルトの名無しさん
2020/09/20(日) 13:05:52.02ID:wHMtOvf4587デフォルトの名無しさん
2020/09/20(日) 18:36:43.29ID:XyOg3AIQ588デフォルトの名無しさん
2020/09/20(日) 18:44:44.75ID:XyOg3AIQ589デフォルトの名無しさん
2020/09/20(日) 18:56:48.73ID:wHMtOvf4 あ、ホントだ失礼しました
590デフォルトの名無しさん
2020/09/20(日) 19:10:27.22ID:wHMtOvf4591デフォルトの名無しさん
2020/09/20(日) 22:46:33.41ID:9sb+TTLg >>585
問題がわからない。
問題がわからない。
592デフォルトの名無しさん
2020/09/21(月) 00:11:09.46ID:ZXxiMs6i >>591
n=3だと
●●◯ ◯●● ◯◯◯ ◯◯◯
●●◯ ◯●● ●●◯ ◯●●
◯◯◯ ◯◯◯ ●●◯ ◯●●
●◯● ◯◯◯ ●●◯ ◯●●
●◯● ●◯● ◯◯◯ ◯◯◯
◯◯◯ ●◯● ●●◯ ◯●●
●●◯ ◯●● ◯◯● ●◯◯
◯◯● ●◯◯ ◯◯● ●◯◯
◯◯● ●◯◯ ●●◯ ◯●●
●◯● ◯●◯
◯◯◯ ●◯●
●◯● ◯●◯
の14通り
n=3だと
●●◯ ◯●● ◯◯◯ ◯◯◯
●●◯ ◯●● ●●◯ ◯●●
◯◯◯ ◯◯◯ ●●◯ ◯●●
●◯● ◯◯◯ ●●◯ ◯●●
●◯● ●◯● ◯◯◯ ◯◯◯
◯◯◯ ●◯● ●●◯ ◯●●
●●◯ ◯●● ◯◯● ●◯◯
◯◯● ●◯◯ ◯◯● ●◯◯
◯◯● ●◯◯ ●●◯ ◯●●
●◯● ◯●◯
◯◯◯ ●◯●
●◯● ◯●◯
の14通り
593デフォルトの名無しさん
2020/09/21(月) 11:36:08.07ID:VFD1LGbi >>585のお題は、
平面上に4点を選んだとき、その4点をすべて含む円周が存在する場合としない場合がある
xy平面上に、x,yの各座標が1〜nの整数であるような、互いに異なる点を4つ選んだとき、4点すべてを含む円周が存在するものがいくつあるか?
n=1〜8についてそれぞれ数え上げよ
(註:n=1のときは異なる4点を選べないので、解は0でよい)
ってことでいいかな?
平面上に4点を選んだとき、その4点をすべて含む円周が存在する場合としない場合がある
xy平面上に、x,yの各座標が1〜nの整数であるような、互いに異なる点を4つ選んだとき、4点すべてを含む円周が存在するものがいくつあるか?
n=1〜8についてそれぞれ数え上げよ
(註:n=1のときは異なる4点を選べないので、解は0でよい)
ってことでいいかな?
594デフォルトの名無しさん
2020/09/21(月) 13:45:14.08ID:tVxoOCVr595デフォルトの名無しさん
2020/09/21(月) 14:54:29.54ID:/KyZWHiy >>594
正解だと思う
おそらくn=9までは
[0,1,14,184,762,2257,5704,13040,25996]
今作ってるのはC[n^2,4]を全数検査してるのでO(n^8)で計算量増えるので二桁以上はしんどいorz
正解だと思う
おそらくn=9までは
[0,1,14,184,762,2257,5704,13040,25996]
今作ってるのはC[n^2,4]を全数検査してるのでO(n^8)で計算量増えるので二桁以上はしんどいorz
596デフォルトの名無しさん
2020/09/22(火) 00:03:46.43ID:jIz1rAqD 誰かフォルダにパスワード駆ける方法教えてくれ
597253
2020/09/22(火) 02:15:18.79ID:jDcMk3G3 対象性を考慮する以外の計算量の削減手段はないのかねこの手の問題は
解決すべき課題は計算量の削減ばかりではないだろうけれどさ
解決すべき課題は計算量の削減ばかりではないだろうけれどさ
598デフォルトの名無しさん
2020/09/22(火) 09:28:15.64ID:yucbsR+t まぁ何に重きを置くかですな
数学板でこの手のプログラムが必要になるのは誰も答え持ってなくて、一応答えは出てるけど確認したいときとか
その時は速度より“確実に正しい”事の方が重要になる
この場合も対称性やら、明らかに無駄な可能性を排除すれば速度は上がるけど“確実に正しい”のかは怪しくなってしまう
実務でプログラム使う人もその辺のtpoは意識してるのでは?、
コード汚くても高速な奴も募集中
数学板でこの手のプログラムが必要になるのは誰も答え持ってなくて、一応答えは出てるけど確認したいときとか
その時は速度より“確実に正しい”事の方が重要になる
この場合も対称性やら、明らかに無駄な可能性を排除すれば速度は上がるけど“確実に正しい”のかは怪しくなってしまう
実務でプログラム使う人もその辺のtpoは意識してるのでは?、
コード汚くても高速な奴も募集中
599デフォルトの名無しさん
2020/09/22(火) 11:56:55.93ID:LgsCAwYw >>594に挙げられている184通りのうち、その3/4にあたる138通りが、直径が√10のものである
そのうち、円の中心が図の中央にあるものは、候補となる点が8個あるので、8C4 = 70 通りある。
図の中央から(±1,0)または(0,±1)ずれたものは、候補となる点が6個なので4×(6C4)=60通り
図の中央から(±2,0)または(0,±2)ずれたものが、候補となる点が4個なので4×(4C4)=4通り
図の中央から(±1,±1)ずれたものが、候補となる点が4個なので4×(4C4)=4通り
合わせて 70+60+4+4=138 通りと数え上げることができる
図の中央を基準にすることができるものばかりとは限らないところには注意が必要だが
総当たりよりは効率化が見込めると思われる。
そのうち、円の中心が図の中央にあるものは、候補となる点が8個あるので、8C4 = 70 通りある。
図の中央から(±1,0)または(0,±1)ずれたものは、候補となる点が6個なので4×(6C4)=60通り
図の中央から(±2,0)または(0,±2)ずれたものが、候補となる点が4個なので4×(4C4)=4通り
図の中央から(±1,±1)ずれたものが、候補となる点が4個なので4×(4C4)=4通り
合わせて 70+60+4+4=138 通りと数え上げることができる
図の中央を基準にすることができるものばかりとは限らないところには注意が必要だが
総当たりよりは効率化が見込めると思われる。
600253
2020/09/28(月) 22:51:28.57ID:mT2w1+AU >>509 Python3, >>576を参考に計算量を√nに減らした解法
import math
for n in [81, 87, 91, 13]:
s = math.sqrt(n)
f = n
for i in reversed(range(2, 1 + math.floor(s))):
q, m = divmod(n, i)
if m == 0: f = q; break
print(n, '=>', f)
実行結果
~ $ python 18_509_99_rootn.py
81 => 9
87 => 29
91 => 13
13 => 13
もっとスマートな解法を考えていると双曲線を意識した解法を意識してしまうが、
簡単には解けない数学の問題に突き当たると思う
import math
for n in [81, 87, 91, 13]:
s = math.sqrt(n)
f = n
for i in reversed(range(2, 1 + math.floor(s))):
q, m = divmod(n, i)
if m == 0: f = q; break
print(n, '=>', f)
実行結果
~ $ python 18_509_99_rootn.py
81 => 9
87 => 29
91 => 13
13 => 13
もっとスマートな解法を考えていると双曲線を意識した解法を意識してしまうが、
簡単には解けない数学の問題に突き当たると思う
602デフォルトの名無しさん
2020/09/29(火) 18:23:40.44ID:TPx3FsW2 お題: バブルソートを実装せよ
603253
2020/09/29(火) 23:24:18.49ID:219xwwXO604デフォルトの名無しさん
2020/09/30(水) 20:15:38.19ID:rtPyMlCZ 古参はここで「番兵おけやボケェ!」と言う
605デフォルトの名無しさん
2020/10/01(木) 01:25:55.75ID:cJ6xF5hb お題:
アッカーマン関数の引数が与えられるので、計算過程を1ステップずつ出力してください
入力:
2 1
出力:
A(2, 1)
A(1, A(2, 0))
A(1, A(1, 1))
A(1, A(0, A(1, 0)))
A(1, A(0, A(0, 1)))
A(1, A(0, 2))
A(1, 3)
A(0, A(1, 2))
A(0, A(0, A(1, 1)))
A(0, A(0, A(0, A(1, 0))))
A(0, A(0, A(0, A(0, 1))))
A(0, A(0, A(0, 2)))
A(0, A(0, 3))
A(0, 4)
5
アッカーマン関数の引数が与えられるので、計算過程を1ステップずつ出力してください
入力:
2 1
出力:
A(2, 1)
A(1, A(2, 0))
A(1, A(1, 1))
A(1, A(0, A(1, 0)))
A(1, A(0, A(0, 1)))
A(1, A(0, 2))
A(1, 3)
A(0, A(1, 2))
A(0, A(0, A(1, 1)))
A(0, A(0, A(0, A(1, 0))))
A(0, A(0, A(0, A(0, 1))))
A(0, A(0, A(0, 2)))
A(0, A(0, 3))
A(0, 4)
5
606デフォルトの名無しさん
2020/10/01(木) 11:20:33.49ID:iee67Noq >>605
Haskell
astr m n = "A(" ++ m ++ "," ++ n ++ ")"
ack' 0 n = (n+1, [astr (show 0) (show n), (show $ n+1)])
ack' m 0 = let
(val, ss) = ack' (m-1) 1
in (val, (astr (show m) (show 0)) : ss)
ack' m n = let
(val1, ss1) = ack' m (n-1)
(val2, ss2) = ack' (m-1) val1
ss = [astr (show $ m-1) s | s <-ss1] ++ (tail ss2)
in (val2, (astr (show m) (show n)):ss)
ack m n = map (++"\n") $ snd $ ack' m n
main = do
[x,y]<-(return.(map read).words)=<<getLine
mapM_ putStr $ ack x y
Haskell
astr m n = "A(" ++ m ++ "," ++ n ++ ")"
ack' 0 n = (n+1, [astr (show 0) (show n), (show $ n+1)])
ack' m 0 = let
(val, ss) = ack' (m-1) 1
in (val, (astr (show m) (show 0)) : ss)
ack' m n = let
(val1, ss1) = ack' m (n-1)
(val2, ss2) = ack' (m-1) val1
ss = [astr (show $ m-1) s | s <-ss1] ++ (tail ss2)
in (val2, (astr (show m) (show n)):ss)
ack m n = map (++"\n") $ snd $ ack' m n
main = do
[x,y]<-(return.(map read).words)=<<getLine
mapM_ putStr $ ack x y
607デフォルトの名無しさん
2020/10/01(木) 12:09:11.51ID:OaA9a4hN Haskellでもこんな長くなるの?
608デフォルトの名無しさん
2020/10/01(木) 12:15:24.40ID:O+PWz9pR609デフォルトの名無しさん
2020/10/01(木) 14:04:34.18ID:Am+nhG+G >>606
ちょっとチューンナップ
達人なら***とか>>>とか意味わからん演算子使ってもっとスッキリ書くんだろうけどアホほどあって使いこなせんorz
haskell
----
astr m s = "A(" ++ (show m) ++ "," ++ s ++ ")"
ack 0 n = [astr 0 $ show n, show $ n+1]
ack m 0 = (astr m $ show 0) : ack (m-1) 1
ack m n = let
ss1 = ack m (n-1)
in [astr m $ show n]
++ (map (astr (m-1)) ss1)
++ (tail $ ack (m-1) (read $ last ss1))
main = do
[x,y]<-(return.(map read).words)=<<getLine
mapM_ ((putStr).(++"\n")) $ ack x y
ちょっとチューンナップ
達人なら***とか>>>とか意味わからん演算子使ってもっとスッキリ書くんだろうけどアホほどあって使いこなせんorz
haskell
----
astr m s = "A(" ++ (show m) ++ "," ++ s ++ ")"
ack 0 n = [astr 0 $ show n, show $ n+1]
ack m 0 = (astr m $ show 0) : ack (m-1) 1
ack m n = let
ss1 = ack m (n-1)
in [astr m $ show n]
++ (map (astr (m-1)) ss1)
++ (tail $ ack (m-1) (read $ last ss1))
main = do
[x,y]<-(return.(map read).words)=<<getLine
mapM_ ((putStr).(++"\n")) $ ack x y
610蟻人間 ◆T6xkBnTXz7B0
2020/10/02(金) 19:50:35.06ID:gQLwfaGp お題: 野球のボールの動きを物理シミュレートして、ピッチャーの投げてきたボールをより遠くにかっ飛ばすバッターAIを開発せよ。
611デフォルトの名無しさん
2020/10/02(金) 20:54:50.29ID:tP403VLl カーブやシュートも再現しろよ
612253
2020/10/02(金) 21:41:56.95ID:kl4hmyt8 >>610
─┼─┐─┼─ / ,. `゙''‐、_\ | / /
│ │─┼─/| _,.イ,,.ィ' ─────‐‐‐ * ←>>蟻人間
│ |ツ │ | | | イン /´⌒`ヽ // | \
{, リ) / ./ | \
__ /}从、 リ( / / |
,. ,. -‐===‐- `つ/ ,.イ ’^ソハノリ / ∵|:・.
〃〃〃〃 //ミノ__ /´ /∴・|∵’
ヽ_I__I__I__I__I_I __ノ_/ / ヽミ、、 .∵.;|∵’:;
ー{____,,二二二ニ) ノΘ(__ ) ゙ 、∵.;|∵’,
/I I I I I I .^^^' \ !  ̄フ ゙ 、 |∴
ソ / `
ノ⌒ヽ')
/ ノ/ /
/\/ ∧/ / ',
/ / ノ./ ./ ',
ノ/ ヘ__、 ./ / ̄ ̄ ̄ヽ .',
ヘ_'_, / \ / ',
/ \/ ',
゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙ ゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙
─┼─┐─┼─ / ,. `゙''‐、_\ | / /
│ │─┼─/| _,.イ,,.ィ' ─────‐‐‐ * ←>>蟻人間
│ |ツ │ | | | イン /´⌒`ヽ // | \
{, リ) / ./ | \
__ /}从、 リ( / / |
,. ,. -‐===‐- `つ/ ,.イ ’^ソハノリ / ∵|:・.
〃〃〃〃 //ミノ__ /´ /∴・|∵’
ヽ_I__I__I__I__I_I __ノ_/ / ヽミ、、 .∵.;|∵’:;
ー{____,,二二二ニ) ノΘ(__ ) ゙ 、∵.;|∵’,
/I I I I I I .^^^' \ !  ̄フ ゙ 、 |∴
ソ / `
ノ⌒ヽ')
/ ノ/ /
/\/ ∧/ / ',
/ / ノ./ ./ ',
ノ/ ヘ__、 ./ / ̄ ̄ ̄ヽ .',
ヘ_'_, / \ / ',
/ \/ ',
゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙ ゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙
613デフォルトの名無しさん
2020/10/02(金) 21:46:15.88ID:JDxjQVnw ナイス
614デフォルトの名無しさん
2020/10/02(金) 22:04:39.76ID:jsz+6t1Q >>612
くっそワロタ
くっそワロタ
615253
2020/10/03(土) 01:10:19.52ID:io8Ij0O0 >>605 Perl5
use feature qw{signatures say}; no warnings 'experimental';
sub A($m, $n, $l, $r) {
say "${l}A($m, $n)$r";
$m ? $n
? A($m-1, A($m, $n-1, "${l}A(".($m-1).', ', ")$r"), "${l}A(".$m.', ', ")$r")
: A($m-1, 1, "${l}A(".($m-1).', ', ")$r") : $n + 1;
}
say A(2, 1, '', '');
実行結果
~ $ perl 18_605_Ackermann_func.pl
A(2, 1)
A(1, A(2, 0))
A(1, A(1, A(1, 1)))
A(1, A(1, A(0, A(1, 0))))
A(1, A(1, A(0, A(0, A(0, 1)))))
A(1, A(1, A(1, A(0, 2))))
A(2, A(1, 3))
A(2, A(0, A(1, 2)))
A(2, A(0, A(0, A(1, 1))))
A(2, A(0, A(0, A(0, A(1, 0)))))
A(2, A(0, A(0, A(0, A(0, A(0, 1))))))
A(2, A(0, A(0, A(1, A(0, 2)))))
A(2, A(0, A(1, A(0, 3))))
A(2, A(1, A(0, 4)))
5
use feature qw{signatures say}; no warnings 'experimental';
sub A($m, $n, $l, $r) {
say "${l}A($m, $n)$r";
$m ? $n
? A($m-1, A($m, $n-1, "${l}A(".($m-1).', ', ")$r"), "${l}A(".$m.', ', ")$r")
: A($m-1, 1, "${l}A(".($m-1).', ', ")$r") : $n + 1;
}
say A(2, 1, '', '');
実行結果
~ $ perl 18_605_Ackermann_func.pl
A(2, 1)
A(1, A(2, 0))
A(1, A(1, A(1, 1)))
A(1, A(1, A(0, A(1, 0))))
A(1, A(1, A(0, A(0, A(0, 1)))))
A(1, A(1, A(1, A(0, 2))))
A(2, A(1, 3))
A(2, A(0, A(1, 2)))
A(2, A(0, A(0, A(1, 1))))
A(2, A(0, A(0, A(0, A(1, 0)))))
A(2, A(0, A(0, A(0, A(0, A(0, 1))))))
A(2, A(0, A(0, A(1, A(0, 2)))))
A(2, A(0, A(1, A(0, 3))))
A(2, A(1, A(0, 4)))
5
616253
2020/10/03(土) 01:13:51.37ID:io8Ij0O0 なんかBugってる…orz
617デフォルトの名無しさん
2020/10/03(土) 12:07:42.48ID:xbar0BlH618デフォルトの名無しさん
2020/10/03(土) 12:20:08.70ID:nr2+4P+J perlの正規表現マジック恐ろしや
619デフォルトの名無しさん
2020/10/03(土) 12:37:17.41ID:MOu6VxbM620デフォルトの名無しさん
2020/10/03(土) 12:46:20.34ID:ul2MWjNf そうなのよね
入力もらって表示→ワンステップだけ展開して戻る
の繰り返しが1番楽なんだけどなぁ
入力もらって表示→ワンステップだけ展開して戻る
の繰り返しが1番楽なんだけどなぁ
621253
2020/10/03(土) 14:01:25.06ID:5WkJC33J >>605 Perl5、>>615 を修正。 >>617 あら正規表現で書けちゃうのかイナ…
use feature qw{signatures say}; no warnings 'experimental';
sub A($m, $n) {
$m ? $n
? do{ my ($m2, $n2) = ($m-1, $n-1);
push @$l, "A($m2, "; push @$r, ')';
say @$l, "A($m, $n2)", @$r; A($m2, A($m, $n2)) }
: do{ my ($m2, $n2) = ($m-1, 1);
say @$l, "A($m2, $n2)", @$r; A($m2, $n2)}
: do{ my $s = $n + 1; say @$l, $s, @$r; pop @$l; pop @$r; $s };
}
($m, $n) = (2, 1);
say "A($m, $n)";
A($m, $n);
実行結果
$ perl 18_605_Ackermann_func.pl
A(2, 1)
A(1, A(2, 0))
A(1, A(1, 1))
A(1, A(0, A(1, 0)))
A(1, A(0, A(0, 1)))
A(1, A(0, 2))
A(1, 3)
A(0, A(1, 2))
A(0, A(0, A(1, 1)))
A(0, A(0, A(0, A(1, 0))))
A(0, A(0, A(0, A(0, 1))))
A(0, A(0, A(0, 2)))
A(0, A(0, 3))
A(0, 4)
5
use feature qw{signatures say}; no warnings 'experimental';
sub A($m, $n) {
$m ? $n
? do{ my ($m2, $n2) = ($m-1, $n-1);
push @$l, "A($m2, "; push @$r, ')';
say @$l, "A($m, $n2)", @$r; A($m2, A($m, $n2)) }
: do{ my ($m2, $n2) = ($m-1, 1);
say @$l, "A($m2, $n2)", @$r; A($m2, $n2)}
: do{ my $s = $n + 1; say @$l, $s, @$r; pop @$l; pop @$r; $s };
}
($m, $n) = (2, 1);
say "A($m, $n)";
A($m, $n);
実行結果
$ perl 18_605_Ackermann_func.pl
A(2, 1)
A(1, A(2, 0))
A(1, A(1, 1))
A(1, A(0, A(1, 0)))
A(1, A(0, A(0, 1)))
A(1, A(0, 2))
A(1, 3)
A(0, A(1, 2))
A(0, A(0, A(1, 1)))
A(0, A(0, A(0, A(1, 0))))
A(0, A(0, A(0, A(0, 1))))
A(0, A(0, A(0, 2)))
A(0, A(0, 3))
A(0, 4)
5
622デフォルトの名無しさん
2020/10/03(土) 18:00:38.18ID:WWjeAKvH >>605 ocaml
https://ideone.com/dqTO60
let (>>) f g x = g (f x)
let rec a m n p =
let () = p (Printf.sprintf "A(%d, %d)" m n) in
if m = 0 then n + 1
else if n = 0 then a (m - 1) 1 p
else a (m - 1) (a m (n - 1) (Printf.sprintf "A(%d, %s)" (m - 1) >> p)) p
let () = print_int (a 2 1 print_endline)
↓
A(2, 1)
A(1, A(2, 0))
A(1, A(1, 1))
A(1, A(0, A(1, 0)))
A(1, A(0, A(0, 1)))
A(1, A(0, 2))
A(1, 3)
A(0, A(1, 2))
A(0, A(0, A(1, 1)))
A(0, A(0, A(0, A(1, 0))))
A(0, A(0, A(0, A(0, 1))))
A(0, A(0, A(0, 2)))
A(0, A(0, 3))
A(0, 4)
5
https://ideone.com/dqTO60
let (>>) f g x = g (f x)
let rec a m n p =
let () = p (Printf.sprintf "A(%d, %d)" m n) in
if m = 0 then n + 1
else if n = 0 then a (m - 1) 1 p
else a (m - 1) (a m (n - 1) (Printf.sprintf "A(%d, %s)" (m - 1) >> p)) p
let () = print_int (a 2 1 print_endline)
↓
A(2, 1)
A(1, A(2, 0))
A(1, A(1, 1))
A(1, A(0, A(1, 0)))
A(1, A(0, A(0, 1)))
A(1, A(0, 2))
A(1, 3)
A(0, A(1, 2))
A(0, A(0, A(1, 1)))
A(0, A(0, A(0, A(1, 0))))
A(0, A(0, A(0, A(0, 1))))
A(0, A(0, A(0, 2)))
A(0, A(0, 3))
A(0, 4)
5
623デフォルトの名無しさん
2020/10/07(水) 20:33:26.90ID:0TsEuxhN >>605 octave
https://ideone.com/50i12U
function c = a(m, n, p)
p(sprintf('A(%d, %d)', m, n));
if m == 0
c = n + 1;
elseif n == 0
c = a(m - 1, 1, p);
else
c = a(m - 1, a(m, n - 1, @(s) p(sprintf('A(%d, %s)', m - 1, s))), p);
end
end
disp(a(2, 1, @disp));
https://ideone.com/50i12U
function c = a(m, n, p)
p(sprintf('A(%d, %d)', m, n));
if m == 0
c = n + 1;
elseif n == 0
c = a(m - 1, 1, p);
else
c = a(m - 1, a(m, n - 1, @(s) p(sprintf('A(%d, %s)', m - 1, s))), p);
end
end
disp(a(2, 1, @disp));
624253
2020/10/08(木) 02:27:24.66ID:Gy7CYzaJ 藻前ら、なかなかやるなー
気に入った。
気に入った。
625蟻人間 ◆T6xkBnTXz7B0
2020/10/08(木) 13:59:34.65ID:N89hoMl4 お題: ax**2+b*x+c==0という形の二次方程式を解き、全ての実数解と実数解の個数を表示する。
626デフォルトの名無しさん
2020/10/08(木) 15:03:23.36ID:eK30Q5Ei 実数解はルートを含んだ形でいいのか?
あるいは小数点以下何桁まで正確に求めるのか?
あるいは小数点以下何桁まで正確に求めるのか?
628デフォルトの名無しさん
2020/10/08(木) 21:36:29.64ID:Q4ykcHSC >>624
∧_∧ / ̄ ̄ ̄ ̄ ̄
( ´∀`)< オマエモナー
( ) \_____
| | |
(__)_)
∧_∧ / ̄ ̄ ̄ ̄ ̄
( ´∀`)< オマエモナー
( ) \_____
| | |
(__)_)
629蟻人間 ◆T6xkBnTXz7B0
2020/10/09(金) 13:26:20.64ID:pUAVGuih お題:計算ができる文章テンプレートを実装し、つるかめ算を自動生成せよ。
文章テンプレートの例:
「ツルとカメが合わせて{$(ツルの数)+$(カメの数)}います。
足の合計本数が{$(ツルの数)*2+$(カメの数)*4}本です。
カメは何匹いますか。」
変数は「$(変数名)」のように表し、その具体的な値は入力として与えられる。
計算式は{ }で囲って表す。
計算式は変数や定数、加減乗除の演算子、または丸カッコを含むことができる。
入力の例:「ツルの数=3, カメの数=4」
文章テンプレートの例:
「ツルとカメが合わせて{$(ツルの数)+$(カメの数)}います。
足の合計本数が{$(ツルの数)*2+$(カメの数)*4}本です。
カメは何匹いますか。」
変数は「$(変数名)」のように表し、その具体的な値は入力として与えられる。
計算式は{ }で囲って表す。
計算式は変数や定数、加減乗除の演算子、または丸カッコを含むことができる。
入力の例:「ツルの数=3, カメの数=4」
630デフォルトの名無しさん
2020/10/09(金) 14:02:14.80ID:/NdRCF04 >>625 js
function quadraticWithCount(a, b, c) {
const inSqrt = b ** 2 - 4 * a * c
if (inSqrt < 0) return [[], 0]
const l = - b / (a * 2)
if (inSqrt === 0) return [[l], 1]
const r = Math.sqrt(inSqrt) / (a * 2)
return [[l - r, l + r], 2]
}
console.log(quadraticWithCount(3, -2, -1))
console.log(quadraticWithCount(3, 6, 3))
console.log(quadraticWithCount(1, 2, 3))
// [ [ -0.3333333333333333, 1 ], 2 ]
// [ [ -1 ], 1 ]
// [ [], 0 ]
function quadraticWithCount(a, b, c) {
const inSqrt = b ** 2 - 4 * a * c
if (inSqrt < 0) return [[], 0]
const l = - b / (a * 2)
if (inSqrt === 0) return [[l], 1]
const r = Math.sqrt(inSqrt) / (a * 2)
return [[l - r, l + r], 2]
}
console.log(quadraticWithCount(3, -2, -1))
console.log(quadraticWithCount(3, 6, 3))
console.log(quadraticWithCount(1, 2, 3))
// [ [ -0.3333333333333333, 1 ], 2 ]
// [ [ -1 ], 1 ]
// [ [], 0 ]
632デフォルトの名無しさん
2020/10/09(金) 14:14:59.57ID:/NdRCF04 >>625 js 改善
function quadratic(a, b, c) {
const rt = Math.sqrt(b ** 2 - 4 * a * c)
return [(-b + rt) / (2 * a), (-b - rt) / (2 * a)]
}
function quadraticReal(...abc) {
const ans = quadratic(...abc)
const [a1, a2] = ans
if (isNaN(a1)) return []
if (a1 === a2) return [a1]
return ans
}
const quadraticRealWithCount = (...abc) => addCount(quadraticReal(...abc))
const addCount = a => [a, a.length]
console.log(quadraticRealWithCount(3, -2, -1))
// [ [ 1, -0.3333333333333333 ], 2 ]
console.log(quadraticRealWithCount(3, 6, 3))
// [ [ -1 ], 1 ]
console.log(quadraticRealWithCount(1, 2, 3))
// [ [], 0 ]
function quadratic(a, b, c) {
const rt = Math.sqrt(b ** 2 - 4 * a * c)
return [(-b + rt) / (2 * a), (-b - rt) / (2 * a)]
}
function quadraticReal(...abc) {
const ans = quadratic(...abc)
const [a1, a2] = ans
if (isNaN(a1)) return []
if (a1 === a2) return [a1]
return ans
}
const quadraticRealWithCount = (...abc) => addCount(quadraticReal(...abc))
const addCount = a => [a, a.length]
console.log(quadraticRealWithCount(3, -2, -1))
// [ [ 1, -0.3333333333333333 ], 2 ]
console.log(quadraticRealWithCount(3, 6, 3))
// [ [ -1 ], 1 ]
console.log(quadraticRealWithCount(1, 2, 3))
// [ [], 0 ]
633デフォルトの名無しさん
2020/10/09(金) 17:52:52.10ID:gniylpO4 >>629 Ruby
ツルの数 = 3
カメの数 = 4
Template =<<_EOT_
「ツルとカメが合わせて{$(ツルの数)+$(カメの数)}います。
足の合計本数が{$(ツルの数)*2+$(カメの数)*4}本です。
カメは何匹いますか。」
_EOT_
puts Template.gsub( /\{(.*?)\}/ ){ eval $1.gsub( /\$\((.*?)\)/ ){ $1 } }
ツルの数 = 3
カメの数 = 4
Template =<<_EOT_
「ツルとカメが合わせて{$(ツルの数)+$(カメの数)}います。
足の合計本数が{$(ツルの数)*2+$(カメの数)*4}本です。
カメは何匹いますか。」
_EOT_
puts Template.gsub( /\{(.*?)\}/ ){ eval $1.gsub( /\$\((.*?)\)/ ){ $1 } }
634253
2020/10/09(金) 22:43:14.04ID:/QeZd0d9 >>629 Perl5
use utf8;
no warnings 'utf8';
$ツルの数 = 3;
$カメの数 = 4;
print <<EOF
「ツルとカメが合わせて@{[${ツルの数}+${カメの数}]}います。
足の合計本数が@{[${ツルの数}*2+${カメの数}*4]}本です。
カメは何匹いますか。」
EOF
実行結果
~ $ perl 18_633_ツルの数+カメの数.pl
「ツルとカメが合わせて7います。
足の合計本数が22本です。
カメは何匹いますか。」
use utf8;
no warnings 'utf8';
$ツルの数 = 3;
$カメの数 = 4;
print <<EOF
「ツルとカメが合わせて@{[${ツルの数}+${カメの数}]}います。
足の合計本数が@{[${ツルの数}*2+${カメの数}*4]}本です。
カメは何匹いますか。」
EOF
実行結果
~ $ perl 18_633_ツルの数+カメの数.pl
「ツルとカメが合わせて7います。
足の合計本数が22本です。
カメは何匹いますか。」
635蟻人間 ◆T6xkBnTXz7B0
2020/10/09(金) 23:14:45.18ID:LR5flFjI お題: 2つのRGBカラーが#RRGGBB形式で与えられる(RRGGBBは六桁の十六進数とする)。
2つの中間色を#RRGGBB形式で出力せよ。
可能ならばこれら3つの色をカラーバーとして表示せよ。
2つの中間色を#RRGGBB形式で出力せよ。
可能ならばこれら3つの色をカラーバーとして表示せよ。
636蟻人間 ◆T6xkBnTXz7B0
2020/10/09(金) 23:26:06.11ID:LR5flFjI637デフォルトの名無しさん
2020/10/09(金) 23:55:14.23ID:ACx6TREf >>635,636
自明な入力例だけを示しても、出力例も出さないと意味ないだろう。
2色の中間色ってのが曖昧じゃね?
単にR,G,Bそれぞれの平均を取るだけなのか、赤と紫の中間が赤紫になるように循環する色相で中間をとるのかとか。
自明な入力例だけを示しても、出力例も出さないと意味ないだろう。
2色の中間色ってのが曖昧じゃね?
単にR,G,Bそれぞれの平均を取るだけなのか、赤と紫の中間が赤紫になるように循環する色相で中間をとるのかとか。
638デフォルトの名無しさん
2020/10/10(土) 02:56:37.74ID:KFXrJR76 問題が玉石混合だなぁ
639デフォルトの名無しさん
2020/10/10(土) 07:06:51.16ID:PdovQueR >>634
>変数は「$(変数名)」のように表し、
>変数は「$(変数名)」のように表し、
640デフォルトの名無しさん
2020/10/10(土) 07:45:17.48ID:nh4sk35x お題: 20201010と出力してください。ただしコードに使っていい数字は1のみです。
641デフォルトの名無しさん
2020/10/10(土) 08:25:49.31ID:qt6u2bFw642デフォルトの名無しさん
2020/10/10(土) 10:53:30.16ID:nh4sk35x >>640 自分で js
const t = `
`.charCodeAt()
console.log(t + t + "" + (t + t) + t + t)
const m = "ϲ".charCodeAt()
console.log(m + m + "" + m)
const t = `
`.charCodeAt()
console.log(t + t + "" + (t + t) + t + t)
const m = "ϲ".charCodeAt()
console.log(m + m + "" + m)
643デフォルトの名無しさん
2020/10/10(土) 12:06:27.17ID:0z4oJBva644デフォルトの名無しさん
2020/10/10(土) 14:54:47.61ID:iOujIiR/645デフォルトの名無しさん
2020/10/10(土) 14:57:00.84ID:iOujIiR/646デフォルトの名無しさん
2020/10/10(土) 15:40:40.94ID:Duwb5Fsi >>645
012にOIZ使うのセンスある
012にOIZ使うのセンスある
647デフォルトの名無しさん
2020/10/10(土) 18:37:22.80ID:jNM1f0U4648デフォルトの名無しさん
2020/10/10(土) 18:54:45.98ID:V01gi3BN >>647
Windowsでもそのままでいけるのか?
Windowsでもそのままでいけるのか?
649蟻人間 ◆T6xkBnTXz7B0
2020/10/10(土) 19:24:31.52ID:c6WyhNHP お題: 振動数1000Hzの音を1秒間発振せよ。
650デフォルトの名無しさん
2020/10/10(土) 19:32:24.80ID:53GLINoh651デフォルトの名無しさん
2020/10/10(土) 19:46:18.01ID:LCYuVeVr haskell
import Data.Maybe
main = print $ product $ map ((fromJust).(flip lookup (zip ['\t'..] [1..]))) "&myC"
import Data.Maybe
main = print $ product $ map ((fromJust).(flip lookup (zip ['\t'..] [1..]))) "&myC"
652デフォルトの名無しさん
2020/10/10(土) 21:44:48.33ID:0z4oJBva >>649 js
var ctx = new window.AudioContext
var osc = ctx.createOscillator()
osc.type = 'sine'
osc.frequency.value = 1000
osc.connect(ctx.destination)
osc.start()
osc.stop(1)
var ctx = new window.AudioContext
var osc = ctx.createOscillator()
osc.type = 'sine'
osc.frequency.value = 1000
osc.connect(ctx.destination)
osc.start()
osc.stop(1)
653デフォルトの名無しさん
2020/10/10(土) 23:07:21.98ID:t1LUP7rm >>640
haskell 改良
unicode = length . tail . (enumFromTo minBound)
main = print $ product $ map unicode "ാᝇ"
haskell 改良
unicode = length . tail . (enumFromTo minBound)
main = print $ product $ map unicode "ാᝇ"
654デフォルトの名無しさん
2020/10/10(土) 23:18:40.46ID:iOujIiR/655デフォルトの名無しさん
2020/10/11(日) 00:16:06.04ID:6GsmNhIZ >>640 JavaScript
[1+1,1-1,1+1,1-1,1,1-1,1,1-1].reduce((acc,n)=>acc+n,'')
[1+1,1-1,1+1,1-1,1,1-1,1,1-1].reduce((acc,n)=>acc+n,'')
656デフォルトの名無しさん
2020/10/11(日) 01:54:01.50ID:eYi6TEVp657デフォルトの名無しさん
2020/10/11(日) 08:58:57.96ID:luIvAMCe >>640 J
smoutput ,&":/ 'amp' i. 'papamama'
smoutput ,&":/ 'amp' i. 'papamama'
658デフォルトの名無しさん
2020/10/11(日) 11:20:41.53ID:eXVrSXVr >>640 bash
aa=1; bb=$((aa-aa)); cc=$aa$bb$aa$bb; printf "%d" $((cc+cc)) $cc; echo
aa=1; bb=$((aa-aa)); cc=$aa$bb$aa$bb; printf "%d" $((cc+cc)) $cc; echo
659デフォルトの名無しさん
2020/10/11(日) 17:59:24.67ID:/6XslNRS660デフォルトの名無しさん
2020/10/11(日) 18:12:54.16ID:eYi6TEVp661デフォルトの名無しさん
2020/10/11(日) 19:16:59.76ID:/6XslNRS >>635
Kotlin
https://paiza.io/projects/O1eUwROYKRQepDq3N-VyUA
paiza.io はHTMLで出力させてブラウザに表示できるのでカラーバーも出してみました。
Kotlin
https://paiza.io/projects/O1eUwROYKRQepDq3N-VyUA
paiza.io はHTMLで出力させてブラウザに表示できるのでカラーバーも出してみました。
662デフォルトの名無しさん
2020/10/11(日) 19:36:20.38ID:eYi6TEVp これは良いこと聞いた
663デフォルトの名無しさん
2020/10/11(日) 19:48:34.94ID:ki6dTuuo664デフォルトの名無しさん
2020/10/11(日) 20:05:13.72ID:FQjAt+Dq >>663
かわいい
かわいい
665デフォルトの名無しさん
2020/10/11(日) 20:30:57.80ID:vt3DXswM667蟻人間 ◆T6xkBnTXz7B0
2020/10/11(日) 23:57:26.40ID:4cQ/GxGI お題: 整数0〜10の一様分布の乱数を百回発生させて、その統計結果を基に各整数を横軸、回数を縦軸とする棒グラフ(ヒストグラム)を描画し(棒の最大幅32字)、ほぼ一様であることを確かめなさい。
668デフォルトの名無しさん
2020/10/11(日) 23:59:14.77ID:B+MSoWxK paiza.io は、text, html, json で出力できるのか
html も、部分的なタグだけを書いても動くのか
html も、部分的なタグだけを書いても動くのか
669蟻人間 ◆T6xkBnTXz7B0
2020/10/12(月) 00:01:01.03ID:rx5xRSFU670デフォルトの名無しさん
2020/10/12(月) 01:06:07.97ID:eqKg5iqj haskell
import Data.List
import System.Random
trial records = do
x <- randomRIO (0, 1) :: IO Double
return $ (truncate $ x * 11) : records
experience = iterate (>>= trial) (return [0..10])
showrecord (x,y) = let
clsstr = id
$ reverse
$ take 2
$ ( ++ (repeat '0'))
$ reverse
$ show x
barstr = replicate y '*'
in concat [ clsstr," ", barstr,"\n"]
main = do
records <- experience !! 100
putStr $ id
$ concat
$ map showrecord
$ map (\x -> (head x, length $ tail x))
$ group
$ sort
$ records
import Data.List
import System.Random
trial records = do
x <- randomRIO (0, 1) :: IO Double
return $ (truncate $ x * 11) : records
experience = iterate (>>= trial) (return [0..10])
showrecord (x,y) = let
clsstr = id
$ reverse
$ take 2
$ ( ++ (repeat '0'))
$ reverse
$ show x
barstr = replicate y '*'
in concat [ clsstr," ", barstr,"\n"]
main = do
records <- experience !! 100
putStr $ id
$ concat
$ map showrecord
$ map (\x -> (head x, length $ tail x))
$ group
$ sort
$ records
671デフォルトの名無しさん
2020/10/12(月) 01:14:47.03ID:hVCmG980672デフォルトの名無しさん
2020/10/12(月) 08:18:41.49ID:fHHXzdlp >>667
二項分布になるんじゃないかなあ
二項分布になるんじゃないかなあ
673デフォルトの名無しさん
2020/10/14(水) 15:32:12.46ID:M1NONSBM >>649 オーディオ系はシステム依存度が高いから余りサンプルが出てこないね。 WindowsやMacOSなら簡単そうだが
1kHz の音源ファイルを使うのは違反かな?
1kHz の音源ファイルを使うのは違反かな?
674蟻人間 ◆T6xkBnTXz7B0
2020/10/14(水) 17:27:12.50ID:TNR/wFHW675デフォルトの名無しさん
2020/10/14(水) 17:57:41.59ID:qOYZdiW9 答え出てきても試しようがない
676蟻人間 ◆T6xkBnTXz7B0
2020/10/14(水) 18:19:22.34ID:TNR/wFHW677蟻人間 ◆T6xkBnTXz7B0
2020/10/14(水) 18:24:27.45ID:TNR/wFHW678デフォルトの名無しさん
2020/10/14(水) 18:36:34.21ID:Azmo5ss/ シェル経由でSoX playコマンド呼んでるだけやんけ
Pythonもmacも関係ねぇわ
Pythonもmacも関係ねぇわ
679デフォルトの名無しさん
2020/10/14(水) 19:17:28.35ID:Y0U/d7P+ OSにつく前置詞はwithじゃなくてonだろハゲ
680デフォルトの名無しさん
2020/10/14(水) 19:30:29.09ID:pZU5VHHG 試すと音が出て煩そうだから試す気になれない。
681蟻人間 ◆T6xkBnTXz7B0
2020/10/14(水) 19:50:02.82ID:TNR/wFHW682デフォルトの名無しさん
2020/10/15(木) 00:45:55.69ID:BUh584nA >>678 iOS じゃ、play コマンドがなさそうなんだよな。
683デフォルトの名無しさん
2020/10/15(木) 01:18:37.79ID:fqrOjoDi 結局このスレで盛り上がるのは環境によらず言語によらず、でも多少は骨のあるようなお題なんだよな
へぇその言語ならそんなにキレイに書けるのかとか普段自分が使ってない言語ではどうやって実現できるのか眺めたりするのが面白い
音鳴らすなんてお題として面白いわけがない
へぇその言語ならそんなにキレイに書けるのかとか普段自分が使ってない言語ではどうやって実現できるのか眺めたりするのが面白い
音鳴らすなんてお題として面白いわけがない
684デフォルトの名無しさん
2020/10/15(木) 01:40:28.46ID:S6IC+plr ヒント:出題者
685デフォルトの名無しさん
2020/10/15(木) 11:44:28.12ID:cDg3UiVL 蟻人間さんへのお題:
文字列を受け取って、RFC 5322にしたがってSubjectヘッダを出力してください(MUST、SHOULDを満たすこと)
文字コードはUTF-8、エンコーディングはBエンコードを使用してください
文字列を受け取って、RFC 5322にしたがってSubjectヘッダを出力してください(MUST、SHOULDを満たすこと)
文字コードはUTF-8、エンコーディングはBエンコードを使用してください
686蟻人間 ◆T6xkBnTXz7B0
2020/10/15(木) 13:28:00.67ID:s1gNbcw/ >>685 Python
text = 'Re: Re: This is a subject text. This is a subject text. This is a subject text.'
if text[0:4] == 'Re: ':
__while text[0:4] == 'Re: ':
____text = text[4:]
__text = 'Re: ' + text
import base64
text = 'Subject: ' + base64.b64encode(text.encode('utf-8')).decode('ascii');
ary = []
while len(text) > 78:
__ary.append(text[0:78])
__text = text[78:]
ary.append(text)
import platform
if platform.system() == 'Windows':
__for item in ary:
____print(item)
else:
__for item in ary:
____print(item, end="\r\n")
text = 'Re: Re: This is a subject text. This is a subject text. This is a subject text.'
if text[0:4] == 'Re: ':
__while text[0:4] == 'Re: ':
____text = text[4:]
__text = 'Re: ' + text
import base64
text = 'Subject: ' + base64.b64encode(text.encode('utf-8')).decode('ascii');
ary = []
while len(text) > 78:
__ary.append(text[0:78])
__text = text[78:]
ary.append(text)
import platform
if platform.system() == 'Windows':
__for item in ary:
____print(item)
else:
__for item in ary:
____print(item, end="\r\n")
687蟻人間 ◆T6xkBnTXz7B0
2020/10/15(木) 13:49:36.74ID:IXtC9lOP688デフォルトの名無しさん
2020/10/15(木) 14:30:46.93ID:cDg3UiVL >>686
いろいろ違うので・・・メールのソース眺めたが良いです
いろいろ違うので・・・メールのソース眺めたが良いです
689デフォルトの名無しさん
2020/10/15(木) 19:14:52.90ID:QzXinxJa 頭の悪いお題を連投してるやつはやっぱり頭悪いんだな
690デフォルトの名無しさん
2020/10/15(木) 19:22:03.88ID:cDg3UiVL そんなことないと思うけどな
あまり他人の悪口言わない方が良いよ
あまり他人の悪口言わない方が良いよ
691デフォルトの名無しさん
2020/10/15(木) 19:28:33.00ID:QzXinxJa くっそみたいなお題延々と出し続けてウザいじゃん
692デフォルトの名無しさん
2020/10/15(木) 19:29:59.48ID:MTvivIgb >>629なんかはいいと思うんだけどな
eval使えないHaskellerにはいい練習問題になってる
eval使えないHaskellerにはいい練習問題になってる
693デフォルトの名無しさん
2020/10/15(木) 19:38:14.90ID:QzXinxJa ウェブアプリつくれだのGUIアプリつくれだの酷い事散々言いまくってるじゃん
◆QZaw55cn4cの方がまだマシ
◆QZaw55cn4cの方がまだマシ
694デフォルトの名無しさん
2020/10/15(木) 19:40:03.02ID:MTvivIgb まぁ音出せとかカラーバー出せとかはクソお題だな
695デフォルトの名無しさん
2020/10/16(金) 19:48:26.76ID:2tllxc0n お題
自然数nを 2進数にした時、 1が連続する個数の最大値を求める。
例
20201016 -> 5
自然数nを 2進数にした時、 1が連続する個数の最大値を求める。
例
20201016 -> 5
696デフォルトの名無しさん
2020/10/16(金) 20:25:28.88ID:YQH8/KbW haskell
import Data.List
maxConsOne = maximum . map length . filter ((==1).head) . group . unfoldr (\n ->if n == 0 then Nothing else Just (mod n 2, div n 2))
main = print $ maxConsOne $ 20201016
----
5
import Data.List
maxConsOne = maximum . map length . filter ((==1).head) . group . unfoldr (\n ->if n == 0 then Nothing else Just (mod n 2, div n 2))
main = print $ maxConsOne $ 20201016
----
5
697デフォルトの名無しさん
2020/10/16(金) 21:03:20.03ID:a9PKFHNt >>695 ruby
f = ->(n) {n.to_s(2).chars.chunk(&:itself).map {|k, a| k == '1' ? a.size : 0}.max}
f = ->(n) {n.to_s(2).chars.chunk(&:itself).map {|k, a| k == '1' ? a.size : 0}.max}
698デフォルトの名無しさん
2020/10/16(金) 21:35:06.98ID:XtprH8ZD >>695 JavaScript
const f = (n = 0) => Math.max(...(n.toString(2).match(/1+/g) ?? ['']).map(m => m.length))
console.log(f(20201016)) //=> 5
const f = (n = 0) => Math.max(...(n.toString(2).match(/1+/g) ?? ['']).map(m => m.length))
console.log(f(20201016)) //=> 5
699253
2020/10/16(金) 23:46:14.30ID:5gS0lg4h >>695 Perl5
use List::Util max;
print max map{length} sprintf('%b', 20201016) =~ /(1+)/g;
実行結果
$ perl 18_695_bin1.pl
5
use List::Util max;
print max map{length} sprintf('%b', 20201016) =~ /(1+)/g;
実行結果
$ perl 18_695_bin1.pl
5
700デフォルトの名無しさん
2020/10/17(土) 00:12:43.05ID:7ct7R1y+701デフォルトの名無しさん
2020/10/17(土) 00:24:53.85ID:u2s9P3C4 haskell
無名関数というインチキ使ってしまったので再挑戦バージョン
import Data.List
main = print $ maximum . map sum . group . map (flip mod 2) . takeWhile (/=0) . iterate (flip div 2) $ 20201016
無名関数というインチキ使ってしまったので再挑戦バージョン
import Data.List
main = print $ maximum . map sum . group . map (flip mod 2) . takeWhile (/=0) . iterate (flip div 2) $ 20201016
703デフォルトの名無しさん
2020/10/17(土) 01:58:38.41ID:S6LboNFt >>695 Ruby
n = 20201016
nl = 0
while n > 0
nl = ((nc = (n.odd?)? nc + 1 : 0) > nl)? nc : nl
n >>= 1
end
puts nl
n = 20201016
nl = 0
while n > 0
nl = ((nc = (n.odd?)? nc + 1 : 0) > nl)? nc : nl
n >>= 1
end
puts nl
704デフォルトの名無しさん
2020/10/17(土) 01:59:32.64ID:u2s9P3C4 >>702
125の時1になった
125の時1になった
705デフォルトの名無しさん
2020/10/17(土) 02:41:53.51ID:AbkDXvLA これだからQZ
708デフォルトの名無しさん
2020/10/17(土) 12:19:37.13ID:a+zi+w45709デフォルトの名無しさん
2020/10/17(土) 13:46:27.15ID:eBu6AjRf710デフォルトの名無しさん
2020/10/17(土) 18:57:16.23ID:S6LboNFt711デフォルトの名無しさん
2020/10/17(土) 19:11:03.54ID:wXdm0x1E >>710
うまいやり方だな。それには気付かなかった。
うまいやり方だな。それには気付かなかった。
712デフォルトの名無しさん
2020/10/17(土) 19:29:10.40ID:wXdm0x1E >>695
Kotlin script
2進数文字列に変換してから 0 を区切り文字にして分割してその中の一番長い文字列の長さを出すというやり方。
fun max1(n: Int) = n.toString(2).split('0').map { it.length }.max()
println(max1(20201016))
これで 5 が出る。
同じやり方を perl5 で(特にモジュール使わずに)やるとこんな感じ。
perl -e '$n=20201016; $m = (sort { $b <=> $a } map { length($_) } (split /0+/, sprintf("%b", $n)))[0]; print "$m\n"'
同じく5が出る。
Kotlin script
2進数文字列に変換してから 0 を区切り文字にして分割してその中の一番長い文字列の長さを出すというやり方。
fun max1(n: Int) = n.toString(2).split('0').map { it.length }.max()
println(max1(20201016))
これで 5 が出る。
同じやり方を perl5 で(特にモジュール使わずに)やるとこんな感じ。
perl -e '$n=20201016; $m = (sort { $b <=> $a } map { length($_) } (split /0+/, sprintf("%b", $n)))[0]; print "$m\n"'
同じく5が出る。
713デフォルトの名無しさん
2020/10/17(土) 20:05:12.33ID:vimxgZ9f >>695 JavaScript
let num = 20201016
let ans = num.toString(2).split`0`.sort().pop().length
console.log(ans) //=> 5
let num = 20201016
let ans = num.toString(2).split`0`.sort().pop().length
console.log(ans) //=> 5
714デフォルトの名無しさん
2020/10/17(土) 20:50:55.84ID:w8j3NnhR >>695 octave
https://ideone.com/dO1WZp
f = @(n) max(cellfun(@numel, strsplit(dec2bin(n), '0')));
f(20201016)
https://ideone.com/dO1WZp
f = @(n) max(cellfun(@numel, strsplit(dec2bin(n), '0')));
f(20201016)
715デフォルトの名無しさん
2020/10/17(土) 20:54:06.81ID:frzgm+pU716デフォルトの名無しさん
2020/10/17(土) 23:22:21.08ID:P3PLPttw いつもRubyの人からなにかしら学ぶことがある
717デフォルトの名無しさん
2020/10/18(日) 00:42:32.49ID:nYmbGZmV ハトにエサを与えないで下さい
718デフォルトの名無しさん
2020/10/18(日) 01:06:12.01ID:qT62bbHa QZは自分の頭が悪いのをわざわざ周知してもらうためにクソコードを晒すのか
ドMだな
ドMだな
719デフォルトの名無しさん
2020/10/18(日) 03:42:01.18ID:DpwMGaW+720デフォルトの名無しさん
2020/10/18(日) 04:21:53.35ID:xWXtsYNK >>700 のほうが速いと思うが
721デフォルトの名無しさん
2020/10/18(日) 04:36:21.54ID:F/EhVBet rubyよく分からないけど>>710の方が100倍くらいは速そうに思える
722デフォルトの名無しさん
2020/10/18(日) 05:53:44.51ID:28u9FaXE うん。速そうだね。数値計算しかしてないし。
723デフォルトの名無しさん
2020/10/18(日) 10:06:25.57ID:ARbR7jXS 20201016みたいに桁数が少ないならそうだけど桁数が増えるとルーブが答え×桁数回だからアルゴリズムそのものは遅い
桁数が少ないうちは内部関数しか使ってない利点で早いとは思うけど
桁数が少ないうちは内部関数しか使ってない利点で早いとは思うけど
724デフォルトの名無しさん
2020/10/18(日) 12:07:22.14ID:GUbLWvo/ >>723
>>700,710 をベンチマークで比較してみた
https://ideone.com/t0ZYLg
https://ideone.com/DUEWmC
20201016 では 5~6倍
巨大な数だと 7000倍以上
>>700,710 をベンチマークで比較してみた
https://ideone.com/t0ZYLg
https://ideone.com/DUEWmC
20201016 では 5~6倍
巨大な数だと 7000倍以上
>>693
残念ながら、私の出題もイマイチ人気がありませんでした‥‥
残念ながら、私の出題もイマイチ人気がありませんでした‥‥
726デフォルトの名無しさん
2020/10/18(日) 21:20:25.30ID:wanN/5Zd727デフォルトの名無しさん
2020/10/18(日) 21:43:52.67ID:wanN/5Zd728デフォルトの名無しさん
2020/10/18(日) 22:06:12.69ID:wanN/5Zd729デフォルトの名無しさん
2020/10/18(日) 22:14:01.64ID:wanN/5Zd730デフォルトの名無しさん
2020/10/18(日) 22:45:56.62ID:F/EhVBet >>724
x = n
while x != 0
x &= x << 1
i += 1
end
ruby知らないから適当に書いたけど
こんな感じにしないと二回目以降nが0でやってるっぽい
こうすると22倍くらいの差だった
x = n
while x != 0
x &= x << 1
i += 1
end
ruby知らないから適当に書いたけど
こんな感じにしないと二回目以降nが0でやってるっぽい
こうすると22倍くらいの差だった
731デフォルトの名無しさん
2020/10/18(日) 22:54:22.98ID:F/EhVBet 連続してるビット数が多いときはこの方が速くなったけど
すごいごちゃごちゃになった
i = 0
s = 1
x = n
while x != 0
t = x & (x << s)
if t == 0 then
if s == 1 then
i += 1
break
end
s = 1
else
x = t
i += s
s = (s << 1)
end
end
すごいごちゃごちゃになった
i = 0
s = 1
x = n
while x != 0
t = x & (x << s)
if t == 0 then
if s == 1 then
i += 1
break
end
s = 1
else
x = t
i += s
s = (s << 1)
end
end
732デフォルトの名無しさん
2020/10/18(日) 22:56:30.98ID:QW0aA1Hz >>724
GJ
GJ
733デフォルトの名無しさん
2020/10/19(月) 06:30:07.92ID:8QFJcUQW >>695
echo "obase=2; 20201016" | bc | sed 's/./&\n/g' | uniq -c | perl -lane 'if ($M < $F[0]) {$M = $F[0]}; END{print $M}'
5
echo "obase=2; 20201016" | bc | sed 's/./&\n/g' | uniq -c | perl -lane 'if ($M < $F[0]) {$M = $F[0]}; END{print $M}'
5
734724
2020/10/19(月) 15:26:08.35ID:u+lqDWSF735デフォルトの名無しさん
2020/10/19(月) 17:41:48.20ID:Sd7Rn+fr お題
2^(1/3)を百桁表示せよ
出力
1.2599210498948731647672106072782283505702514647015079800819751121552996765139594837293965624362550941543102560356156652593990240
参考
a(n+3) = 3*a(n+2) + 3*a(n+1) + an
a(1) = 3, a(2)=3, a(3)=15
で決まる数列について
min (a(n)/a(n+1), a(n+1)/a(n+2), a(n+3)/a(n+3) )
. < 2^(1/3)-1
. max (a(n)/a(n+1), a(n+1)/a(n+2), a(n+2)/a(n+3) )
で lim a(n)/a(n+1) = 2^(1/3)-1となる
2^(1/3)を百桁表示せよ
出力
1.2599210498948731647672106072782283505702514647015079800819751121552996765139594837293965624362550941543102560356156652593990240
参考
a(n+3) = 3*a(n+2) + 3*a(n+1) + an
a(1) = 3, a(2)=3, a(3)=15
で決まる数列について
min (a(n)/a(n+1), a(n+1)/a(n+2), a(n+3)/a(n+3) )
. < 2^(1/3)-1
. max (a(n)/a(n+1), a(n+1)/a(n+2), a(n+2)/a(n+3) )
で lim a(n)/a(n+1) = 2^(1/3)-1となる
736デフォルトの名無しさん
2020/10/19(月) 21:36:44.38ID:gq9726ze737デフォルトの名無しさん
2020/10/19(月) 22:00:17.27ID:gq9726ze >>735 Bash
$ echo "scale=100;e(l(2) / 3)" | bc -l
1.25992104989487316476721060727822835057025146470150
79800819751121552996765139594837293965624362550940
$ echo "scale=100;e(l(2) / 3)" | bc -l
1.25992104989487316476721060727822835057025146470150
79800819751121552996765139594837293965624362550940
738デフォルトの名無しさん
2020/10/19(月) 22:30:56.87ID:14xSvmON >>735 dc
dcには平方根の演算子はあるが立方根はないので
c^(1/3) = sqrt(c/sqrt(c/sqrt(c/...)))
と変形して適当に反復
100k[2z333>av/]dsaxp
1.2599210498948731647672106072782283505702514647015079800819751121552\
996765139594837293965624362550941
dcには平方根の演算子はあるが立方根はないので
c^(1/3) = sqrt(c/sqrt(c/sqrt(c/...)))
と変形して適当に反復
100k[2z333>av/]dsaxp
1.2599210498948731647672106072782283505702514647015079800819751121552\
996765139594837293965624362550941
739デフォルトの名無しさん
2020/10/19(月) 23:54:32.40ID:mPlPc+C9 >>735
参考を誰も参考にしてくれないのにワロタ
参考を元に作ったコード
Haskell
https://ideone.com/ywJPjx
ちなみにrubyのpi.rbが同じテクニック使ってます
そっちは定数係数でない三項間関係の漸化式パージョン
参考を誰も参考にしてくれないのにワロタ
参考を元に作ったコード
Haskell
https://ideone.com/ywJPjx
ちなみにrubyのpi.rbが同じテクニック使ってます
そっちは定数係数でない三項間関係の漸化式パージョン
740デフォルトの名無しさん
2020/10/20(火) 02:36:31.61ID:gFGmv7lM >>736
たしかに
たしかに
741デフォルトの名無しさん
2020/10/20(火) 04:08:13.14ID:Mf7a0fdE おっせえじゃん
742デフォルトの名無しさん
2020/10/20(火) 21:07:35.93ID:hsuNVmIy お題:ぼくがかんがえたさいきょうのちょうわへいきん
2変数調和平均 f(x, y) = 2 / (1 / x + 1 / y)
但し xまたはyがゼロの時、f(x, y) == 0
の計算を考える。
Cのdoubleに相当する精度で計算する際に、理論値(≒多倍長精度で計算したものを
double相当に丸めたもの)と一致しない割合(エラー率)をモンテカルロ法で求めよ。
x, yは、正規分布N(0, 1)の絶対値に従うものとする。
発展的なお題:
前掲の調和平均の式を変形し、エラー率の変化を調べよ。例えば、
f(x, y) = 2 * x * y / (x + y)
のエラー率は、前掲の式と比較してどうだろうか?
また、2 / (1 / x + 1 / y)よりエラー率が低い式は在るだろうか?
発展的なお題その2:
x, yがベンフォードの法則に従う場合はどうなるか。
正規分布N(0, 1)の絶対値の場合と比べて、エラー率の順位は入れ替わるだろうか?
2変数調和平均 f(x, y) = 2 / (1 / x + 1 / y)
但し xまたはyがゼロの時、f(x, y) == 0
の計算を考える。
Cのdoubleに相当する精度で計算する際に、理論値(≒多倍長精度で計算したものを
double相当に丸めたもの)と一致しない割合(エラー率)をモンテカルロ法で求めよ。
x, yは、正規分布N(0, 1)の絶対値に従うものとする。
発展的なお題:
前掲の調和平均の式を変形し、エラー率の変化を調べよ。例えば、
f(x, y) = 2 * x * y / (x + y)
のエラー率は、前掲の式と比較してどうだろうか?
また、2 / (1 / x + 1 / y)よりエラー率が低い式は在るだろうか?
発展的なお題その2:
x, yがベンフォードの法則に従う場合はどうなるか。
正規分布N(0, 1)の絶対値の場合と比べて、エラー率の順位は入れ替わるだろうか?
743デフォルトの名無しさん
2020/10/22(木) 01:17:43.95ID:rA+WIIWx ...but nobody answered
744253
2020/10/23(金) 09:17:13.74ID:7L0FHKID 正規乱数をモンテカルロ法で算出して
doubleと多倍長浮動小数点でそれぞれ計差した2変数調和平均に
差がある率を求めれば良いの?
正規乱数なら書かなくともライブラリにあるんだよね。
あるいは誤り率の計算そのものにモンテカルロ法を使うようなやり方なのかな
doubleと多倍長浮動小数点でそれぞれ計差した2変数調和平均に
差がある率を求めれば良いの?
正規乱数なら書かなくともライブラリにあるんだよね。
あるいは誤り率の計算そのものにモンテカルロ法を使うようなやり方なのかな
745デフォルトの名無しさん
2020/10/23(金) 14:48:32.25ID:oxO2c12D 次のプリーズ
746デフォルトの名無しさん
2020/10/23(金) 20:02:36.14ID:Vzf4XOui お題
乱数を使ってシミュレーションしてください
ジョーカーを除くトランプ52枚から1枚抜き取って箱に入れました
その後、残った51枚から3枚引いて確認したら3枚ともダイヤでした
では最初に抜き取った箱の中が1枚がダイヤである確率はいくらか?
乱数を使ってシミュレーションしてください
ジョーカーを除くトランプ52枚から1枚抜き取って箱に入れました
その後、残った51枚から3枚引いて確認したら3枚ともダイヤでした
では最初に抜き取った箱の中が1枚がダイヤである確率はいくらか?
747デフォルトの名無しさん
2020/10/23(金) 20:27:24.17ID:LovVc5SM >>746 Ruby
DECK = [*0..51]
def hoge
a, *b = DECK.sample(4) until b&.all?{|v| v % 4 == 0}
a % 4 == 0
end
def fuga(n)
1.0 * n.times.count{hoge} / n
end
p fuga(1e6) # => 0.20414
p 10 / 59 # => 0.20408163265306123
DECK = [*0..51]
def hoge
a, *b = DECK.sample(4) until b&.all?{|v| v % 4 == 0}
a % 4 == 0
end
def fuga(n)
1.0 * n.times.count{hoge} / n
end
p fuga(1e6) # => 0.20414
p 10 / 59 # => 0.20408163265306123
748デフォルトの名無しさん
2020/10/23(金) 20:46:02.34ID:LovVc5SM 途中で送信してしまった
99%信頼区間は 0.20414±0.0010382 => [0.2031018, 0.2051782]
理論値は 10/49 = 0.20408163265306123
99%信頼区間は 0.20414±0.0010382 => [0.2031018, 0.2051782]
理論値は 10/49 = 0.20408163265306123
749デフォルトの名無しさん
2020/10/23(金) 20:49:11.91ID:5NWyTruo 確認前後での確率変動を出せ、っていうお題じゃねえのコレ
750デフォルトの名無しさん
2020/10/24(土) 01:58:03.71ID:6bv42JD2 お題
ジョーカー除く52枚のカードがある
スートを表すS,H,D,Cと、A,K,Q,J,X,9,8,7,6,5,4,3,2との2文字からなる文字列でカードの柄を表すこととする。
当然ながら52枚のうちどの2枚も同じ柄でない
この一組のカードを使ってポーカーゲームをする。
すなわち、初手のカード5枚を配られたプレイヤーは、そのうち0枚以上5枚以下のカードを場に捨てて、同じ枚数のカードを残りの山札47枚から引くことができる。
このときどのカードが選ばれるかは無作為であり、プレイヤーは選択できない。
さて、プレイヤーは、初手のカード5枚に対して、最終的に手に残る5枚のカードをポーカーのルールで評価して得られる配点の期待値が最も高くなるように捨て札を決めたい。
入力としてカード5枚が与えられたとき、そのような捨て札の組み合わせを求めるプログラムを記述せよ。
ここで、ポーカーの役と配点の対応はプログラムのパラメータとして組み込んで良い。
ジョーカー除く52枚のカードがある
スートを表すS,H,D,Cと、A,K,Q,J,X,9,8,7,6,5,4,3,2との2文字からなる文字列でカードの柄を表すこととする。
当然ながら52枚のうちどの2枚も同じ柄でない
この一組のカードを使ってポーカーゲームをする。
すなわち、初手のカード5枚を配られたプレイヤーは、そのうち0枚以上5枚以下のカードを場に捨てて、同じ枚数のカードを残りの山札47枚から引くことができる。
このときどのカードが選ばれるかは無作為であり、プレイヤーは選択できない。
さて、プレイヤーは、初手のカード5枚に対して、最終的に手に残る5枚のカードをポーカーのルールで評価して得られる配点の期待値が最も高くなるように捨て札を決めたい。
入力としてカード5枚が与えられたとき、そのような捨て札の組み合わせを求めるプログラムを記述せよ。
ここで、ポーカーの役と配点の対応はプログラムのパラメータとして組み込んで良い。
751デフォルトの名無しさん
2020/10/24(土) 21:09:47.85ID:xQuuF55s752デフォルトの名無しさん
2020/10/24(土) 23:43:41.92ID:DlOr4HzX753デフォルトの名無しさん
2020/10/25(日) 09:27:41.37ID:dKQi7OF0754デフォルトの名無しさん
2020/10/25(日) 10:49:49.59ID:zd7LSfWt755デフォルトの名無しさん
2020/10/25(日) 11:44:16.63ID:c/nOQwtG 746はシミュレーションも何もただの引っ掛け問題でしょ
モンティホール問題の方が引っ掛け問としては出来が良い
モンティホール問題の方が引っ掛け問としては出来が良い
756デフォルトの名無しさん
2020/10/25(日) 12:58:23.56ID:vQGWPLvq 引っかけも何も条件付確率の初歩の初歩の問題だろ
757デフォルトの名無しさん
2020/10/25(日) 14:14:17.31ID:tOCt4zCM 52枚トランプの束で2枚目から4枚目までがダイアであるような場合に限定してその内先頭もダイアであるような場合は全体の何バーセントかを問う問題
758742
2020/10/26(月) 01:17:42.67ID:LimhPZzI >>744
正規乱数自体は既存のライブラリで(Pythonならnumpy.random.randnとか)。
例えば、最初のお題(2/(1/x+1/y)で計算するやつ)は、34%位のエラー率になります。
正規乱数自体は既存のライブラリで(Pythonならnumpy.random.randnとか)。
例えば、最初のお題(2/(1/x+1/y)で計算するやつ)は、34%位のエラー率になります。
759253
2020/10/27(火) 00:51:04.61ID:uqMOOUWw そうすると俺にはモンテカルロ法をわざわざ使うところが
どこかよく分からないんだよね…
どこかよく分からないんだよね…
760デフォルトの名無しさん
2020/10/27(火) 23:07:51.35ID:9NNPSda/ 結局>>742は数学的にはどういう意味なんやろ
x,yがN(0,1)に従う独立確率変数、
ρ:R→RがDouble型に丸める関数(Doubleのレンジに入らない確率はほとんど0だから無視)、
h(x,y)=2xy/(x+y)
としたとき
P(ρ(h(ρ(x),ρ(y))) ≠ ρ(h(x,y))) ≒ 34%
って事?
x,yがN(0,1)に従う独立確率変数、
ρ:R→RがDouble型に丸める関数(Doubleのレンジに入らない確率はほとんど0だから無視)、
h(x,y)=2xy/(x+y)
としたとき
P(ρ(h(ρ(x),ρ(y))) ≠ ρ(h(x,y))) ≒ 34%
って事?
761253
2020/10/28(水) 00:01:38.74ID:Jno143Es 面白い記号だなそれ。
だが、他の人にも伝わるように書いた方が話が広がってよいよ。
どんなに数学が得意な人でも本当に優秀な人はそうすることができると思う
だが、他の人にも伝わるように書いた方が話が広がってよいよ。
どんなに数学が得意な人でも本当に優秀な人はそうすることができると思う
762デフォルトの名無しさん
2020/10/28(水) 00:17:22.90ID:3yQQm3er Φρズと書いてハイロウズと読みます
763デフォルトの名無しさん
2020/10/28(水) 00:21:17.79ID:n11gpLQR 煽りでもなく素直に疑問なのだが>>760のどこら辺がわからないんだ?
正規分布の下りか?
正規分布の下りか?
764253
2020/10/28(水) 00:30:53.43ID:Jno143Es >>762
マジレスしようと思ったが、そういう問題じゃないんだよ
言葉で書きゃー2,3行のことなんだから
言葉で人に伝わるように書けばいいだろ
と、突き放しちゃ実も蓋も無いので少しマジレスすると
ρ:R→R が写像なのは分かる。
がしかしだ
P(ρ(h(ρ(x),ρ(y))) ≠ ρ(h(x,y))) ≒ 34%
って、お前の教室のホワイトボードじゃねんだぞ。
そんなんでどうっやって世の人と付き合ってんだか…
マジレスしようと思ったが、そういう問題じゃないんだよ
言葉で書きゃー2,3行のことなんだから
言葉で人に伝わるように書けばいいだろ
と、突き放しちゃ実も蓋も無いので少しマジレスすると
ρ:R→R が写像なのは分かる。
がしかしだ
P(ρ(h(ρ(x),ρ(y))) ≠ ρ(h(x,y))) ≒ 34%
って、お前の教室のホワイトボードじゃねんだぞ。
そんなんでどうっやって世の人と付き合ってんだか…
765253
2020/10/28(水) 00:40:32.18ID:Jno143Es 大体、P()てのは何の関数だ。
どこにでもあるような関数名だが、一般的な関数か?
いや、そんなことの説明は要らない
お前の言いたいことはそんな自己流の式よりも
手短な読んで分かる日本語で書けるはずだ
いいやP()に限らない、お前のレスは一事が万事そんな感じ
一からからやり直せ
そしたら相手してやる
どこにでもあるような関数名だが、一般的な関数か?
いや、そんなことの説明は要らない
お前の言いたいことはそんな自己流の式よりも
手短な読んで分かる日本語で書けるはずだ
いいやP()に限らない、お前のレスは一事が万事そんな感じ
一からからやり直せ
そしたら相手してやる
766デフォルトの名無しさん
2020/10/28(水) 00:42:08.54ID:n11gpLQR768253
2020/10/28(水) 00:47:05.09ID:Jno143Es 簡単なことを
わざわざ難しいことのように書くのは
有能な人のすることではない
わざわざ難しいことのように書くのは
有能な人のすることではない
769デフォルトの名無しさん
2020/10/28(水) 00:51:02.28ID:n11gpLQR770253
2020/10/28(水) 01:00:33.01ID:Jno143Es >>769
別に落ち着いているけど
これか
https://ja.wikipedia.org/wiki/%E6%9D%A1%E4%BB%B6%E4%BB%98%E3%81%8D%E7%A2%BA%E7%8E%87
P()が確立っていつから?
俺が大学の頃まではこういう記法は見た記憶が無いんだけど
P(ρ(h(ρ(x),ρ(y))) ≠ ρ(h(x,y))) ≒ 34%
これは言葉で書いたらもっと分かりやすくならないのか?
別に落ち着いているけど
これか
https://ja.wikipedia.org/wiki/%E6%9D%A1%E4%BB%B6%E4%BB%98%E3%81%8D%E7%A2%BA%E7%8E%87
P()が確立っていつから?
俺が大学の頃まではこういう記法は見た記憶が無いんだけど
P(ρ(h(ρ(x),ρ(y))) ≠ ρ(h(x,y))) ≒ 34%
これは言葉で書いたらもっと分かりやすくならないのか?
771253
2020/10/28(水) 01:15:04.26ID:Jno143Es 結局 >>760 は
2 / (1 / x + 1 / y)をdoubleで計算した値と倍長精度で計算したものをdouble相当に丸めたものが一致しない割合
この一行をわざわざ他の人に分かりにくい式で再度書いているだけのこと
繰り返しだし分かりにくいし
意味(doubleで計算した値と倍長精度で計算したものをdouble相当に丸めたものが一致しない割合)
が欠落している
そういうことに気づきな
2 / (1 / x + 1 / y)をdoubleで計算した値と倍長精度で計算したものをdouble相当に丸めたものが一致しない割合
この一行をわざわざ他の人に分かりにくい式で再度書いているだけのこと
繰り返しだし分かりにくいし
意味(doubleで計算した値と倍長精度で計算したものをdouble相当に丸めたものが一致しない割合)
が欠落している
そういうことに気づきな
772デフォルトの名無しさん
2020/10/28(水) 01:17:27.13ID:6h0Rpnv/ 多分ですけど、あなた以外はそこまでわかりにくい表現だとは感じていないのだと思いますよ
773253
2020/10/28(水) 01:19:14.69ID:Jno143Es まじかw
そしたら回答山盛りだ
お前もさんも回答よろしくな
そしたら回答山盛りだ
お前もさんも回答よろしくな
774デフォルトの名無しさん
2020/10/28(水) 01:20:24.09ID:6h0Rpnv/ >>742の意味するところが数学的に自明になればおのずと回答も付くでしょう
775253
2020/10/28(水) 01:20:47.31ID:Jno143Es 蛇足だが、あの式で意味がわかった上で
まさか回答できなかったら、単なる無能だからな
まさか回答できなかったら、単なる無能だからな
777デフォルトの名無しさん
2020/10/28(水) 01:29:09.84ID:3yQQm3er778253
2020/10/28(水) 01:30:24.94ID:Jno143Es ふふ、それは
ヒ・ミ・ツ
ヒ・ミ・ツ
779デフォルトの名無しさん
2020/10/28(水) 01:43:43.54ID:3yQQm3er 教科書ないから高校数学 確率で一番上に出たやつ。
https://studysapuri.jp/contents/high/article/subject/sp/math00003.html
やっぱ高校の教科書に載ってたよなあww
仮に載ってなかったとして大学で使う書籍にもP載ってないって?w
> 俺が大学の頃まではこういう記法は見た記憶が無いんだけど
https://studysapuri.jp/contents/high/article/subject/sp/math00003.html
やっぱ高校の教科書に載ってたよなあww
仮に載ってなかったとして大学で使う書籍にもP載ってないって?w
> 俺が大学の頃まではこういう記法は見た記憶が無いんだけど
780253
2020/10/28(水) 01:56:33.39ID:Jno143Es ゆとり以降だなそりゃ
781デフォルトの名無しさん
2020/10/28(水) 02:11:35.07ID:d52OC3St 恥の上塗りするくらいなら黙ってればいいのに
782253
2020/10/28(水) 02:16:39.09ID:FRCNqyyj じゃあ何か自慢の回答でもしてよ
783742
2020/10/28(水) 05:10:48.17ID:MEeLXnFm784デフォルトの名無しさん
2020/10/28(水) 06:02:02.77ID:W3KKdO+Q >>742 C
https://ideone.com/iPEwg8
2 / (1 / x + 1 / y) のエラー率は 38.5%
2 * x * y / (x + y) のエラー率は 40.4%
と出た
https://ideone.com/iPEwg8
2 / (1 / x + 1 / y) のエラー率は 38.5%
2 * x * y / (x + y) のエラー率は 40.4%
と出た
785742
2020/10/28(水) 12:23:39.00ID:jim4KuYP >>784
h0の計算は、xdやxdをlong doubleにcastする感じで!
>double h0 = ( xl == 0. || yl == 0. ? 0. : 2. / (1.L / xd + 1.L / yd));
h0の計算は、xdやxdをlong doubleにcastする感じで!
>double h0 = ( xl == 0. || yl == 0. ? 0. : 2. / (1.L / xd + 1.L / yd));
786742
2020/10/28(水) 13:16:35.16ID:jim4KuYP 間違えました
double h0 = ( xd == 0. || yd == 0. ? 0. : 2. / (1.L / xd + 1.L / yd));
double h0 = ( xd == 0. || yd == 0. ? 0. : 2. / (1.L / xd + 1.L / yd));
787デフォルトの名無しさん
2020/10/29(木) 00:16:48.93ID:GFOWX4AY お題:言語機能のみを使い単方向リストを実装しメソッドpushとpopを実装せよ
pushはリスト末尾にノードをプッシュし、popはリスト末尾からノードをポップする
ノードの持つ値は整数とする
pushはリスト末尾にノードをプッシュし、popはリスト末尾からノードをポップする
ノードの持つ値は整数とする
788デフォルトの名無しさん
2020/10/29(木) 00:52:01.80ID:wtq/xrTf 複数pushできるの?
popも個数指定できるの?一個ずつ?
pushの戻り値はリスト自身?入れた値?成否?
popも個数指定できるの?一個ずつ?
pushの戻り値はリスト自身?入れた値?成否?
789デフォルトの名無しさん
2020/10/29(木) 01:01:50.46ID:GFOWX4AY790デフォルトの名無しさん
2020/10/29(木) 10:47:03.25ID:jsAu6jIB >>787 js
入出力のサンプルケース書いてないやつ絶対自分はやってないだろ
class SinglyLinkedList {
push(value) {
this.head = { next: this.head, value }
}
pop() {
if (!this.head) return
this.head = this.head.next
}
str() {
let { head } = this, s = ""
while (head) {
s += head.value + ", "
head = head.next
}
return s
}
}
入出力のサンプルケース書いてないやつ絶対自分はやってないだろ
class SinglyLinkedList {
push(value) {
this.head = { next: this.head, value }
}
pop() {
if (!this.head) return
this.head = this.head.next
}
str() {
let { head } = this, s = ""
while (head) {
s += head.value + ", "
head = head.next
}
return s
}
}
791デフォルトの名無しさん
2020/10/29(木) 12:03:58.95ID:GFOWX4AY792デフォルトの名無しさん
2020/10/29(木) 12:11:08.30ID:moZIRBYC >>791
「言語機能のみを使い」は引っかかる表現だったけどそれのことかい?
「言語機能のみを使い」は引っかかる表現だったけどそれのことかい?
793デフォルトの名無しさん
2020/10/29(木) 12:16:22.08ID:95aSRVZj オレもこの「言語機能のみを使い」がわからなかった
「ライブラリ関数使うな」か「文字列操作関数のみを使い」かどっちかかなと
わからんから様子見
「ライブラリ関数使うな」か「文字列操作関数のみを使い」かどっちかかなと
わからんから様子見
794デフォルトの名無しさん
2020/10/29(木) 12:18:16.67ID:GFOWX4AY795デフォルトの名無しさん
2020/10/29(木) 12:21:59.18ID:GFOWX4AY796デフォルトの名無しさん
2020/10/29(木) 12:33:09.26ID:AOpu1Zek stdlib.h使わずに作るの?
797デフォルトの名無しさん
2020/10/29(木) 12:36:05.93ID:jsAu6jIB798デフォルトの名無しさん
2020/10/29(木) 12:50:57.59ID:GFOWX4AY799デフォルトの名無しさん
2020/10/29(木) 13:24:14.72ID:GFOWX4AY800デフォルトの名無しさん
2020/10/29(木) 13:27:39.52ID:GFOWX4AY >>796
C/C++などの言語はmallocなどを使っても良いことにする
C/C++などの言語はmallocなどを使っても良いことにする
801デフォルトの名無しさん
2020/10/29(木) 15:09:10.20ID:dNWGwdex Haskellみたいな純粋関数だとそもそも標準ライブラリだけだと“状態”を作るのも難しいんだよな
同じ表現は永遠に同じ答えを返すからスタックの“状態”を変化させるというのがそもそもできない
それをなんとかするのに“モナド”というのがあるんだけど状態を処理する“ステートモナド”は標準ライブラリではないんだよな
ほとんど“準標準”だけど
同じ表現は永遠に同じ答えを返すからスタックの“状態”を変化させるというのがそもそもできない
それをなんとかするのに“モナド”というのがあるんだけど状態を処理する“ステートモナド”は標準ライブラリではないんだよな
ほとんど“準標準”だけど
802デフォルトの名無しさん
2020/10/29(木) 16:24:06.73ID:95aSRVZj State モナドを“準標準”と認めてもらえるなら簡単
Haskell
import Control.Monad.State
pop :: State [a] a
pop = do
a <- get
modify tail
return $ head a
push :: a -> State [a] ()
push x = do
modify ((x :))
return ()
test = do
push 1
push 2
push 3
a <- pop
b <- pop
c <- pop
return ([a,b,c])
main = print $ evalState test []
---
出力
[3,2,1]
Haskell
import Control.Monad.State
pop :: State [a] a
pop = do
a <- get
modify tail
return $ head a
push :: a -> State [a] ()
push x = do
modify ((x :))
return ()
test = do
push 1
push 2
push 3
a <- pop
b <- pop
c <- pop
return ([a,b,c])
main = print $ evalState test []
---
出力
[3,2,1]
>>787
双方向リストの方が、後々いろいろ流用できてありがたいんですけど、それでも端方向リストでインプリしないといけないのですか?
双方向リストの方が、後々いろいろ流用できてありがたいんですけど、それでも端方向リストでインプリしないといけないのですか?
804デフォルトの名無しさん
2020/10/29(木) 19:02:59.18ID:c1P6mcgH 持て余すくらいなら「なるべく使わない」とか評価基準を示すだけにしとけばいいのに
805デフォルトの名無しさん
2020/10/29(木) 19:32:46.09ID:EQ9lcE/o >>793
全く同じこと思ってたわw
全く同じこと思ってたわw
806デフォルトの名無しさん
2020/10/29(木) 19:34:40.84ID:EQ9lcE/o >>797
どうでもいいけどお前のIDもjsだsな
どうでもいいけどお前のIDもjsだsな
807デフォルトの名無しさん
2020/10/29(木) 19:40:10.12ID:Pf0NRL7D808デフォルトの名無しさん
2020/10/29(木) 20:59:03.61ID:zgfLAX1f >>787
push,popってリストじゃなくてスタックの機能じゃ?
リストにさせるなら、先頭に追加してく方が速くて楽なのに。
push xs a = a:xs
pop (x:xs) = (xs,x)
反転させたいなら最後の最後にすべきだよ。
Haskell
― 使用例用main関数
main = do pushlist <- (return.push (Cons 1 (Cons 2 Null))) 3
(poplst, popval) <- (return.pop) pushlist
print pushlist
print popval
print poplst
― ここからお題のコード(整数に限定じゃないとダメならdataのList a/Cons aのaをIntに)
data List a = Null | Cons a (List a) deriving (Show)
push xs a = xs +++ (Cons a Null)
pop xs = (myinit xs, mylast xs)
Null +++ ys = ys
(Cons x xs) +++ ys = Cons x (xs +++ ys)
myinit (Cons x Null) = Null
myinit (Cons x xs) = Cons x (myinit xs)
mylast (Cons x Null) = x
mylast (Cons _ xs) = mylast xs
push,popってリストじゃなくてスタックの機能じゃ?
リストにさせるなら、先頭に追加してく方が速くて楽なのに。
push xs a = a:xs
pop (x:xs) = (xs,x)
反転させたいなら最後の最後にすべきだよ。
Haskell
― 使用例用main関数
main = do pushlist <- (return.push (Cons 1 (Cons 2 Null))) 3
(poplst, popval) <- (return.pop) pushlist
print pushlist
print popval
print poplst
― ここからお題のコード(整数に限定じゃないとダメならdataのList a/Cons aのaをIntに)
data List a = Null | Cons a (List a) deriving (Show)
push xs a = xs +++ (Cons a Null)
pop xs = (myinit xs, mylast xs)
Null +++ ys = ys
(Cons x xs) +++ ys = Cons x (xs +++ ys)
myinit (Cons x Null) = Null
myinit (Cons x xs) = Cons x (myinit xs)
mylast (Cons x Null) = x
mylast (Cons _ xs) = mylast xs
809デフォルトの名無しさん
2020/10/29(木) 21:10:47.05ID:wtq/xrTf >>787 JavaScript
class List {
#data = []
push(n) {
this.#data = [n, this.#data]
return this
}
pop() {
const [head, tail] = this.#data
if (tail) this.#data = tail;
return head
}
toArray() { return this.#data.flat(Infinity) }
toString() { return String(this.toArray()) }
toJSON() { return this.toArray() }
}
const list = new List
list
.push(0)
.push(7)
.push(2)
console.log('文字列: ' + list) //=> 文字列: 2,7,0
console.log('JSON: ' + JSON.stringify(list))
//=> JSON: {"test":[2,7,0]}
list.pop() //=> 2
list.pop() //=> 7
list.pop() //=> 0
list.pop() //=> undefined
class List {
#data = []
push(n) {
this.#data = [n, this.#data]
return this
}
pop() {
const [head, tail] = this.#data
if (tail) this.#data = tail;
return head
}
toArray() { return this.#data.flat(Infinity) }
toString() { return String(this.toArray()) }
toJSON() { return this.toArray() }
}
const list = new List
list
.push(0)
.push(7)
.push(2)
console.log('文字列: ' + list) //=> 文字列: 2,7,0
console.log('JSON: ' + JSON.stringify(list))
//=> JSON: {"test":[2,7,0]}
list.pop() //=> 2
list.pop() //=> 7
list.pop() //=> 0
list.pop() //=> undefined
810デフォルトの名無しさん
2020/10/29(木) 21:13:39.21ID:wtq/xrTf うわ
console.log('JSON: ' + JSON.stringify({'test': list})) //=> JSON: {"test":[2,7,0]}
だった
console.log('JSON: ' + JSON.stringify({'test': list})) //=> JSON: {"test":[2,7,0]}
だった
811デフォルトの名無しさん
2020/10/29(木) 23:09:01.60ID:MaNQDMIt813デフォルトの名無しさん
2020/10/29(木) 23:24:39.19ID:3o7XtB23 >>787 ocaml
https://ideone.com/8ceFxk
type 'a _list = Nil | Cons of 'a * 'a _list
exception EmptyListException
let push xs x = Cons(x, xs)
let pop = function Nil -> raise EmptyListException | Cons (x, c) -> (x, c)
let rec each f = function Nil -> () | Cons (x, xs) -> f x; each f xs
let x, xs = pop (push (push (push Nil 1) 2) 3)
let () = print_int x; each print_int xs
https://ideone.com/8ceFxk
type 'a _list = Nil | Cons of 'a * 'a _list
exception EmptyListException
let push xs x = Cons(x, xs)
let pop = function Nil -> raise EmptyListException | Cons (x, c) -> (x, c)
let rec each f = function Nil -> () | Cons (x, xs) -> f x; each f xs
let x, xs = pop (push (push (push Nil 1) 2) 3)
let () = print_int x; each print_int xs
814デフォルトの名無しさん
2020/10/29(木) 23:26:08.36ID:GFOWX4AY815デフォルトの名無しさん
2020/10/30(金) 00:06:20.24ID:aDtUVDPI >>802を改良?
State [Int] だとあらかじめ用意した一個のstackしか使えない
噂に聞いたことあつたST monadで複数のスタック使えるように改造
Haskell
import Control.Monad
import Control.Monad.ST
import Data.STRef
data Stack a = Empty | N { car :: a, cdr :: Stack a } deriving (Show)
push stk val = modifySTRef stk (N val)
pop stk = car <$> readSTRef stk <* modifySTRef stk cdr
main = print $ runST $ do
sA <- newSTRef Empty
sB <- newSTRef Empty
push sA 'o' >> push sA 'o' >>push sA 'f'
push sB 'r' >> push sB 'a' >> push sB 'b'
a1<-pop sA
a2<-pop sA
a3<-pop sA
b1<-pop sB
b2<-pop sB
b3<-pop sB
return [a1,a2,a2,b1,b2,b3]
----
出力
"foobar"
State [Int] だとあらかじめ用意した一個のstackしか使えない
噂に聞いたことあつたST monadで複数のスタック使えるように改造
Haskell
import Control.Monad
import Control.Monad.ST
import Data.STRef
data Stack a = Empty | N { car :: a, cdr :: Stack a } deriving (Show)
push stk val = modifySTRef stk (N val)
pop stk = car <$> readSTRef stk <* modifySTRef stk cdr
main = print $ runST $ do
sA <- newSTRef Empty
sB <- newSTRef Empty
push sA 'o' >> push sA 'o' >>push sA 'f'
push sB 'r' >> push sB 'a' >> push sB 'b'
a1<-pop sA
a2<-pop sA
a3<-pop sA
b1<-pop sB
b2<-pop sB
b3<-pop sB
return [a1,a2,a2,b1,b2,b3]
----
出力
"foobar"
816253
2020/10/30(金) 00:07:47.66ID:hMjmzAXb >>787 Perl5
公式マニュアルに書かれている通りsplice関数を使ってpush, popを記述できる。
splice(@a,@a,0,$x); # push(@a, $x)
splice(@a,-1); # pop(@a)
なんだけどspliceを使わず言語のstatementだけでpush, pop関数を記述すると…こんな感じ
use v5.18;
use feature 'signatures';
no warnings "experimental::signatures";
sub Push($a, $x) {
@$a = (@$a, $x);
}
sub Pop($a) {
my @a = @$a;
my $b = $a[-1];
@$a = @a[0..$#a-1];
$b;
}
my @s = (1,2,3); # test main
Push(\@s, 4);
say "@s";
my $y = Pop(\@s);
say $y;
実行結果
~ $ perl 18_787_push_pop.pl
1 2 3 4
4
1 2 3
公式マニュアルに書かれている通りsplice関数を使ってpush, popを記述できる。
splice(@a,@a,0,$x); # push(@a, $x)
splice(@a,-1); # pop(@a)
なんだけどspliceを使わず言語のstatementだけでpush, pop関数を記述すると…こんな感じ
use v5.18;
use feature 'signatures';
no warnings "experimental::signatures";
sub Push($a, $x) {
@$a = (@$a, $x);
}
sub Pop($a) {
my @a = @$a;
my $b = $a[-1];
@$a = @a[0..$#a-1];
$b;
}
my @s = (1,2,3); # test main
Push(\@s, 4);
say "@s";
my $y = Pop(\@s);
say $y;
実行結果
~ $ perl 18_787_push_pop.pl
1 2 3 4
4
1 2 3
818253
2020/10/30(金) 00:22:38.86ID:hMjmzAXb819253
2020/10/30(金) 00:32:51.98ID:hMjmzAXb820253
2020/10/30(金) 00:34:30.90ID:hMjmzAXb821デフォルトの名無しさん
2020/10/30(金) 00:50:28.84ID:9RgBA+ge822デフォルトの名無しさん
2020/10/30(金) 02:22:50.19ID:9RgBA+ge823デフォルトの名無しさん
2020/10/30(金) 07:07:30.18ID:cChJ6BWU >>812
あ?
あ?
824デフォルトの名無しさん
2020/10/30(金) 23:30:40.86ID:hYhF3+Ov Brainfuck読めないわ
覚えようかな
覚えようかな
825デフォルトの名無しさん
2020/10/31(土) 13:49:55.42ID:QnYm1bfS お題
与えられた文字列を一文字ずつ見ていき"trick"と"treat"の5文字でどちらが先に揃うか判定してください(順序込み)
どちらもヒットしないときは考慮しなくていいです
treakOrTreat("trick or treat")
// => trick
treakOrTreat(". tr ick")
// => trick
treakOrTreat("ttrriecatk")
// => treat
treakOrTreat("tri kc eat")
// => treat
treakOrTreat("my money")
// => none
与えられた文字列を一文字ずつ見ていき"trick"と"treat"の5文字でどちらが先に揃うか判定してください(順序込み)
どちらもヒットしないときは考慮しなくていいです
treakOrTreat("trick or treat")
// => trick
treakOrTreat(". tr ick")
// => trick
treakOrTreat("ttrriecatk")
// => treat
treakOrTreat("tri kc eat")
// => treat
treakOrTreat("my money")
// => none
826デフォルトの名無しさん
2020/10/31(土) 13:51:26.24ID:QnYm1bfS >>825 js(self)
function treakOrTreat(text) {
const [tri] = /t.*r.*i.*c.*k/.exec(text) || []
const [tre] = /t.*r.*e.*a.*t/.exec(text) || []
if (!tri && !tre) return 'none'
if (!tri) return 'treat'
if (!tre) return 'trick'
return tri.length < tre.length ? "trick" : "treat"
}
function treakOrTreat(text) {
const [tri] = /t.*r.*i.*c.*k/.exec(text) || []
const [tre] = /t.*r.*e.*a.*t/.exec(text) || []
if (!tri && !tre) return 'none'
if (!tri) return 'treat'
if (!tre) return 'trick'
return tri.length < tre.length ? "trick" : "treat"
}
827デフォルトの名無しさん
2020/10/31(土) 14:54:50.69ID:HHhQTZ6R 関数名のミススペリングは修正していいですか
828デフォルトの名無しさん
2020/10/31(土) 15:02:04.99ID:QnYm1bfS ごっつtypoしてたすまんFIXME
829デフォルトの名無しさん
2020/10/31(土) 15:07:31.21ID:DmLmDhBA830デフォルトの名無しさん
2020/10/31(土) 15:33:31.91ID:I05R+wBh 相変わらずキモいなあ、いつもの勝手に認定キッズ
ミュートにしてるという情報から相手が雑魚であるというぶっ飛んだ推論をする知性の欠片も持ち合わせない負け組
ミュートにしてるという情報から相手が雑魚であるというぶっ飛んだ推論をする知性の欠片も持ち合わせない負け組
831デフォルトの名無しさん
2020/10/31(土) 15:36:09.16ID:DmLmDhBA832デフォルトの名無しさん
2020/10/31(土) 15:44:11.18ID:pGrSKCPz >>825 JavaScript
function trickOrTreat(str = '') {
const trick = [...'trick']
const treat = [...'treat']
let result = 'none'
for (const c of str) {
if (c === trick[0]) trick.shift()
if (c === treat[0]) treat.shift()
if (!trick.length || !treat.length) {
result = trick.length ? 'treat' : 'trick'
break;
}
}
console.log(result)
}
function trickOrTreat(str = '') {
const trick = [...'trick']
const treat = [...'treat']
let result = 'none'
for (const c of str) {
if (c === trick[0]) trick.shift()
if (c === treat[0]) treat.shift()
if (!trick.length || !treat.length) {
result = trick.length ? 'treat' : 'trick'
break;
}
}
console.log(result)
}
833デフォルトの名無しさん
2020/10/31(土) 15:54:22.22ID:i0S/O8KX834デフォルトの名無しさん
2020/10/31(土) 16:42:52.45ID:B0ELcd4k835デフォルトの名無しさん
2020/10/31(土) 17:10:35.46ID:M62mfk9p836デフォルトの名無しさん
2020/10/31(土) 17:42:14.32ID:/zmNVLOW837デフォルトの名無しさん
2020/10/31(土) 21:33:28.24ID:g64iH70d838デフォルトの名無しさん
2020/10/31(土) 21:58:58.47ID:t2sIU1o6 >>825 Ruby
def trickOrTreat( str )
trick = str.match( /\A.*?t.*?r.*?i.*?c.*?k/ )
treat = str.match( /\A.*?t.*?r.*?e.*?a.*?t/ )
return 'none' unless trick or treat
return 'trick' unless treat
return 'treat' unless trick
return (trick[0].size < treat[0].size)? 'trick' : 'treat'
end
[ "trick or treat", ". tr ick", "ttrriecatk", "tri kc eat", "my money",
"treat or trick", "treat or trick t",
].each{|s|
puts trickOrTreat( s )
}
def trickOrTreat( str )
trick = str.match( /\A.*?t.*?r.*?i.*?c.*?k/ )
treat = str.match( /\A.*?t.*?r.*?e.*?a.*?t/ )
return 'none' unless trick or treat
return 'trick' unless treat
return 'treat' unless trick
return (trick[0].size < treat[0].size)? 'trick' : 'treat'
end
[ "trick or treat", ". tr ick", "ttrriecatk", "tri kc eat", "my money",
"treat or trick", "treat or trick t",
].each{|s|
puts trickOrTreat( s )
}
839デフォルトの名無しさん
2020/10/31(土) 22:19:45.63ID:B0ELcd4k >>834
改定
やはりHaskellerがこのお題でparsec使わないのはダメという事で
Haskell
import Text.ParserCombinators.Parsec
makeP cs = foldl1 (<>) $ map (\c -> (many $ noneOf [c]) <> (return <$> anyChar) ) cs :: Parser String
first xs ys = case (runParser (makeP xs) () "" ys) of
Left _ -> (1, 0)
Right x -> (0, length x)
trickOrTreat x = case compare (first "trick" x) (first "treat" x) of
LT -> "trick"
GT -> "treat"
otherwise -> "Happy Halloween"
main = do
mapM_ (print.trickOrTreat) ["trick or treat", ". tr ick","ttrriecatk","tri kc eat","my money"]
改定
やはりHaskellerがこのお題でparsec使わないのはダメという事で
Haskell
import Text.ParserCombinators.Parsec
makeP cs = foldl1 (<>) $ map (\c -> (many $ noneOf [c]) <> (return <$> anyChar) ) cs :: Parser String
first xs ys = case (runParser (makeP xs) () "" ys) of
Left _ -> (1, 0)
Right x -> (0, length x)
trickOrTreat x = case compare (first "trick" x) (first "treat" x) of
LT -> "trick"
GT -> "treat"
otherwise -> "Happy Halloween"
main = do
mapM_ (print.trickOrTreat) ["trick or treat", ". tr ick","ttrriecatk","tri kc eat","my money"]
840デフォルトの名無しさん
2020/10/31(土) 22:49:38.34ID:pe+8/Oyn >>825
C
#include<stdio.h>
char* trickOrTreat(char*s, char*tk, char*tt){
if(!*tk)return "trick";
if(!*tt)return "treat";
if(!*s) return "none";
if(*s == *tk)tk++;
if(*s == *tt)tt++;
return trickOrTreat(s+1, tk, tt);
}
int main(void){
char* str[] = {"trick or treat", ". tr ick", "ttrriecatk", "tri kc eat", "my money",
"treat or trick", "treat or trick t",};
const int size = sizeof(str)/sizeof(str[0]);
char tk[] = "trick";
char tt[] = "treat";
int i;
for(i=0; i<size; i++){
printf("%s\n", trickOrTreat(str[i], tk, tt));
}
return 0;
}
C
#include<stdio.h>
char* trickOrTreat(char*s, char*tk, char*tt){
if(!*tk)return "trick";
if(!*tt)return "treat";
if(!*s) return "none";
if(*s == *tk)tk++;
if(*s == *tt)tt++;
return trickOrTreat(s+1, tk, tt);
}
int main(void){
char* str[] = {"trick or treat", ". tr ick", "ttrriecatk", "tri kc eat", "my money",
"treat or trick", "treat or trick t",};
const int size = sizeof(str)/sizeof(str[0]);
char tk[] = "trick";
char tt[] = "treat";
int i;
for(i=0; i<size; i++){
printf("%s\n", trickOrTreat(str[i], tk, tt));
}
return 0;
}
841253
2020/10/31(土) 22:58:55.98ID:i+h07tFB >>825 Perl5
for (<DATA>) {
chomp;
%h = map{$_ => [split'']} qw{trick treat};
$k = 'none';
for $c (split'') {
for (keys %h) {
$r = $h{$_};
shift(@$r) if $c eq $$r[0];
unless (@$r) { $k = $_; goto L }
}
}
L: print "$_ -> $k\n";
}
__DATA__
trick or treat
. tr ick
ttrriecatk
tri kc eat
my money
実行結果
~ $ perl 18_825_trickOrTreat.pl
trick or treat -> trick
. tr ick -> trick
ttrriecatk -> treat
tri kc eat -> treat
my money -> none
for (<DATA>) {
chomp;
%h = map{$_ => [split'']} qw{trick treat};
$k = 'none';
for $c (split'') {
for (keys %h) {
$r = $h{$_};
shift(@$r) if $c eq $$r[0];
unless (@$r) { $k = $_; goto L }
}
}
L: print "$_ -> $k\n";
}
__DATA__
trick or treat
. tr ick
ttrriecatk
tri kc eat
my money
実行結果
~ $ perl 18_825_trickOrTreat.pl
trick or treat -> trick
. tr ick -> trick
ttrriecatk -> treat
tri kc eat -> treat
my money -> none
842デフォルトの名無しさん
2020/10/31(土) 23:10:35.06ID:8FYB/kmH >>841
なんでお前ずっとコテハンつけてんの?
なんでお前ずっとコテハンつけてんの?
843253
2020/10/31(土) 23:20:38.29ID:i+h07tFB >>842 IPアドレスがたまに変わるのと自分のレスを見分けやすくするため。固定ではなく番号はたまに変えてる
気にしないで
気にしないで
844デフォルトの名無しさん
2020/10/31(土) 23:26:17.77ID:OVAIfmUR845デフォルトの名無しさん
2020/10/31(土) 23:27:34.12ID:wd4K8eMC >>843
専ブラ使えばいいのに
専ブラ使えばいいのに
846253
2020/10/31(土) 23:32:26.70ID:i+h07tFB848デフォルトの名無しさん
2020/10/31(土) 23:54:01.35ID:OVAIfmUR849デフォルトの名無しさん
2020/11/01(日) 00:59:27.52ID:KABEK1ar >>825
Ruby
text = <<'TEXT'
trick or treat
. tr ick
ttrriecatk
tri kc eat
my money
TEXT
# 配列化
Trick = "trick".chars
Treat = "treat".chars
次へ続く
Ruby
text = <<'TEXT'
trick or treat
. tr ick
ttrriecatk
tri kc eat
my money
TEXT
# 配列化
Trick = "trick".chars
Treat = "treat".chars
次へ続く
850849
2020/11/01(日) 01:00:32.73ID:KABEK1ar >>849
の続き
def find_index( str, original )
idx_2 = 0
str.each_char.with_index do |char, idx| # 1文字ずつ処理する
idx_2 += 1 if char == original[ idx_2 ]
return idx if idx_2 == original.length # すべての文字が一致
end
nil
end
results = text.each_line.map do |line|
trick = find_index( line, Trick )
treat = find_index( line, Treat )
if !( trick || treat ) then "none"
elsif !trick then "treat"
elsif !treat then "trick"
elsif trick < treat then "trick"
elsif trick > treat then "treat"
else "same"
end
end
p results
#=> ["trick", "trick", "treat", "treat", "none"]
の続き
def find_index( str, original )
idx_2 = 0
str.each_char.with_index do |char, idx| # 1文字ずつ処理する
idx_2 += 1 if char == original[ idx_2 ]
return idx if idx_2 == original.length # すべての文字が一致
end
nil
end
results = text.each_line.map do |line|
trick = find_index( line, Trick )
treat = find_index( line, Treat )
if !( trick || treat ) then "none"
elsif !trick then "treat"
elsif !treat then "trick"
elsif trick < treat then "trick"
elsif trick > treat then "treat"
else "same"
end
end
p results
#=> ["trick", "trick", "treat", "treat", "none"]
851デフォルトの名無しさん
2020/11/01(日) 01:29:12.30ID:17LNcGyj852デフォルトの名無しさん
2020/11/01(日) 01:49:31.61ID:17LNcGyj853838
2020/11/01(日) 12:58:01.92ID:g/v4ZA9S >>825 Ruby
正規表現を捨てて index+inject に
def trickOrTreat( str )
trick = 'trick'.chars.inject(-1){|r,ch| break r unless r = str.index( ch, r+1 ); r }
treat = 'treat'.chars.inject(-1){|r,ch| break r unless r = str.index( ch, r+1 ); r }
return 'none' unless trick or treat
return 'trick' unless treat
return 'treat' unless trick
return (trick < treat)? 'trick' : 'treat'
end
[ "trick or treat", ". tr ick", "ttrriecatk", "tri kc eat", "my money",
"treat or trick", "treat or trick t",
].each{|s|
puts trickOrTreat( s )
}
正規表現を捨てて index+inject に
def trickOrTreat( str )
trick = 'trick'.chars.inject(-1){|r,ch| break r unless r = str.index( ch, r+1 ); r }
treat = 'treat'.chars.inject(-1){|r,ch| break r unless r = str.index( ch, r+1 ); r }
return 'none' unless trick or treat
return 'trick' unless treat
return 'treat' unless trick
return (trick < treat)? 'trick' : 'treat'
end
[ "trick or treat", ". tr ick", "ttrriecatk", "tri kc eat", "my money",
"treat or trick", "treat or trick t",
].each{|s|
puts trickOrTreat( s )
}
854蟻人間 ◆T6xkBnTXz7B0
2020/11/01(日) 14:40:36.23ID:wOVD56Lv お題:大阪都構想が実現すると、現在の大阪市は消滅すると予想される。都構想実現前の住所を実現後の住所に変換しなさい。
855デフォルトの名無しさん
2020/11/01(日) 16:05:05.76ID:+nQAPqAx 次行ってみよう
856蟻人間 ◆T6xkBnTXz7B0
2020/11/01(日) 16:41:27.74ID:wOVD56Lv857蟻人間 ◆T6xkBnTXz7B0
2020/11/01(日) 16:44:49.88ID:wOVD56Lv858デフォルトの名無しさん
2020/11/01(日) 16:51:14.83ID:VQGUeFT5 お前らは競技プログラミングとかやってる?
859253
2020/11/01(日) 16:54:48.84ID:I8lyxV1q >>858
やろうとしたことはあるがまだ未経験
何か受験勉強みたいになっちゃってるコンテストには魅力を感じない
でも世界トップレベルは年間4000万くらい賞金稼ぐとい話をきいてそういうのにはちょっと惹かれる
やろうとしたことはあるがまだ未経験
何か受験勉強みたいになっちゃってるコンテストには魅力を感じない
でも世界トップレベルは年間4000万くらい賞金稼ぐとい話をきいてそういうのにはちょっと惹かれる
861デフォルトの名無しさん
2020/11/01(日) 17:18:29.18ID:EgIfcLXC バカにしてるのはおまえ
他所の住所変更地の状況知らんのか?50年前の住所でも年賀届くわ
数年〜十数年或いはそれ以上旧住所で配送可能。舐めすぎ
他所の住所変更地の状況知らんのか?50年前の住所でも年賀届くわ
数年〜十数年或いはそれ以上旧住所で配送可能。舐めすぎ
862デフォルトの名無しさん
2020/11/01(日) 17:31:11.77ID:+nQAPqAx863デフォルトの名無しさん
2020/11/01(日) 17:35:33.69ID:S9fsJ+JS データ引っ張ってくるだけじゃん
ただの知識問題は悪問
ただの知識問題は悪問
864デフォルトの名無しさん
2020/11/01(日) 18:32:31.31ID:erpRcPg0 やってみたが
競技系はプログラミングのスキル向上には役立たんよ
競技系はプログラミングのスキル向上には役立たんよ
865デフォルトの名無しさん
2020/11/01(日) 18:50:53.93ID:4+fLUvoM >>857
このサイト気持ち悪いな
このサイト気持ち悪いな
867デフォルトの名無しさん
2020/11/01(日) 19:57:24.03ID:wWMHVvTS >>866
消えろ
消えろ
869デフォルトの名無しさん
2020/11/02(月) 00:22:13.64ID:bEILeQs7870デフォルトの名無しさん
2020/11/02(月) 04:28:03.49ID:2/AbCXtL871デフォルトの名無しさん
2020/11/02(月) 04:45:05.89ID:BfD57ecO "trick"と"treat"を受理するオートマトンを作って
入力文字列から1文字ずつ与えて状態遷移(または待機)させていく
末尾まで先に受理されたほうを答えとする
みたいなことだけ考えた
入力文字列から1文字ずつ与えて状態遷移(または待機)させていく
末尾まで先に受理されたほうを答えとする
みたいなことだけ考えた
872デフォルトの名無しさん
2020/11/02(月) 04:48:28.19ID:BfD57ecO けど実装すると無駄にでかくなりそう
873デフォルトの名無しさん
2020/11/02(月) 10:04:22.80ID:/BOVDIIM オートマトンって言語でなんか表現できる構造ある?
874デフォルトの名無しさん
2020/11/02(月) 10:41:03.91ID:5JhQS2vf 正規表現で表現できる⇔オートマトンで受理できる
でしょ?
今回なら入力xに対し出力がtrickである場合を
[^t]*t[^r]*r[^ie]*i[^ce]*c[^ke]*k.*
|[^t]*t[^r]*r[^ie]*i[^ce]*c[^ke]*e[^ka]*k.*
...
(10パターン)
....
と正規表現だけで表現できてしまう
でしょ?
今回なら入力xに対し出力がtrickである場合を
[^t]*t[^r]*r[^ie]*i[^ce]*c[^ke]*k.*
|[^t]*t[^r]*r[^ie]*i[^ce]*c[^ke]*e[^ka]*k.*
...
(10パターン)
....
と正規表現だけで表現できてしまう
875蟻人間 ◆T6xkBnTXz7B0
2020/11/02(月) 12:23:25.05ID:iXWhExA8 お題:パラボラアンテナが理論上の焦点に電波を集めることを示しなさい。
パラボラアンテナの半径を100とし、原点を中心にx軸上に焦点が来るように配置する。x軸と平行に電波がアンテナに入ってきて、入射角と反射角が等しくなるように電波が反射する。
このとき、どの場所で反射しても、反射した電波を表す直線が理論上の焦点に十分近づくことを示せ。
パラボラアンテナの半径を100とし、原点を中心にx軸上に焦点が来るように配置する。x軸と平行に電波がアンテナに入ってきて、入射角と反射角が等しくなるように電波が反射する。
このとき、どの場所で反射しても、反射した電波を表す直線が理論上の焦点に十分近づくことを示せ。
876デフォルトの名無しさん
2020/11/02(月) 12:23:58.15ID:UfGVYnOo まじでセンスないな
877デフォルトの名無しさん
2020/11/02(月) 12:36:09.22ID:zo3ZJgwO パラボラアンテナの半径ってどこのことだよ
878デフォルトの名無しさん
2020/11/02(月) 13:43:55.18ID:gftnEWfN879デフォルトの名無しさん
2020/11/02(月) 14:26:45.62ID:vIueiXdU >>825 .bat
@echo off &setlocal enabledelayedexpansion
if "%~1"=="" echo none&exit /b
set "STR=%~1"
set TRICK=trick
set TREAT=treat
set /a n=0, k=0, t=0
:WHILE
if /i "!STR:~%n%,1!"=="!TRICK:~%k%,1!" if %k% LSS 4 ( set /a k+=1 ) else echo trick&exit /b
if /i "!STR:~%n%,1!"=="!TREAT:~%t%,1!" if %t% LSS 4 ( set /a t+=1 ) else echo treat&exit /b
set /a n+=1
if not "!STR:~%n%,1!"=="" goto :WHILE
echo none&exit /b
@echo off &setlocal enabledelayedexpansion
if "%~1"=="" echo none&exit /b
set "STR=%~1"
set TRICK=trick
set TREAT=treat
set /a n=0, k=0, t=0
:WHILE
if /i "!STR:~%n%,1!"=="!TRICK:~%k%,1!" if %k% LSS 4 ( set /a k+=1 ) else echo trick&exit /b
if /i "!STR:~%n%,1!"=="!TREAT:~%t%,1!" if %t% LSS 4 ( set /a t+=1 ) else echo treat&exit /b
set /a n+=1
if not "!STR:~%n%,1!"=="" goto :WHILE
echo none&exit /b
880デフォルトの名無しさん
2020/11/02(月) 18:10:30.68ID:Ac4tp6ZL >>825
Haskell
https://ideone.com/wg9JbO
iimport Text.ParserCombinators.Parsec
makeP = mconcat . map ( manyTill anyChar . char )
lastInd x s = case ( runParser ( makeP x ) () "" s ) of
Left _ -> ( [ 2, 0 ] , x )
Right y -> ( [ 0, length $ x ++ y ], x )
trickOrTreat x = snd $ minimum [
lastInd "trick" x,
lastInd "treat" x,
( [1,0], "Happy Halloween" ) ]
main = mapM_ ( print . trickOrTreat ) [
"trick or treat",
". tr ick",
"ttrriecatk",
"tri kc eat",
"my money" ]
Haskell
https://ideone.com/wg9JbO
iimport Text.ParserCombinators.Parsec
makeP = mconcat . map ( manyTill anyChar . char )
lastInd x s = case ( runParser ( makeP x ) () "" s ) of
Left _ -> ( [ 2, 0 ] , x )
Right y -> ( [ 0, length $ x ++ y ], x )
trickOrTreat x = snd $ minimum [
lastInd "trick" x,
lastInd "treat" x,
( [1,0], "Happy Halloween" ) ]
main = mapM_ ( print . trickOrTreat ) [
"trick or treat",
". tr ick",
"ttrriecatk",
"tri kc eat",
"my money" ]
881デフォルトの名無しさん
2020/11/02(月) 19:01:54.49ID:hORytTpS >>825
#include <stdio.h>
#include <string.h>
static void
tot (char *p)
{
int i = 0, j = 0;
if ((p = strchr (p, 't')) && (p = strchr (p + 1, 'r')))
while (*++p && !(*p == "ick"[i] && ++i == 3) && !(*p == "eat"[j] && ++j == 3)) ;
printf ("%s\n", (i == 3) ? "trick" : ((j == 3) ? "treat" : "none"));
}
int
main ()
{
tot ("trick or treat");
tot (". tr ick");
tot ("ttrriecatk");
tot ("tri kc eat");
tot ("my money");
}
#include <stdio.h>
#include <string.h>
static void
tot (char *p)
{
int i = 0, j = 0;
if ((p = strchr (p, 't')) && (p = strchr (p + 1, 'r')))
while (*++p && !(*p == "ick"[i] && ++i == 3) && !(*p == "eat"[j] && ++j == 3)) ;
printf ("%s\n", (i == 3) ? "trick" : ((j == 3) ? "treat" : "none"));
}
int
main ()
{
tot ("trick or treat");
tot (". tr ick");
tot ("ttrriecatk");
tot ("tri kc eat");
tot ("my money");
}
882デフォルトの名無しさん
2020/11/02(月) 19:55:30.38ID:0Q72CsT7 お題
アスペクト比X:Y、L[inch]のディスプレイの
幅Wと高さHをcm単位でそれぞれ求めよ
[入力]
X Y L
[出力]
W H ※cm単位で小数第1位まで出力
[例]
16 9 40
=> 88.6 49.8
64 27 29
=> 67.9 28.6
3 4 10.2
=> 15.5 20.7
アスペクト比X:Y、L[inch]のディスプレイの
幅Wと高さHをcm単位でそれぞれ求めよ
[入力]
X Y L
[出力]
W H ※cm単位で小数第1位まで出力
[例]
16 9 40
=> 88.6 49.8
64 27 29
=> 67.9 28.6
3 4 10.2
=> 15.5 20.7
883869
2020/11/02(月) 20:41:57.79ID:PEXljxha884デフォルトの名無しさん
2020/11/02(月) 20:50:30.27ID:LqVECFSh885デフォルトの名無しさん
2020/11/02(月) 20:55:38.75ID:UfGVYnOo >>882
実用的じゃん
実用的じゃん
886デフォルトの名無しさん
2020/11/02(月) 21:39:44.31ID:PEXljxha887デフォルトの名無しさん
2020/11/02(月) 22:00:22.68ID:PEXljxha888デフォルトの名無しさん
2020/11/02(月) 22:02:25.78ID:i1cL0pVh >>875
消えろ
消えろ
889デフォルトの名無しさん
2020/11/02(月) 22:12:37.48ID:2/AbCXtL890デフォルトの名無しさん
2020/11/02(月) 23:19:41.46ID:ZpVsHyOp >>882 JavaScript
const f=(x, y, l) => [x, y].map(i => (i * 2.54 * l / Math.sqrt(x ** 2 + y ** 2)).toFixed(1))
console.log(...f(16, 9, 40))
console.log(...f(64, 27, 29))
console.log(...f(3, 4, 10.2))
const f=(x, y, l) => [x, y].map(i => (i * 2.54 * l / Math.sqrt(x ** 2 + y ** 2)).toFixed(1))
console.log(...f(16, 9, 40))
console.log(...f(64, 27, 29))
console.log(...f(3, 4, 10.2))
891デフォルトの名無しさん
2020/11/03(火) 00:18:12.81ID:1BjkDVvF >>882
Hadkell
cmpin =2.54
r10 = (/10).fromInteger.round.(*10)
toWH (x, y, sz) = let
arg = atan2 y x
diag = sz * cmpin
in ( r10 $ (cos arg) * diag , r10 $ (sin arg) * diag )
main = mapM_ ( print . toWH) [
(16, 9, 40),
(64,27,29),
(3,4, 10.2) ]
Hadkell
cmpin =2.54
r10 = (/10).fromInteger.round.(*10)
toWH (x, y, sz) = let
arg = atan2 y x
diag = sz * cmpin
in ( r10 $ (cos arg) * diag , r10 $ (sin arg) * diag )
main = mapM_ ( print . toWH) [
(16, 9, 40),
(64,27,29),
(3,4, 10.2) ]
892デフォルトの名無しさん
2020/11/03(火) 01:33:31.56ID:psuX0FGw お題
{1,2,3,4,5,6,7,8}
を幾つかの共通部分を持たない空でない集合にわけるやり方を完全列挙
例えば
{1,6}+{2,8}+{3,4,5,7}
と
{2,8}+{1,6}+{3,4,5,7}
は同じやり方になるので二重カウントしないこと
{1,2,3,4,5,6,7,8}
を幾つかの共通部分を持たない空でない集合にわけるやり方を完全列挙
例えば
{1,6}+{2,8}+{3,4,5,7}
と
{2,8}+{1,6}+{3,4,5,7}
は同じやり方になるので二重カウントしないこと
893デフォルトの名無しさん
2020/11/03(火) 02:32:26.13ID:yN+x511c >>892
[1..8]は流石にtoo large
haskell
import Data.List
parts [] = [ [ ] ]
parts [x] = [ [ [x] ] ]
parts ( x : xs ) = [ (x : ys) : zs |
ys <- subsequences xs,
zs <- parts $ xs \\ ys ]
main = do
print $ parts [2,3]
print $ parts [1,2,3]
print $ length $ parts [1..8]
----
[[[2],[3]],[[2,3]]]
[[[1],[2],[3]],[[1],[2,3]],[[1,2],[3]],[[1,3],[2]],[[1,2,3]]]
4140
[1..8]は流石にtoo large
haskell
import Data.List
parts [] = [ [ ] ]
parts [x] = [ [ [x] ] ]
parts ( x : xs ) = [ (x : ys) : zs |
ys <- subsequences xs,
zs <- parts $ xs \\ ys ]
main = do
print $ parts [2,3]
print $ parts [1,2,3]
print $ length $ parts [1..8]
----
[[[2],[3]],[[2,3]]]
[[[1],[2],[3]],[[1],[2,3]],[[1,2],[3]],[[1,3],[2]],[[1,2,3]]]
4140
894デフォルトの名無しさん
2020/11/03(火) 08:10:12.54ID:WKYb8LN0 >>893
きれいだな
きれいだな
895デフォルトの名無しさん
2020/11/03(火) 09:07:39.02ID:psuX0FGw A:={1,2,3,4,5,6,7,8};
A_1:={A};
A_2:={ {a,b} \subset 2^A | a+b=A,~a+~b=A };
A_3:={ {a,b,c} \subset 2^A | a+b+c=A,~a+~b+~c=A };
A_4:={ {a,b,c,d} \subset 2^A | a+b+c+d=A,~a+~b+~c+~d=A };
A_5:={ {a,b,c,d,e} \subset 2^A | a+b+c+d+e=A,~a+~b+~c+~d+~e=A };
A_6:={ {a,b,c,d,e,f} \subset 2^A | a+b+c+d+e+f=A,~a+~b+~c+~d+~e+~f=A };
A_7:={ {a,b,c,d,e,f,g} \subset 2^A | a+b+c+d+e+f+g=A,~a+~b+~c+~d+~e+~f+~g=A };
A_8:={ {a,b,c,d,e,f,g,h} \subset 2^A| a+b+c+d+e+f+g+h=A,~a+~b+~c+~d+~e+~f+~g+~h=A};
B:=A_1+A_2+A_3+A_4+A_5+A_6+A_7+A_8;
count[expand B];
1:{{1},{2},{3},{4},{5},{6},{7},{8}}
2:{{1},{2},{3},{4},{5},{6},{7,8}}
3:{{1},{2},{3},{4},{5},{7},{6,8}}
4:{{1},{2},{3},{4},{5},{8},{6,7}}
5:{{1},{2},{3},{4},{5},{6,7,8}}
6:{{1},{2},{3},{4},{6},{7},{5,8}}
7:{{1},{2},{3},{4},{6},{8},{5,7}}
8:{{1},{2},{3},{4},{6},{5,7,8}}
9:{{1},{2},{3},{4},{5,6},{7,8}}
10:{{1},{2},{3},{4},{7},{8},{5,6}}
11:{{1},{2},{3},{4},{7},{5,6,8}}
12:{{1},{2},{3},{4},{5,7},{6,8}}
...中略....
4135:{{2,7,8},{1,3,4,5,6}}
4136:{{3,7,8},{1,2,4,5,6}}
4137:{{4,7,8},{1,2,3,5,6}}
4138:{{5,7,8},{1,2,3,4,6}}
4139:{{6,7,8},{1,2,3,4,5}}
4140:{{1,2,3,4,5,6,7,8}}
A_1:={A};
A_2:={ {a,b} \subset 2^A | a+b=A,~a+~b=A };
A_3:={ {a,b,c} \subset 2^A | a+b+c=A,~a+~b+~c=A };
A_4:={ {a,b,c,d} \subset 2^A | a+b+c+d=A,~a+~b+~c+~d=A };
A_5:={ {a,b,c,d,e} \subset 2^A | a+b+c+d+e=A,~a+~b+~c+~d+~e=A };
A_6:={ {a,b,c,d,e,f} \subset 2^A | a+b+c+d+e+f=A,~a+~b+~c+~d+~e+~f=A };
A_7:={ {a,b,c,d,e,f,g} \subset 2^A | a+b+c+d+e+f+g=A,~a+~b+~c+~d+~e+~f+~g=A };
A_8:={ {a,b,c,d,e,f,g,h} \subset 2^A| a+b+c+d+e+f+g+h=A,~a+~b+~c+~d+~e+~f+~g+~h=A};
B:=A_1+A_2+A_3+A_4+A_5+A_6+A_7+A_8;
count[expand B];
1:{{1},{2},{3},{4},{5},{6},{7},{8}}
2:{{1},{2},{3},{4},{5},{6},{7,8}}
3:{{1},{2},{3},{4},{5},{7},{6,8}}
4:{{1},{2},{3},{4},{5},{8},{6,7}}
5:{{1},{2},{3},{4},{5},{6,7,8}}
6:{{1},{2},{3},{4},{6},{7},{5,8}}
7:{{1},{2},{3},{4},{6},{8},{5,7}}
8:{{1},{2},{3},{4},{6},{5,7,8}}
9:{{1},{2},{3},{4},{5,6},{7,8}}
10:{{1},{2},{3},{4},{7},{8},{5,6}}
11:{{1},{2},{3},{4},{7},{5,6,8}}
12:{{1},{2},{3},{4},{5,7},{6,8}}
...中略....
4135:{{2,7,8},{1,3,4,5,6}}
4136:{{3,7,8},{1,2,4,5,6}}
4137:{{4,7,8},{1,2,3,5,6}}
4138:{{5,7,8},{1,2,3,4,6}}
4139:{{6,7,8},{1,2,3,4,5}}
4140:{{1,2,3,4,5,6,7,8}}
896デフォルトの名無しさん
2020/11/03(火) 09:10:16.73ID:psuX0FGw897デフォルトの名無しさん
2020/11/03(火) 09:15:47.91ID:psuX0FGw 間違ってたときのコード貼ってしまったw
~a+~b=A
とかは要らなかったw
a+b=A
とかだけでよかった
a \cup bが普通の和集合ね。
~a+~b=A
とかは要らなかったw
a+b=A
とかだけでよかった
a \cup bが普通の和集合ね。
898デフォルトの名無しさん
2020/11/03(火) 21:04:35.96ID:eC8ouzxK >>882 bat
:: 引数は整数限定。結果は少数第2位を四捨五入。0〜0.04の時のみ少数第2位まで表示
:: 少し大き目の値を与えるとoverflow
@echo off &setlocal enabledelayedexpansion
set /a "x=%1*100, y=%2*100, z=0, d=%3*254, s=x*x+y*y, a=s>>1"
:WHILE
if %a% NEQ %z% set /a "z=a, a=(a+s/a)>>1" &goto :WHILE
set /a w=x*d/a, h=y*d/a
for %%G in (w h) do (
if !%%G:~-1! GEQ 5 set /a %%G+=10
if !%%G! GEQ 100 ( set %%G=!%%G:~0,-2!.!%%G:~-2,1!
) else if !%%G! GEQ 10 ( set %%G=0.!%%G:~-2,1!
) else if !%%G! GEQ 1 ( set %%G=0.0!%%G!
) else if !%%G! EQU 0 ( set %%G=0.00
) else echo ERROR: %%G=!%%G!
)
echo=%w% %h%
:: 引数は整数限定。結果は少数第2位を四捨五入。0〜0.04の時のみ少数第2位まで表示
:: 少し大き目の値を与えるとoverflow
@echo off &setlocal enabledelayedexpansion
set /a "x=%1*100, y=%2*100, z=0, d=%3*254, s=x*x+y*y, a=s>>1"
:WHILE
if %a% NEQ %z% set /a "z=a, a=(a+s/a)>>1" &goto :WHILE
set /a w=x*d/a, h=y*d/a
for %%G in (w h) do (
if !%%G:~-1! GEQ 5 set /a %%G+=10
if !%%G! GEQ 100 ( set %%G=!%%G:~0,-2!.!%%G:~-2,1!
) else if !%%G! GEQ 10 ( set %%G=0.!%%G:~-2,1!
) else if !%%G! GEQ 1 ( set %%G=0.0!%%G!
) else if !%%G! EQU 0 ( set %%G=0.00
) else echo ERROR: %%G=!%%G!
)
echo=%w% %h%
899デフォルトの名無しさん
2020/11/04(水) 00:20:20.72ID:rxWDSDf0 >>882 Lua
function f(x, y, l)
local a =2.54 * l / (x * x + y * y)^0.5
return x * a , y * a
end
print(string.format("%.1f , %.1f", f(16, 9, 40)))
実行結果
88.6 , 49.8
function f(x, y, l)
local a =2.54 * l / (x * x + y * y)^0.5
return x * a , y * a
end
print(string.format("%.1f , %.1f", f(16, 9, 40)))
実行結果
88.6 , 49.8
900デフォルトの名無しさん
2020/11/04(水) 00:20:22.20ID:kNuSoIVx windows知らんけど
バッチ・ファイルすげぇなww
バッチ・ファイルすげぇなww
901デフォルトの名無しさん
2020/11/04(水) 20:24:03.31ID:uO47xEs9902デフォルトの名無しさん
2020/11/05(木) 03:19:19.40ID:EuRO0zRP903デフォルトの名無しさん
2020/11/05(木) 20:02:28.58ID:pDv0veJc お題
'□'(正方形)と'_'(空白)で表される図形を45度回転して描画せよ。
[例1]
□
/\
\/
[例2]
___□
□□_□
_□□□
/\
\/\
/\/ /\
\/\/\/
\/\/
\/
'□'(正方形)と'_'(空白)で表される図形を45度回転して描画せよ。
[例1]
□
/\
\/
[例2]
___□
□□_□
_□□□
/\
\/\
/\/ /\
\/\/\/
\/\/
\/
904デフォルトの名無しさん
2020/11/05(木) 20:47:59.87ID:uObXfCng デカくなっててワロタ
良さげなお題
良さげなお題
905デフォルトの名無しさん
2020/11/05(木) 23:31:16.69ID:5bWXoO+B906デフォルトの名無しさん
2020/11/05(木) 23:39:12.30ID:W9kenpkY907デフォルトの名無しさん
2020/11/05(木) 23:40:00.35ID:uObXfCng :scale(2)もしとけ
908デフォルトの名無しさん
2020/11/06(金) 01:21:28.35ID:DUBJiW5Z909デフォルトの名無しさん
2020/11/06(金) 03:01:56.79ID:2mWV4tVe910253
2020/11/06(金) 13:23:23.40ID:1EHNC/LO >>892 Perl5
use feature qw{current_sub say};
use Data::Dump 'dump';
@a = sub{
my $l = pop;
@_ ? ( map{
sub{
map{
sub{
sub{
push @{$_[$_]}, $l;
[@_]
}->(map{[@$_]} @_);
}->(@_)
} 0..@_
}->(@$_)
} __SUB__->(@_) ) : [[$l]];
}->(1..8);
say dump @a;
say scalar @a;
実行結果
~ $ perl 18_892.pl
(
[[1 .. 8]],
[[1 .. 7], [8]],
… 中略
[[1], [2], [3], [4], [5], [6], [7, 8]],
[[1], [2], [3], [4], [5], [6], [7], [8]],
)
4140
use feature qw{current_sub say};
use Data::Dump 'dump';
@a = sub{
my $l = pop;
@_ ? ( map{
sub{
map{
sub{
sub{
push @{$_[$_]}, $l;
[@_]
}->(map{[@$_]} @_);
}->(@_)
} 0..@_
}->(@$_)
} __SUB__->(@_) ) : [[$l]];
}->(1..8);
say dump @a;
say scalar @a;
実行結果
~ $ perl 18_892.pl
(
[[1 .. 8]],
[[1 .. 7], [8]],
… 中略
[[1], [2], [3], [4], [5], [6], [7, 8]],
[[1], [2], [3], [4], [5], [6], [7], [8]],
)
4140
911デフォルトの名無しさん
2020/11/06(金) 13:24:39.43ID:DUBJiW5Z912デフォルトの名無しさん
2020/11/07(土) 15:16:17.29ID:dGj5mxP2 sed 's/□/◇/g'
あ、いや、なんでもないです。忘れてください。
あ、いや、なんでもないです。忘れてください。
913デフォルトの名無しさん
2020/11/07(土) 15:50:17.56ID:0+q2MsjY >>903 bat
@echo off &setlocal enabledelayedexpansion
if "%~1"=="" set "this=%~0" &"%~0" "□"
set /a n=0, Hmax=0
:GET_ARG
set "arg%n%=%~1"
set "arg%n%=!arg%n%:_=0 !"
set "arg%n%=!arg%n%:□=1 !"
shift
if not "%~1"=="" set /a n+=1 &goto :GET_ARG
for /L %%i in (0,1,%n%) do ( set h=0
for %%b in (!arg%%i!) do set /a a[%%i;!h!]=%%b, h+=1
if !h! GTR !Hmax! set /a Hmax=h
)
set /a t=n+Hmax, Hmax-=1
for /L %%a in (0,1,%t%) do for /L %%b in (0,1,%t%) do set R[%%a;%%b]=0
for /L %%a in (0,1,%n%) do for /L %%b in (0,1,%Hmax%) do (
set /a A=%%a+%%b, B=a+1, C=n+%%b-%%a, D=c+1
set /a "R[!A!;!C!]|=a[%%a;%%b], R[!A!;!D!]|=a[%%a;%%b], R[!B!;!C!]|=a[%%a;%%b], R[!B!;!D!]|=a[%%a;%%b]"
REM orをxorに替えればアウトライン表示
)
:: for /L %%A in (0,1,%t%) do (for /L %%B in (0,1,%t%) do set "P%%A=!P%%A!!R[%%A;%%B]!") &echo !P%%A!
for /L %%A in (0,1,%t%) do (
for /L %%B in (0,1,%t%) do (
set /a "M=%%A+%%B, M%%=2"
if "!R[%%A;%%B]!"=="0" (set "S%%A=!S%%A! ") else if "!M!"=="0" (set "S%%A=!S%%A!/") else set "S%%A=!S%%A!\"
)
echo=!S%%A!
)
endlocal
if not "%~0"=="_□□□" "%this%" "___□" "□□_□" "_□□□"
pause &exit /b
@echo off &setlocal enabledelayedexpansion
if "%~1"=="" set "this=%~0" &"%~0" "□"
set /a n=0, Hmax=0
:GET_ARG
set "arg%n%=%~1"
set "arg%n%=!arg%n%:_=0 !"
set "arg%n%=!arg%n%:□=1 !"
shift
if not "%~1"=="" set /a n+=1 &goto :GET_ARG
for /L %%i in (0,1,%n%) do ( set h=0
for %%b in (!arg%%i!) do set /a a[%%i;!h!]=%%b, h+=1
if !h! GTR !Hmax! set /a Hmax=h
)
set /a t=n+Hmax, Hmax-=1
for /L %%a in (0,1,%t%) do for /L %%b in (0,1,%t%) do set R[%%a;%%b]=0
for /L %%a in (0,1,%n%) do for /L %%b in (0,1,%Hmax%) do (
set /a A=%%a+%%b, B=a+1, C=n+%%b-%%a, D=c+1
set /a "R[!A!;!C!]|=a[%%a;%%b], R[!A!;!D!]|=a[%%a;%%b], R[!B!;!C!]|=a[%%a;%%b], R[!B!;!D!]|=a[%%a;%%b]"
REM orをxorに替えればアウトライン表示
)
:: for /L %%A in (0,1,%t%) do (for /L %%B in (0,1,%t%) do set "P%%A=!P%%A!!R[%%A;%%B]!") &echo !P%%A!
for /L %%A in (0,1,%t%) do (
for /L %%B in (0,1,%t%) do (
set /a "M=%%A+%%B, M%%=2"
if "!R[%%A;%%B]!"=="0" (set "S%%A=!S%%A! ") else if "!M!"=="0" (set "S%%A=!S%%A!/") else set "S%%A=!S%%A!\"
)
echo=!S%%A!
)
endlocal
if not "%~0"=="_□□□" "%this%" "___□" "□□_□" "_□□□"
pause &exit /b
914デフォルトの名無しさん
2020/11/07(土) 19:47:28.12ID:/E6xY+R5 バッチでやるとかいい根性してる
915デフォルトの名無しさん
2020/11/07(土) 21:06:37.63ID:anINQjB0916デフォルトの名無しさん
2020/11/07(土) 22:21:52.44ID:alCltY04 >>907
scale(1.41421356)でしょ
scale(1.41421356)でしょ
917デフォルトの名無しさん
2020/11/07(土) 23:04:28.88ID:zLEnd997918デフォルトの名無しさん
2020/11/08(日) 00:05:04.78ID:DLA7KrcO919デフォルトの名無しさん
2020/11/08(日) 00:15:55.29ID:ct8WHwWl バッチよくやってるな
batにトランスパイルできるもっといい感じの構文の言語とかないの
batにトランスパイルできるもっといい感じの構文の言語とかないの
920デフォルトの名無しさん
2020/11/08(日) 02:24:23.73ID:vLTv8mzL バッチで>>892やる猛者はいないのか?
QZならできそうだがだんまりか?
QZならできそうだがだんまりか?
921デフォルトの名無しさん
2020/11/08(日) 02:34:25.46ID:HKu5GaPi >>920
私は C しか書けません
私は C しか書けません
923デフォルトの名無しさん
2020/11/08(日) 03:56:26.07ID:YnyAcD/m >>919
こんなのならあった
https://github.com/imachug/BatchBuilder
moduleサポート:
export say_hello
echo Hello, %1!
end export
でエクスポート
import say_hello Takashi
でインポート(というかecho Hello, Takashi!に置き換わる)
値返却 (return) サポート:
export ask q
set /p result=%q%?
return %result%
end export
export delete_dir
import -> agree ask "Delete %1"
if "%agree%" == "yes" (
rmdir /S /Q %1
)
end export
globalキーワード:
module内の変数はデフォでlocal。
global変数にしたいときはglobalキーワードを使う。
global my_var=hogehoge
こんなのならあった
https://github.com/imachug/BatchBuilder
moduleサポート:
export say_hello
echo Hello, %1!
end export
でエクスポート
import say_hello Takashi
でインポート(というかecho Hello, Takashi!に置き換わる)
値返却 (return) サポート:
export ask q
set /p result=%q%?
return %result%
end export
export delete_dir
import -> agree ask "Delete %1"
if "%agree%" == "yes" (
rmdir /S /Q %1
)
end export
globalキーワード:
module内の変数はデフォでlocal。
global変数にしたいときはglobalキーワードを使う。
global my_var=hogehoge
924デフォルトの名無しさん
2020/11/08(日) 03:57:27.82ID:YnyAcD/m >>923 の続き
再帰サポートのための2つのディレクティブ:
@safe_recursion
@follow_local
クラスとオブジェクト:
クラス作成
class ClassTest
export say_hello
echo Hello, %1!
end export
export say_bye
echo Bye, %1!
end export
end class
オブジェクト生成
new -> my_class ClassTest
メソッド呼び出し
import %my_class%.say_hello Takashi
import %my_class%.say_bye Takashi
他、クラスフィールドやマジックメソッドなど
再帰サポートのための2つのディレクティブ:
@safe_recursion
@follow_local
クラスとオブジェクト:
クラス作成
class ClassTest
export say_hello
echo Hello, %1!
end export
export say_bye
echo Bye, %1!
end export
end class
オブジェクト生成
new -> my_class ClassTest
メソッド呼び出し
import %my_class%.say_hello Takashi
import %my_class%.say_bye Takashi
他、クラスフィールドやマジックメソッドなど
925デフォルトの名無しさん
2020/11/08(日) 04:20:05.05ID:YnyAcD/m >>919
もうひとつ。
https://github.com/kerrgavin/Transpiler-DSL-to-Windows-Batch-Script
>>923 がbatの拡張といったおもむきなのに対して、こちらは専用DSLからのトランスパイラ。Python製。
二値の平均:
avg(arg1, arg2, average)
fun avg {
num a = larg1 + larg2
num a = a/2
"echo" a
}
以下にトランスパイルされる
@echo off
SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
call :avg %1,%2,%average%
@EXIT /B 0
:avg
set /a a=%~1 + %~2
set /a a=%a% / 2
echo %a%
EXIT /B 0
0から9999まで表示:
for (num i = 0;i < 10000;i+1){
"echo" i
}
トランスパイル結果略
もうひとつ。
https://github.com/kerrgavin/Transpiler-DSL-to-Windows-Batch-Script
>>923 がbatの拡張といったおもむきなのに対して、こちらは専用DSLからのトランスパイラ。Python製。
二値の平均:
avg(arg1, arg2, average)
fun avg {
num a = larg1 + larg2
num a = a/2
"echo" a
}
以下にトランスパイルされる
@echo off
SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
call :avg %1,%2,%average%
@EXIT /B 0
:avg
set /a a=%~1 + %~2
set /a a=%a% / 2
echo %a%
EXIT /B 0
0から9999まで表示:
for (num i = 0;i < 10000;i+1){
"echo" i
}
トランスパイル結果略
926デフォルトの名無しさん
2020/11/08(日) 05:03:48.08ID:YnyAcD/m >>919
シェルスクリプトからの変換系:
https://github.com/daniel-sc/bash-shell-to-bat-converter
https://github.com/sagiegurari/shell2batch
あと専用言語からのトランスパイル系でもうひとつ凄いのがあった。
https://github.com/batsh-dev-team/Batsh
タイプ的には >>925 と同じような感じなんだけどbatにもシェルスクリプトにもコンパイルできる。
こっちは凄いねスター4,000超えてるわ。
なんでこれが最初に見つからんのや…
プレイグラウンド( https://batsh.org/ )もあってサンプルロード・コンパイルもできるから試してみて。
文法はオーソドックスなC系ですね。
シェルスクリプトからの変換系:
https://github.com/daniel-sc/bash-shell-to-bat-converter
https://github.com/sagiegurari/shell2batch
あと専用言語からのトランスパイル系でもうひとつ凄いのがあった。
https://github.com/batsh-dev-team/Batsh
タイプ的には >>925 と同じような感じなんだけどbatにもシェルスクリプトにもコンパイルできる。
こっちは凄いねスター4,000超えてるわ。
なんでこれが最初に見つからんのや…
プレイグラウンド( https://batsh.org/ )もあってサンプルロード・コンパイルもできるから試してみて。
文法はオーソドックスなC系ですね。
927デフォルトの名無しさん
2020/11/08(日) 05:16:53.07ID:YnyAcD/m >>926
moongiftに紹介記事があった。
https://www.moongift.jp/2019/08/batsh-bashbatchのスクリプトを生成するプログラミング言語/
…そしてアドレスバー見たら既にお気に入りに登録されていた…
moongiftに紹介記事があった。
https://www.moongift.jp/2019/08/batsh-bashbatchのスクリプトを生成するプログラミング言語/
…そしてアドレスバー見たら既にお気に入りに登録されていた…
928デフォルトの名無しさん
2020/11/08(日) 08:18:54.23ID:ct8WHwWl >>926
これきれいだな
これきれいだな
929デフォルトの名無しさん
2020/11/09(月) 23:19:00.95ID:biYC5NlX もうすぐポッキーの日
[お題] 人口合計でオール1
URLのページに都道府県別の人口が載っている。
今回使用するのは、2019/10のデータ
https://ideone.com/R4PCiQ
同じ県は一回のみで、異なる県を何県でも選んでよい。
(つまり選び方は全部で 2^47 種類)
人口合計が"1"のみの数字となる選び方は何種類あるか?
(実質、1111万1111人, 1億1111万1111人になる選び方)
※一発正解問題、実行時間3秒程度。
同ページの他の年月人口でも計算できる程度のクオリティでok
※ちなみに 2015/10データだと916(40+876)種類だった。
[お題] 人口合計でオール1
URLのページに都道府県別の人口が載っている。
今回使用するのは、2019/10のデータ
https://ideone.com/R4PCiQ
同じ県は一回のみで、異なる県を何県でも選んでよい。
(つまり選び方は全部で 2^47 種類)
人口合計が"1"のみの数字となる選び方は何種類あるか?
(実質、1111万1111人, 1億1111万1111人になる選び方)
※一発正解問題、実行時間3秒程度。
同ページの他の年月人口でも計算できる程度のクオリティでok
※ちなみに 2015/10データだと916(40+876)種類だった。
930デフォルトの名無しさん
2020/11/09(月) 23:52:24.94ID:XExSNiE1 11111111 は43?
111111111はオンラインコンパイラでタイムアウトorz
111111111はオンラインコンパイラでタイムアウトorz
931デフォルトの名無しさん
2020/11/10(火) 00:38:20.57ID:duQVrAg3 面白そうなお題
932デフォルトの名無しさん
2020/11/10(火) 00:38:46.30ID:qJS2/p90 111111111 は650かな?
933デフォルトの名無しさん
2020/11/10(火) 00:45:23.62ID:qJS2/p90 とりあえず
Haskell
spp19 = (小さいもの順に並べた元データ)
findSum :: Int -> [Int] -> Int
findSum x ys = case ys of
[] -> 0
( z : zs ) | z > x -> 0
( z : zs ) | z == x -> 1
( z : zs ) | otherwise ->
( findSum x zs )
+ ( findSum ( x - z ) zs )
main = do
print $ findSum 15105031 spp19
print $ findSum 11111111 spp19
----
650
43
Haskell
spp19 = (小さいもの順に並べた元データ)
findSum :: Int -> [Int] -> Int
findSum x ys = case ys of
[] -> 0
( z : zs ) | z > x -> 0
( z : zs ) | z == x -> 1
( z : zs ) | otherwise ->
( findSum x zs )
+ ( findSum ( x - z ) zs )
main = do
print $ findSum 15105031 spp19
print $ findSum 11111111 spp19
----
650
43
934デフォルトの名無しさん
2020/11/10(火) 02:25:54.45ID:903MPdZb batコーイ!!
935デフォルトの名無しさん
2020/11/10(火) 02:49:15.00ID:VuEsWlWs936デフォルトの名無しさん
2020/11/10(火) 13:44:24.83ID:3xGJBleZ 典型的なdp問題じゃねえの
937929
2020/11/10(火) 17:29:30.75ID:q5cN/btj >>929
・想定解はDPの数え上げ
さすがに1.1億×47は苦しいので、
1.1億に関しては、(全人口 - 1.1億)で計算する。
そうすれば、1600万×47の計算量で済む。
https://ideone.com/R4PCiQ
下にpython(numpy)で想定解追加
・想定解はDPの数え上げ
さすがに1.1億×47は苦しいので、
1.1億に関しては、(全人口 - 1.1億)で計算する。
そうすれば、1600万×47の計算量で済む。
https://ideone.com/R4PCiQ
下にpython(numpy)で想定解追加
938253
2020/11/11(水) 00:47:47.87ID:vox+S3u3 (´・ω・`)
939デフォルトの名無しさん
2020/11/11(水) 18:19:57.16ID:NMl7/e2v 暇つぶしに>>933がどれくらい再帰呼び出し読んでるか数えてもらった
findSum' x ys = let ( z : zs ) = ys in case ys of
[ ] -> 0
_ | z >= x -> 0
otherwise -> ( findSum' x zs ) + ( findSum' ( x - z ) zs ) + 2
----
2021619696
20億回ちょい
dpだと15,105,031×47=709,936,457で7億回ちょいだから35%ほどになるのか
勉強になった
findSum' x ys = let ( z : zs ) = ys in case ys of
[ ] -> 0
_ | z >= x -> 0
otherwise -> ( findSum' x zs ) + ( findSum' ( x - z ) zs ) + 2
----
2021619696
20億回ちょい
dpだと15,105,031×47=709,936,457で7億回ちょいだから35%ほどになるのか
勉強になった
940デフォルトの名無しさん
2020/11/12(木) 15:39:00.87ID:VX9X1ew1 お題1
1〜nまでの偶数をランダムに出力してください
お題2
[開始の数] [増分] [終了の数]を入力として受け取りランダムに出力してください
例
入力: 1 2 10
出力:
1
1
3
9
1
7
5
1〜nまでの偶数をランダムに出力してください
お題2
[開始の数] [増分] [終了の数]を入力として受け取りランダムに出力してください
例
入力: 1 2 10
出力:
1
1
3
9
1
7
5
941デフォルトの名無しさん
2020/11/12(木) 15:58:04.88ID:uK53dAw4 >>940 を読んで、やっぱり日本語は非論理的な言語だな、と思った。
942デフォルトの名無しさん
2020/11/12(木) 16:04:34.29ID:VX9X1ew1 書き手の問題だと思うよ
943デフォルトの名無しさん
2020/11/12(木) 18:42:17.55ID:HU5jtk1k オレは深まりゆく秋を感じた
944デフォルトの名無しさん
2020/11/12(木) 19:26:25.71ID:VX9X1ew1 ふーけゆくー秋の夜ー
945デフォルトの名無しさん
2020/11/12(木) 19:34:08.43ID:nzp5rNOe >>940 Ruby
p rand(2..$_.to_i) & -2 # => 32 while gets
-*- input -*-
2
10
100
-*- output -*-
2
6
78
p eval$_.gsub(/\s+/,'%s')%%w[.step(*[ , ].rotate).to_a.sample]while gets
-*- input -*-
1 2 10
1 2 10
10 5 99
-*- output -*-
7
1
85
p rand(2..$_.to_i) & -2 # => 32 while gets
-*- input -*-
2
10
100
-*- output -*-
2
6
78
p eval$_.gsub(/\s+/,'%s')%%w[.step(*[ , ].rotate).to_a.sample]while gets
-*- input -*-
1 2 10
1 2 10
10 5 99
-*- output -*-
7
1
85
946デフォルトの名無しさん
2020/11/12(木) 23:53:28.13ID:HU5jtk1k そゆいみか
入力パースするとこは略して
Haskell
import System.Random
import Control.Monad
randomABC a b c = let
r = [ a, a+b .. c ]
in ( r !! ) <$> ( randomRIO ( 0, length r - 1 ) :: IO Int )
main = do
print =<< ( replicateM 20 $ randomABC 1 2 10 )
print =<< ( replicateM 20 $ randomABC 5 7 40 )
----
[1,1,9,7,9,7,7,9,7,5,7,7,7,3,7,1,5,9,5,7]
[33,26,26,26,12,19,40,40,12,33,19,26,19,26,26,33,19,5,5,33]
入力パースするとこは略して
Haskell
import System.Random
import Control.Monad
randomABC a b c = let
r = [ a, a+b .. c ]
in ( r !! ) <$> ( randomRIO ( 0, length r - 1 ) :: IO Int )
main = do
print =<< ( replicateM 20 $ randomABC 1 2 10 )
print =<< ( replicateM 20 $ randomABC 5 7 40 )
----
[1,1,9,7,9,7,7,9,7,5,7,7,7,3,7,1,5,9,5,7]
[33,26,26,26,12,19,40,40,12,33,19,26,19,26,26,33,19,5,5,33]
947デフォルトの名無しさん
2020/11/13(金) 20:43:02.05ID:3cTZftC0 >>940 bat
@echo off &setlocal
set /a n=8 &REM 出力個数
echo -3 9
for /L %%i in (1,1,%n%) do call :RAND_A2B -3 9
echo=&echo 3 -5
for /L %%i in (1,1,%n%) do call :RAND_A2B 3 -5
echo=&echo 4 4
for /L %%i in (1,1,%n%) do call :RAND_A2B 4 4
echo=&echo -5 2 2
for /L %%i in (1,1,%n%) do call :RAND_SiE -5 2 2
echo=&echo 2 -3 -12
for /L %%i in (1,1,%n%) do call :RAND_SiE 2 -3 -12
echo=&echo 2 3 -4
for /L %%i in (1,1,%n%) do call :RAND_SiE 2 3 -4
pause &exit /b
:: 1〜n間の偶数をrandom出力 => a〜b間の偶数をrandom出力
:RAND_A2B
setlocal
set /a "f=%1&1"
if %1 EQU %2 ( if %f% EQU 0 echo %1) &exit /b
if %1 LSS %2 set /a a=%1+1, b=%2
if %1 GTR %2 set /a a=%2+1, b=%1
set /a "c=b-a+1, r=((%random%<<15)+%random%)%%c+a, r&=~1"
echo %r%&exit /b
:: [開始の数] [増分] [終了の数] を引数として条件を満たす値をrandom出力
:RAND_SiE
setlocal
if %2 NEQ 0 ( set /a "a=(%3-%1)/%2" ) else set /a a=0
if %a% LSS 0 set /a a=0
set /a "r=%random%%%(a+1)*%2+%1"
echo %r%&exit /b
@echo off &setlocal
set /a n=8 &REM 出力個数
echo -3 9
for /L %%i in (1,1,%n%) do call :RAND_A2B -3 9
echo=&echo 3 -5
for /L %%i in (1,1,%n%) do call :RAND_A2B 3 -5
echo=&echo 4 4
for /L %%i in (1,1,%n%) do call :RAND_A2B 4 4
echo=&echo -5 2 2
for /L %%i in (1,1,%n%) do call :RAND_SiE -5 2 2
echo=&echo 2 -3 -12
for /L %%i in (1,1,%n%) do call :RAND_SiE 2 -3 -12
echo=&echo 2 3 -4
for /L %%i in (1,1,%n%) do call :RAND_SiE 2 3 -4
pause &exit /b
:: 1〜n間の偶数をrandom出力 => a〜b間の偶数をrandom出力
:RAND_A2B
setlocal
set /a "f=%1&1"
if %1 EQU %2 ( if %f% EQU 0 echo %1) &exit /b
if %1 LSS %2 set /a a=%1+1, b=%2
if %1 GTR %2 set /a a=%2+1, b=%1
set /a "c=b-a+1, r=((%random%<<15)+%random%)%%c+a, r&=~1"
echo %r%&exit /b
:: [開始の数] [増分] [終了の数] を引数として条件を満たす値をrandom出力
:RAND_SiE
setlocal
if %2 NEQ 0 ( set /a "a=(%3-%1)/%2" ) else set /a a=0
if %a% LSS 0 set /a a=0
set /a "r=%random%%%(a+1)*%2+%1"
echo %r%&exit /b
948デフォルトの名無しさん
2020/11/13(金) 22:58:48.40ID:ghr6tNw2 オンラインでbat動かせるサイトない?
>>947試して見たいんやけど
>>947試して見たいんやけど
949デフォルトの名無しさん
2020/11/13(金) 23:20:18.52ID:a1Z/nYk3 bat兄貴天才やな
950デフォルトの名無しさん
2020/11/14(土) 00:46:02.44ID:WHpB6hAc951デフォルトの名無しさん
2020/11/14(土) 06:23:08.91ID:rQXll7XK 過疎るのもわかるわ
952デフォルトの名無しさん
2020/11/15(日) 04:26:34.92ID:UMNa3GdF953デフォルトの名無しさん
2020/11/15(日) 18:33:50.31ID:UMNa3GdF お題
天気のデータを読み取って翌日の天気は前日と同じと予測しそれが当たる確率を求めてください
入力: 曇,晴,曇,曇,晴,曇,曇,雨,雨,雨,曇,曇,晴,曇,雨,曇,雨,曇,曇,曇,晴,曇,雨,晴,晴,晴,晴,曇,晴,曇,晴
天気のデータを読み取って翌日の天気は前日と同じと予測しそれが当たる確率を求めてください
入力: 曇,晴,曇,曇,晴,曇,曇,雨,雨,雨,曇,曇,晴,曇,雨,曇,雨,曇,曇,曇,晴,曇,雨,晴,晴,晴,晴,曇,晴,曇,晴
954デフォルトの名無しさん
2020/11/15(日) 18:40:06.62ID:KOddDUPF >>953 Ruby
gets.split(?,).each_cons(2).tap{|a| p 1.0 * a.count{|b| !b.uniq[1]}/ a.size}
# => 0.3333333333333333
gets.split(?,).each_cons(2).tap{|a| p 1.0 * a.count{|b| !b.uniq[1]}/ a.size}
# => 0.3333333333333333
955デフォルトの名無しさん
2020/11/15(日) 18:41:22.95ID:UMNa3GdF はやいな
956デフォルトの名無しさん
2020/11/15(日) 20:20:51.56ID:8j4ATkh0 >>953 JavaScript
let hits = 0
const input = '曇,晴,曇,曇,晴,曇,曇,雨,雨,雨,曇,曇,晴,曇,雨,曇,雨,曇,曇,曇,晴,曇,雨,晴,晴,晴,晴,曇,晴,曇,晴'.split `,`
input.reduce((acc, v) => (hits += acc == v ? 1 : 0, v))
console.log(hits / (input.length - 1))
//=> 0.3333333333333333
let hits = 0
const input = '曇,晴,曇,曇,晴,曇,曇,雨,雨,雨,曇,曇,晴,曇,雨,曇,雨,曇,曇,曇,晴,曇,雨,晴,晴,晴,晴,曇,晴,曇,晴'.split `,`
input.reduce((acc, v) => (hits += acc == v ? 1 : 0, v))
console.log(hits / (input.length - 1))
//=> 0.3333333333333333
957デフォルトの名無しさん
2020/11/15(日) 20:22:58.52ID:KOddDUPF >>956
.split(`,`) では
.split(`,`) では
958デフォルトの名無しさん
2020/11/15(日) 20:23:55.05ID:KOddDUPF すまん。バッククウォートだった。
959デフォルトの名無しさん
2020/11/16(月) 00:51:51.08ID:lyH8UsEw >>947
@echo off &setlocal enabledelayedexpansion
for /f "delims=:" %%A in ('findstr /en ARGS "%~0"') do set /a L=%%A, n=12 &REM nは出力個数
for /f "usebackq skip=%L% delims=" %%A in ("%~0") do set "i="&(for %%B in (%%A) do set /a i+=1)&echo %%A&set "S="&(for /L %%D in (1,1,%n%) do call :RAND!i! %%A&(if defined r set "S=!S! !r!" &set "r="))&echo=!S!&echo=
set /p<nul=終了&pause >nul &exit /b
:: a〜b間の偶数をrandom出力
:RAND2
setlocal &REM VAR= a b c r f
if %1 NEQ %2 ((if %1 LSS %2 (set /a a=%1+1, b=%2) else set /a a=%2+1, b=%1) &set /a "c=b-a+1, r=((%random%<<15)+%random%)%%c+a, r&=~1") else set /a "f=%1&1" &if !f! EQU 0 set r=%1
endlocal &set "r=%r%" &exit /b
:: [開始の数] [増分] [終了の数] を引数として条件を満たす値をrandom出力
:RAND3
setlocal &REM VAR= a r
if %2 NEQ 0 set /a "a=(%3-%1)/%2" &if !a! LSS 0 set "a=" &REM [ else set "a="] 省略:上位環境でaが使用されている場合には必要
set /a "r=((%random%<<15)+%random%)%%(a+1)*%2+%1" &REM set /aでは存在しない変数は0として扱われる
endlocal &set "r=%r%" &exit /b
:: ARGS
-3 9
3 -5
4 4
5 5
1 0 2
-5 2 2
2 -3 -12
2 3 -4
-256 040 0x100
0400 ~0x1F ~0xff
@echo off &setlocal enabledelayedexpansion
for /f "delims=:" %%A in ('findstr /en ARGS "%~0"') do set /a L=%%A, n=12 &REM nは出力個数
for /f "usebackq skip=%L% delims=" %%A in ("%~0") do set "i="&(for %%B in (%%A) do set /a i+=1)&echo %%A&set "S="&(for /L %%D in (1,1,%n%) do call :RAND!i! %%A&(if defined r set "S=!S! !r!" &set "r="))&echo=!S!&echo=
set /p<nul=終了&pause >nul &exit /b
:: a〜b間の偶数をrandom出力
:RAND2
setlocal &REM VAR= a b c r f
if %1 NEQ %2 ((if %1 LSS %2 (set /a a=%1+1, b=%2) else set /a a=%2+1, b=%1) &set /a "c=b-a+1, r=((%random%<<15)+%random%)%%c+a, r&=~1") else set /a "f=%1&1" &if !f! EQU 0 set r=%1
endlocal &set "r=%r%" &exit /b
:: [開始の数] [増分] [終了の数] を引数として条件を満たす値をrandom出力
:RAND3
setlocal &REM VAR= a r
if %2 NEQ 0 set /a "a=(%3-%1)/%2" &if !a! LSS 0 set "a=" &REM [ else set "a="] 省略:上位環境でaが使用されている場合には必要
set /a "r=((%random%<<15)+%random%)%%(a+1)*%2+%1" &REM set /aでは存在しない変数は0として扱われる
endlocal &set "r=%r%" &exit /b
:: ARGS
-3 9
3 -5
4 4
5 5
1 0 2
-5 2 2
2 -3 -12
2 3 -4
-256 040 0x100
0400 ~0x1F ~0xff
960デフォルトの名無しさん
2020/11/16(月) 03:31:51.13ID:apQPm4KR >>954
haskell
import Data.List
str = "曇,晴,曇,曇,晴,曇,曇,雨,雨,雨,曇,曇,晴,曇,雨,曇,雨,曇,曇,曇,晴,曇,雨,晴,晴,晴,晴,曇,晴,曇,晴"
accuracy x = let
pairs = id
. map ( take 2 . reverse ) -- [ "BA", "CB", "DC",..]
. drop 2 -- [ "AB", "ABC",..]
. inits -- [ "", "A", "AB",..]
. filter ( /= ',' ) -- "ABCD.."
$ x
successes = filter ( \x -> head x == last x ) pairs
nP = genericLength pairs
nS = genericLength successes
in nS / nP
main = print $ accuracy str
haskell
import Data.List
str = "曇,晴,曇,曇,晴,曇,曇,雨,雨,雨,曇,曇,晴,曇,雨,曇,雨,曇,曇,曇,晴,曇,雨,晴,晴,晴,晴,曇,晴,曇,晴"
accuracy x = let
pairs = id
. map ( take 2 . reverse ) -- [ "BA", "CB", "DC",..]
. drop 2 -- [ "AB", "ABC",..]
. inits -- [ "", "A", "AB",..]
. filter ( /= ',' ) -- "ABCD.."
$ x
successes = filter ( \x -> head x == last x ) pairs
nP = genericLength pairs
nS = genericLength successes
in nS / nP
main = print $ accuracy str
961デフォルトの名無しさん
2020/11/16(月) 03:32:04.47ID:lyH8UsEw >>953 bat
@echo off &setlocal enabledelayedexpansion
set /a i=-1, match=0
for %%A in (曇,晴,曇,曇,晴,曇,曇,雨,雨,雨,曇,曇,晴,曇,雨,曇,雨,曇,曇,曇,晴,曇,雨,晴,晴,晴,晴,曇,晴,曇,晴) do (
set /a i+=1
if "!S!"=="%%A" set /a match+=1
set s=%%A
)
:: echo 一致数/比較回数 : %match%/%i%
set /a a=match, b=i
:EUCLID_GCD
if %a% NEQ 0 set /a "c=a, a=b%%a, b=c" &goto :EUCLID_GCD
set /a match/=b, i/=b
if %match% NEQ 0 (echo 確率 : %match%/%i%) else echo 確率 : 0
pause
@echo off &setlocal enabledelayedexpansion
set /a i=-1, match=0
for %%A in (曇,晴,曇,曇,晴,曇,曇,雨,雨,雨,曇,曇,晴,曇,雨,曇,雨,曇,曇,曇,晴,曇,雨,晴,晴,晴,晴,曇,晴,曇,晴) do (
set /a i+=1
if "!S!"=="%%A" set /a match+=1
set s=%%A
)
:: echo 一致数/比較回数 : %match%/%i%
set /a a=match, b=i
:EUCLID_GCD
if %a% NEQ 0 set /a "c=a, a=b%%a, b=c" &goto :EUCLID_GCD
set /a match/=b, i/=b
if %match% NEQ 0 (echo 確率 : %match%/%i%) else echo 確率 : 0
pause
962デフォルトの名無しさん
2020/11/20(金) 19:52:50.75ID:HawO8Ftl963とくめい
2020/11/24(火) 01:34:45.23ID:SQQDs1Pp kakeruyamasato@gmail.comこのメアドを悪用してみせて
964デフォルトの名無しさん
2020/11/24(火) 08:07:25.33ID:aaTbFie9 通報しますた
965デフォルトの名無しさん
2020/11/25(水) 01:49:24.25ID:O2Mln20T966デフォルトの名無しさん
2020/11/26(木) 19:02:45.00ID:ACzSTlzf967デフォルトの名無しさん
2020/11/27(金) 01:08:20.91ID:bIFui41M >>966
なんていう言語?
なんていう言語?
968デフォルトの名無しさん
2020/11/27(金) 02:57:17.73ID:ocMZsxYX >>967
rubyでしょ
rubyでしょ
969デフォルトの名無しさん
2020/11/27(金) 19:31:40.66ID:Pnsgs34G rubyだったか。
970デフォルトの名無しさん
2020/11/28(土) 00:37:28.60ID:PcPNtVOH %がわからないって怒られた
971デフォルトの名無しさん
2020/11/28(土) 07:20:49.13ID:mYohOVrw お題
以下を表示する
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday
以下を表示する
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday
972デフォルトの名無しさん
2020/11/28(土) 07:34:45.42ID:CtkueG9H >>971 bat
@echo.以下を表示する
@echo.Monday
@echo.Tuesday
@echo.Wednesday
@echo.Thursday
@echo.Friday
@echo.Saturday
@echo.Sunday
@echo.以下を表示する
@echo.Monday
@echo.Tuesday
@echo.Wednesday
@echo.Thursday
@echo.Friday
@echo.Saturday
@echo.Sunday
973デフォルトの名無しさん
2020/11/28(土) 08:05:44.72ID:nEfgRBi9 意外と難しいな
974デフォルトの名無しさん
2020/11/28(土) 08:40:11.81ID:wyvnQiBB975デフォルトの名無しさん
2020/11/28(土) 09:00:26.43ID:2Muxtrov >>966
問題の解釈違わねえ?
問題の解釈違わねえ?
976デフォルトの名無しさん
2020/11/28(土) 09:12:26.58ID:nEfgRBi9 >>971 js
const range = v => [...Array(v).keys()]
const DAY_MS = 24 * 60 * 60 * 1000
const weekday = d => d.toLocaleString('en', { weekday: 'long' })
console.log(range(7).map(i => weekday(new Date((i + 4) * 24 * 60 * 60 * 1000))).join("\n"))
const range = v => [...Array(v).keys()]
const DAY_MS = 24 * 60 * 60 * 1000
const weekday = d => d.toLocaleString('en', { weekday: 'long' })
console.log(range(7).map(i => weekday(new Date((i + 4) * 24 * 60 * 60 * 1000))).join("\n"))
977デフォルトの名無しさん
2020/11/28(土) 11:36:22.72ID:FGpMIdZG978デフォルトの名無しさん
2020/11/28(土) 12:27:13.39ID:GOv1h+p2 >>977
NEWS for Ruby 2.6.0
2.5.0 以降の変更
https://docs.ruby-lang.org/ja/2.6.0/doc/news=2f2_6_0.html
> Range
> 新規メソッド
> Range#% が追加されました。 [feature#14697]
NEWS for Ruby 2.6.0
2.5.0 以降の変更
https://docs.ruby-lang.org/ja/2.6.0/doc/news=2f2_6_0.html
> Range
> 新規メソッド
> Range#% が追加されました。 [feature#14697]
979デフォルトの名無しさん
2020/11/28(土) 12:38:57.57ID:L52xXSLK 予想通りの流れになってくれて何より
980977
2020/11/28(土) 14:12:40.28ID:FGpMIdZG ruby -e 'p ( ( 1..5 ) % 2 ).to_a'
#=> [1, 3, 5]
2 は、各ステップの大きさ
#=> [1, 3, 5]
2 は、各ステップの大きさ
981デフォルトの名無しさん
2020/11/28(土) 16:09:49.88ID:myGQAvEM ダメだ
オンラインでRuby 2.6使えるとこ見つからない
どっかない?
オンラインでRuby 2.6使えるとこ見つからない
どっかない?
982デフォルトの名無しさん
2020/11/28(土) 16:34:18.46ID:gB71rnHS >>981
ruby 2.6.5p114 (2019-10-01 revision 67812) [x86_64-linux]
https://www.jdoodle.com/execute-ruby-online/
ruby 2.7.0p0 (2019-12-25 revision 647ee6f091) [x86_64-linux]
https://techiedelight.com/compiler/
ruby 2.7.1p83 (2020-03-31 revision a0c7c23c9c) [x86_64-linux]
https://paiza.io/en/projects/new?language=ruby
ruby 2.6.5p114 (2019-10-01 revision 67812) [x86_64-linux]
https://www.jdoodle.com/execute-ruby-online/
ruby 2.7.0p0 (2019-12-25 revision 647ee6f091) [x86_64-linux]
https://techiedelight.com/compiler/
ruby 2.7.1p83 (2020-03-31 revision a0c7c23c9c) [x86_64-linux]
https://paiza.io/en/projects/new?language=ruby
983デフォルトの名無しさん
2020/11/28(土) 16:39:08.00ID:nEfgRBi9 jdoodle初めて知った
手元の汚い環境にもrepelにもpaizaにもなかったとき使おう
手元の汚い環境にもrepelにもpaizaにもなかったとき使おう
984デフォルトの名無しさん
2020/11/28(土) 17:26:12.48ID:FGpMIdZG paiza は、いつも新しい
codepad は、古いような気がする
codepad は、古いような気がする
985デフォルトの名無しさん
2020/11/28(土) 17:30:47.77ID:FGpMIdZG 漏れは、Windows 10, WSL, Ubuntu 18.04 で、
VSCode の拡張機能、Remote WSL も使う
Linux側には、日本人が作った、バージョンマネージャーのanyenv で、rbenv, nodenv を使って、
ruby 2.6.6, node 12.16.2 を入れた
対応している言語を表示すると、
anyenv install --list
Renv, crenv, denv, erlenv, exenv
goenv, hsenv, jenv, jlenv, luaenv
nodenv, phpenv, plenv, pyenv, rbenv
sbtenv, scalaenv, swiftenv, tfenv
Julia のjlenv も追加された。
anyenvと同様のツールに、asdf もある
VSCode の拡張機能、Remote WSL も使う
Linux側には、日本人が作った、バージョンマネージャーのanyenv で、rbenv, nodenv を使って、
ruby 2.6.6, node 12.16.2 を入れた
対応している言語を表示すると、
anyenv install --list
Renv, crenv, denv, erlenv, exenv
goenv, hsenv, jenv, jlenv, luaenv
nodenv, phpenv, plenv, pyenv, rbenv
sbtenv, scalaenv, swiftenv, tfenv
Julia のjlenv も追加された。
anyenvと同様のツールに、asdf もある
986デフォルトの名無しさん
2020/11/28(土) 17:57:16.56ID:myGQAvEM987デフォルトの名無しさん
2020/11/28(土) 18:01:21.11ID:myGQAvEM とりあえず自分で打ち込んで試した
shuffleはランダムに並べ替えみたいだからちょっと違うかな
shuffleはランダムに並べ替えみたいだからちょっと違うかな
988デフォルトの名無しさん
2020/11/28(土) 22:44:23.07ID:wyvnQiBB >>987
shuffleの代わりにsampleを使うといい
shuffleの代わりにsampleを使うといい
989デフォルトの名無しさん
2020/11/29(日) 06:10:23.39ID:LsAPFm47 >>971 bat
:: 年月日を元に曜日を返す。 No args validation. 引数が無ければシステム時間
@echo off &setlocal enabledelayedexpansion
if not "%~1"=="" set "date=%~1"
:: set "date=2020.09.09"
set i=0
for %%a in (Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Y,M,D) do set "wd!i!=%%a"&set /a i+=1
set i=7
for /f "tokens=1-3 delims==/-.:,;()_・年月日 " %%a in ("%date%") do for %%d in (%%a %%b %%c) do for /f "tokens=* delims=0" %%e in ("%%d") do for /f %%i in ("!i!") do set /a !wd%%i!=%%e,i+=1
:: echo=%Y%,%M%,%D%,
set /a h=(365*Y+(Y-1)/4-(Y-1)/100+(Y-1)/400+(M+7)/10*(30*(M-3)+(3*M-7)/5+59+D-1)+(1/(Y%%4+1)-1/(Y%%100+1)+1/(Y%%400+1)+(M+7)/10)/2)%%7
echo=!wd%h%!
pause&exit /b
:: 年月日を元に曜日を返す。 No args validation. 引数が無ければシステム時間
@echo off &setlocal enabledelayedexpansion
if not "%~1"=="" set "date=%~1"
:: set "date=2020.09.09"
set i=0
for %%a in (Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Y,M,D) do set "wd!i!=%%a"&set /a i+=1
set i=7
for /f "tokens=1-3 delims==/-.:,;()_・年月日 " %%a in ("%date%") do for %%d in (%%a %%b %%c) do for /f "tokens=* delims=0" %%e in ("%%d") do for /f %%i in ("!i!") do set /a !wd%%i!=%%e,i+=1
:: echo=%Y%,%M%,%D%,
set /a h=(365*Y+(Y-1)/4-(Y-1)/100+(Y-1)/400+(M+7)/10*(30*(M-3)+(3*M-7)/5+59+D-1)+(1/(Y%%4+1)-1/(Y%%100+1)+1/(Y%%400+1)+(M+7)/10)/2)%%7
echo=!wd%h%!
pause&exit /b
990デフォルトの名無しさん
2020/11/29(日) 12:05:03.89ID:POmPIOqu991デフォルトの名無しさん
2020/11/29(日) 14:25:29.24ID:KxupmnON >>971
Kotlin script
println(java.text.DateFormatSymbols(java.util.Locale.ENGLISH).getWeekdays().let { wd -> ((2..6) + 1).map { wd[it] } }.join
ToString("\n"))
Javaのライブラリをそのまま使ってやってるので1が日曜で7が土曜になってしまい、
それを並び替えてから出力する必要があって少し複雑になった。
Kotlin script
println(java.text.DateFormatSymbols(java.util.Locale.ENGLISH).getWeekdays().let { wd -> ((2..6) + 1).map { wd[it] } }.join
ToString("\n"))
Javaのライブラリをそのまま使ってやってるので1が日曜で7が土曜になってしまい、
それを並び替えてから出力する必要があって少し複雑になった。
992253
2020/11/29(日) 15:02:42.80ID:onV9IrOo >>971Perl5
use Time::Piece;
use Time::Seconds;
$t = Time::Piece->strptime('210201','%y%m%d');
for (0..6) { print $t->fullday."\n"; $t += ONE_DAY }
実行結果
~ $ perl 18_971_fullday.pl
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday
use Time::Piece;
use Time::Seconds;
$t = Time::Piece->strptime('210201','%y%m%d');
for (0..6) { print $t->fullday."\n"; $t += ONE_DAY }
実行結果
~ $ perl 18_971_fullday.pl
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday
993253
2020/11/29(日) 17:21:11.49ID:onV9IrOo994デフォルトの名無しさん
2020/11/29(日) 20:08:13.17ID:idUZlJAo995デフォルトの名無しさん
2020/11/29(日) 20:39:34.37ID:idUZlJAo お題
配列を入力として受け取り
値が連続するサブ配列のうち、合計が最大のものを出力してください
例
入力:[−2, 1, −3, 4, −1, 2, 1, −5, 4]
出力:[4, −1, 2, 1]
配列を入力として受け取り
値が連続するサブ配列のうち、合計が最大のものを出力してください
例
入力:[−2, 1, −3, 4, −1, 2, 1, −5, 4]
出力:[4, −1, 2, 1]
997デフォルトの名無しさん
2020/11/29(日) 21:15:00.96ID:sOEBQUsx 値が連続しないサブ配列とは?
999デフォルトの名無しさん
2020/11/29(日) 21:26:09.30ID:sOEBQUsx [4, −1, 2, 1]は値が連続するサブ配列で
[1, 4, 2, 1, 4]は値が連続しないサブ配列?
連続の定義は?
[1, 4, 2, 1, 4]は値が連続しないサブ配列?
連続の定義は?
1000デフォルトの名無しさん
2020/11/29(日) 21:34:10.34ID:idUZlJAo >>999
教えません
教えません
10011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 138日 7時間 40分 24秒
新しいスレッドを立ててください。
life time: 138日 7時間 40分 24秒
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を超えています。これ以上書き込みはできません。
ニュース
- 【地震速報】青森県で震度6強 沿岸部に津波警報 ★6 [ぐれ★]
- 「日の丸にバツ印」掲げた大学生 あいまいな国旗損壊罪に「怖い」 The Mainichi [少考さん★]
- 【音楽】BARBEE BOYS・KONTAが事故で四肢麻痺を公表、新体制で活動は継続 [少考さん★]
- 中国「捜索レーダー起動は各国の通常の手法」 火器管制用か回答せず [蚤の市★]
- 【野球】野球の未来に危機感「マイナースポーツになる」 宮本慎也氏が開催…学童大会 [尺アジ★]
- 【訃報】声優・西村知道さん死去 「SLAM DUNK」安西先生役 9月に体調不良のため一時休業 [少考さん★]
- 普通の日本人「日本の新技術で中国破滅😤!中国経済崩壊😂!終わりの始まりwwwwwwwwwww」 [441660812]
- マヨネーズにわさび、山椒、卵の黄身、ラー油、オリーブオイルを入れてよく混ぜてください
- ぺこーら、地震で同僚が次々配信を止めるなか強行し続けるので悪目立ちするwww [268244553]
- 巨大地震 [957955821]
- 福島みずほ「マイナ保険証は強制できません。健康保険証で良いじゃないですか」 [856698234]
- 【速報】高市早苗、起床 [779938112]
