1 名前:デフォルトの名無しさん mailto:sage [2020/07/14(火) 13:53:46 ID:jW5p6F/e.net] プログラミングのお題スレです。 【出題と回答例】 1 名前:デフォルトの名無しさん お題:お題本文 2 名前:デフォルトの名無しさん >>1 使用言語 回答本文 結果がある場合はそれも 【ソースコードが長くなったら】 (オンラインでコードを実行できる) https://ideone.com/ codepad.org/ compileonline.com/ rextester.com/runcode https://runnable.com/ https://code.hackerearth.com/ melpon.org/wandbox https://paiza.io/ 宿題は宿題スレがあるのでそちらへ。 ※前スレ プログラミングのお題スレ Part17 https://mevius.5ch.net/test/read.cgi/tech/1584031367/
2 名前:デフォルトの名無しさん mailto:sage [2020/07/14(火) 21:06:03.54 ID:5wYEuLp1.net] %W[> > 1 \ o t s u].each(&:display) # => >>1 otsu
3 名前:蟻人間 ◆T6xkBnTXz7B0 mailto:sage [2020/07/16(木) 06:35:35 ID:Tv2xtriA.net] 前スレ996の三次元タートルグラフィックス。 懸賞WebMoney5000円です。早い者勝ち。
4 名前:デフォルトの名無しさん mailto:sage [2020/07/16(木) 07:00:51 ID:Rw1l0Cvs.net] >>3 スレチ 消えろ
5 名前:蟻人間 mailto:sage [2020/07/16(木) 07:12:16.72 ID:Tv2xtriA.net] 宿題ではありません。
6 名前:デフォルトの名無しさん [2020/07/16(木) 11:35:02.71 ID:6HbDCmR4.net] 普通にドン引き なんか作って欲しいツールの作成依頼スレになりそう 出題者は解答を持ち合わせておくべきだな
7 名前:デフォルトの名無しさん [2020/07/16(木) 12:31:42.58 ID:II7vBdwc.net] 短期間に複数の出題をするのはいかがなものか 前の出題を締め切ってからするべきだろう 中には解答に数ヶ月を要するものもあるので itest.5ch.net/mevius/test/read.cgi/tech/1584031367/10 >0010 蟻人間 ◆T6xkBnTXz7B0 2020/03/15 04:20: >10 >お題: 一辺2000メートルの正方形の平面上にランダムに動く物体5個がある。 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 名前:蟻人間 mailto:sage [2020/07/16(木) 17:15:09.36 ID:Tv2xtriA.net] 【防衛システムに関する解説】 この出題は平面上の幾何学的な事象として論じられる。よって数学のベクトルの知識が必須である。 自機は中央にあり動かないのであるから、これを原点としてもよい。レーダー電波は放射状の電磁波であり、明らかに光速で直進する。 レーダーの直線の方程式は角度thetaのときr*(cos(theta), sin(theta))と書ける。すなわちレーダー角に触れれば探知される。 敵機はアニメーションの原理で動く。よってタイマーを使って一定時間ごとに位置を変化させれば動いているように見える。 位置や速度に特に指定はない。よって乱数などで決めることになる。 続く。
9 名前:蟻人間 mailto:sage [2020/07/16(木) 17:24:04.86 ID:Tv2xtriA.net] それぞれの敵機の位置ベクトルと速度ベクトルがあり、それらは時間の変数によって変化する。敵機の速度ベクトルを推定するために、位置ベクトルを記録せねばならない。 レーダーは360度回るのであるから、隠れ場所がなければ特定の角度となり、必ず見つかる。位置は一定時間ごとに必ずわかるはずである。 位置の変位を経過時間で割れば速度ベクトルが推定できる。位置がわかれば3平方の定理で距離がわかる。距離が近ければミサイルを 発射せねばなるまい。ミサイルを撃つ方向はatan2関数を使用すれば求められる。 【解説終わり】
10 名前:蟻人間 mailto:sage [2020/07/16(木) 17:36:30.92 ID:Tv2xtriA.net] これでいいか?
11 名前:蟻人間 mailto:sage [2020/07/16(木) 18:19:03.86 ID:Tv2xtriA.net] 【SQLサイン関数出題の解説】 ウェブや深層学習などの進展につれて、今や巨大データの扱いは、ありふれた作業となってきている。巨大データを扱う場合、データベースを使うとアクセス能力や利便性を向上できる。中でも特に一般的なSQLについて出題することにした。 しかし、SQLは方言が多くて、細かい調整はマニュアルを読まないとわからないことが多い。さらに、アクセス方法やインターフェイスが多様すぎて、こちらで解析するのは困難である。 よって採点は行わない。各自で自ら結果を確認して採点してほしい。SQLを始めるなら、まず入門書から入って、次に使用するデータベースのマニュアルを読んでもらいたい。 続く。
12 名前:蟻人間 mailto:sage [2020/07/16(木) 18:37:28.47 ID:Tv2xtriA.net] 「精度は構わない」といったはずだ。最悪でもnearest neighborhoodを選んでも正解にした。サイン関数は波形のグラフをとる代表的な三角関数だから、高校生以上なら知ってるはずだ、知名度は高いと判断した。 周期性があるので有限のテーブル(表)で近似できる。 「SQLのみを使う」とも言っていない。SQLの外部でサイン関数の数値を計算しても正解とする。しかしテーブルは作成しなければならない。すでに作成済みの場合に備えてまず「DROP TABLE ...」する。 次にテーブルの仕様を設計して「CREATE TABLE ...」する。細かいことは...で省略するが、わからないときは入門書かマニュアルを参照して下さいな。 テーブルの行を追加するには「INSERT INTO ...」する。テーブルからサイン関数の値を問い合わせる場合は「SELECT ... FROM ... WHERE ...」する。これが実際のサイン関数の値に常識的に近ければ正解とする。 【解説終わり】
13 名前:デフォルトの名無しさん mailto:sage [2020/07/16(木) 18:53:35.79 ID:CQUy/8Mn.net] 解説と解説に沿った解答例のコードを貼れ
14 名前:デフォルトの名無しさん [2020/07/16(木) 20:27:21 ID:6HbDCmR4.net] >>12 -πから+πまでのsin関数表を元に-∞から+∞までのsin関数をNN法を使って完成させろという意味だったのか
15 名前:デフォルトの名無しさん mailto:sage [2020/07/16(木) 20:37:51.51 ID:Zj8FcZKn.net] 精度は構わないなら 0, 1, -1 の3択でも正解か
16 名前:蟻人間 mailto:sage [2020/07/16(木) 21:05:05.23 ID:Tv2xtriA.net] >>8 訂正。 (誤) 方程式はr*(cos(theta), sin(theta))と書ける。 (正) 方程式は(x, y) == r*(cos(theta), sin(theta))と書ける。
17 名前:デフォルトの名無しさん [2020/07/16(木) 21:10:19.03 ID:6HbDCmR4.net] 提出済みのコードに x_hat%(2*π)-π を加えれば絶対値が大きな任意の数にも対応出来る
18 名前:デフォルトの名無しさん [2020/07/16(木) 21:11:26.01 ID:6HbDCmR4.net] >>17 はsin関数の問題の話ね
19 名前:デフォルトの名無しさん mailto:sage [2020/07/16(木) 21:27:56.16 ID:Zj8FcZKn.net] >>8 敵機? ランダムに動く物体でしょ 慣性が働くとも書いてないし連続で動くとも書いてない 各瞬間ランダム位置に出現なのかもしれない >>9 ランダムに動く物体5個を区別出来るなんて書いてない 距離と方向がわかるとだけ 予測した位置と移動速度、移動方向から推測してミサイルを打つ方向を決める必要がある その方向決めという重要な部分が書いてない 0点
20 名前:デフォルトの名無しさん mailto:sage [2020/07/16(木) 21:34:34.55 ID:Rw1l0Cvs.net] クソコテはどっちも出題がクソ 存在もクソ
21 名前:デフォルトの名無しさん mailto:sage [2020/07/16(木) 21:44:35.29 ID:Zj8FcZKn.net] >>17 任意のは言い過ぎ 値が大きいと有効桁ゼロになる 精度は問わないといっても有効桁ゼロはさすがにダメと思う
22 名前:蟻人間 mailto:sage [2020/07/16(木) 21:54:34.68 ID:Tv2xtriA.net] 物体の現在位置: (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に施すとミサイルの発射方向が得られる。
23 名前:デフォルトの名無しさん [2020/07/16(木) 22:05:54.70 ID:6HbDCmR4.net] >>21 はいすみません x_hatがπ以上の正の場合 x_hatが-π以下の負の場合 それ以外の場合で式を分ける必要がありそう
24 名前:デフォルトの名無しさん mailto:sage [2020/07/16(木) 22:06:42.91 ID:Zj8FcZKn.net] >>22 頭悪い方法ですね
25 名前:蟻人間 mailto:sage [2020/07/16(木) 22:09:47.34 ID:Tv2xtriA.net] スマートな方法は軍事秘密なんだよ (方程式を使う)
26 名前:デフォルトの名無しさん mailto:sage [2020/07/16(木) 22:28:50.69 ID:Zj8FcZKn.net] 簡単な二次方程式になるわけだけど
27 名前:蟻人間 mailto:sage [2020/07/16(木) 22:32:18.70 ID:Tv2xtriA.net] 昔はモンキーハンティングとかのシミュレーションやったよ
28 名前:デフォルトの名無しさん mailto:sage [2020/07/16(木) 22:34:22.52 ID:Zj8FcZKn.net] 頭悪い方法で?
29 名前:デフォルトの名無しさん mailto:sage [2020/07/16(木) 22:35:58.48 ID:Zj8FcZKn.net] >>22 から頭の悪さがにじみ出てる
30 名前:デフォルトの名無しさん mailto:sage [2020/07/16(木) 22:36:41.77 ID:Rw1l0Cvs.net] 頭悪いのがにじみ出てて読んでてイライラする
31 名前:蟻人間 mailto:sage [2020/07/16(木) 22:37:12.00 ID:Tv2xtriA.net] 他に剛体球の衝突とか、太陽系の表示とか、万有引力とか。
32 名前:蟻人間 mailto:sage [2020/07/16(木) 23:19:59.45 ID:Tv2xtriA.net] 高校レベルの数学でごめんね. 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 ID:MbWzFU1J.net] >>17 訂正 まず、0〜2*πのsin関数表を作成する その後、 x_hat>=0 の場合: x_hat%(2*π) x_hat<0の場合: 2*π + x_hat%(-2*π) という式でx_hatを変換して上書きする
34 名前:デフォルトの名無しさん mailto:sage [2020/07/17(金) 06:25:20.74 ID:CFzyXZw3.net] >>32 本当頭悪いね それでどうやって解くつもり? 高校生ならもっとスマートに解く
35 名前:デフォルトの名無しさん mailto:sage [2020/07/17(金) 08:57:31 ID:ICqzduEx.net] 解答側だと頭悪いと煽られるから出題側に回ってたわけか まあ出題も頭悪そうだったが
36 名前:デフォルトの名無しさん mailto:sage [2020/07/17(金) 09:13:31 ID:TqoFz7RF.net] 回答例用意してなくても出題していいと思う でもニッチすぎる問題で知識ひけらかしてるみたいな出題は例出してくれ
37 名前:蟻人間 mailto:sage [2020/07/17(金) 10:03:37.90 ID:+x+SJT9l.net] P + V*t==v*d*t. 二乗すればdが消えて |P|**2 + 2*P・V*t + |V|**2*t**2 == (v*t)**2. これはtの二次方程式であるから整理して解の公式で解ける。 t<0のときは過去になるので除外する。
38 名前:デフォルトの名無しさん mailto:sage [2020/07/17(金) 10:05:01.15 ID:2gsvlStU.net] >>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: 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/
39 名前:デフォルトの名無しさん mailto:sage [2020/07/17(金) 10:57:50 ID:IMrokyul.net] >>37 えらい時間がかかったね 君、出題者だよね?
40 名前:蟻人間 ◆T6xkBnTXz7B0 mailto:sage [2020/07/17(金) 11:00:53 ID:+x+SJT9l.net] 三次元タートルで臓器を描画したら、レオナルド・ダ・ヴィンチのような天才になれるかもよ。 今、3Dプリンタのブームで三次元タートルグラフィックスは需要があるから、面白いことになるよ。
41 名前:蟻人間 mailto:sage [2020/07/17(金) 11:24:00.61 ID:+x+SJT9l.net] 臓器売買をなくすには、臓器を作ればいい。 ふふん。
42 名前:デフォルトの名無しさん mailto:sage [2020/07/17(金) 11:55:47.46 ID:vGVdpt19.net] >>37 で、5個の物体の
43 名前:デフォルトの名無しさん mailto:sage [2020/07/17(金) 11:56:18.93 ID:vGVdpt19.net] 区別はどうするの?
44 名前:蟻人間 mailto:sage [2020/07/17(金) 12:50:28.20 ID:+x+SJT9l.net] レーダー角の順番に物体をソートし、各物体に番号を付ける。レーダー角において物体が重なれば重複する恐れがあるが、とくに問題ではない。重複した物体が離れたときに、新規の物体の出現と見なせばいい。 前回と前々回の観測により、位置と速度が推測できる。次に予想される出現位置に一番近い物体を選択し、番号を関連付ければ同定できる。
45 名前:デフォルトの名無しさん [2020/07/17(金) 13:19:51.15 ID:MbWzFU1J.net] >>36 チューリングマシンは現場でバリバリ使える調べて覚えるだけの価値がある技術だ 規則が連続している場合上の方を取ってくるとか2つの数値を比較して大小関係をルールにするといったことが出来る 正規表現で数値を取ってきてプログラミング言語で比較処理するより構造的に書ける だから解答を用意した上でまずは簡単なお題から出して、次は少し難易度を上げるようなお題を考えながら待っていたが誰も解答しなかった
46 名前:デフォルトの名無しさん mailto:sage [2020/07/17(金) 13:33:42.70 ID:TqoFz7RF.net] >>45 どの言語でも使えるアルゴリズム?設計パターンなの? 理論だから賞味期限の長い知識なのはわかるけど優先的に教えられないのはなぜ?
47 名前:デフォルトの名無しさん mailto:sage [2020/07/17(金) 13:35:45.21 ID:vGVdpt19.net] >>44 各フレーム物体がランダム位置で出現する場合には使えません
48 名前:デフォルトの名無しさん mailto:sage [2020/07/17(金) 13:37:37.60 ID:vGVdpt19.net] >>45 チューリングマシンの実用性はゼロと思うけど 完全に学問用
49 名前:デフォルトの名無しさん mailto:sage [2020/07/17(金) 13:40:10 ID:Jbjf6afq.net] CFGのクラスのものを例題にしたから意図したような回答がなかったんじゃないかと
50 名前:デフォルトの名無しさん [2020/07/17(金) 14:08:20.12 ID:x8K2tEcw.net] 学術の巨大掲示板群 - アルファ・ラボ 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
51 名前:蟻人間 mailto:sage [2020/07/17(金) 14:59:38.30 ID:+x+SJT9l.net] >>47 UFOじゃあるまいし、そんな物体が地球上にあるわけない。
52 名前:蟻人間 mailto:sage [2020/07/17(金) 15:18:45.55 ID:+x+SJT9l.net] ステルス機とか、超音速機とか、プラズマ兵器とかのことか。 それらは想定外だよ。
53 名前:蟻人間 mailto:sage [2020/07/17(金) 15:23:09.49 ID:+x+SJT9l.net] プラズマ兵器は、実戦で使われた記録はないし、超音速でもレーダー網からは捕捉出来る。 ステルスは想定外。
54 名前:蟻人間 mailto:sage [2020/07/17(金) 16:57:04.24 ID:+x+SJT9l.net] 防衛システムの歯無しは終わり。 次は三次元タートルグラフィックス。位置と向きの情報を持ったタートル(亀)を操作して、面白い図形を描こうというお話。平面じゃないよ、立体だよ。 レンダリングを何にするか。OpenGLは終わったし、DirectDrawは初心者には難しいし。そうだ、JavaScriptのThree.jsにしよう。これならスマホでも確認できるね。使ったことないけど。
55 名前:デフォルトの名無しさん mailto:sage [2020/07/17(金) 17:49:54.25 ID:vGVdpt19.net] >>51 出題文を読みかえしてみろ
56 名前:デフォルトの名無しさん mailto:sage [2020/07/17(金) 17:51:07.65 ID:vGVdpt19.net] ランダムに動く物体5個
57 名前:蟻人間 mailto:sage [2020/07/17(金) 18:31:00.92 ID:+x+SJT9l.net] さて、亀は三次元の座標データP=(x, y, z)と三次元の方向ベクトルD=(dx, dy, dz) (単位ベクトルとする)で表せる訳だが、 線分を一つ引くごとに、線分を指定した位置に世界に追加する。世界の観測者の視点であるカメラは、テキトーな位置と方向で設置しておく。 描画ルーチンは、世界に追加された線分群をまとめて描く。描画エンジンは遠近法により、奥行きを持った映像を完成する。
58 名前:蟻人間 mailto:sage [2020/07/17(金) 18:35:56.95 ID:+x+SJT9l.net] 小さなお題: Three.jsで三次元空間に線分を一本描画せよ。
59 名前:デフォルトの名無しさん [2020/07/17(金) 20:07:34.26 ID:Q6g2SqxJ.net] だめだ 何をいっているのだか私にはさっぱり
60 名前:デフォルトの名無しさん mailto:sage [2020/07/17(金) 20:36:03.22 ID:RwfCcdVI.net] >>59 NGワードに糞コテを登録すればOKということだけ理解してれば大丈夫。
61 名前: mailto:sage [2020/07/17(金) 20:39:05.23 ID:zSX7HXP2.net] >>60 NGワードなんてスルー能力の足りない人が使うものですよ、私は全然使いませんね、だって必要ないし…
62 名前:デフォルトの名無しさん mailto:sage [2020/07/17(金) 21:03:37.05 ID:CFzyXZw3.net] クソコテスレ
63 名前:蟻人間 ◆T6xkBnTXz7B0 mailto:sage [2020/07/17(金) 21:18:41 ID:hZ0JaeyU.net] こんな感じでHTMLを書けばThree.jsで三角形が描ける。 https://gist.github.com/katahiromz/cc182b4aaeaf2c7b5902238212c0f3f1
64 名前:蟻人間 mailto:sage [2020/07/17(金) 21:29:05.44 ID:hZ0JaeyU.net] これを応用すれば、スマホでも動作するブラウザゲームを自分で作って ゲーム会社を立ち上げることができるかも。 Three.jsがどんなものかは、 https://threejs.org/ を見ればたぶんわかる。三次元を描画するものだ。
65 名前:デフォルトの名無しさん mailto:sage [2020/07/17(金) 21:32:26.43 ID:C5ummCR0.net] スレタイからずれすぎ
66 名前:デフォルトの名無しさん mailto:sage [2020/07/18(土) 00:01:47.57 ID:tp8HW1uL.net] ついに蟻人間は、3次元まで行ってしまったか その内、Quaternion(4元数)がどうたらこうたらと、言い出しかねないw
67 名前:デフォルトの名無しさん mailto:sage [2020/07/18(土) 00:03:54.77 ID:wH8oKg8v.net] >>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);
68 名前:デフォルトの名無しさん mailto:sage [2020/07/18(土) 06:18:45.66 ID:yeg1h1ii.net] お題:何らかの数式のグラフとしてハート形を出力せよ。 使用する言語は問わない。
69 名前:デフォルトの名無しさん mailto:sage [2020/07/18(土) 10:23:44 ID:Z+cMIoZ7.net] >>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
70 名前:デフォルトの名無しさん [2020/07/18(土) 10:47:53 ID:zLRZfcZE.net] >>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
71 名前:デフォルトの名無しさん mailto:sage [2020/07/18(土) 10:50:14 ID:dRuMQkW5.net] >>45 出題が糞過ぎたから誰も答えなかったんだぞ
72 名前:デフォルトの名無しさん mailto:sage [2020/07/18(土) 11:55:01 ID:n7a2F8Nj.net] >>45 このスレでは誰もお題に答えないということがよくある 俺もお題出したことがあるがそういう時があった
73 名前:デフォルトの名無しさん mailto:sage [2020/07/18(土) 12:04:26.22 ID:Z+cMIoZ7.net] >>68 ❤♡🤎🧡🤍🖤❤❣💟💜💚💛💙💗 ♥ &#9825; &#10084;
74 名前:デフォルトの名無しさん mailto:sage [2020/07/18(土) 12:35:48.94 ID:xMoPei8m.net] >>69 きれい
75 名前:デフォルトの名無しさん [2020/07/18(土) 12:41:40.41 ID:55gPHPOJ.net] >>71 どこらへんが問題なのかを言わないと次も同じ問題を起こす可能性がある
76 名前:デフォルトの名無しさん [2020/07/18(土) 12:45:26.81 ID:55gPHPOJ.net] すぐに論破されることを言う奴って何が目的なんだろう 5chを見下してるのかもしれないな こんなサイトみてる奴は大したことないって思ってるから油断して非論理的な発言をするのかと思った
77 名前:デフォルトの名無しさん mailto:sage [2020/07/18(土) 13:00:12.87 ID:Gf2oPXpD.net] どこに問題があるかなんて前スレでさんざん言われてただろ あれで理解できないなら一生理解できないだろうね
78 名前:デフォルトの名無しさん mailto:sage [2020/07/18(土) 13:01:12.49 ID:n7a2F8Nj.net] >>75 たぶん問題が難しいか、手間がかかるからじゃないかな
79 名前:デフォルトの名無しさん [2020/07/18(土) 13:06:42.15 ID:55gPHPOJ.net] >>77 指摘された問題点はすべて返信していてその返信に対する返信はない つまり指摘された問題点はすべて間違っていて問題点は見つかっていない >>78 Pythonで20行弱で書けることは伝えている となると難易度がこのスレの住人には高すぎたということか...
80 名前:デフォルトの名無しさん [2020/07/18(土) 13:09:37.97 ID:LD7t+FRX.net] イキり臭ただようコメントですね
81 名前:デフォルトの名無しさん [2020/07/18(土) 13:14:16.81 ID:LD7t+FRX.net] 問題の良し悪しよりも出題者の態度が気に入らないから取り組まない人がいるんじゃないかな 自分の正当性を主張するだけではダメで回答者のモチベーションを上げる方向に導かないと コミュニケーションが未熟なだけだと思いました
82 名前:デフォルトの名無しさん [2020/07/18(土) 13:17:55.61 ID:LD7t+FRX.net] 線形拘束オートマトンでこの問題解いてみて! 線形拘束オートマトンはこういう仕組みで、こういうところでも活用できるから知ってると便利だよ! みたいにポジティブアゲアゲでいかないと
83 名前:デフォルトの名無しさん [2020/07/18(土) 13:20:22.31 ID:55gPHPOJ.net] >>81 なるほどーそれは>>1 に書いとくべきだな 皆んなから好かれる人の出題しか解答しませんよって 出題にも手間がかかるわけだからそういうのは普通に不誠実だと思う
84 名前:デフォルトの名無しさん mailto:sage [2020/07/18(土) 13:21:40.49 ID:n7a2F8Nj.net] >>83 落ち着けよ お題に解答が全く付かないなんてよくあることだって
85 名前:デフォルトの名無しさん [2020/07/18(土) 13:23:11.61 ID:55gPHPOJ.net] >>82 仕組みというか解説は書けるなら書きたかったな 悩んだがそんなに難しくないと思ったから止めといた
86 名前:デフォルトの名無しさん [2020/07/18(土) 14:02:48.54 ID:LD7t+FRX.net] >>83 ルールとして決める必要はなくて 一般的なコミュニケーションのとり方としてレスポンスが欲しいなら 自分の正当性だけを主張するやり方だと難しいよってこと 自分がこんなに頑張って問題書いたんだ、答えがないのは不誠実だ、そんな自己中発揮してたらレスポンスなくて当然かと
87 名前:デフォルトの名無しさん [2020/07/18(土) 14:06:16.09 ID:LD7t+FRX.net] 線形拘束オートマトンが実装できるってすごいことだから 模範解答示したら良いと思うよ
88 名前:デフォルトの名無しさん mailto:sage [2020/07/18(土) 14:14:52.95 ID:ICGznoJS.net] >>83 難度がうんぬんよりも問題文読んだ時点で作問者の頭が悪そう(使ってる言葉の意味わかってなさそう)って思ってスルーしたわ ここのコテハンも同じ理由でスルー ただ、面白そうなら気まぐれで解くこともある 解く方も出す方も好きにしたら良い
89 名前:デフォルトの名無しさん [2020/07/18(土) 14:36:05.17 ID:55gPHPOJ.net] >>86 答えがないから不誠実なのではなくて 出題者に伝えておくべき情報が>>1 に書かれていないのならそれは不誠実ということ >>71 は次のように言っている 「皆んながお前の出題に問題があると思っている」 俺は今後のためにも当然次の疑問が生まれ、それを伝えた「どこらへんが?難易度が高すぎた?」 そこで君が「難易度よりむしろマナーに問題がある」という趣旨の発言をした そうなると俺は「>>1 にマナーの具体的な内容を書くべき」 そうしないと同じ問題を起こしてしまうから
90 名前:デフォルトの名無しさん [2020/07/18(土) 14:41:12.58 ID:LD7t+FRX.net] >>89 ルールとして書くまでもなく一般的なコミュニケーションのことだから >>1 に書かれてなくても良いし、それが無いがゆえにできなかったのだという 態度が自己中ってこと
91 名前:デフォルトの名無しさん [2020/07/18(土) 14:42:30.19 ID:LD7t+FRX.net] 問題を起こしてしまうの主語は君がってことだよね? 君がコミュニケーション能力を身につければ解決すると思うのだけれども
92 名前:デフォルトの名無しさん mailto:sage [2020/07/18(土) 14:42:36.88 ID:vTEAacne.net] 解いてみたいと思えない内容の上に長文でうざい っていう感情論に近いものを明文化すんのはちょっと難しいね
93 名前:デフォルトの名無しさん [2020/07/18(土) 14:50:16.06 ID:LD7t+FRX.net] 客観的に難易度は高いと思うよ 少なくとも僕は実装したこと無い 有限オートマトンが精一杯 自分で「難易度がこのスレの住人には高すぎたということか」と言ってしまうのはイキりだと思った 難易度+高慢な態度 ってところかと
94 名前:デフォルトの名無しさん mailto:sage [2020/07/18(土) 15:08:41.26 ID:n7a2F8Nj.net] あるいは進行形で解いてるやつがいるかもしれないな なんたってこのスレの最長解答時間は3ヵ月だからなw
95 名前:デフォルトの名無しさん [2020/07/18(土) 15:10:20.71 ID:LD7t+FRX.net] レーダーのお題でしょ、あれは感動した
96 名前:デフォルトの名無しさん [2020/07/18(土) 15:12:42.37 ID:LD7t+FRX.net] チューリングマシンのお題は、僕も解いて見ようと思ってWikipedia読んでる
97 名前:デフォルトの名無しさん [2020/07/18(土) 15:13:54.80 ID:LD7t+FRX.net] 最高のチューリングマシンを見せてやるぜ、必ず帰ってくるからな、帰ったら結婚しよう
98 名前:デフォルトの名無しさん mailto:sage [2020/07/18(土) 15:20:47.20 ID:n7a2F8Nj.net] 死亡フラグね
99 名前:デフォルトの名無しさん mailto:sage [2020/07/18(土) 15:29:31.73 ID:Bt+NBO6d.net] >>83 気に入らない奴は相手にされないなんて、人と人とのコミュニケーションが発生する場所なら何処でもそうだろう。仕事などの個人の感情よりやるべきことを優先すべき場面を除いては。 書かれてないから知らないなんて、小学生の屁理屈にも劣る反応だな。
100 名前:デフォルトの名無しさん [2020/07/18(土) 15:34:22.37 ID:55gPHPOJ.net] 新しいことを学ぶのは素晴らしいと思うけど今まで2週間以上同じスレに居たことがないから責任持てないなぁ 現場でバリバリ使う為にはε-非決定性オートマトンとかも知っとかないと実用的じゃなくなるから学習に意味を見いだすのはかなり難しいと思うよ
101 名前: mailto:sage [2020/07/18(土) 15:41:54.65 ID:KIRMqycZ.net] >>100 非決定オートマトンを決定性オートマトンにする、とかいうお題は、やっぱりマニアックすぎますかね? 今そういう本をよんでポチポチコードを書いているので、需要があるようなら出題&採点してもいいかなって思ってます
102 名前:デフォルトの名無しさん [2020/07/18(土) 15:47:29.51 ID:55gPHPOJ.net] >>101 需要があるかは分からないけどとてもいいと思うよ
103 名前:デフォルトの名無しさん mailto:sage [2020/07/18(土) 15:58:37.25 ID:n7a2F8Nj.net] >>102 いなくなるかもしれないなら解答例貼っておいてよ
104 名前:デフォルトの名無しさん [2020/07/18(土) 16:51:46.46 ID:2TKjWEFt.net] sedでいいんじゃね
105 名前:デフォルトの名無しさん [2020/07/18(土) 18:01:09.47 ID:k5pKf1DO.net] >>81 まあしかし何かが出題されたら必ず誰かが解かねばならないわけでもないしな。義務は何もないからこうでなければいけないという事もない。
106 名前:69 mailto:sage [2020/07/18(土) 19:43:00.59 ID:BZh66Ti/.net]
107 名前:rel="noopener noreferrer" target="_blank" class="reply_link">>>74 ありがとう❣、チャレンジして良かったよ! 出題者からはなんの評価も解説もされないので そういう反応が返って来ると嬉しい。 また、次のモチベーションに繋がる。 教科書とか勉強中のコラムとかコーヒーブレイクみたいな 息抜き程度の頭の体操になるような手軽なお題の方が答えやすいね。 結局は出題者も回答者も自己満足でしか無いから、 初級〜中級者向けくらいが丁度良いかも? [] [ここ壊れてます]
108 名前:デフォルトの名無しさん mailto:sage [2020/07/18(土) 20:06:14.32 ID:tp8HW1uL.net] >>69 こういうコードを見ると、jagarikin の「スーパー鳥スロット」を思い出すw 画像ファイルが1つもなく、こういうコードばっかりだったw
109 名前:デフォルトの名無しさん mailto:sage [2020/07/18(土) 20:44:45.69 ID:naIVYT0v.net] >>107 コードのキレイさなら>>70 かもしれませんが お題はコードを出力するのではなくハート形を出力せよとのことでしたから 初心者がチャレンジしたコードなのでスマートな書き方でないのは御勘弁下さいorz
110 名前:68 mailto:sage [2020/07/18(土) 21:39:17.47 ID:yeg1h1ii.net] いろんな回答を見たかったので早期の論評は控えてました。 >>69 の出力は出題者もきれいだなって思います。 想定していたコードはどちらかいうと>>70 に近くて codepad.org/ICpm3J6j こんな感じの簡単な式(x^2+y^2<100-|x|y)でも充分かなと思ってました。 ハート形を生成できる式はいくつか知られているので、バリエーションを探ってみるのはいいかなと思います。
111 名前:蟻人間 mailto:sage [2020/07/19(日) 13:58:11.60 ID:GV3E92FC.net] (1) https://gist.github.com/katahiromz/694763e2060d4a004452875bebc04ee3 二次元タートルグラフィックスで八角形を描けたよ。 お題: (1)と(2)のリンクを参考にコッホ曲線を描画せよ。 (2) www.f.waseda.jp/sakas/java/JavaGraphicsSample.html
112 名前:蟻人間 mailto:sage [2020/07/19(日) 14:05:25.72 ID:GV3E92FC.net] >>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); }
113 名前:蟻人間 mailto:sage [2020/07/19(日) 14:45:30.46 ID:GV3E92FC.net] 小さなお題: >>110 の(1)のturn_dir関数とturn_angle関数を3次元に拡張し、 3次元タートルグラフィックスを可能にせよ。 ただし、turn_dirの引数は長さ1の方向ベクトルとし、turn_angleの引数は角度とする。 turn_dirは、引数dzが0のとき、変更前と同じ動作にせよ。 また、turn_angleの引数にもう一つの角度を追加し、追加した角度がゼロのとき、 変更前と同じ動作にせよ。 ヒント:四元数
114 名前:デフォルトの名無しさん mailto:sage [2020/07/19(日) 14:48:01.51 ID:EiEVeWaP.net] 草 66 名前:デフォルトの名無しさん[sage] 投稿日:2020/07/18(土) 00:01:47.57 ID:tp8HW1uL [1/2] ついに蟻人間は、3次元まで行ってしまったか その内、Quaternion(4元数)がどうたらこうたらと、言い出しかねないw
115 名前:蟻人間 mailto:sage [2020/07/19(日) 21:17:44.37 ID:T8vbWyFG.net] さて、解けた者は挙手したまえ。
116 名前:デフォルトの名無しさん mailto:sage [2020/07/19(日) 21:45:13.46 ID:h5vFOzT4.net] 頭が悪いことがばれたからって 必死に数学の知識を見せようと頑張ってる でも頭の悪さが随所に滲み出てる 自覚のないアホ
117 名前:蟻人間 mailto:sage [2020/07/19(日) 21:56:49.40 ID:GV3E92FC.net] >>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); }
118 名前:デフォルトの名無しさん mailto:sage [2020/07/19(日) 21:57:24.56 ID:5kiTFqsE.net] 誰もイキらずに淡々と問題と答えのレスだけ並んでく雰囲気は良さを感じたけど やっぱクソコテって怖いな
119 名前:蟻人間 mailto:sage [2020/07/19(日) 22:06:51.03 ID:GV3E92FC.net] >>116 dz = dy * Math.sin(angle2 * Math.PI / 180); dy *= Math.cos(angle2 * Math.PI / 180); 次は、三次元のturn_dirね。数学、スゴクデキルんでしょ?
120 名前:蟻人間 mailto:sage [2020/07/19(日) 22:12:10.73 ID:GV3E92FC.net] お題: JavaScript function turn_dir(dx, dy, dz) { // (dx, dy, dz)は長さ1の方向ベクトル。 // 長さ1の方向ベクトル(turtle_dx, turtle_dy, turtle_dz)を(dx, dy, dz)だけ回転させる。 ...(ここに何か書く)... }
121 名前:蟻人間 mailto:sage [2020/07/19(日) 22:16:20.98 ID:GV3E92FC.net] ♪はい、コーディングいってみよー! はいはいはい、はいはいはい!
122 名前:蟻人間 mailto:sage [2020/07/19(日) 23:32:08.26 ID:T8vbWyFG.net] 俺はそういう悪評トリックに引っ掛からないよ。間違いは的確に指摘頂きたい。
123 名前:デフォルトの名無しさん mailto:sage [2020/07/20(月) 06:57:18.16 ID:P7t0RBc6.net] >>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
124 名前:デフォルトの名無しさん mailto:sage [2020/07/20(月) 07:42:33.17 ID:ozWDjdlg.net] >>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
125 名前:蟻人間 mailto:sage [2020/07/20(月) 15:09:49.43 ID:rHNryQzp.net] 傾けた木が平面にならない。 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 からダウンロードして下さい
126 名前:。 お題: (4) を修正して木が平面になるようにせよ。 (deleted an unsolicited ad) [] [ここ壊れてます]
127 名前:デフォルトの名無しさん [2020/07/20(月) 16:08:13.13 ID:UHinuGOV.net] お題じゃなくて作成依頼ですか?w
128 名前:蟻人間 mailto:sage [2020/07/20(月) 16:16:33.54 ID:6GFyBW1T.net] こういうのは数学が鬼ズバできる猛者に任せたい所だが。。。 報酬は出しちゃいかんのか。
129 名前:デフォルトの名無しさん mailto:sage [2020/07/20(月) 17:25:48.10 ID:uvZgkaZD.net] 出ないならやらない
130 名前:デフォルトの名無しさん mailto:sage [2020/07/20(月) 17:58:58.92 ID:8mFfSXNu.net] いや、そういう猛者がいるところに依頼してこいよ 報酬出すんならランサーズとかにでも行ってこい なんでここで話題にするんだ
131 名前:デフォルトの名無しさん mailto:sage [2020/07/20(月) 17:59:50.36 ID:8mFfSXNu.net] そういう意味不明な言動を繰り返すから糞コテ呼ばわりされるって気付いて
132 名前:蟻人間 mailto:sage [2020/07/20(月) 18:37:44.48 ID:rHNryQzp.net] 寺へ行きました。すみません。
133 名前:デフォルトの名無しさん mailto:sage [2020/07/20(月) 23:40:32.05 ID:5ka8Ymx5.net] >>124 なにこれ激重。1〜3はIEでも動くけど4はクロームでも少し時間かかる。 https://i.imgur.com/Kkti3xQ.gif 舞フレームごとに書き出してるんかな? 3Dオブジェクトコンテナにでも入れた方がいいのかな?
134 名前:蟻人間 mailto:sage [2020/07/20(月) 23:47:38.07 ID:6GFyBW1T.net] やろうとしてるのは、三次元フラクタルと臓器の実体化だから、超複雑な図形を再帰で描くことになる。再帰が多ければ確かに計算量は爆発するよ。
135 名前:デフォルトの名無しさん mailto:sage [2020/07/20(月) 23:52:17.88 ID:/f9oEP+1.net] いい加減IE捨てろよ
136 名前:アンスタ7.2日目 mailto:sage [2020/07/20(月) 23:54:27.58 ID:5ka8Ymx5.net] >>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); }
137 名前:デフォルトの名無しさん mailto:sage [2020/07/20(月) 23:57:55.33 ID:5ka8Ymx5.net] >>133 クロームより軽いから、捨てられなくて。。。
138 名前:蟻人間 mailto:sage [2020/07/21(火) 00:03:34.18 ID:iLwMnecK.net] >>134 その事例についてはteratailに移動しましたので、ここでは打ち切りとさせて下さい。 https://teratail.com/questions/279115
139 名前:デフォルトの名無しさん mailto:sage [2020/07/22(水) 22:25:22.87 ID:ILXZvJ+B.net] 「1+1は2じゃないぞ。オレたちは1+1で200だ!10倍だぞ10倍」 …が、なんとなく成り立っているように感じられるプログラムを作って発表せよ。
140 名前:デフォルトの名無しさん mailto:sage [2020/07/22(水) 22:30:15.48 ID:IwIxQ1Ze.net] お題: ランダムな整数が格納された長さNの配列から、偶数の要素のみを抜き出せ Nは任意とする
141 名前:デフォルトの名無しさん mailto:sage [2020/07/22(水) 22:57:06.83 ID:EawLE7Sy.net] >>138 Ruby p gets.split.map(&:to_i).select(&:even?)
142 名前:デフォルトの名無しさん mailto:sage [2020/07/23(木) 00:07:39.47 ID:DuCdQo+y.net] >>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
143 名前:デフォルトの名無しさん mailto:sage [2020/07/23(木) 10:38:13.83 ID:bJ7HfHNw.net] >>138 ocaml https://ideone.com/qCUADD >>138 octave https://ideone.com/3xMvgA
144 名前:デフォルトの名無しさん mailto:sage [2020/07/23(木) 22:03:16.45 ID:VBywRp49.net] >>138 Perl5 @b = grep{$_ ^ 1} @a;
145 名前:デフォルトの名無しさん [2020/07/23(木) 23:12:54.26 ID:QnunbgyT.net] >>138 Java https://paiza.io/projects/BNpQRglb7E1lGKawVZRBCg
146 名前:デフォルトの名無しさん [2020/07/24(金) 00:24:32 ID:F0SZWNxk.net] >>138 Python import random N = 10 MAX = 100 [x for x in random.sample(range(MAX), N) if x % 2 == 0]
147 名前:デフォルトの名無しさん mailto:sage [2020/07/24(金) 03:32:41.61 ID:6ZonvnML.net] >>137 なんとなく結果を2進数(あるいは通常の10進数以外の表現)で出せば良いだけのような気がするが・・・ Perl だとこんな感じで 10 が出る。 printf "%b\n", 1 + 1;
148 名前:デフォルトの名無しさん [2020/07/24(金) 03:47:06.33 ID:6ZonvnML.net] >>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 なら読んだ直後の文法チェック時にエラーだと思う。
149 名前:デフォルトの名無しさん [2020/07/25(土) 07:02:03.31 ID:j1aQFTSL.net] >>138 Julia a=1:10 a[iseven.(a)]
150 名前:デフォルトの名無しさん mailto:sage [2020/07/25(土) 11:32:49.78 ID:vIjhxGJs.net] 大抵の言語でfilter modulo一発だよね。 お題www
151 名前:デフォルトの名無しさん [2020/07/26(日) 11:42:26.03 ID:467XWCJo.net] >>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は関数の外に置いた。
152 名前:デフォルトの名無しさん mailto:sage [2020/07/26(日) 11:54:08.47 ID:arqbmdN/.net] Haskellのコード見たいと思ってた
153 名前:デフォルトの名無しさん mailto:sage [2020/07/26(日) 11:55:36.48 ID:Lwmxod4b.net] 流行らなかった訳が分かった
154 名前:デフォルトの名無しさん [2020/07/26(日) 12:16:01.64 ID:yLhsD6tn.net] >>151 まあね。 安全なコードを書き易いと取るか、面倒くさいと取るかやね。
155 名前:デフォルトの名無しさん [2020/07/26(日) 12:31:12.02 ID:XQciIU0B.net] お題 2つの文字列の差を[]で囲って出力してください 例1 入力:abc adc 出力:a[b]c 例2 入力:abc acd 出力:a[bc] 例3 入力:abc bcc 出力:[ab]c
156 名前:デフォルトの名無しさん [2020/07/26(日) 15:30:12.41 ID:
] [ここ壊れてます]
157 名前:yLhsD6tn.net mailto: >>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]" [] [ここ壊れてます]
158 名前:デフォルトの名無しさん [2020/07/26(日) 17:41:12.51 ID:1PJx+gwa.net] やっぱフラグしかないのか?
159 名前:デフォルトの名無しさん mailto:sage [2020/07/26(日) 19:21:26.42 ID:+ODzYEeD.net] >>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" }
160 名前:デフォルトの名無しさん [2020/07/26(日) 23:12:10.92 ID:3QUkzPB/.net] >>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]
161 名前:デフォルトの名無しさん [2020/07/29(水) 09:26:50.38 ID:yJ6wpcWu.net] お題1 じゃんけんを実装してください 1 = ぐー 2 = ちょき 3 = ぱー 入力: 1 出力: あなた=ぐー コンピュータ=ちょき あなたの勝ちです お題2 あなたの勝率を指定できるようにしてください 勝率は0.0〜1.0で入力します 入力: 1 0.7 出力: あなた=ぐー コンピュータ=ちょき あなたの勝ちです
162 名前:デフォルトの名無しさん mailto:sage [2020/07/29(水) 22:59:47.88 ID:tovqwAmw.net] >>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
163 名前:デフォルトの名無しさん mailto:sage [2020/07/29(水) 23:09:16.98 ID:tovqwAmw.net] 下から5行目タイポ puts odai2[2, 1] # => You: Chocky, Com: Parr. Win
164 名前:デフォルトの名無しさん mailto:sage [2020/07/29(水) 23:11:53.00 ID:z6Fnx3oM.net] Parr 出たか連続校正レス君
165 名前:デフォルトの名無しさん mailto:sage [2020/07/29(水) 23:15:30.50 ID:zhbinuHB.net] 別にええやろ
166 名前:蟻人間 mailto:sage [2020/07/29(水) 23:42:09.78 ID:hGtKVe2E.net] 子ども国会で、グー、チョキ、パーのつづりを次のように閣議決定しました。 グーはgoo、 チョキはchoki、 パーはpar、 ジャンケンはJankenとする。
167 名前:デフォルトの名無しさん mailto:sage [2020/07/30(木) 00:20:11 ID:aEaasmNp.net] Unicode の \u270A \u270B \u270C
168 名前:デフォルトの名無しさん mailto:sage [2020/07/30(木) 15:16:52 ID:cH8Va6i2.net] 自然数AとB
169 名前:があります A * B ではない方法で、AとBを掛けた結果を求めなさい。 ただし、AとBは4バイトの数値型で、どのような値が入ってきても 実施してからなるべく近い時間で計算終了する方が高得点とします。 [] [ここ壊れてます]
170 名前:デフォルトの名無しさん mailto:sage [2020/07/30(木) 15:58:10.10 ID:aEaasmNp.net] >>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
171 名前:デフォルトの名無しさん mailto:sage [2020/08/01(土) 20:01:40.49 ID:eF75V+Af.net] >>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
172 名前:デフォルトの名無しさん mailto:sage [2020/08/01(土) 21:52:47.76 ID:xRTQ61eG.net] >>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
173 名前:デフォルトの名無しさん mailto:sage [2020/08/04(火) 03:43:27.41 ID:DYgISIVe.net] お題: 文字列の格納された配列から重複した文字列を削除し昇順にソートせよ ['apple', 'banana', 'apple', 'chikuwa'] ↓ ['apple', 'banana', 'chikuwa']
174 名前:デフォルトの名無しさん mailto:sage [2020/08/04(火) 03:55:23.60 ID:gT//RRjC.net] >>169 Ruby ['apple', 'banana', 'apple', 'chikuwa'].uniq.sort #=> ["apple", "banana", "chikuwa"]
175 名前:デフォルトの名無しさん [2020/08/04(火) 05:05:40.50 ID:YeoxtHaI.net] >>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" }
176 名前:デフォルトの名無しさん [2020/08/04(火) 18:06:57 ID:Bm48LwqI.net] >>169 Kotlin または Kotlin script でのやり方 a が Array<String> または List<String> でそこに元の文字列が入っているとすると。 val b = a.toSortedSet() でbに重複削除されてソートされたSetができる。 これを List<String> にしたい場合はこうする。 val c = b.toList()
177 名前:デフォルトの名無しさん [2020/08/04(火) 19:17:32.13 ID:w83j0BiFE] [お題] “(16 + (8 - 4)) / 2” のような文字列を入力として, その評価結果(この場合は10)を出力するプログラムを作成してください.
178 名前:デフォルトの名無しさん [2020/08/04(火) 18:45:38.06 ID:lImhU2CT.net] >>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
179 名前:デフォルトの名無しさん [2020/08/04(火) 19:24:17 ID:lImhU2CT.net] >>174 あーアホだったw タブ消去の仕様だとPythonだと分けわからんことになるなw ↓貼り直した codepad.org/BWRzr8fW ※会員未登録の為、一定期間後に自動消去
180 名前:デフォルトの名無しさん mailto:sage [2020/08/04(火) 20:26:47.42 ID:BW/Lg1/b.net] >>166 この魔法が気になる
181 名前:蟻人間 mailto:sage [2020/08/04(火) 20:33:41.16 ID:pnjegpbT.net] >>176 奇数ならば最下位ビットが1であることを利用している。
182 名前:デフォルトの名無しさん [2020/08/04(火) 20:43:45.04 ID:ZgraBKAX.net] 筆算じゃないの 101 b 110 a (+ --------- 0 1010 10100 --------- 11110
183 名前:蟻人間 mailto:sage [2020/08/04(火) 20:47:15.02 ID:pnjegpbT.net] お題: 総務省統計局の1990〜2019年までの人口データを使用して2020〜2024年の日本の人口の推計値を求めよ。人口データ以外は使用しないものとする。
184 名前:蟻人間 ◆T6xkBnTXz7B0 mailto:sage [2020/08/04(火) 21:14:16 ID:pnjegpbT.net] これは電子政府の使い勝手のテストである。だれも解けないなら、電子データは活かされていないと判断する。
185 名前:デフォルトの名無しさん mailto:sage [2020/08/04(火) 21:16:21 ID:02jYvMNw.net] >>176 aの偶奇によって↓の計算してaがちっちゃくなったら終わりってしてるだけだぞ (2a' + 1)b = b + a' * (2b) (2a') * b = a' * (2b)
186 名前:デフォルトの名無しさん [2020/08/04(火) 21:26:04 ID:lImhU2CT.net] チューリングマシンを使って重くて複雑な乗算を再現して何の意味があるのかと思ってそうだな ポイントは文法の中に演算を組み込める点 実社会に役に立つ具体的な例を挙げろと言われれば直ぐには思いつかないが、オートマトンの入力は文字列だけとは限らないぞ 有限木オートマトン使って静的コード解析なのか最適化なのかは分からんが、開発言語の構文木に何らかの演算が伴うルールを適用したいこともあるかもしれない 「そんなのプログラミングすればいいだけだろ」と言う声が聞こえてきそうだがそれは極論「正規表現など要らん」と言ってるのと同じだと思う 以上でもって「全てのプログラマはオートマトンとチューリングマシンをよく勉強するべき」とする俺の主張の正当性は認められる ちなみに俺は10年以上機械学習の勉強をしたのに画期的な成果が出せなかった後悔の思いがあるから言っている
187 名前:デフォルトの名無しさん mailto:sage [2020/08/04(火) 21:58:22.27 ID:JHqDXk92.net] お題を出して解くスレで電子データは活かされていないとかどうでもいいんですが… なんでそうやっていつもスレ趣旨からずれようとするのか? ズレたいならよそでやってくれ
188 名前:デフォルトの名無しさん mailto:sage [2020/08/04(火) 22:11:15.82 ID:02jYvMNw.net] 片山博文MZ◆NveQN6OtcI
189 名前:デフォルトの名無しさん [2020/08/04(火) 23:36:46 ID:L0dS0CTZ.net] お題 両替をしてください 貨幣は次の文字列で表されます 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)
190 名前:デフォルトの名無しさん mailto:sage [2020/08/05(水) 00:05:23.10 ID:DlE2lfwB.net] 書きたいけど寝たい
191 名前:デフォルトの名無しさん [2020/08/05(水) 02:29:32 ID:prJIGLTT.net] >>176 aが2とか4だったらどうなるかを紙にでも書いて考えればいずれわかると思う。
192 名前:デフォルトの名無しさん mailto:sage [2020/08/05(水) 02:55:46.54 ID:wv4r4oF2.net] >>185 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" }
193 名前:デフォルトの名無しさん [2020/08/05(水) 03:57:36.76 ID:NljdtI5zt] >>153 C++ https://ideone.com/hgBybu>>169 C++ https://ideone.com/dd6lAZ
194 名前:デフォルトの名無しさん [2020/08/05(水) 11:37:38.85 ID:kVNaCqIg.net] 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) グラフをプロットしたらこのエラーが出ました。対処法を教えてください
195 名前:デフォルトの名無しさん mailto:sage [2020/08/05(水) 12:05:51.48 ID:DlE2lfwB.net] 斬新なお題だなNEC-PCuserさん
196 名前:デフォルトの名無しさん [2020/08/05(水) 12:27:47.54 ID:NljdtI5zt] >>185 C++ https://ideone.com/6kqA6M
197 名前:デフォルトの名無しさん [2020/08/05(水) 12:16:18.65 ID:IZQzbQjk.net] >>190 <対処法を教えるお題 一行目と最後の行IOError("%s not found." % path) から File "C:\Users\NEC-PCuser\.spyder-py3\temp.py" のパスが間違えていると思われるので temp.pyを添付するか確認するように進言します
198 名前:デフォルトの名無しさん [2020/08/05(水) 14:35:10 ID:xKYyZvTf.net] 心電図装置に繋がってるデバイスが機能停止したんだろ
199 名前:デフォルトの名無しさん mailto:sage [2020/08/05(水) 15:30:05.18 ID:prJIGLTT.net] >>185 Kotlin https://paiza.io/projects/cVm9G2FkQCosaGf9_fQz-Q 最初は割り算したり余り出したりしてやろうと思ったんだけど、よく考えたらこの場合はその計算は無駄な感じがしたので合計から引けたらその貨幣を出すのを繰り返すようにした。
200 名前:デフォルトの名無しさん [2020/08/05(水) 16:44:00.29 ID:73CDpa/5.net] ふむ。コイン切れの対処もし易いな。
201 名前:蟻人間 ◆T6xkBnTXz7B0 mailto:sage [2020/08/05(水) 17:59:02 ID:TWR5sasY.net] お題: コイにえさをやるプログラム「feed」がある。一時間ごとにfeedを実行するプログラムを書け。ただし、ビジーウェイトはしてはならない。 ダミーのfeedは、次のようなプログラムとする: - 現在日時と「えさをやりました。」を出力する。
202 名前:蟻人間 mailto:sage [2020/08/05(水) 18:08:26.66 ID:UZ8wPONY.net] >>197 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); }
203 名前:デフォルトの名無しさん [2020/08/05(水) 19:40:23.44 ID:VitQNdTl.net] は、はやい・・・
204 名前:デフォルトの名無しさん mailto:sage [2020/08/05(水) 20:19:52.45 ID:wv4r4oF2.net] >>197 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 # 表示確認用
205 名前:デフォルトの名無しさん [2020/08/05(水) 23:41:13.11 ID:prJIGLTT.net] >>197 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 'えさをやりました。'
206 名前:デフォルトの名無しさん mailto:sage [2020/08/05(水) 23:51:48.40 ID:prJIGLTT.net] >>201 はfeedで現在の日付を出すのを忘れた。 日付付けるなら例えばこうする。 #!/bin/sh echo `date` 'えさをやりました。' date コマンドに任せてしまってこんな風にもできる。(日時は YYYY-MM-DD hh:mm:ss の形式で出る)。 #!/bin/sh date '+%F %T えさをやりました。'
207 名前:デフォルトの名無しさん [2020/08/06(木) 14:26:19.33 ID:HoaabIeAf] >>138 Rust use rand::Rng; fn main() { let mut rng = rand::thread_rng(); let mut vec : Vec<u8> = Vec::new(); for _ in 1..20 { vec.push(rng.gen::<u8>()); } let result: Vec<u8> = vec.iter().filter(|&x| x % 2u8 == 0u8).cloned().collect(); for v in result { println!("{}", v); } }
208 名前:デフォルトの名無しさん [2020/08/06(木) 16:22:14.55 ID:HoaabIeAf] >>138 C++ #include <algorithm> #include <iostream> #include <vector> int main() { auto vec = std::vector<int>{}; for (int i = 0; i < 20; ++i) { vec.push_back(rand() % 10 + 1); } auto result = std::vector<int>{}; std::copy_if(vec.begin(), vec.end(), std::back_inserter(result), [](int v) { return v % 2 == 0; }); for (auto v : result) { std::cout << v << std::endl; } }
209 名前:蟻人間 mailto:sage [2020/08/06(木) 18:50:53.87 ID:mzjhTFla.net] お題: 現実世界でコイにえさをやるプログラム。 できるのか?
210 名前:デフォルトの名無しさん [2020/08/06(木) 19:02:17 ID:nx4HEXSE.net] >>205 始めからPLCのプログラム限定って書け>>197
211 名前:デフォルトの名無しさん mailto:sage [2020/08/06(木) 19:06:41 ID:cHZDAcP7.net] >>205 プログラムそのものは出力装置に繋がるビットをONにするとかを定期的にやれば良いだけなのでは? で、ONになったらリレーで餌やり器のスイッチが入ってウイーンとかいって餌が一定量水槽に入る。 ていうか、全部ハードウェアだけででできないか?タイマーICってあったよね確か。
212 名前:蟻人間 mailto:sage [2020/08/06(木) 19:21:15.27 ID:mzjhTFla.net] ハードウェアだとソフトウェア制御できない。成長を細かく制御したい。 普通のPCから安価で制御する方法はないのだろうか。 ニシキゴイを20匹ほど飼いたいのだが。
213 名前:デフォルトの名無しさん [2020/08/06(木) 19:23:23.77 ID:nx4HEXSE.net] >>208 ピ・タ・ゴ・ラ・スイッチ
214 名前:デフォルトの名無しさん mailto:sage [2020/08/06(木) 19:37:26 ID:/QKQvkvR.net] なぜ何度ツッコまれてもスレタイからずれようとするんですか? 学習できないんですか?
215 名前:蟻人間 ◆T6xkBnTXz7B0 mailto:sage [2020/08/06(木) 19:46:21 ID:mzjhTFla.net] >>210 ハードにも興味を持ってくれるといいな、と思って企画しました by 突撃商会
216 名前:デフォルトの名無しさん mailto:sage [2020/08/06(木) 19:58:03 ID:AWtnj9QL.net] CDトレイを開閉するソフトを作りそれで餌やり器のボタンを押せ
217 名前:蟻人間 ◆T6xkBnTXz7B0 mailto:sage [2020/08/06(木) 20:01:30 ID:mzjhTFla.net] >>212 正解。次のお題お願いします。
218 名前:デフォルトの名無しさん [2020/08/06(木) 20:18:11.34 ID:nx4HEXSE.net] 【お題】正解にたどり着くようにアシストした得点を算出するプログラムを作れ スケールは1点以上100点未満とする
219 名前:蟻人間 ◆T6xkBnTXz7B0 mailto:sage [2020/08/06(木) 20:28:14 ID:mzjhTFla.net] >>214 それは人間しかできないんで内科医?
220 名前:デフォルトの名無しさん mailto:sage [2020/08/06(木) 20:37:37 ID:sjF+gr/I.net] クソコテ死ねよマジで
221 名前:デフォルトの名無しさん mailto:sage [2020/08/06(木) 20:53:50 ID:O/aURmUk.net] >>208 その手の目的には Raspberry Pi がおすすめです 最近流行っているから多くのノウハウが容易に見つかりますよ
222 名前:蟻人間 ◆T6xkBnTXz7B0 mailto:sage [2020/08/06(木) 21:07:24 ID:mzjhTFla.net] >>217 ありがとうございます。使えそうなハードでかなりお買い得ですね。 三菱やパナソニックは、、、破壊的イノベーションができない連中か。。。
223 名前:蟻人間 ◆T6xkBnTXz7B0 mailto:sage [2020/08/06(木) 21:16:15 ID:mzjhTFla.net] IchigoJamというのもあるみたい。
224 名前:デフォルトの名無しさん mailto:sage [2020/08/06(木) 21:29:05.63 ID:8sSWlLgK.net] スレチ ◆QZaw55cn4c はうせろ
225 名前: mailto:sage [2020/08/06(木) 22:26:16.70 ID:L4WiFaHt.net] >>220 突然、どうしたのですか?
226 名前:デフォルトの名無しさん mailto:sage [2020/08/06(木) 22:38:17.00 ID:8sSWlLgK.net] >>221 呼んでねえよハゲ消えろ
227 名前:蟻人間 mailto:sage [2020/08/06(木) 23:02:55.51 ID:mzjhTFla.net] お題: 点結びパズルという簡単なパズルがある。紙の上にたくさんの点があり、それぞれの点の近くに番号が書かれていて、 番号の順に点を結べば、図案が浮かび上がるというものだ。 以下の手順に従ってモノクロPNG画像(300dpi前後)として与えられた点結びパズルを自動的に解くプログラムを作れ。画像処理。 (1) OCR技術や深層学習などにより、画像上の一文字が2mm以上6mm以下のアラビア数字(複数)を読み取り、数字の位置と数字の対を返す関数を作れ。数字の30度以上の回転は考える必要はない。 (2) 点結びパズルの点は直径0.5mm以上3mm以下の黒い丸い点だと仮定して、点と数字を関連付けるアルゴリズムを考案せよ。 ただし、数字に近い点が複数ある場合は「スマートに」割り振ること。 (3) 画像に実際に線分を描画して点結びパズルを回答するプログラムを作れ。 点と数字以外の枠線やタイトルなどは印刷されていないと仮定してもよい。
228 名前:デフォルトの名無しさん mailto:sage [2020/08/07(金) 00:08:41.77 ID:TzYKRTqH.net] よく、ラズパイコンテストでやってる 水槽の中の金魚に、エサをやる装置とか
229 名前:デフォルトの名無しさん mailto:sage [2020/08/07(金) 11:29:33 ID:uQ4nbdFf.net] 債務が多い
230 名前:デフォルトの名無しさん [2020/08/07(金) 12:51:36 ID:lb7vo/Jy.net] お題 文字列を大文字小文字を区別せずにソートして()でグルーピングしてください 入力: 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)
231 名前:デフォルトの名無しさん [2020/08/07(金) 13:43:57.69 ID:uQ4nbdFf.net] >>226 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)
232 名前:デフォルトの名無しさん [2020/08/07(金) 13:48:23.69 ID:uQ4nbdFf.net] 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 いらなかった
233 名前:デフォルトの名無しさん mailto:sage [2020/08/07(金) 14:51:48.30 ID:5vmbSLbR.net] >>226 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 )}"
234 名前:デフォルトの名無しさん mailto:sage [2020/08/07(金) 14:52:06.69 ID:5vmbSLbR.net] >>226 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 )}"
235 名前:デフォルトの名無しさん mailto:sage [2020/08/07(金) 16:23:53.54 ID:uQ4nbdFf.net] <<=って演算子ほしいな
236 名前:デフォルトの名無しさん mailto:sage [2020/08/07(金) 19:28:59 ID:P4+Ga4Bm.net] >>226 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)
237 名前:デフォルトの名無しさん mailto:sage [2020/08/08(土) 00:04:29 ID:b55CcwAR.net] JavaScript では、Lodash を使うけど、 やっぱり、Ruby の方が、メソッドチェーンできるから良い Lodash ではたまに「インスタンス.メソッド」の形にならない関数がある。 関数(オブジェクト)の形式 そこで、メソッドチェーンが途切れて、配列が実体化されてしまうから、 サイズと大きいと、ヤバイ
238 名前:デフォルトの名無しさん [2020/08/08(土) 00:46:24.94 ID:R/FWJxxqi] >>226 C++ https://wandbox.org/permlink/WHokmEEX0tp8dRgo C++で無理やりメソッドチェーンしてみた
239 名前:デフォルトの名無しさん mailto:sage [2020/08/08(土) 07:24:36.17 ID:u/td9dv4.net] lodash破壊的変更の関数あるの地味に謎だよな 一応 lodash/fpもあるけど
240 名前:デフォルトの名無しさん mailto:sage [2020/08/08(土) 07:26:45.92 ID:u/td9dv4.net] いや _.chainの話か 一瞬非推奨の流れ来たときから使ってないわ メソッドチェーン嫌いではないけど
241 名前:デフォルトの名無しさん [2020/08/08(土) 09:18:46 ID:b55CcwAR.net] >>226 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
242 名前:デフォルトの名無しさん mailto:sage [2020/08/08(土) 14:04:33 ID:JvTsLjL+.net] >>226 Python3 https://ideone.com/6VvEbi 全然短くならなかったんだけど皆どういう脳みそしてるの
243 名前:デフォルトの名無しさん [2020/08/08(土) 14:58:00 ID:gFRxrH0y.net] >>226 perl $input = "D a B c d c C A E c e B b"; map{push @{$h{uc $_}}, $_}(split / /, $input); print map{map{"(".(join" ", @$_).")"}$h{$_}} sort{uc $a cmp uc $b} keys %h; >>238 オブ脳ならぬラムダ脳なんだろうなぁ 同値でグループ化、代表元でソート、出力、これを関数でやってる それかワンライナーへの偏執的な愛
244 名前:デフォルトの名無しさん mailto:sage [2020/08/08(土) 15:53:05 ID:xsg1wzC9.net] >>226 Ruby gets.split.group_by(&:upcase).sort.map{|_,v|$><<"(#{v*' '}) "}
245 名前:デフォルトの名無しさん mailto:sage [2020/08/08(土) 16:11:32.49 ID:yUCBpeXj.net] >>238 一般論としてデータの処理と最後の文字列の組み立てを一緒にやらない方がいい 今どきPC上ならメモリーは潤沢にあるので ・グルーピングの処理してから ・各グループを文字列化 ・さらにその文字列を順次出力 とした方がわかりやすいと思う https://ideone.com/Tsio0O
246 名前:デフォルトの名無しさん [2020/08/08(土) 17:07:51.92 ID:HH2BebFt.net] >>238 Pythonだとどうしても短くはならないな。 https://ideone.com/iFc6eL groupbyのところは、defaultdictで書く方法もあるけど大差なし。
247 名前:デフォルトの名無しさん mailto:sage [2020/08/08(土) 21:09:30.55 ID:JvTsLjL+.net] >>239 Rubyの人もワンライナーだな Rubyってショートコーディングに向いてるのかな? >>241 ,238 なるほど
248 名前:デフォルトの名無しさん mailto:sage [2020/08/08(土) 21:20:24 ID:bf+w2Xl6.net] code golfなら基本はperlで、次点がRubyじゃないですかね
249 名前:デフォルトの名無しさん mailto:sage [2020/08/08(土) 21:56:24 ID:JvTsLjL+.net] >>244 そういうものなのね
250 名前:231 mailto:sage [2020/08/08(土) 22:49:25 ID:b55CcwAR.net] 関数型・メソッドチェーンなら、Ruby・Elixir。 長く、チェーンできるから Elixir では関数の第一引数を、前のチェーンからの戻り値として渡せる str = "a b c" # 文字列を空白で分割して、配列化する IO.inspect String.split( str ) str |> String.split |> IO.inspect 出力は、どちらも ["a", "b", "c"]
251 名前:231 mailto:sage [2020/08/08(土) 22:54:29 ID:b55CcwAR.net] 基本的に、Ruby・Elixir みたいに、 メソッドチェーンで、英語のように、左から右へ読めないとダメ Python の内包表記みたいなのは、可読性が悪い
252 名前:デフォルトの名無しさん mailto:sage [2020/08/08(土) 23:09:35.53 ID:n6UBlQy6.net] ざっくりとした見た目しか気にしないのでパイプライン演算子と区別がつかないrubyガイジなのであったw
253 名前:デフォルトの名無しさん [2020/08/08(土) 23:14:07.63 ID:ifN2bgU4.net] >>185 Java https://paiza.io/projects/__QcFHuBny33chXSMMTA4Q
254 名前:デフォルトの名無しさん [2020/08/08(土) 23:32:15 ID:ifN2bgU4.net] >>226 Java https://paiza.io/projects/20JVV_t6hmPUha0B9AuKOA
255 名前:デフォルトの名無しさん [2020/08/09(日) 00:15:33.89 ID:cPfQFxYQ8] Ruby上達したら便利そう 理想的なスクリプト言語だな
256 名前:デフォルトの名無しさん mailto:sage [2020/08/09(日) 00:17:54.90 ID:/K790vfJ.net] javaでもStream使うと意外と少なくかけるんだな utilが充実してるな
257 名前:デフォルトの名無しさん [2020/08/09(日) 00:24:15.31 ID:cPfQFxYQ8] これとかすげえ https://www.youtube.com/watch?v=pgAHW8OpcTY
258 名前:デフォルトの名無しさん mailto:sage [2020/08/09(日) 00:41:46.15 ID:uywZ9h5A.net] >>185 Python3 https://ideone.com/1aordC
259 名前:デフォルトの名無しさん mailto:sage [2020/08/09(日) 02:47:46 ID:Mt0Kh35r.net] >>226 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) + ") "); }
260 名前: } } [] [ここ壊れてます]
261 名前:デフォルトの名無しさん [2020/08/09(日) 04:58:28 ID:bQgrv4ZF.net] >>226 Kotlin https://paiza.io/projects/zR3XGW4DaUAMXfqNq1oZ8A
262 名前:デフォルトの名無しさん [2020/08/09(日) 16:07:42 ID:HZ7sqguG.net] お題 文字列abcdeを右に2つ回転するとdeabcとなる 文字列abcdeを左に2つ回転するとcdeabとなる 2つの文字列を入力として受け取り 2つの文字列が一致するか、または、文字列を回転させて一致した場合はtrueを返してください さもなくばfalseを返してください 入力: abcde deabc 出力: true 入力: abcde cdeba 出力: false
263 名前:デフォルトの名無しさん [2020/08/09(日) 16:42:31.20 ID:/K790vfJ.net] >>257 js const isRotateStr = (a, b) => (a + a).indexOf(b) != -1 console.log(isRotateStr("abcde", "deabc")) // true console.log(isRotateStr("abcde", "cdeba")) // false
264 名前:デフォルトの名無しさん [2020/08/09(日) 16:56:20.10 ID:DzMx1xPb.net] 問題として狙ってたかしらんけど、いきなり簡単な解法来ちゃったな。
265 名前:デフォルトの名無しさん mailto:sage [2020/08/09(日) 16:59:23.64 ID:Uo9rXbdx.net] aaとaaaを比較したらtrueになっちゃうね 文字サイズを最初にチェックすればいいかな?
266 名前:253 mailto:sage [2020/08/09(日) 19:01:45.47 ID:UiQUiAYf.net] >>226 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)
267 名前:253 mailto:sage [2020/08/09(日) 19:17:23 ID:A1LNtpwx.net] >>257 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
268 名前:デフォルトの名無しさん mailto:sage [2020/08/09(日) 20:09:27.60 ID:sb6ynJ/q.net] Jニキも披露してくれよ
269 名前:デフォルトの名無しさん mailto:sage [2020/08/09(日) 22:00:05.82 ID:BOQzPYI8.net] >>226 octave https://ideone.com/qHkxnH >>257 octave https://ideone.com/oKqnrA
270 名前:253 mailto:sage [2020/08/09(日) 22:27:07 ID:iNMqPGBy.net] >>261 それだと「文字列を回転させて一致」のみならず「含まれている」場合もtrueになってしまうので修正 >>257 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
271 名前:デフォルトの名無しさん mailto:sage [2020/08/09(日) 22:40:05 ID:/K790vfJ.net] octave文法好みだけど結構古い言語なんだな
272 名前:253 mailto:sage [2020/08/09(日) 23:21:31.30 ID:dFp53gtH.net] >>226 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)
273 名前:デフォルトの名無しさん [2020/08/09(日) 23:56:04.43 ID:DzMx1xPb.net] Perlだとこの程度でも正規表現使わないといかんのか?
274 名前:253 mailto:sage [2020/08/10(月) 00:02:07 ID:5Aj+dIHX.net] >>267 を少し簡略化 >>226 Python3 s = "D a B c d c C A E c e B b".split(); d = {} for c in s: u = c.upper() d[u] = d[u]+' '+c if u in d else c print(' '.join(map(lambda x: '(%s)' % d[x], sorted(d.keys()) )))
275 名前:253 mailto:sage [2020/08/10(月) 00:03:02 ID:5Aj+dIHX.net] >>268 substrとかでも書ける
276 名前:253 mailto:sage [2020/08/10(月) 01:07:06.98 ID:mTkq56mc.net] >>268 >>265 は一致する場合に対応するようあせって書いた面があり 正規表現を使うのはやりすぎ感があったのは確かなので 顕に正規表現を使わずに書きを考えてみた。 もっとも簡素な書き方として思いついたのがsplitで三分割して 前後の余った文字列を連結したらそれも一致するかなので >>257 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も実は正規表現で分離する機能を持つので、起きていることは実は>>265 と一緒なんだよね
277 名前:253 mailto:sage [2020/08/10(月) 01:18:32.03 ID:mTkq56mc.net] >>271 ゴメン、$a[2]$a[0]はbug、訂正 >>257 Perl5 use feature qw{signatures say}; sub strot_cmp($a, $b) { say "入力 $a $b"; @a = split $b, "$a$a", 3; say "出力 ", ("$a[1]$a[0]") eq $b ? 'true' : 'false'; } strot_cmp qw{abcde deabc}; strot_cmp qw{abcde cdeba}; strot_cmp qw{aaaaa aaa};
278 名前:253 mailto:sage [2020/08/10(月) 01:58:56.02 ID:5YDTUTIu.net] >>272 ゴメン × @a = split $b, "$a$a", 3; ○ @a = split $b, "$a$a", 2;
279 名前: mailto:sage [2020/08/10(月) 02:53:12.35 ID:JYoLJZbs.net] >>257 C https://mevius.5ch.net/test/read.cgi/tech/1434079972/68
280 名前:デフォルトの名無しさん [2020/08/10(月) 05:44:26 ID:SKFyjjt9.net] お題: Brainfuck実行環境を作成し,以下のhello.bfを読み込み実行してください 入力: https://github.com/pablojorge/brainfuck/blob/master/programs/hello.bf 出力: "Hello World!"
281 名前:デフォルトの名無しさん mailto:sage [2020/08/10(月) 08:49:19.32 ID:SwBLGnEH.net] >>275 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!
282 名前:デフォルトの名無しさん mailto:sage [2020/08/10(月) 08:49:26.47 ID:OSJh6/O/.net] >>275 Ruby https://ideone.com/A0JIsc
283 名前:デフォルトの名無しさん [2020/08/10(月) 17:10:10.24 ID:Z7zFlWuQ.net] >>257 Kotlin 簡単なやり方は出尽くしたのであえてグルグル回すだけのIteratorを作成した。 https://paiza.io/projects/TxupVLPTStBv7o1MiTuDEQ
284 名前:デフォルトの名無しさん [2020/08/10(月) 17:10:16.38 ID:SKFyjjt9.net] >>275 C++ https://ideone.com/Lpmngq
285 名前:デフォルトの名無しさん mailto:sage [2020/08/10(月) 18:01:14 ID:Z7zFlWuQ.net] >>275 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!
286 名前:デフォルトの名無しさん mailto:sage [2020/08/10(月) 18:43:36.36 ID:TsKVv45J.net] >>257 Python3 https://ideone.com/DvaLMh
287 名前:デフォルトの名無しさん [2020/08/10(月) 21:10:04.86 ID:EfqLUS40.net] >>257 Python3 def f(a, b): return len(a) == len(b) and a in b + b
288 名前:デフォルトの名無しさん mailto:sage [2020/08/10(月) 22:32:27 ID:tDeKMBiv.net] >>257 c https://ideone.com/BcT5su
289 名前:デフォルトの名無しさん [2020/08/10(月) 23:41:40.77 ID:SKFyjjt9.net] >>257 C++ https://ideone.com/p6Y7W4
290 名前:デフォルトの名無しさん mailto:sage [2020/08/10(月) 23:46:58.70 ID:lJp+wmfa.net] bfってループの入れ子できたっけ?
291 名前:デフォルトの名無しさん mailto:sage [2020/08/10(月) 23:47:11.22 ID:SwBLGnEH.net] >>285 できる
292 名前:272 mailto:sage [2020/08/11(火) 01:47:49 ID:RwCZynCZ.net] >>275 Kotlin これはインタープリタ版。 https://paiza.io/projects/J-pCgNSAEcATixwsNPmyGQ
293 名前:デフォルトの名無しさん mailto:sage [2020/08/11(火) 01:50:50.24 ID:RwCZynCZ.net] >>285 知らんけど >>287 は出来るように作った。 >>280 のやつはコンバータだが Kotlin が出来るので出来る。(というか出来ないように作る方が面倒かな?)
294 名前:デフォルトの名無しさん mailto:sage [2020/08/11(火) 07:40:40.35 ID:RSsrE9PW.net] >>257 >>281 をリファクタリング https://ideone.com/gR6WqL
295 名前:デフォルトの名無しさん [2020/08/11(火) 14:40:27.33 ID:psN1NwFJ.net] こんなに暑いと座禅プログラムで涼みたい。
296 名前:デフォルトの名無しさん [2020/08/12(水) 10:55:20.81 ID:WiVroiaz.net] 警策を上から振り下ろす動作の機械を作り、そこにマイコンを接続。更に行ったり 来たりするルンバのようなものの上にそれを乗せ、そこにもマイコンを接続。 そのマイコンのコントロールプログラムを作成。
297 名前:デフォルトの名無しさん [2020/08/12(水) 11:07:50.98 ID:WiVroiaz.net] 既にこんなの作ってる人が居た。 座禅で動いたら棒で叩かれるやつを全自動化する https://dailyportalz.jp/kiji/zazen-bou-automation
298 名前:デフォルトの名無しさん [2020/08/12(水) 16:50:07.72 ID:xjprAYba.net] 令和のコペルニクス https://youtu.be/7DbdPKWhrpY
299 名前:デフォルトの名無しさん [2020/08/12(水) 19:58:36.03 ID:j5y8ZKQl.net] お題 Brainfuckのの'+','-','.'の 3つの命令のみで 特定の文字列を表示するBrainfucの ソースコードを生成するプログラム。
300 名前:デフォルトの名無しさん mailto:sage [2020/08/12(水) 20:07:13.01 ID:kGuev0jH.net] >>294 Ruby puts "Hello, World!\n".codepoints.unshift(0).each_cons(2).map{|a, b| '%s.' % ((b > a ? ?+ : ?-) * (b - a).abs)}*'' # => ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++. +++++++++++++++++++++++++++++.+++++++..+++.[略]
301 名前:デフォルトの名無しさん mailto:sage [2020/08/12(水) 23:55:21 ID:WiVroiaz.net] 差分出すっていうと ADPCM の圧縮を思い出すな。
302 名前:デフォルトの名無しさん mailto:sage [2020/08/13(木) 01:08:54.66 ID:TUx4JMNp.net] >>294 Perl5 プログラムの構造は >>295 と同じだがワンライナー。 行単位で標準入力から入力して標準出力に出力する。入力の最後の改行は削除している。行ごとに直前の文字は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. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++. +++++++++++++++++++++++++++++. +++++++. . +++. -------------------------------------------------------------------. ------------. +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++. --------. +++. ------. --------. ------------------------------------------------------. $
303 名前:デフォルトの名無しさん mailto:sage [2020/08/13(木) 01:49:54 ID:CZu90IWX.net] >>294 Ruby "Hello World!\n".codepoints.inject(''){|r,c| r << '+' * c + '.[-]' }
304 名前:デフォルトの名無しさん mailto:sage [2020/08/13(木) 03:32:09 ID:CZu90IWX.net] >>294 Ruby "Hello World!\n".codepoints.map{|c| '+' * c + '.' }.join( '[-]' )
305 名前:デフォルトの名無しさん mailto:sage [2020/08/13(木) 05:51:07.18 ID:CZu90IWX.net] >>294 >>298 ,299 は出題条件の「'+','-','.'の 3つの命令のみ」を忘れてましたご免なさい
306 名前:デフォルトの名無しさん mailto:sage [2020/08/13(木) 06:48:39.25 ID:9ZM4Lmsz.net] >>294 Ruby gets.each_char{|c|d=$.-$.=c.ord;$><<(d<0? ?+*-d:?-*d)+?.}
307 名前:デフォルトの名無しさん [2020/08/13(木) 12:37:03.85 ID:8zEuDtsy.net] なるほどbrainfuckでは[-]で現在指してるメモリの値を0クリアできるのか
308 名前:デフォルトの名無しさん mailto:sage [2020/08/14(金) 01:20:11 ID:CuxcYYZ5.net] お題:変数a, b, cを32ビット符号付き整数の最大値で初期化、または代入せよ。 octave https://ideone.com/62dSzC ada95 https://ideone.com/26IGLZ
309 名前:デフォルトの名無しさん mailto:sage [2020/08/14(金) 03:17:07 ID:cCFmHkiX.net] >>303 Ruby # 初期化だけ a = b = c = 2**31 - 1 # 初期化して表示 p *(a,b,c = [2**31-1] * 3) #=> 2147483647\n2147483647\n2147483647\n
310 名前:デフォルトの名無しさん mailto:sage [2020/08/14(金) 07:01:38 ID:cCFmHkiX.net] >>303 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
311 名前:デフォルトの名無しさん mailto:sage [2020/08/14(金) 08:01:01.07 ID:sgFs/qSh.net] >>303 JavaScript a=b=c=-1>>>1
312 名前:デフォルトの名無しさん [2020/08/14(金) 08:17:19.00 ID:jifd8sPx.net] >>303 C++ int32_t max = 1 << 31; int32_t min = ~max;
313 名前:デフォルトの名無しさん [2020/08/14(金) 08:18:37.41 ID:jifd8sPx.net] あ maxとminが逆だった
314 名前:デフォルトの名無しさん [2020/08/14(金) 08:20:39.60 ID:jifd8sPx.net] しかもお題と関係ない スマソ
315 名前:デフォルトの名無しさん mailto:sage [2020/08/14(金) 08:21:04.21 ID:hpI++Bi7.net] >>303 Python では整数に制限がないからnumpyで、 import numpy as np a=b=c=np.iinfo(np.int32).max
316 名前:デフォルトの名無しさん [2020/08/14(金) 08:38:19 ID:jifd8sPx.net] >>303 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; }
317 名前:デフォルトの名無しさん [2020/08/14(金) 09:05:58 ID:jifd8sPx.net] const auto [a, b, c] = std::tie(max, max, max); これだけでよかったorz
318 名前:デフォルトの名無しさん [2020/08/14(金) 14:02:54 ID:9qHjnK+i.net] お題:任意文字列を含むビットコインアドレスを生成するスクリプト BitCoinDescriptionAddress ↓ 1BitCoinDescriptionAddressadTvGDH
319 名前:デフォルトの名無しさん [2020/08/15(土) 16:58:24 ID:gFfdk9Ij.net] >>303 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 が代入される。 まあしかしこのような形式でまとめて複数の変数を初期化をするのは変数が多くなればなるほど 見辛くなってどれがどれに代入されるか分かり辛くなるのであまりお勧めする気は起きない。
320 名前:295 mailto:sage [2020/08/15(土) 17:28:56 ID:nnj+MvqH.net] >>303 octave https://ideone.com/FgfsWd 単に[a, b, c] = deal(intmax)でよかった
321 名前:デフォルトの名無しさん mailto:sage [2020/08/15(土) 17:57:15 ID:uqmyrozg.net] お題 長さNの順列を全列挙してください 入力: N 出力: N!行の1からNの整数を用いた順列 例 入力: 3 出力: 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1
322 名前:デフォルトの名無しさん mailto:sage [2020/08/15(土) 18:04:12.38 ID:WnA8LB9O.net] >>316 Ruby [*1..gets.to_i].permutation{|a| puts a*' '}
323 名前:デフォルトの名無しさん mailto:sage [2020/08/15(土) 18:07:06.59 ID:nnj+MvqH.net] >>316 octave https://ideone.com/dC1LGs f = @(n) perms(1:n); f(3)
324 名前:デフォルトの名無しさん mailto:sage [2020/08/15(土) 19:24:16.43 ID:4GsEJ4Sf.net] お題 HTMLドキュメントをwebブラウアザ上に表示するプログラムを作りなさい。 内容は、html、head、meta、title、body、h1 を含み、 UTF-8で表示するものとする、 Hello World!
325 名前:デフォルトの名無しさん mailto:sage [2020/08/15(土) 20:07:59.51 ID:nR02Shr3.net] お題: 整数の0,1を真偽値のfalse,trueに変換しなさい
326 名前:デフォルトの名無しさん mailto:sage [2020/08/15(土) 20:22:45.39 ID:BUqVCKAW.net] >>319 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}" 127.0.0.1:55080/} ) } srv.start
327 名前:デフォルトの名無しさん mailto:sage [2020/08/15(土) 20:34:31.85 ID:BUqVCKAW.net] >>320 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 {} : {}
328 名前:314 mailto:sage [2020/08/15(土) 20:37:12.09 ID:BUqVCKAW.net] >>322 0 : false が一行余分に付いてしまった
329 名前:デフォルトの名無しさん mailto:sage [2020/08/15(土) 20:49:55 ID:WnA8LB9O.net] >>320 Ruby n.nonzero?
330 名前:デフォルトの名無しさん mailto:sage [2020/08/15(土) 20:59:34.51 ID:nnj+MvqH.net] >>320 ocaml https://ideone.com/nSKbMo let f = function 0 -> false | 1 -> true let () = Printf.printf "%B %B" (f 0) (f 1) >>320 c++ https://ideone.com/Dm4QrP #include <iostream> #include <iomanip> int main() {
331 名前:std::cout << std::boolalpha << 0 << !!0 << 1 << !!1 << std::endl; return 0; } [] [ここ壊れてます]
332 名前:デフォルトの名無しさん mailto:sage [2020/08/15(土) 21:22:21.80 ID:v9cGseLQ.net] >>320 0, 1以外の時の挙動が書いてない 単体テストできねーだろ、やり直し!
333 名前:デフォルトの名無しさん mailto:sage [2020/08/15(土) 23:19:07 ID:gFfdk9Ij.net] >>320 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 がその他の型だとコンパイルエラー。
334 名前:デフォルトの名無しさん mailto:sage [2020/08/16(日) 02:10:15.75 ID:aQEvXwVj.net] >>316 C https://ideone.com/1EStFG
335 名前:デフォルトの名無しさん [2020/08/16(日) 10:54:19.77 ID:DGzsHTxH.net] Python >>320 bool(n) >>316 from itertools import permutations N = 3 print([x for x in permutations(range(1, N+1))])
336 名前:デフォルトの名無しさん [2020/08/16(日) 11:17:36 ID:x8ZjthFZ.net] >>316 C++ https://ideone.com/vnmcwl
337 名前:デフォルトの名無しさん [2020/08/16(日) 19:28:34.07 ID:Stgr85a5.net] >>316 Kotlin https://paiza.io/projects/m-rh9LUdWqgBDV_7xXtTdA なんとなく以前作ったような気もするがまた作った。
338 名前:蟻人間 ◆T6xkBnTXz7B0 mailto:sage [2020/08/16(日) 19:41:54 ID:GwA/W8AI.net] お題: 浮動小数点数の区間演算の加減乗除(+、-、*、/)を実現しなさい。開区間は丸カッコを、閉区間は角カッコを使う。 区間はカッコで囲まれた数の対で表すものとする。ここで対の最初の要素は対の最後の要素以下とする。 例) [1, 3) + 2 → [3, 5). [2, 8] - [1, 2] → [0, 7]. (-3, 2] * (1, [2, 3)) → (-9, 6).
339 名前:デフォルトの名無しさん mailto:sage [2020/08/16(日) 19:47:13.56 ID:WQRWSQYc.net] >>332 ほんとクソだなお前 なんで数と区間が何の説明もなく比較可能な状態になってんだよ 教養レベルの位相と集合の知識身に付けてから出直せハゲ
340 名前:蟻人間 mailto:sage [2020/08/16(日) 19:54:55.84 ID:GwA/W8AI.net] >>333 入力の計算式において単一の数は同等の閉区間と見なすことにする。 2 → [2, 2].
341 名前:デフォルトの名無しさん mailto:sage [2020/08/16(日) 19:59:26.75 ID:WQRWSQYc.net] >>334 任意の区間に対してどのように順序を定義して全順序集合を構成するのか考えてから言えよクソ雑魚が
342 名前:デフォルトの名無しさん mailto:sage [2020/08/16(日) 20:01:44.11 ID:5GlLVozn.net] そもそも 2 と [2, 2] が同じだと思ってる時点でやばいよ ペアノ系で 0 = 1 って言ってるようなもんだぞ
343 名前:蟻人間 ◆T6xkBnTXz7B0 mailto:sage [2020/08/16(日) 20:08:52 ID:GwA/W8AI.net] >>335 任意の[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)].
344 名前:デフォルトの名無しさん mailto:sage [2020/08/16(日) 20:11:24.43 ID:WQRWSQYc.net] >>337 順序の定義しろっつってんだろクソが 「(1, [2, 3))」かつ「対の最初の要素は対の最後の要素以下とする」って言ってるってことは [1, 1] <= [2, 3) なんだろ? 任意の区間の間で矛盾なく順序を定義しろや
345 名前:蟻人間 mailto:sage [2020/08/16(日) 20:24:24.91 ID:GwA/W8AI.net] >>338 すみません。カッコの入れ子はややこしいので止めます、、、 というのは簡単だが、あえて考える。 b<=cならば、間違いなく[a, b] <= [c, d]は真。 d<aならば、[a, b] <= [c, d]は
346 名前:U。 それ以外は[a, b] <= [c, d]の論理値は不定とし、実行時エラーを発生させる。 [] [ここ壊れてます]
347 名前:デフォルトの名無しさん mailto:sage [2020/08/16(日) 20:32:34 ID:WQRWSQYc.net] >>339 完全律すら成り立たない順序ってなんだよ 「カッコの入れ子はややこしい」とかそういうレベルじゃねえんだよ だいたい [a, b] - [a, b] = [a - b, b - a] != 0 ってクッソきもいんですけど お前群論なめてんのか
348 名前:デフォルトの名無しさん mailto:sage [2020/08/16(日) 20:34:23 ID:1lLvvYB6.net] 計算の順番を変えたりするだけで簡単に全部エラーにできるから流石にお粗末だね
349 名前:デフォルトの名無しさん mailto:sage [2020/08/16(日) 20:50:12.97 ID:5EzRC1Sr.net] >>339 死ねカス
350 名前:蟻人間 mailto:sage [2020/08/16(日) 20:54:18.06 ID:GwA/W8AI.net] >>340 > だいたい [a, b] - [a, b] = [a - b, b - a] != 0 ってクッソきもいんですけど [a - b, b - a] はゼロを中心とした区間の誤差範囲を表してるから間違いではない。計算機の内部には群論が成り立たない汚い演算もある。
351 名前:デフォルトの名無しさん mailto:sage [2020/08/16(日) 20:57:11.13 ID:rY4w2Ca/.net] まーたスレタイからズレてるよ 問題に不備があったなら取り下げて勉強し直してこい 群論を教えるスレじゃない 何があえて考えてみるだ
352 名前:デフォルトの名無しさん mailto:sage [2020/08/16(日) 21:13:43.55 ID:WQRWSQYc.net] 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 矛盾 死ね 消えろ
353 名前:蟻人間 mailto:sage [2020/08/16(日) 21:16:32.00 ID:GwA/W8AI.net] >>345 0 < a < bのときは、[-a, -b]は定義されない。
354 名前:デフォルトの名無しさん mailto:sage [2020/08/16(日) 21:29:26.85 ID:WQRWSQYc.net] >>346 順序の定義が矛盾してるんだから[-a, -b]は定義可能であっても良い 本当頭わりいな
355 名前:デフォルトの名無しさん mailto:sage [2020/08/16(日) 21:34:29.96 ID:1lLvvYB6.net] [0, 1]*[0, 1] = [0, 1] <=> [0, 1]*([0, 1] - 1) = 0 <=> [0, 1]*[-1, 0] = 0 <=> [-1, 0] = 0 流石にひどいって
356 名前:蟻人間 mailto:sage [2020/08/16(日) 21:48:28.85 ID:GwA/W8AI.net] 加法 (1) 交換法則 (2) 結合法則 (3) 単位元の存在 (4) 逆元の存在 乗法 (5) 交換法則 (6) 結合法則 (7) 分配法則
357 名前:蟻人間 mailto:sage [2020/08/16(日) 22:04:28.19 ID:GwA/W8AI.net] 逆元がないから、減法が壊れてる。 区間に逆元があるように減法を定義することはできない。 すみません、取り下げます。
358 名前:デフォルトの名無しさん mailto:sage [2020/08/16(日) 22:08:12.76 ID:WQRWSQYc.net] >>350 それ以前の問題だっつーのアホ 任意の数 a, b に対して容易に a = b が成立するクソ
359 名前:デフォルトの名無しさん mailto:sage [2020/08/16(日) 22:16:18.77 ID:UYHP6Cr3.net] 問題を解くスキル<<<<<解ける問題を作るスキル だったりするかも
360 名前:デフォルトの名無しさん [2020/08/16(日) 22:26:48.34 ID:Nztll5gc.net] >>316 Java https://paiza.io/projects/mS3LllUfo8J5zcCeI_m8qQ
361 名前:蟻人間 ◆T6xkBnTXz7B0 mailto:sage [2020/08/16(日) 22:46:06 ID:GwA/W8AI.net] やり直し。 お題: 区間と演算子によって構成される計算式が入力として与えられる。下記に従って浮動小数点数の区間に対する二項演算(+、-、*、/)を実現し、計算後の区間を出力しなさい。入力される区間は閉区間のみとする。 閉区間は角カッコで囲まれた浮動小数点数の対で表すものとする。ここで対の最初の要素は対の最後の要素以下とする。すなわち[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].
362 名前:デフォルトの名無しさん mailto:sage [2020/08/16(日) 22:58:27.46 ID:bYLilpPQ.net] つーか boost::numeric::interval とかいう実装があってな あながちおかしな話ではない かと言って そんな車輪の再生産みたいなお題を受けたい気はしないのだが
363 名前: mailto:sage [2020/08/16(日) 23:34:04.85 ID:kJzMyvlv.net] >>316 C https://ideone.com/wbwxg3
364 名前:253 mailto:sage [2020/08/16(日) 23:50:47.82 ID:G5r8RAij.net] >>316 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])
365 名前:デフォルトの名無しさん [2020/08/17(月) 01:49:55.07 ID:Nup7rIuH.net] 前の書き方だとやる気が出ないみたいなので再掲 お題 任意文字列を含む有効なビットコインアドレスを生成するにはどうすればいいか ビットコインアドレスの形式は [プレフィックス 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
366 名前:デフォルトの名無しさん mailto:sage [2020/08/17(月) 06:10:10.64 ID:sRZ0bbBO.net] >>354 消えろカス
367 名前:デフォルトの名無しさん mailto:age [2020/08/17(月) 08:34:59.13 ID:4e6PsksO.net] >>359 お前うざいよ
368 名前:デフォルトの名無しさん mailto:sage [2020/08/17(月) 09:10:13 ID:CGaaR/Ic.net] どうすればいいか?ってのがよくわからない
369 名前:デフォルトの名無しさん mailto:sage [2020/08/17(月) 09:11:51.56 ID:CGaaR/Ic.net] 入力と出力をはっきりさせてほしい それとも取引所の仕様を理解しろって話なの?
370 名前:デフォルトの名無しさん [2020/08/17(月) 11:17:26.81 ID:2KNIyB/f.net] ブルートフォースアタックしか思い浮かばない。
371 名前:デフォルトの名無しさん [2020/08/17(月) 18:12:59.56 ID:Nup7rIuH.net] 入力が任意文字列で出力がそれを含む有効なビットコインアドレス 例にあるやつだとMayukoMuraokaが任意文字列の部分 XXX…っていうのはただの本体データ160bitのあまりスペースを埋めてるだけだからなんでもいい それに対応して最後のチェックサムも任意性がある 直感だとブルートフォースが必要そうだけど実際は単純なやり方でできる
372 名前:デフォルトの名無しさん [2020/08/17(月) 19:37:06.53 ID:4e6PsksO.net] 秘密鍵でデコードできなくてもいんでしょ? じゃあbase58で表されたバイト値と文字列を変換するだけじゃん
373 名前:デフォルトの名無しさん mailto:sage [2020/08/17(月) 19:45:01.16 ID:Nup7rIuH0.net] 基本的にはそれだけのこと 実際の手順を考えるとちょっとややこしいことがあるくらい ということで実装してみよう
374 名前:デフォルトの名無しさん mailto:sage [2020/08/17(月) 22:43:06.44 ID:sRZ0bbBO.net] >>360 お前がうぜえよ死ね
375 名前:デフォルトの名無しさん [2020/08/17(月) 22:47:24.50 ID:4e6PsksO.net] >>367 お前が死ね
376 名前:デフォルトの名無しさん mailto:sage [2020/08/17(月) 22:50:53.21 ID:3fwftKf8.net] よし俺がしぬよ
377 名前:デフォルトの名無しさん mailto:sage [2020/08/17(月) 22:53:16.60 ID:UMcd904E.net] 夏だなあ
378 名前:デフォルトの名無しさん [2020/08/17(月) 22:56:52 ID:4e6PsksO.net] >>369 じゃあ俺が死ぬよ
379 名前:デフォルトの名無しさん mailto:sage [2020/08/17(月) 22:57:17 ID:3fwftKf8.net] お題: 『死』を表現せよ
380 名前:デフォルトの名無しさん mailto:sage [2020/08/17(月) 22:57:32 ID:3fwftKf8.net] >>371 どうぞうどうぞ
381 名前:デフォルトの名無しさん mailto:sage [2020/08/17(月) 22:58:07 ID:sRZ0bbBO.net] >>371 じゃあ死ねよ
382 名前:デフォルトの名無しさん [2020/08/17(月) 23:05:20 ID:4e6PsksO.net] >>374 全然おもんないやんけ もう一回チャンスをやろう
383 名前:デフォルトの名無しさん [2020/08/17(月) 23:05:35 ID:4e6PsksO.net] じゃあ俺が死ぬよ
384 名前:デフォルトの名無しさん [2020/08/17(月) 23:05:59 ID:4e6PsksO.net] くるよくるよ
385 名前:デフォルトの名無しさん [2020/08/17(月) 23:06:13 ID:4e6PsksO.net] ドキドキ
386 名前:デフォルトの名無しさん [2020/08/17(月) 23:39:35 ID:4e6PsksO.net] 逃げたか
387 名前:デフォルトの名無しさん [2020/08/17(月) 23:39:58 ID:4e6PsksO.net] 笑いから逃げるな
388 名前:デフォルトの名無しさん mailto:sage [2020/08/18(火) 00:15:03.77 ID:/+dAg+CW.net] お題: 二人の煽り耐性から「死ね」と言い合うプログラム 煽り耐性 0.1〜1 死ねと言い返す確率 (1-煽り耐性) * 100% 最初に死ねと言うのはA 入力 {Aの煽り耐性} {Bの煽り耐性} 例 > 0.1 0.8 A「死ね」 B「死ね」 A「死ね」
389 名前:デフォルトの名無しさん mailto:sage [2020/08/18(火) 01:25:39.14 ID:IZwRntbA.net] if (>>381 {A}%3 ==0.1&&0.8<<373{B}) print "オモロー" & "アキラ" *100% ;
390 名前:デフォルトの名無しさん mailto:sage [2020/08/18(火) 01:35:33.42 ID:Vl5MoMXT0.net] >>358 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
391 名前:デフォルトの名無しさん [2020/08/19(水) 16:18:46 ID:ltFkDVN7.net] >>372 #!/bin/sh rm $0
392 名前:デフォルトの名無しさん mailto:sage [2020/08/19(水) 18:40:23.70 ID:d4bqPFA7.net] 「生」の読みはたくさんあるのに、 「死」の読みはひとつだけ。 示唆に富んでいる。
393 名前:デフォルトの名無しさん [2020/08/19(水) 18:45:07.34 ID:OrygHj4v.net] 略して示唆トン。
394 名前:デフォルトの名無しさん mailto:sage [2020/08/20(木) 11:35:09.25 ID:nWR09WFB.net] >>257 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]
395 名前:デフォルトの名無しさん mailto:sage [2020/08/23(日) 18:52:15.52 ID:kIX3/Jw/.net] お題: 縦H、横Wの迷路が与えられます。 スタートからゴールに至る道順の個数を求めてください。 迷路は通路から通路へ、上下左右の4方向へのみ移動できます。 ただし、一度通った通路を引き返すような道順は無効です。 また、スタートとゴールは通路です。 1行目に迷路の高さと幅を表す整数H、Wが与えられます。 2行目からH行にわたって、迷路を表す長さWの文字列が与えられます。 文字列は 'S' 'G' '.' '#' の文字のみからなり、それぞれスタート、ゴール、通路、壁です。 例1: 入力: 5 5 S.... ##.#. ...#. ##.#. ....G 出力: 2 例2: 入力: 5 5 S.... ##.#. ...#. ...#. ....G 出力: 12
396 名前:デフォルトの名無しさん [2020/08/24(月) 04:30:51.55 ID:qrCNAVcy.net] >>388 C++ https://ideone.com/Omaaxj
397 名前:デフォルトの名無しさん mailto:sage [2020/08/24(月) 11:49:18.16 ID:2DIU31aQ.net] >>388 C++ https://wandbox.org/permlink/H36ha1xPEFeE4KXQ
398 名前:蟻人間 mailto:sage [2020/08/29(土) 20:44:46.53 ID:GYyhmMZY.net] お題: ロシアンルーレット。 リボルバーを回しますか? (Y/n) Y 1回目: 不発 リボルバーを回しますか? (Y/n) Y 2回目: 不発 リボルバーを回しますか? (Y/n) n 3回目: バーン!
399 名前:デフォルトの名無しさん [2020/08/29(土) 21:04:26.78 ID:KxRf/0sH.net] >>391 仕様がわからない
400 名前:蟻人間 ◆T6xkBnTXz7B0 mailto:sage [2020/08/29(土) 21:07:51 ID:GYyhmMZY.net] ロシアンルーレット https://ja.m.wikipedia.org/wiki/%E3%83%AD%E3%82%B7%E3%82%A2%E3%83%B3%E3%83%AB%E3%83%BC%E3%83%AC%E3%83%83%E3%83%88 回転式拳銃(リボルバー) https://ja.m.wikipedia.org/wiki/%E5%9B%9E%E8%BB%A2%E5%BC%8F%E6%8B%B3%E9%8A%83
401 名前:蟻人間 mailto:sage [2020/08/29(土) 21:24:48.99 ID:GYyhmMZY.net] >>391-392 こんな感じか? 最初にリボルバーを回します。 (弾丸の位置を設定) こめかみor天井?(K/t) K 1回目: 不発 もう一度リボルバーを回しますか? (Y/n) Y (弾丸を回転) こめかみor天井?(K/t) K 2回目: 不発 もう一度リボルバーを回しますか? (Y/n) n こめかみor天井?(K/t) K 3回目: バーン! あなたの負けです。
402 名前:蟻人間 ◆T6xkBnTXz7B0 mailto:sage [2020/08/29(土) 22:00:32 ID:GYyhmMZY.net] えっ、拳銃見たことないの?
403 名前:デフォルトの名無しさん mailto:sage [2020/08/29(土) 22:14:20.91 ID:bYj4gZFd.net] 銃の弾数と空砲/実包の割合とか オートマとリボルバーどっちかとか特定してからにしてくれ
404 名前:デフォルトの名無しさん mailto:sage [2020/08/29(土) 22:51:06 ID:yG/yQHuO.net] jsインタラクティブ入力に弱い
405 名前:デフォルトの名無しさん [2020/08/29(土) 23:12:55 ID:yG/yQHuO.net] >>391 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 }
406 名前:デフォルトの名無しさん mailto:sage [2020/08/29(土) 23:34:19.24 ID:2f/XylsB.net] VSCode の拡張機能、Quokka.js を使えば? 変数を書くだけで、内容が表示される var a = 1 a // 1 と表示される
407 名前:デフォルトの名無しさん mailto:sage [2020/08/29(土) 23:41:03.13 ID:yG/yQHuO.net] swift playgroundとかjestのinlineSnapshotみたいな感じか 使うときがあるか微妙
408 名前:デフォルトの名無しさん [2020/08/30(日) 01:02:17.18 ID:xjthqQ7x.net] お題 nを受け取って1からnまでインクリメントされた配列を返してください インクリメントするごとに値の数だけ配列に値を追加してください 例 入力: 1 出力: [1] 入力: 3 出力: [1, 2, 2, 3, 3, 3]
409 名前:デフォルトの名無しさん [2020/08/30(日) 01:33:41.99 ID:xjthqQ7x.net] お題 配列をソートする関数を受け取って安定ソートか否かを判定する プログラムを作成してください
410 名前:デフォルトの名無しさん mailto:sage [2020/08/30(日) 06:49:46 ID:a0VCHWdX.net] お題: splitを実装せよ(ただし組み込みやライブラリのsplitは使ってはならない) 例: >> split('abc:def:ghi', ':') >> ['abc', 'def', 'ghi']
411 名前:デフォルトの名無しさん [2020/08/30(日) 08:02:58.80 ID:Ui9A3dkW.net] >>401 J f =: #~ @: >: @ i.
412 名前:デフォルトの名無しさん mailto:sage [2020/08/30(日) 09:40:37.84 ID:rD3R6mry.net] >>401 Ruby (0..3).each{|n| p (1..n).reduce([]){|s, a| s + [a] * a}} # => [] [1] [1, 2, 2] [1, 2, 2, 3, 3, 3] >>403 Ruby p 'abc:def:ghi'.scan(/[^:]+/) # => ["abc", "def", "ghi"]
413 名前:デフォルトの名無しさん mailto:sage [2020/08/30(日) 09:41:22.98 ID:ka/TVb/i.net] >>401 octave https://ideone.com/wQ0EMk f = @(n) repelem(1:n, 1:n); f(3)
414 名前:デフォルトの名無しさん mailto:sage [2020/08/30(日) 09:43:25.32 ID:pWMgwPJi.net] >>403 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)) }
415 名前:デフォルトの名無しさん mailto:sage [2020/08/30(日) 17:51:57.01 ID:9TpSDH8X.net] >>403 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', ':')
416 名前:400 mailto:sage [2020/08/30(日) 18:29:58 ID:9TpSDH8X.net] 一応url https://ideone.com/Ni9DPI
417 名前:デフォルトの名無しさん [2020/08/30(日) 18:55:27.84 ID:uG01djUi.net] >>403 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' ] ずるいしダブルクォート対応できてないけど思いつき
418 名前:デフォルトの名無しさん mailto:sage [2020/08/30(日) 19:52:13.41 ID:KMqOjvFr.net] >>403 Ruby # セパレーターの仕様が文字か文字列か分からなかったので文字列にした def split( str, sep ) res = [] (str + sep).scan( /(.*?)#{Regexp.escape(sep)}/ ){ res << $1 } res end split('abc:def:ghi', ':') #=> ["abc", "def", "ghi"]
419 名前:デフォルトの名無しさん [2020/08/30(日) 19:55:11.73 ID:OKCM85cL.net] >> 393 C++ https://ideone.com/ztBnmn >> 394 C++ https://ideone.com/8YhzWh 合ってるか分からない (とりあえずバブルソートが安定だからそれと比較した) >> 395 C++ https://ideone.com/lmYLkx
420 名前:デフォルトの名無しさん mailto:sage [2020/08/30(日) 23:05:46 ID:HaB2mhSL.net] >>401 C++ https://wandbox.org/permlink/LxzMc7UHa1lbhcX1 コンパイル時にできる
421 名前:デフォルトの名無しさん [2020/08/30(日) 23:23:11.11 ID:OKCM85cL.net] operator[]がconstexprなのはC++17以降らしいね
422 名前:デフォルトの名無しさん [2020/08/31(月) 00:36:58 ID:Sr2UUXBk.net] 宇宙創生から現在まで【宇宙の歴史?(過去編)】 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 楽しいことを増やそう!科学の眼鏡を
423 名前:ゥけた1日とは【ヨビノリたくみ特別公演】 https://www.youtube.com/watch?v=u5al7kwy64k 数学の魅力とは?中田敦彦と人気教育系YouTuberヨビノリたくみ先生が初コラボ https://www.youtube.com/watch?v=qxiAyyotAM0 [] [ここ壊れてます]
424 名前:デフォルトの名無しさん [2020/08/31(月) 08:12:50.04 ID:o+KAewBM.net] >>401 Ruby def f(n) (1..n).map{|v| [v]*v}.flatten end
425 名前:デフォルトの名無しさん mailto:sage [2020/08/31(月) 09:50:22 ID:3l02ZOhc.net] >>404 何やってんのか分かんねぇ…
426 名前:デフォルトの名無しさん mailto:sage [2020/08/31(月) 12:53:04.32 ID:DeTlQxvW.net] f#(@:m:@ )顔文字にしか見えん
427 名前:デフォルトの名無しさん [2020/08/31(月) 13:15:43 ID:0jcGZySh.net] \(._. \)
428 名前:蟻人間 ◆T6xkBnTXz7B0 mailto:sage [2020/08/31(月) 13:37:09 ID:tSOV4fJk.net] お題: 覆面算パズルをランダムに自動生成せよ。 単語は大文字のアルファベットのみとする。 各単語は自然数を表している。 単語の各文字は数字を表している。 各単語の先頭はゼロではない。 同じ文字は同じ数字が入る。文字が違えば、数字も違う。 各単語は、3文字以上6文字以下とする。 答えは一つでなければいけない。 今回は、簡単な足し算のみとする。 例) SEND+MORE=MONEY. BASE+BALL=GAMES. 単語リスト:https://gist.github.com/deekayen/4148741
429 名前:蟻人間 ◆T6xkBnTXz7B0 mailto:sage [2020/08/31(月) 13:41:36 ID:tSOV4fJk.net] お題:覆面算パズルを解くプログラム。 例) SEND+MORE=MONEY →9567+1085=10652. BASE+BALL=GAMES →7483+7455=14938.
430 名前:デフォルトの名無しさん mailto:sage [2020/08/31(月) 14:49:18.65 ID:7ZWcUsrI.net] >>401 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]
431 名前:蟻人間 mailto:sage [2020/08/31(月) 16:10:16.99 ID:lWn/zYPT.net] >>421 , >>420 の順に解いてね。 ヒント要る?
432 名前:蟻人間 mailto:sage [2020/08/31(月) 16:12:08.02 ID:lWn/zYPT.net] ヒント: 各文字を変数とした連立方程式。
433 名前:蟻人間 mailto:sage [2020/08/31(月) 16:24:48.19 ID:lWn/zYPT.net] 文字の数が少ないんだから、ブルートフォースでも解けるか。。。
434 名前:デフォルトの名無しさん mailto:sage [2020/08/31(月) 18:26:24.52 ID:qQr3mFGF.net] 間違えてなければO(10!)のはずだから充分多いのでは
435 名前:デフォルトの名無しさん mailto:sage [2020/08/31(月) 18:26:56.47 ID:qQr3mFGF.net] ごめん10!はめちゃくちゃ小さかった
436 名前:デフォルトの名無しさん mailto:sage [2020/08/31(月) 18:43:24.02 ID:hr5jjNmH.net] この手の問題は総当りしたほうが速いことすらある
437 名前:デフォルトの名無しさん mailto:sage [2020/08/31(月) 19:18:49 ID:J48xi6fS.net] しかもとっさにcombination用意できなければ(vimなどで)for文10個書いたほうが早いまである
438 名前:デフォルトの名無しさん [2020/08/31(月) 19:23:55 ID:fdwPQ6pV.net] 覆面算を制約論理プログラム iZ-Cを使って解きます。の記事があります。 https://sunasunax.hatenablog.com
439 名前:デフォルトの名無しさん [2020/08/31(月) 21:02:28 ID:Sr2UUXBk.net] デキる人ほどフリーランス化する?★働き方改革 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
440 名前:253 mailto:sage [2020/08/31(月) 21:47:00.41 ID:Mm8nXRhv.net] >>401 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
441 名前:253 mailto:sage [2020/08/31(月) 21:54:06.64 ID:pmRcaHIk.net] >>401 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
442 名前:デフォルトの名無しさん mailto:sage [2020/08/31(月) 23:33:38 ID:0jcGZySh.net] >>401 Kotlin https://paiza.io/projects/A_eQfaut9aEoIRjfwbkN8Q
443 名前:デフォルトの名無しさん mailto:sage [2020/09/01(火) 00:01:02 ID:1mY8ta+4.net] >>401 C https://paiza.io/projects/wwsivStn5Eq4vN7-XA5ShQ
444 名前:デフォルトの名無しさん mailto:sage [2020/09/01(火) 00:18:24 ID:vTrOzHSW.net] >>401 python lambda x: [int(i) for i in "".join(f"{y}"*y for y in range(1,x+1))]
445 名前:デフォルトの名無しさん [2020/09/01(火) 14:16:37.60 ID:3qKfeSqF.net] 全く知らない構文の言語でカンでいじっても構文エラーも止められずに 動かない機械ガチャガチャしてるだけ感すごいよな
446 名前:蟻人間 mailto:sage [2020/09/01(火) 18:47:08.83 ID:4meeAMMW.net] お題: テキストファイル「input.txt」の中の" dot "を"."に置換し、さらに" at "を"@"に置換したときに、RFCに従ったメールアドレスになる部分文字列を抽出し、そのメールアドレスのリストを改行区切りで出力せよ。
447 名前:デフォルトの名無しさん [2020/09/01(火) 18:47:54.44 ID:Y09tsFBY.net] >>401 Ruby def f(n) (1..n*(n+1)/2).map{|x| ((x*2)**0.5+0.5).to_i} end
448 名前:デフォルトの名無しさん [2020/09/01(火) 18:48:39.88 ID:PZXbhIm5.net] >>438 テスト用のinput.txtちょーだい!
449 名前:蟻人間 mailto:sage [2020/09/01(火) 18:54:57.84 ID:4meeAMMW.net] >>440 「これはテキトーなテキストデータである。 例えば 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 まあ、いろいろあるっしょ。」
450 名前:デフォルトの名無しさん [2020/09/01(火) 18:57:45.00 ID:PZXbhIm5.net] >>441 あざーす!
451 名前:デフォルトの名無しさん mailto:sage [2020/09/01(火) 19:10:04.73 ID:y/wdSyKD.net] >>438 Mail::RFC822::Address: regexp-based address validatio www.ex-parrot.com/~pdw/Mail-RFC822-Address.html
452 名前:蟻人間 mailto:sage [2020/09/01(火) 20:18:24.49 ID:4meeAMMW.net] ヒント: 文字列置換と正規表現
453 名前:デフォルトの名無しさん [2020/09/01(火) 22:43:25 ID:PZXbhIm5.net] >>438 Java https://paiza.io/projects/50iQ0JnPk_R404qr8Db80w
454 名前:デフォルトの名無しさん [2020/09/01(火) 22:55:31.34 ID:PZXbhIm5.net] >>401 Java https://paiza.io/projects/qDtcIJeOUdsMkEIxaXEf9w
455 名前:253 mailto:sage [2020/09/02(水) 00:54:35.54 ID:GpxOT2yi.net] >>401 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]
456 名前:デフォルトの名無しさん [2020/09/02(水) 23:08:34.85 ID:KTyhBksd.net] >>402 Java https://paiza.io/projects/PGljCEpf6PlEcYw0xzNBVQ
457 名前:デフォルトの名無しさん [2020/09/02(水) 23:31:10.43 ID:KTyhBksd.net] >>403 Java https://paiza.io/projects/nGioH2f50H9y8EHZkISTOg
458 名前:デフォルトの名無しさん [2020/09/03(木) 16:10:13.26 ID:dE9fk8zR.net] >>403 Ruby def f(s,d) eval("['"+s.gsub(d,"','")+"']") end p f("1 2 3 4"," ") 実行結果 ["1", "2", "3", "4"]
459 名前:蟻人間 mailto:sage [2020/09/03(木) 19:41:51.27 ID:0EoV326K.net] お題: バイナリファイルを読み込んで各バイトの各ビットについて、上位ビットから順に、ゼロをシフトJISの半角カナの「タ」に、いち(1)を同じくの「ヒ」に変換する変換器。
460 名前:蟻人間 ◆T6xkBnTXz7B0 mailto:sage [2020/09/03(木) 19:46:20 ID:0EoV326K.net] >>451 追記。逆変換器も作って動作することを確認せよ。
461 名前:デフォルトの名無しさん mailto:sage [2020/09/03(木) 21:11:58.06 ID:97aiR77+.net] >>451 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
462 名前:デフォルトの名無しさん mailto:sage [2020/09/03(木) 23:01:51.02 ID:ZdR77D/Z.net] >>450 f("'", ?,) # =>SyntaxError: (eval):1: unterminated string meets end of file ['''] ^ (eval):1: syntax error, unexpected end-of-input, expecting ']'
463 名前:253 mailto:sage [2020/09/04(金) 00:01:38 ID:7q8p4uRD.net] >>451 Perl5 print map{qw(ヒ タ)[$_]} map{split '', sprintf '%08b', ord} split'','Hello word'; 実行結果 ~ $ perl 18_443_タヒ.pl ヒタヒヒタヒヒヒヒタタヒヒタヒタヒタタヒタタヒヒヒタタヒタタヒヒヒタタヒタタタタヒヒタヒヒヒヒヒヒタタタヒタタタヒタタヒタタタタヒタタタヒヒタヒヒタタヒヒタヒヒ
464 名前:デフォルトの名無しさん [2020/09/04(金) 00:03:39 ID:0wfgbo8M.net] >>452 Java https://paiza.io/projects/w8Q5NbodI6iRfjcBWA1Nqg
465 名前:253 mailto:sage [2020/09/04(金) 00:04:27 ID:gbrpP/bR.net] >>455 >>452 逆変換機もか…忘れてた まいいや
466 名前:デフォルトの名無しさん mailto:sage [2020/09/04(金) 14:52:11.79 ID:Wl7qFIBb.net] >>451 Elixir。CP932 が無いので、途中までしか出来ません! # 8桁・2進数・0埋め _ = 'abc' |> Enum.map( fn char -> :io.format( "~8.2.0B", [ char ] ) end ) # 01100001_01100010_01100011
467 名前:デフォルトの名無しさん [2020/09/04(金) 23:27:10.30 ID:1jfeDIRi.net] >>451 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
468 名前:253 mailto:sage [2020/09/04(金) 23:39:14.02 ID:tinAGSqp.net] >>451 >>452 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
469 名前:デフォルトの名無しさん [2020/09/05(土) 15:41:23.97 ID:dAk5cbFF.net] お題 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
470 名前:デフォルトの名無しさん mailto:sage [2020/09/05(土) 15:42:06.74 ID:gCThzAly.net] お題: 左から右へ、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
471 名前:デフォルトの名無しさん mailto:sage [2020/09/05(土) 15:55:10.03 ID:gCThzAly.net] 前回のお題はC++の方からしか回答を頂けなかったので、他の言語の方も考えていただけると嬉しいです
472 名前:デフォルトの名無しさん mailto:sage [2020/09/05(土) 17:01:13.99 ID:4vfoT7Xn.net] Tが10^5のそれぞれのマスにいたときの点数を求める(客がいた場合1、いなかったら0) Tが10^5-1のときのマスの点数を求める(そこに客がいたなら1、いなかったら0 更にそこから次の時間に移動可能なマスの最大の点数のものを加える) Tが1までくり返す これで良さそうな気がするけど書くのがめんどくさい
473 名前:デフォルトの名無しさん mailto:sage [2020/09/05(土) 17:35:24.39 ID:s0GYNWbk.net] >>461 「この文字列の文字数を求める」んじゃないの? バイト数だったらUTF-8だろうがSJISだろうが関係なく, バイトの個数を数えればいいだけになってしまうが……。
474 名前:デフォルトの名無しさん [2020/09/05(土) 18:43:21.60 ID:EHHCviTW.net] 文字コードまわりの難しさにぶつかったことないから何が何やら
475 名前: [] [ここ壊れてます]
476 名前:デフォルトの名無しさん mailto:sage [2020/09/05(土) 19:37:20.09 ID:PsWvtVS4.net] >>461 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
477 名前:デフォルトの名無しさん [2020/09/05(土) 19:47:45.16 ID:EHHCviTW.net] 普通に処理系がchar配列にしたときサイズを入れてくれるからそれでわかっちゃうw
478 名前:453 mailto:sage [2020/09/05(土) 21:41:42 ID:dAk5cbFF.net] 書いてある条件だけで、求めて下さい! 他の方法では、簡単すぎるので
479 名前:デフォルトの名無しさん mailto:sage [2020/09/05(土) 21:46:41 ID:qef5ttAc.net] それだったら宿題スレで頼みなよ
480 名前:デフォルトの名無しさん mailto:sage [2020/09/05(土) 22:24:40.63 ID:s0GYNWbk.net] >>469 もう一度訊くけど, ほんとに「バイト数」を求めたいの? だったら $ echo ' あaθ💀xΩ死🄫 ' | wc -c これで一瞬だけど。 文字数なら,UTF-8を扱える言語で数えるか, POSIX shでやるなら……面倒だな……。 https://gist.github.com/cmplstofB/0b0ce2bf052b3bb64d091fc83504fc32#file-u8dec-sh こういうの使えばいいかな。 なお,wc -mはPOSIXでは必ずしも UTF-8文字列を扱えるとは既定されていないので今回の目的には適さない。
481 名前:デフォルトの名無しさん mailto:sage [2020/09/05(土) 22:25:44.48 ID:s0GYNWbk.net] >>462 これ結構難しい。 まず普通に算法を考える段階で行き詰まってるw 頭悪いな〜
482 名前:デフォルトの名無しさん mailto:sage [2020/09/05(土) 22:49:41.81 ID:BjVkDMA6.net] >>462 C https://ideone.com/X5mYh3
483 名前:253 mailto:sage [2020/09/06(日) 00:11:00 ID:Lo+HJN6n.net] >>388 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
484 名前:253 mailto:sage [2020/09/06(日) 00:30:27 ID:WEZ/j7UH.net] >>474 今思うとエッジの表現は無向ではなく二重の有効グラフにしたほうが簡潔なコードになったかもしれない まぁいいや…二度書く気は起きない…
485 名前:デフォルトの名無しさん [2020/09/06(日) 00:34:53.48 ID:T9SJW9BR.net] >>403 Kotlin https://paiza.io/projects/N9X2CVAQj3NJ0RXPrk7i0g 区切りは文字列で指定出来るとか、大文字小文字無視とか、最大分割数を決められるだとか、色々と機能を追加してしまった。
486 名前:デフォルトの名無しさん [2020/09/06(日) 03:34:19.13 ID:0eLnTbkJ.net] お題 4999の逆数を小数点 以下48桁まで求める。
487 名前:デフォルトの名無しさん mailto:sage [2020/09/06(日) 07:27:16.04 ID:+WaXk/Ri.net] >>477 例外だけどbcコマンド scale=48 1/4999 .000200040008001600320064012802560512102420484096
488 名前:デフォルトの名無しさん mailto:sage [2020/09/06(日) 08:14:24.88 ID:CxoRMtYI.net] >>477 Ruby puts ('%0.49f' % (1r/4999)).chop # => 0.000200040008001600320064012802560512102420484096
489 名前:デフォルトの名無しさん [2020/09/06(日) 09:37:57.61 ID:yqdZF37w.net] >>461 C++ https://ideone.com/uulTGM
490 名前:デフォルトの名無しさん mailto:sage [2020/09/06(日) 10:17:30.08 ID:uXWEOXeO.net] >>462 C++ https://wandbox.org/permlink/TMrsTWgUWvzHktjh
491 名前:デフォルトの名無しさん mailto:sage [2020/09/06(日) 10:30:03.37 ID:r+7yP+3C.net] >>473 >>474 これって二つとも総当たりで解いてる? そうすると最悪3^(10^5)くらいの回数廻さないといけなくない?
492 名前:デフォルトの名無しさん [2020/09/06(日) 10:58:30.52 ID:5MBR0P77.net] 1京くらいのループで解けるなら実用性はかろうじてある 競技性は無い
493 名前:デフォルトの名無しさん mailto:sage [2020/09/06(日) 11:04:38.70 ID:OF7UMaiS.net] 最悪でも2^n組みしかなくね
494 名前:デフォルトの名無しさん mailto:sage [2020/09/06(日) 11:07:12.07 ID:uXWEOXeO.net] >>473 はlast_time(10^5)回のループの中でCOL(10)回ループ入れてるし、10^6では?
495 名前:デフォルトの名無しさん mailto:sage [2020/09/06(日) 11:29:22.40 ID:r+7yP+3C.net] >>484 いや,総当たりなら,3^(10^5)。 時刻が1--10^5までの間に, 「留まる」「右/左に移動する」の計3通りを 互いに独立に(以前の行動に影響されずに) 行うから。 書いていて思ったけど,端に居るときは 行動可能性が2通りに減るけど, それでも2^N通りでは済まない。
496 名前:253 mailto:sage [2020/09/06(日) 12:24:42.87 ID:cAaPNRIA.net] >>482 >>474 は>>388 への回答なので その計算量の推定議論には該当しません
497 名前:デフォルトの名無しさん mailto:sage [2020/09/06(日) 12:31:12.27 ID:OF7UMaiS.net] >>486 1人が満足することで1点得るとする 点数の最大値は入力されたnの数しかないからn点で それぞれについて1点得るか得ないかの2^nしかない あとはそれを実現できるか移動があるかどうかが焦点になる なので全移動経路を総当りする必要性はない
498 名前:デフォルトの名無しさん mailto:sage [2020/09/06(日) 13:12:26.24 ID:GcXxHJb3.net] >>477 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
499 名前:デフォルトの名無しさん mailto:sage [2020/09/06(日) 13:48:19.34 ID:r+7yP+3C.net] >>488 I see! Thanks.
500 名前:デフォルトの名無しさん mailto:sage [2020/09/06(日) 15:12:48.21 ID:JPL9qi8o.net] >>488 2^nも必要ないよ それぞれの時刻でホストが取れる状態はどのマスにいるかということだけ だから時刻xマスの数が全状態数
501 名前:デフォルトの名無しさん mailto:sage [2020/09/06(日) 15:20:10 ID:JPL9qi8o.net] でその状態数の方が全経路数より圧倒的に少ないので 経路に沿ってではなくて状態について解いていく
502 名前:デフォルトの名無しさん [2020/09/06(日) 16:31:54 ID:SNogxihD.net] >>477 Java https://paiza.io/projects/h9FWf0PGwBt60EOR_U48YA
503 名前:デフォルトの名無しさん mailto:sage [2020/09/06(日) 16:34:17 ID:r+7yP+3C.net] >>491 ん? ホストは隣合うマスにしか移動できないから, 単純にその場面での状態を考えるだけでは駄目なんでは?
504 名前:デフォルトの名無しさん mailto:sage [2020/09/06(日) 16:57:26.53 ID:JPL9qi8o.net] だから遡って計算していくときは隣り合うマスの結果しか参照しないよ
505 名前:デフォルトの名無しさん [2020/09/06(日) 17:01:50 ID:SNogxihD.net] >>461 Java https://paiza.io/projects/IpbujQ_C5ZYHEAYAbnRtzQ
506 名前:デフォルトの名無しさん mailto:sage [2020/09/06(日) 17:02:55 ID:JPL9qi8o.net] >>473 のコードは多分バグがある気がする 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--){ こうするのが正しいと思う
507 名前:253 mailto:sage [2020/09/06(日) 18:02:02 ID:EhLQImvS.net] >>462 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
508 名前:デフォルトの名無しさん mailto:sage [2020/09/06(日) 18:12:25.67 ID:OF7UMaiS.net] >>462 python https://ideone.com/5qz7G8 満足させる人数の多い順から実現可能か探索する 既に不可能だと分かっている移動が含まれる場合は直ちに打ち切る
509 名前:デフォルトの名無しさん mailto:sage [2020/09/06(日) 18:13:41.84 ID:65q5IvB9.net] >>498 perl読めないから間違ってたらごめんだが、 11 3 2 2 3 3 4 4 4 5 4 4 7 5 7 6 7 7 7 8 7 7 10 の入力で20を返してくる。(答えは5)
510 名前:253 mailto:sage [2020/09/06(日) 18:20:26.24 ID:EhLQImvS.net] >>500 はい、バグってました。投稿してから気がついた 時間あったら直します
511 名前:253 mailto:sage [2020/09/06(日) 19:04:52.54 ID:EhLQImvS.net] >>498 Perl5、>>497 の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
512 名前:253 mailto:sage [2020/09/06(日) 19:13:46.76 ID:EhLQImvS.net] >>502 誤記スマソ × >>497 のBug Fix ○ >>498 のBug Fix
513 名前:465 mailto:sage [2020/09/06(日) 20:59:44 ID:I1QXsub5.net] >>497 ご指摘の通りバグってたので再投稿します。 https://ideone.com/VxDLwz やりたかったことは>>464 が言っていることと全く同じです。 イメージとしてはhttps://imgur.com/j0azhSf.jpg (※お題を考えたい人は閲覧注意) >>473 のコードは大抵の場合なぜかうまくいくコードのようです。
514 名前:253 mailto:sage [2020/09/06(日) 21:09:12 ID:loE/lDca.net] >>462 Perl5、>>502 を動的計画法で解くように改良(但し再帰呼び出しを使っているので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);
515 名前:253 mailto:sage [2020/09/06(日) 21:11:43.16 ID:loE/lDca.net] >>505 の実行結果 ~ $ 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
516 名前:253 mailto:sage [2020/09/07(月) 00:59:21.14 ID:5qB4CD7g.net] >>477 Perl5、小数点以下48桁で「丸め」 use bignum(p=>-48); print 1/4999, "\n"; 実行結果 $ perl 18_468_1_4999-48p.pl 0.000200040008001600320064012802560512102420484097
517 名前:453 mailto:sage [2020/09/07(月) 18:47:15.23 ID:IF51aHwX.net] >>461 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バイト
518 名前:デフォルトの名無しさん [2020/09/08(火) 01:49:37.96 ID:L2ZCtfX62] 副業、大手も制度着々…コロナ禍、働き手は空き時間活用 https://www.itmedia.co.jp/business/articles/2009/07/news111.html 富士通「年収3500万円」の衝撃 ソニー、NECも戦々恐々の「グローバル採用競争」 https://www.itmedia.co.jp/business/articles/2008/21/news031.html 東大の起業ラッシュは本物か、大学発ベンチャー数日本一の実力 https://business.nikkei.com/atcl/NBD/19/special/00448/ AI研究の第一人者、東大・松尾研でも起業ラッシュ https://business.nikkei.com/atcl/gen/19/00158/051900002/?i_cid=nbpnb_arc 失敗は認める、多数決はダメ。拡大する「社会起業家集団」の作り方 https://newswitch.jp/p/23033 新卒“即”起業せよ。社会起業家への最短距離に挑む若者たち https://newswitch.jp/p/23020 人々の共感を得られないと潰される時代。 https://news.yahoo.co.jp/articles/37aef71415e8181ce8451e27feb3983bf1f6f9cd ゼロから起業するよりも事業承継(小さな会社の買収)が圧倒的に有利である3つの理由 https://honsuki.jp/pickup/17323.html 「エース人材だって起業OK」、NECは挑戦者が集う場をつくる https://business.nikkei.com/atcl/gen/19/00106/012900003/ NECなど「出向起業」 大企業人材、起業しやすく https://www.nikkei.com/article/DGXMZO61733720Q0A720C2TJ1000/
519 名前:デフォルトの名無しさん [2020/09/08(火) 22:13:29.34 ID:r41CjiKh.net] >>169 Java https://paiza.io/projects/PnHRZftzs0HY5QfVuWDFxQ
520 名前:253 mailto:sage [2020/09/08(火) 23:15:40.17 ID:TMzoRSJV.net] >>462 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]) }
521 名前:253 mailto:sage [2020/09/08(火) 23:16:27.70 ID:TMzoRSJV.net] >>511 の実行結果 ~ $ 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
522 名前:253 mailto:sage [2020/09/09(水) 09:03:14 ID:GqQ7+Mc6.net] >>462 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]) 実行結果 (>>512 と同じテキストファイル 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
523 名前:253 mailto:sage [2020/09/09(水) 09:34:15.87 ID:GqQ7+Mc6.net] >>513 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が大きいと大勢に影響はないな…
524 名前:デフォルトの名無しさん [2020/09/10(木) 01:27:25.37 ID:8z9ZctT6.net] >>358 Java https://paiza.io/projects/o_tTbIG0iHXwP75rs5ayzQ
525 名前:453 [2020/09/10(木) 16:14:51.93 ID:ypm5ktrY.net] お題 >>461 のルールに基いて、以下の3つの10進数のバイト列を、先頭(1バイト目)からチェックしていく時、 最初にルール違反となるのは、何バイト目か 129 130 120 169 240 159 146 206 184
526 名前:デフォルトの名無しさん [2020/09/10(木) 22:23:57.36 ID:8z9ZctT6.net] >>516 Java https://paiza.io/projects/CZXrL_xceE8JIzpnqc9uCA
527 名前:デフォルトの名無しさん mailto:sage [2020/09/12(土) 21:24:36.97 ID:2KEhs3KT.net] お題:自然数nが現れる九九の表の最小サイズを求めよ octave https://ideone.com/JyIBOD
528 名前:デフォルトの名無しさん [2020/09/13(日) 00:20:13.60 ID:OR+CcCGz.net] >>518 Java https://paiza.io/projects/brUcg8fsPPrD3ERaUkVOUA
529 名前:デフォルトの名無しさん [2020/09/13(日) 00:35:46.34 ID:42xWDo9L.net] >>518 Kotlin https://paiza.io/projects/SEi0xU2p5t0WDBvQdAUh3A 良いアルゴリズムが思いつかなかったのでほとんど力技。
530 名前:蟻人間 mailto:sage [2020/09/13(日) 22:12:25.49 ID:p9JSm0uj.net] お題: 「ジャンケンすたじあむ オンライン」というソーシャルゲームのウェブサイト、もしくはソフトウェアパッケージを制作・運営せよ。 ジャンケンをしたい人が集まって、ひたすらジャンケンをして、勝ち数を競うというソーシャルゲーム。 ジャンケン試合は2人組になり、お互いに出す手を事前に申告し、両者が申告したところでシステムが自動で勝敗を判定する。
531 名前:デフォルトの名無しさん mailto:sage [2020/09/13(日) 22:17:50.99 ID:phcl8RYj.net] >>521 消えろ
532 名前:デフォルトの名無しさん [2020/09/13(日) 22:22:25.86 ID:lu6eiMc4.net] 動的計画法ってちゃんと勉強しないとなかなか思いつかないよな
533 名前:デフォルトの名無しさん mailto:sage [2020/09/14(月) 12:06:08.48 ID:u8/qg5cq.net] >>518 Haskell f x = head [ d | d <- [(ceiling $ sqrt $ fromInteger x)..], mod x d == 0] main = mapM_ print [(x,f x) | x<-[100..130]]
534 名前:蟻人間 mailto:sage [2020/09/14(月) 14:12:59.44 ID:/Fwk/gkb.net] お題: 沖縄の名物「シークワーサー」のことが書かれた記事の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」を出力せよ。
535 名前:デフォルトの名無しさん [2020/09/14(月) 17:05:19.85 ID:xV8mpaUY.net] エンジニアが書いてるならシークワーサだな 間違いない
536 名前:蟻人間 mailto:sage [2020/09/14(月) 17:29:10.23 ID:yesAwSRz.net] >>525 input.txtの中身: 「シークヮーサーは、別名シイークワシャーと呼ばれ、シークヮーサーの香りがするシークヮーシャーのような柑橘系の果物である。シィークアーサーはアーサー王とは関係がないと思われる。」
537 名前:デフォルトの名無しさん mailto:sage [2020/09/14(月) 18:00:53.92 ID:wBiJ2Dx0.net] "/シ(?:イ?ー|ィー?)ク[アワァヮ]ー?(?:サ|シャ)ー?/シークヮーサー/g"
538 名前:蟻人間 mailto:sage [2020/09/14(月) 20:32:57.79 ID:/Fwk/gkb.net] お題: お使いのプログラム言語で、COBOLに負けない最強の通貨型を設計せよ。 任意の桁数の10進整数を扱えること。 任意の有効桁数の10進小数を扱えること(10進浮動小数点数)。 加減乗除、剰余、任意桁での切り捨て・切り上げ・四捨五入が可能。 10進数表記で入出力できること。 比較的高速に演算できること。
539 名前:蟻人間 mailto:sage [2020/09/14(月) 20:55:28.62 ID:/Fwk/gkb.net] 1÷3をどう扱うかという問題があるようだ。
540 名前:デフォルトの名無しさん [2020/09/14(月) 21:04:18.95 ID:I0h6BMX6.net] 割り算するときに桁数していするだけっしょ
541 名前:デフォルトの名無しさん [2020/09/14(月) 21:07:19.27 ID:I0h6BMX6.net] 蟻人間さんにお題:銀行丸めを整数型のみを使用して実装してください
542 名前:デフォルトの名無しさん mailto:sage [2020/09/14(月) 21:08:24.84 ID:SHGAz9ig.net] >>526 草
543 名前:デフォルトの名無しさん mailto:sage [2020/09/14(月) 21:24:52.09 ID:6FD493+N.net] 昔から思っているんだけど、分数で持っていて最後に一回だけ割り算するんじゃなんでいけないのかな?
544 名前:デフォルトの名無しさん mailto:sage [2020/09/14(月) 21:26:17.95 ID:6FD493+N.net] 昔から思っているんだけど、分数で持っていて最後に一回だけ割り算するんじゃなんでいけないのかな?
545 名前:デフォルトの名無しさん mailto:sage [2020/09/14(月) 21:49:38.28 ID:SHGAz9ig.net] 分子や分母に分数が入ってきた場合 精度の面で面倒なことになるぞ
546 名前:蟻人間 mailto:sage [2020/09/14(月) 23:12:41.48 ID:yesAwSRz.net] >>532 https://ideone.com/sRja3A 今日はここまで。
547 名前:デフォルトの名無しさん mailto:sage [2020/09/14(月) 23:41:27.65 ID:5nyvo7WN.net] >>537 一生ここまでにしろ
548 名前:デフォルトの名無しさん [2020/09/15(火) 00:21:13.43 ID:2J2Mo0F/.net] >>525 sed -r 's/シ([イィ]ー?|ー)ク[アァワヮ]ー?(サ|シャ)ー/シークワーサー/g' -r は拡張正規表現を使うオプション。 これで >>527 の文を変換するとこうなる。 「シークワーサーは、別名シークワーサーと呼ばれ、シークワーサーの香りがするシークワーサーのような柑橘系の果物である。シークワーサ ーはアーサー王とは関係がないと思われる。」
549 名前:蟻人間 mailto:sage [2020/09/15(火) 02:31:45.89 ID:39uvi0pE.net] 現実問題では、long double型で十分な精度が出るから、独自の浮動小数点数は必要なさそう。 残りは四捨五入とか銀行丸めなどの端数処理。
550 名前:デフォルトの名無しさん mailto:age [2020/09/15(火) 09:10:08.88 ID:gc4PCUOV.net] 工エエェェ(´д`)ェェエエ工
551 名前:デフォルトの名無しさん mailto:sage [2020/09/15(火) 14:07:27.97 ID:2J2Mo0F/.net] bc コマンド使えば良い。 他の言語から使いたい場合はライブラリをリンクするか、またはこっそり裏で fork(), exec() してパイプで繋いで計算させるw
552 名前:蟻人間 mailto:sage [2020/09/15(火) 21:40:23.58 ID:9dtbuAF3.net] >>537 https://github.com/katahiromz/Currency 今日はここまで。足し算、引き算、掛け算を実装。 銀行丸めはもうちょっと待ってね。
553 名前:デフォルトの名無しさん mailto:sage [2020/09/15(火) 21:59:54.94 ID:ky+PawN1.net] >>543 誰も待ってないから一生滞ってろ
554 名前:蟻人間 mailto:sage [2020/09/15(火) 22:50:58.78 ID:i370J0Ri.net] >>544 スレチ
555 名前:蟻人間 mailto:sage [2020/09/15(火) 22:54:46.37 ID:i370J0Ri.net] >>544 とりあえずまあソースコードを読んで頂いてクレヨン。
556 名前:デフォルトの名無しさん mailto:sage [2020/09/15(火) 22:56:56.50 ID:ky+PawN1.net] ここはお前の日記帳じゃねぇっての スレチはお前
557 名前:デフォルトの名無しさん mailto:sage [2020/09/16(水) 10:06:16.52 ID:eJDvfDFO.net] ぶぶ漬けどうぞと言われて、美味しくいただいてさらに食レポまで始めてるような状態かな
558 名前:デフォルトの名無しさん mailto:age [2020/09/16(水) 21:28:53.90 ID:XXyygoNj.net] 嫌味なことするなよ
559 名前:デフォルトの名無しさん mailto:sage [2020/09/17(木) 00:07:22.39 ID:jOQPl4C7.net] 京都のおっかさんも口あんぐりやで
560 名前:デフォルトの名無しさん mailto:sage [2020/09/17(木) 01:09:05.65 ID:FJaokp+J.net] >>529 Python decimal でできるだろ。 https://docs.python.org/ja/3/library/decimal.html
561 名前:デフォルトの名無しさん [2020/09/17(木) 07:37:06.63 ID:Lu9ZyyRf.net] お題: (複数行のバックグラウンド、座標テキスト、座標)から合成テキストを返す関数を作れ 座標テキストとバックグラウンドは同じサイズ(とりあえず横4縦3とする) background ┏┓┏┓ ┃┗┛┃ ┗━━┛ 座標テキスト ab23 9014 8765 座標が 0なら ┏┓┏┓ ┃*┛┃ ┗━━┛ 6なら ┏┓┏┓ ┃┗┛┃ ┗━*┛ 11なら ┏*┏┓ ┃┗┛┃ ┗━━┛ あまり綺麗な実装が出来なかったから問題にした https://repl.it/@vip0/analogclock#index.js
562 名前:デフォルトの名無しさん mailto:sage [2020/09/17(木) 08:03:03.74 ID:dVFtUKnH.net] >>552 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 )
563 名前:デフォルトの名無しさん mailto:sage [2020/09/17(木) 08:08:23.20 ID:Lu9ZyyRf.net] げっ確かに行ごとにreplace必要ないじゃん 何やってんだ俺 ありがとう
564 名前:デフォルトの名無しさん [2020/09/17(木) 13:17:16.17 ID:GTUBgTcD.net] >>552 問題の意味がわからない。
565 名前:デフォルトの名無しさん mailto:sage [2020/09/17(木) 13:30:29.78 ID:/h1W7gqa.net] >>552 くだらない質問スレか初心者質問スレ行け
566 名前:デフォルトの名無しさん mailto:sage [2020/09/17(木) 13:34:08.96 ID:Lu9ZyyRf.net] ほんとにどの問題よりもクソみたいな問題だと思っています 本当にすいませんでした
567 名前:デフォルトの名無しさん mailto:sage [2020/09/17(木) 13:42:30.73 ID:Lu9ZyyRf.net] た
568 名前:セ私は純粋にプログラミングが好きで 全く質問したかったわけじゃないのはわかってほしい 二次配列じゃないと処理できないものだと勘違いしていたのが甘いしシンプルにしすぎて問題が破綻してしまった [] [ここ壊れてます]
569 名前:デフォルトの名無しさん mailto:sage [2020/09/17(木) 13:48:33.25 ID:Lu9ZyyRf.net] 純粋にここにいる人たちが解法として書くコードは好きだし たまに驚くべき角度から解を出す人もいるしマイナーなアルゴリズムも知れて尊敬してる 今回もスマートなコードが見れるんじゃないかと純粋に期待して問題にしてみたんだ スレも今流れ遅かったし
570 名前:デフォルトの名無しさん mailto:sage [2020/09/17(木) 13:50:39.09 ID:Lu9ZyyRf.net] しかしお前らは牙を向いた 純粋に問題作成初心者の心を無碍にして 鋭い刃のような言葉を投げつけてきた お前らは今日から敵とみなす あばよ😎✋絶望しな
571 名前: mailto:sage [2020/09/17(木) 19:40:19.09 ID:+AujTTfU.net] >>560 奏ちゃん「自意識過剰なんじゃないですか?」
572 名前:デフォルトの名無しさん [2020/09/17(木) 22:33:12.99 ID:H8Ldt8Jg.net] お題:文字列の末尾の数字をインクリメントしてください 入力 IB0AAYR8ZZcUXLxKmL1ow8RxZAAUCS1j6pYOJo9n52mwITWoimM3UArCpKAGzSRZrA1vUpAerENynuJXTYuJb9HlO9NZvHdpFvCMsThVOnxhgx3T5jCfRhanH4bJJOvjoaTMdixKg4TC90zOCwyeVKJ62KAgv47P72sfPsQaH8jaG8yWnqbwtyv0OeKZa7qISm6g2MHrOlNb8RVzt36jau1hYCqKuuUBGLGuFToYptzqjkfdAoxAqqmeQO7PVcUS 出力 IB0AAYR8ZZcUXLxKmL1ow8RxZAAUCS1j6pYOJo9n52mwITWoimM3UArCpKAGzSRZrA1vUpAerENynuJXTYuJb9HlO9NZvHdpFvCMsThVOnxhgx3T5jCfRhanH4bJJOvjoaTMdixKg4TC90zOCwyeVKJ62KAgv47P72sfPsQaH8jaG8yWnqbwtyv0OeKZa7qISm6g2MHrOlNb8RVzt36jau1hYCqKuuUBGLGuFToYptzqjkfdAoxAqqmeQO8PVcUS
573 名前:デフォルトの名無しさん mailto:sage [2020/09/17(木) 22:56:25.54 ID:ockp6LF+.net] >>562 vim ?\d<CR><C-a>
574 名前:デフォルトの名無しさん mailto:sage [2020/09/17(木) 23:01:20.65 ID:ockp6LF+.net] >>562 Ruby $><<gets.sub(/\d+(?=\D+$)/, &:succ) # => IB0AAYR8ZZcUXLxKmL1ow8RxZAAUCS1j6pYOJo9n52mwITWoim M3UArCpKAGzSRZrA1vUpAerENynuJXTYuJb9HlO9NZvHdpFvCMsThVOn xhgx3T5jCfRhanH4bJJOvjoaTMdixKg4TC90zOCwyeVKJ62KAgv47P72sfP sQaH8jaG8yWnqbwtyv0OeKZa7qISm6g2MHrOlNb8RVzt36jau1hYCqKuu UBGLGuFToYptzqjkfdAoxAqqmeQO8PVcUS
575 名前:デフォルトの名無しさん [2020/09/18(金) 01:44:05.02 ID:hhldwLbP.net] >>562 Perl コマンドラインで以下のように入力後に標準入力から文字列を読ませると標準出力に出力される。 perl -pe 's/(\d+)(\D+)$/($1+1).$2/ge' あるいはファイルに内容を入れておいてそのファイルを指定する。
576 名前:デフォルトの名無しさん mailto:sage [2020/09/18(金) 03:22:29.90 ID:Pz26zoiQ.net] js window.prompt().replace(/\d(?=\D+$)/,i=>i*1+1)
577 名前:デフォルトの名無しさん mailto:sage [2020/09/18(金) 06:23:31.29 ID:QICqPxzN.net] >>565 行末が数字のときに対応できない perl -pe 's/(\d+)(\D*)$/($1+1).$2/e' のほうがよくないかな
578 名前:デフォルトの名無しさん mailto:sage [2020/09/18(金) 06:53:31.48 ID:5l49iFOd.net] >>520 その場合の良いアルゴリズムって 「素因数分解を早く解くアルゴリズム」 よね。 それがもし思いついたらフィールズ賞ものではw
579 名前:デフォルトの名無しさん [2020/09/18(金) 21:10:31.47 ID:JxxZTRpA.net] >>562 Java https://paiza.io/projects/X0KHD9cQEH8LTka6nmDd_w
580 名前:デフォルトの名無しさん [2020/09/18(金) 21:36:05.11 ID:JxxZTRpA.net] >>553 Java https://paiza.io/projects/ka8qfAJFIag1eovg263vzg
581 名前:デフォルトの名無しさん mailto:sage [2020/09/18(金) 21:54:28.27 ID:WsEcPr9A.net] >>562 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
582 名前:デフォルトの名無しさん [2020/09/18(金) 23:21:52.09 ID:hhldwLbP.net] >>567 そうだった。 + じゃなくて * だったな。
583 名前:253 mailto:sage [2020/09/18(金) 23:34:45.95 ID:/yEGF/vF.net] >>568 素因数分解まで行かない。 素でなくてもいいので因数のうちイチバン大きいもの。 なんかいい解法見つけられないか、考えているけどいまのところ見出せていない
584 名前:253 mailto:sage [2020/09/18(金) 23:36:27.35 ID:/yEGF/vF.net] いや、違うな… 因数のうちイチバン大きいものでは、ダメだわ
585 名前:デフォルトの名無しさん [2020/09/19(土) 00:05:40.30 ID:HLFklpM8.net] >>562 C https://paiza.io/projects/IEDhYc83EDXZuCbsxf_QUg 正規表現を使わずに行末から一文字づつ行頭に向かって検索してやっている。
586 名前:デフォルトの名無しさん mailto:sage [2020/09/19(土) 00:59:21.89 ID:HX0Lirqs.net] √n以上の最小の約数
587 名前:デフォルトの名無しさん mailto:sage [2020/09/19(土) 12:14:05.54 ID:iLwsU5Ay.net] 初出題 数学板の問題より 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"]
588 名前:デフォルトの名無しさん mailto:sage [2020/09/19(土) 15:12:41.86 ID:BWMKzapi.net] https://rio2016.5ch.net/test/read.cgi/math/1598637093/133- わけわからん問題文にするなよ・・・
589 名前:デフォルトの名無しさん mailto:sage [2020/09/19(土) 16:07:21.18 ID:wSOXcncc.net] 全然違って草
590 名前:デフォルトの名無しさん [2020/09/19(土) 16:29:35.90 ID:HLFklpM8.net] >>577 君が何を言わんとしているのかが全くわからない。
591 名前:253 mailto:sage [2020/09/19(土) 17:15:41.66 ID:6KnxgpBj.net] >>518 Perl5、>>576 にヒントを貰った通り√を使ってnaiveに書くと… use POSIX 'ceil'; for $n (81, 87, 91) { $r = ceil sqrt $n; for ($r..$n) { $i = $_; last until $n % $_; } print "$n => $i\n" } 実行結果 ~ $ perl 18_509_99_naive.pl 81 => 9 87 => 29 91 => 13 計算量の少ないもう少しカッチョイイ方法を見出せればなぁ…
592 名前:デフォルトの名無しさん mailto:sage [2020/09/19(土) 21:37:57.70 ID:HX0Lirqs.net] >>577 です やはりちょっと伝わらないですね >>577 は取り下げます
593 名前:デフォルトの名無しさん mailto:sage [2020/09/19(土) 21:39:46.15 ID:HX0Lirqs.net] >>581 計算量減らすなら√n以下の最大の約数d求めてn/dを出力すれば計算量は減るな
594 名前:デフォルトの名無しさん mailto:sage [2020/09/19(土) 21:40:46.29 ID:wSOXcncc.net] 減るというかそもそも計算量が同じというか
595 名前:デフォルトの名無しさん mailto:sage [2020/09/19(土) 21:46:21.17 ID:HX0Lirqs.net] イヤnが素数の場合に√nから上むきに探索すると計算量はnになるけど下向きなら√nになる √n以上の約数と√n以下の約数は同数だけど整数そのものは下側には√nしかなく、上にはn-√nあるので下向きに探していった方が速い
596 名前:デフォルトの名無しさん mailto:sage [2020/09/20(日) 00:25:54.87 ID:ZGoKBb8Y.net] ポラード・ロー法使えばもっと計算量は減る 素数判定と組み合わせればモンテカルロ法ではなくラスベガス法になるから、正当性も担保される
597 名前:デフォルトの名無しさん mailto:sage [2020/09/20(日) 01:39:54.18 ID:wHMtOvf4.net] 素因数分解利用するなら素因数分解そのものが手早くできてもダメでしょ? それを何個か使って最も√nに近いもの探すのはかなり難しいんじゃなかったっけ? つまり素因数分解n=Πpi^eiが与えられたとして、つぎは 0≦xi≦eiを動かすときΣxi log(pi) が1/2 log(n)に最も近くなるものを決定しなければならない コレなんか名前ついてる問題で指数オーダーのアルゴリズムしか見つかってないんじゃなかったっけ? 素因子の数はlog(n)のオーダーで増えていくから、結局exp(c log(n)) のオーダーになって、cがどれくらいに収められるか、そもそも指数オーダー必要なのかも未解決なんじゃなかったっけ?
598 名前:デフォルトの名無しさん mailto:sage [2020/09/20(日) 06:22:49.81 ID:OZ4qNDWZ.net] >>585 素数判定はそもそも計算量少ない
599 名前:デフォルトの名無しさん mailto:sage [2020/09/20(日) 10:19:03.22 ID:mk/D54YH.net] >>588 √n以上の最小の約数をdとして上むき探索に必要な時間はすうがく/d-√n\、下向き探索のそれは\√n-n/d/ (/〜\と\〜/はfloorとceiling) 差は/d-√n\-\√n-n/d/ =\d+n/d-2√n/はam≧gmと\〜/の広義単調性から0以上で上むき探索は素数であるか否かに限らず常に計算量は同じかそれ以上 素数であるか予備検査しても結局上向きに探索したら計算量は同じ以上かかる
600 名前:デフォルトの名無しさん mailto:sage [2020/09/20(日) 10:50:48.99 ID:g28HruB5.net] あ、間違えた 上向き探索の探索量はd-/√n\+1=/d-√n+1\で/~\はceiling 下向き探索の探索量は\√n/-n/d+1=\√n-n/d+1/で\~/はfloor まぁ常に上向きの方が計算量は増える まぁもちろんnをまともに素因数分解して>>587 みたいな方法で√nオーダーより真に早いのがあるなら上向きも下向きもないけど、もうそこまで行ったら研究者レベルの話でしかない気がする
601 名前:デフォルトの名無しさん [2020/09/20(日) 11:23:17.24 ID:MLu0Cj9r.net] >>559-560 短いこの間でダークサイドに堕ちてて草
602 名前:デフォルトの名無しさん mailto:sage [2020/09/20(日) 11:58:05.82 ID:FaUtZa6z.net] >>591 お詫び→弁解→言い訳→逆ギレ 冷静に書いてたつもりが書いてくうちに興奮して見事なコンボを決めたようだ
603 名前:デフォルトの名無しさん [2020/09/20(日) 12:47:09.77 ID:MLu0Cj9r.net] 感情豊かでかわいいw
604 名前:デフォルトの名無しさん mailto:sage [2020/09/20(日) 12:59:00.77 ID:wHMtOvf4.net] 気分を変えてまた数学板より 自然数nに対して格子点の集合{(a,b) | a,bは1〜nの整数}の中の相異なる4点の組みで同一円周上に並ぶものの個数を数え上げよ n:1〜8では [0,1,14,194,826,2491,6364,14564] のハズ
605 名前:デフォルトの名無しさん mailto:sage [2020/09/20(日) 13:05:52.02 ID:wHMtOvf4.net] >>594 ちなみにn=3の場合の14個は 1×1の正方形:4個 2×2の正方形:1個 √2×√2の正方形:1個 2×1の長方形:4個 4辺が1,1,√2,2√2の等脚台形:4個 の14個
606 名前:デフォルトの名無しさん mailto:sage [2020/09/20(日) 18:36:43.29 ID:XyOg3AIQ.net] >>594 https://ideone.com/L3IoWm {0,1,14,184,762,2257,5704,13040}と出たんだが どっちが合ってる?
607 名前:デフォルトの名無しさん mailto:sage [2020/09/20(日) 18:44:44.75 ID:XyOg3AIQ.net] 一直線上にある4点の組を余分に数えたところ >>594 の解と一致した https://ideone.com/GUZoZL
608 名前:デフォルトの名無しさん mailto:sage [2020/09/20(日) 18:56:48.73 ID:wHMtOvf4.net] あ、ホントだ失礼しました
609 名前:デフォルトの名無しさん mailto:sage [2020/09/20(日) 19:10:27.22 ID:wHMtOvf4.net] [0,1,14,184,762,2257,5704,13040] が正解ですね https://ideone.com/YULQQ4
610 名前:デフォルトの名無しさん [2020/09/20(日) 22:46:33.41 ID:9sb+TTLg.net] >>594 問題がわからない。
611 名前:デフォルトの名無しさん mailto:sage [2020/09/21(月) 00:11:09.46 ID:ZXxiMs6i.net] >>600 n=3だと ●●◯ ◯●● ◯◯◯ ◯◯◯ ●●◯ ◯●● ●●◯ ◯●● ◯◯◯ ◯◯◯ ●●◯ ◯●● ●◯● ◯◯◯ ●●◯ ◯●● ●◯● ●◯● ◯◯◯ ◯◯◯ ◯◯◯ ●◯● ●●◯ ◯●● ●●◯ ◯●● ◯◯● ●◯◯ ◯◯● ●◯◯ ◯◯● ●◯◯ ◯◯● ●◯◯ ●●◯ ◯●● ●◯● ◯●◯ ◯◯◯ ●◯●
612 名前: ●◯● ◯●◯ の14通り [] [ここ壊れてます]
613 名前:デフォルトの名無しさん mailto:sage [2020/09/21(月) 11:36:08.07 ID:VFD1LGbi.net] >>594 のお題は、 平面上に4点を選んだとき、その4点をすべて含む円周が存在する場合としない場合がある xy平面上に、x,yの各座標が1〜nの整数であるような、互いに異なる点を4つ選んだとき、4点すべてを含む円周が存在するものがいくつあるか? n=1〜8についてそれぞれ数え上げよ (註:n=1のときは異なる4点を選べないので、解は0でよい) ってことでいいかな?
614 名前:デフォルトの名無しさん mailto:sage [2020/09/21(月) 13:45:14.08 ID:tVxoOCVr.net] >>601 n=4 のときの184通り imgur.com/GNuPa4z.png
615 名前:デフォルトの名無しさん mailto:sage [2020/09/21(月) 14:54:29.54 ID:/KyZWHiy.net] >>603 正解だと思う おそらくn=9までは [0,1,14,184,762,2257,5704,13040,25996] 今作ってるのはC[n^2,4]を全数検査してるのでO(n^8)で計算量増えるので二桁以上はしんどいorz
616 名前:デフォルトの名無しさん [2020/09/22(火) 00:03:46.43 ID:jIz1rAqD.net] 誰かフォルダにパスワード駆ける方法教えてくれ
617 名前:253 mailto:sage [2020/09/22(火) 02:15:18.79 ID:jDcMk3G3.net] 対象性を考慮する以外の計算量の削減手段はないのかねこの手の問題は 解決すべき課題は計算量の削減ばかりではないだろうけれどさ
618 名前:デフォルトの名無しさん mailto:sage [2020/09/22(火) 09:28:15.64 ID:yucbsR+t.net] まぁ何に重きを置くかですな 数学板でこの手のプログラムが必要になるのは誰も答え持ってなくて、一応答えは出てるけど確認したいときとか その時は速度より“確実に正しい”事の方が重要になる この場合も対称性やら、明らかに無駄な可能性を排除すれば速度は上がるけど“確実に正しい”のかは怪しくなってしまう 実務でプログラム使う人もその辺のtpoは意識してるのでは?、 コード汚くても高速な奴も募集中
619 名前:デフォルトの名無しさん mailto:sage [2020/09/22(火) 11:56:55.93 ID:LgsCAwYw.net] >>603 に挙げられている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 通りと数え上げることができる 図の中央を基準にすることができるものばかりとは限らないところには注意が必要だが 総当たりよりは効率化が見込めると思われる。
620 名前:253 mailto:sage [2020/09/28(月) 22:51:28.57 ID:mT2w1+AU.net] >>518 Python3, >>585 を参考に計算量を√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 もっとスマートな解法を考えていると双曲線を意識した解法を意識してしまうが、 簡単には解けない数学の問題に突き当たると思う
621 名前:253 mailto:sage [2020/09/28(月) 22:53:47.02 ID:mT2w1+AU.net] >>609 × 意識した解法を意識してしまうが、 ○ 意識した解法を思い浮かべてしまうが、
622 名前:デフォルトの名無しさん mailto:sage [2020/09/29(火) 18:23:40.44 ID:TPx3FsW2.net] お題: バブルソートを実装せよ
623 名前:253 mailto:sage [2020/09/29(火) 23:24:18.49 ID:219xwwXO.net] >>611 プログラミングのお題スレ Part13 mevius.5ch.net/test/read.cgi/tech/1549160513/231
624 名前:デフォルトの名無しさん mailto:sage [2020/09/30(水) 20:15:38.19 ID:rtPyMlCZ.net] 古参はここで「番兵おけやボケェ!」と言う
625 名前:デフォルトの名無しさん mailto:sage [2020/10/01(木) 01:25:55.75 ID:cJ6xF5hb.net] お題: アッカーマン関数の引数が与えられるので、計算過程を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
626 名前:デフォルトの名無しさん mailto:sage [2020/10/01(木) 11:20:33.49 ID:iee67Noq.net] >>614 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
627 名前:デフォルトの名無しさん [2020/10/01(木) 12:09:11.51 ID:OaA9a4hN.net] Haskellでもこんな長くなるの?
628 名前:デフォルトの名無しさん mailto:sage [2020/10/01(木) 12:15:24.40 ID:O+PWz9pR.net] >>616 いや、上手な人ならもっと上手くやるはず アホほどライブラリがあってそれ使えば楽々のハズだけど修行中の身ではこんなもんorz
629 名前:デフォルトの名無しさん mailto:sage [2020/10/01(木) 14:04:34.18 ID:Am+nhG+G.net] >>615 ちょっとチューンナップ 達人なら***とか>>>とか意味わからん演算子使ってもっとスッキリ書くんだろうけどアホほどあって使いこなせん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
630 名前:蟻人間 mailto:sage [2020/10/02(金) 19:50:35.06 ID:gQLwfaGp.net] お題: 野球のボールの動きを物理シミュレートして、ピッチャーの投げてきたボールをより遠くにかっ飛ばすバッターAIを開発せよ。
631 名前:デフォルトの名無しさん mailto:sage [2020/10/02(金) 20:54:50.29 ID:tP403VLl.net] カーブやシュートも再現しろよ
632 名前:253 mailto:sage [2020/10/02(金) 21:41:56.95 ID:kl4hmyt8.net] >>619 ─┼─┐─┼─ / ,. `゙''‐、_\ | / / │ │─┼─/| _,.イ,,.ィ' ─────‐‐‐ * ←>>蟻人間 │ |ツ │ | | | イン /´⌒`ヽ // | \ {, リ) / ./ | \ __ /}从、 リ( / / | ,. ,. -‐===‐- `つ/ ,.イ ’^ソハノリ / ∵|:・. 〃〃〃〃 //ミノ__ /´ /∴・|∵’ ヽ_I__I__I__I__I_I __ノ_/ / ヽミ、、 .∵.;|∵’:; ー{____,,二二二ニ) ノΘ(__ ) ゙ 、∵.;|∵’, /I I I I I I .^^^' \ !  ̄フ ゙ 、 |∴ ソ / ` ノ⌒ヽ') / ノ/ / /\/ ∧/ / ', / / ノ./ ./ ', ノ/ ヘ__、 ./ / ̄ ̄ ̄ヽ .', ヘ_'_, / \ / ', / \/ ', ゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙ ゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙
633 名前:デフォルトの名無しさん mailto:sage [2020/10/02(金) 21:46:15.88 ID:JDxjQVnw.net] ナイス
634 名前:デフォルトの名無しさん mailto:sage [2020/10/02(金) 22:04:39.76 ID:jsz+6t1Q.net] >>621 くっそワロタ
635 名前:253 mailto:sage [2020/10/03(土) 01:10:19.52 ID:io8Ij0O0.net] >>614 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
636 名前:253 mailto:sage [2020/10/03(土) 01:13:51.37 ID:io8Ij0O0.net] なんかBugってる…orz
637 名前:デフォルトの名無しさん mailto:sage [2020/10/03(土) 12:07:42.48 ID:xbar0BlH.net] >>614 perl5 https://ideone.com/pRMAjA s///e でいける
638 名前:デフォルトの名無しさん mailto:sage [2020/10/03(土) 12:20:08.70 ID:nr2+4P+J.net] perlの正規表現マジック恐ろしや
639 名前:デフォルトの名無しさん mailto:sage [2020/10/03(土) 12:37:17.41 ID:MOu6VxbM.net] >>626 すげえな ほとんどワンライナーだ
640 名前:デフォルトの名無しさん mailto:sage [2020/10/03(土) 12:46:20.34 ID:ul2MWjNf.net] そうなのよね 入力もらって表示→ワンステップだけ展開して戻る の繰り返しが1番楽なんだけどなぁ
641 名前:253 mailto:sage [2020/10/03(土) 14:01:25.06 ID:5WkJC33J.net] >>614 Perl5、>>624 を修正。 >>626 あら正規表現で書けちゃうのかイナ… 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
642 名前:デフォルトの名無しさん mailto:sage [2020/10/03(土) 18:00:38.18 ID:WWjeAKvH.net] >>614 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
643 名前:デフォルトの名無しさん mailto:sage [2020/10/07(水) 20:33:26.90 ID:0TsEuxhN.net] >>614 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));
644 名前:253 mailto:sage [2020/10/08(木) 02:27:24.66 ID:Gy7CYzaJ.net] 藻前ら、なかなかやるなー 気に入った。
645 名前:蟻人間 mailto:sage [2020/10/08(木) 13:59:34.65 ID:N89hoMl4.net] お題: ax**2+b*x+c==0という形の二次方程式を解き、全ての実数解と実数解の個数を表示する。
646 名前:デフォルトの名無しさん mailto:sage [2020/10/08(木) 15:03:23.36 ID:eK30Q5Ei.net] 実数解はルートを含んだ形でいいのか? あるいは小数点以下何桁まで正確に求めるのか?
647 名前:蟻人間 mailto:sage [2020/10/08(木) 15:04:48.84 ID:N89hoMl4.net] >>635 浮動小数点数でいいよ。
648 名前:デフォルトの名無しさん mailto:sage [2020/10/08(木) 21:36:29.64 ID:Q4ykcHSC.net] >>633 ∧_∧ / ̄ ̄ ̄ ̄ ̄ ( ´∀`)< オマエモナー ( ) \_____ | | | (__)_)
649 名前:蟻人間 mailto:sage [2020/10/09(金) 13:26:20.64 ID:pUAVGuih.net] お題:計算ができる文章テンプレートを実装し、つるかめ算を自動生成せよ。 文章テンプレートの例: 「ツルとカメが合わせて{$(ツルの数)+$(カメの数)}います。 足の合計本数が{$(ツルの数)*2+$(カメの数)*4}本です。 カメは何匹いますか。」 変数は「$(変数名)」のように表し、その具体的な値は入力として与えられる。 計算式は{ }で囲って表す。 計算式は変数や定数、加減乗除の演算子、または丸カッコを含むことができる。 入力の例:「ツルの数=3, カメの数=4」
650 名前:デフォルトの名無しさん [2020/10/09(金) 14:02:14.80 ID:/NdRCF04.net] >>634 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 ]
651 名前:蟻人間 mailto:sage [2020/10/09(金) 14:14:06.07 ID:LR5flFjI.net] >>638 追記: パーサーを作れない人はevalを用いても構わない。
652 名前:デフォルトの名無しさん [2020/10/09(金) 14:14:59.57 ID:/NdRCF04.net] >>634 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 ]
653 名前:デフォルトの名無しさん mailto:sage [2020/10/09(金) 17:52:52.10 ID:gniylpO4.net] >>638 Ruby ツルの数 = 3 カメの数 = 4 Template =<<_EOT_ 「ツルとカメが合わせて{$(ツルの数)+$(カメの数)}います。 足の合計本数が{$(ツルの数)*2+$(カメの数)*4}本です。 カメは何匹いますか。」 _EOT_ puts Template.gsub( /\{(.*?)\}/ ){ eval $1.gsub( /\$\((.*?)\)/ ){ $1 } }
654 名前:253 mailto:sage [2020/10/09(金) 22:43:14.04 ID:/QeZd0d9.net] >>638 Perl5 use utf8; no warnings 'utf8'; $ツルの数 = 3; $カメの数 = 4; print <<EOF 「ツルとカメが合わせて@{[${ツルの数}+${カメの数}]}います。 足の合計本数が@{[${ツルの数}*2+${カメの数}*4]}本です。 カメは何匹いますか。」 EOF 実行結果 ~ $ perl 18_633_ツルの数+カメの数.pl 「ツルとカメが合わせて7います。 足の合計本数が22本です。 カメは何匹いますか。」
655 名前:蟻人間 mailto:sage [2020/10/09(金) 23:14:45.18 ID:LR5flFjI.net] お題: 2つのRGBカラーが#RRGGBB形式で与えられる(RRGGBBは六桁の十六進数とする)。 2つの中間色を#RRGGBB形式で出力せよ。 可能ならばこれら3つの色をカラーバーとして表示せよ。
656 名前:蟻人間 mailto:sage [2020/10/09(金) 23:26:06.11 ID:LR5flFjI.net] >>644 入力例1: #112233, #99AAFF 入力例2: #AD03ff, #a39e75
657 名前:デフォルトの名無しさん mailto:sage [2020/10/09(金) 23:55:14.23 ID:ACx6TREf.net] >>644 ,645 自明な入力例だけを示しても、出力例も出さないと意味ないだろう。 2色の中間色ってのが曖昧じゃね? 単にR,G,Bそれぞれの平均を取るだけなのか、赤と紫の中間が赤紫になるように循環する色相で中間をとるのかとか。
658 名前:デフォルトの名無しさん mailto:sage [2020/10/10(土) 02:56:37.74 ID:KFXrJR76.net] 問題が玉石混合だなぁ
659 名前:デフォルトの名無しさん mailto:sage [2020/10/10(土) 07:06:51.16 ID:PdovQueR.net] >>643 >変数は「$(変数名)」のように表し、
660 名前:デフォルトの名無しさん mailto:sage [2020/10/10(土) 07:45:17.48 ID:nh4sk35x.net] お題: 20201010と出力してください。ただしコードに使っていい数字は1のみです。
661 名前:デフォルトの名無しさん mailto:sage [2020/10/10(土) 08:25:49.31 ID:qt6u2bFw.net] >>649 python a=1;b=a+a;c=a-a print(b,c,b,c,a,c,a,c,sep='') #出力20201010
662 名前:デフォルトの名無しさん [2020/10/10(土) 10:53:30.16 ID:nh4sk35x.net] >>649 自分で js const t = ` `.charCodeAt() console.log(t + t + "" + (t + t) + t + t) const m = "ϲ".charCodeAt() console.log(m + m + "" + m)
663 名前:デフォルトの名無しさん mailto:sage [2020/10/10(土) 12:06:27.17 ID:0z4oJBva.net] >>649 js本日限定 new Date().toLocaleDateString().split(/-|\//).join`` //=> "20201010"
664 名前:デフォルトの名無しさん [2020/10/10(土) 14:54:47.61 ID:iOujIiR/.net] >>647 ×こんごう ○こんこう
665 名前:デフォルトの名無しさん [2020/10/10(土) 14:57:00.84 ID:iOujIiR/.net] >>649 Java https://paiza.io/projects/8QZuxNJ_iMGrfafT8HlLGw
666 名前:デフォルトの名無しさん mailto:sage [2020/10/10(土) 15:40:40.94 ID:Duwb5Fsi.net] >>654 012にOIZ使うのセンスある
667 名前:デフォルトの名無しさん [2020/10/10(土) 18:37:22.80 ID:jNM1f0U4.net] >>649 C https://ideone.com/5BGavX
668 名前:デフォルトの名無しさん [2020/10/10(土) 18:54:45.98 ID:V01gi3BN.net] >>656 Windowsでもそのままでいけるのか?
669 名前:蟻人間 mailto:sage [2020/10/10(土) 19:24:31.52 ID:c6WyhNHP.net] お題: 振動数1000Hzの音を1秒間発振せよ。
670 名前:デフォルトの名無しさん mailto:sage [2020/10/10(土) 19:32:24.80 ID:53GLINoh.net] >>649 c https://ideone.com/DbqsXs
671 名前:デフォルトの名無しさん mailto:sage [2020/10/10(土) 19:46:18.01 ID:LCYuVeVr.net] haskell import Data.Maybe main = print $ product $ map ((fromJust).(flip lookup (zip ['\t'..] [1..]))) "&myC"
672 名前:デフォルトの名無しさん mailto:sage [2020/10/10(土) 21:44:48.33 ID:0z4oJBva.net] >>658 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)
673 名前:デフォルトの名無しさん mailto:sage [2020/10/10(土) 23:07:21.98 ID:t1LUP7rm.net] >>649 haskell 改良 unicode = length . tail . (enumFromTo minBound) main = print $ product $ map unicode "ാᝇ"
674 名前:デフォルトの名無しさん [2020/10/10(土) 23:18:40.46 ID:iOujIiR/.net] >>644 Java https://paiza.io/projects/taHgDigIq_C5KjS66xaCfQ https://dotup.org/uploda/dotup.org2277678.png
675 名前:デフォルトの名無しさん mailto:sage [2020/10/11(日) 00:16:06.04 ID:6GsmNhIZ.net] >>649 JavaScript [1+1,1-1,1+1,1-1,1,1-1,1,1-1].reduce((acc,n)=>acc+n,'')
676 名前:デフォルトの名無しさん [2020/10/11(日) 01:54:01.50 ID:eYi6TEVp.net] >>614 Java https://paiza.io/projects/IVaRnsx6lYLlO1CcbniO-Q
677 名前:デフォルトの名無しさん [2020/10/11(日) 08:58:57.96 ID:luIvAMCe.net] >>649 J smoutput ,&":/ 'amp' i. 'papamama'
678 名前:デフォルトの名無しさん [2020/10/11(日) 11:20:41.53 ID:eXVrSXVr.net] >>649 bash aa=1; bb=$((aa-aa)); cc=$aa$bb$aa$bb; printf "%d" $((cc+cc)) $cc; echo
679 名前:デフォルトの名無しさん [2020/10/11(日) 17:59:24.67 ID:/6XslNRS.net] >>638 Perl https://paiza.io/projects/wfQXB4arB2zbu4DNYEiU5w eval が使えて楽なので、つい。
680 名前:デフォルトの名無しさん [2020/10/11(日) 18:12:54.16 ID:eYi6TEVp.net] >>611 Java https://paiza.io/projects/2bTy71EhJJcVemamRx8IPA
681 名前:デフォルトの名無しさん [2020/10/11(日) 19:16:59.76 ID:/6XslNRS.net] >>644 Kotlin https://paiza.io/projects/O1eUwROYKRQepDq3N-VyUA paiza.io はHTMLで出力させてブラウザに表示できるのでカラーバーも出してみました。
682 名前:デフォルトの名無しさん [2020/10/11(日) 19:36:20.38 ID:eYi6TEVp.net] これは良いこと聞いた
683 名前:デフォルトの名無しさん [2020/10/11(日) 19:48:34.94 ID:ki6dTuuo.net] >>649 Common Lisp (SBCL, 処理系依存) https://ideone.com/nImAgj
684 名前:デフォルトの名無しさん mailto:sage [2020/10/11(日) 20:05:13.72 ID:FQjAt+Dq.net] >>672 かわいい
685 名前:デフォルトの名無しさん mailto:sage [2020/10/11(日) 20:30:57.80 ID:vt3DXswM.net] >>649 brainfuck >+++++++[<+++++++>-]<+.--.++.--.+.-.+.-.
686 名前: mailto:sage [2020/10/11(日) 23:30:32.44 ID:A2vGg89g.net] >>614 C(C++) https://mevius.5ch.net/test/read.cgi/tech/1434079972/70
687 名前:蟻人間 mailto:sage [2020/10/11(日) 23:57:26.40 ID:4cQ/GxGI.net] お題: 整数0〜10の一様分布の乱数を百回発生させて、その統計結果を基に各整数を横軸、回数を縦軸とする棒グラフ(ヒストグラム)を描画し(棒の最大幅32字)、ほぼ一様であることを確かめなさい。
688 名前:デフォルトの名無しさん mailto:sage [2020/10/11(日) 23:59:14.77 ID:B+MSoWxK.net] paiza.io は、text, html, json で出力できるのか html も、部分的なタグだけを書いても動くのか
689 名前:蟻人間 mailto:sage [2020/10/12(月) 00:01:01.03 ID:rx5xRSFU.net] >>676 訂正。 (誤)各整数を横軸、回数を縦軸とする棒グラフ (正)各整数を縦軸、回数を横軸とする棒グラフ
690 名前:デフォルトの名無しさん mailto:sage [2020/10/12(月) 01:06:07.97 ID:eqKg5iqj.net] 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
691 名前:デフォルトの名無しさん [2020/10/12(月) 01:14:47.03 ID:hVCmG980.net] >>649 Kotlin https://paiza.io/projects/32aoQfPBUWZ0tnk2E5fg2g ちょっと変わった感じにしようと思ってこうした。
692 名前:デフォルトの名無しさん [2020/10/12(月) 08:18:41.49 ID:fHHXzdlp.net] >>676 二項分布になるんじゃないかなあ
693 名前:デフォルトの名無しさん [2020/10/12(月) 16:10:06.27 ID:Wx/lfAmjI] 「頭使えよ貧乏人」に思う、寝てても金入るシステムを作る人 https://www.youtube.com/watch?v=VEB6M_s6abs バカ不平多し★へつらい生きてるからリストラ対象 https://www.youtube.com/watch?v=carOYI-xNoI 勝ちは偶然、負けは必然★負けて消えた人に足りなかったものは? https://www.youtube.com/watch?v=agAQTF1OaBU&t=38s リーダー達の給料が高いのは単純労働者じゃないから https://www.youtube.com/watch?v=8o9il6dVXGk できません、自信がありません、無理です★ボンクラにしたのは誰? https://www.youtube.com/watch?v=54YNXSQsxuM 稼げない人へ★
694 名前:報商材こそ稼げない分野が分かる https://www.youtube.com/watch?v=x_2nSmlx3og 9割の人は、ただの作業員★自学自習こそ仕事の基本 https://www.youtube.com/watch?v=vIGKDmmBJcs サラリーマン、10年経てばボンクラ説 https://www.youtube.com/watch?v=QdfVJnVuLlY [] [ここ壊れてます]
695 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 15:32:12.46 ID:M1NONSBM.net] >>658 オーディオ系はシステム依存度が高いから余りサンプルが出てこないね。 WindowsやMacOSなら簡単そうだが 1kHz の音源ファイルを使うのは違反かな?
696 名前:蟻人間 mailto:sage [2020/10/14(水) 17:27:12.50 ID:TNR/wFHW.net] >>658 C/C++ with Win32 #include <windows.h> int main(void) { Beep(1000, 1000); }
697 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 17:57:41.59 ID:qOYZdiW9.net] 答え出てきても試しようがない
698 名前:蟻人間 mailto:sage [2020/10/14(水) 18:19:22.34 ID:TNR/wFHW.net] >>658 Python with Windows import winsound winsound.Beep(1000, 1000);
699 名前:蟻人間 mailto:sage [2020/10/14(水) 18:24:27.45 ID:TNR/wFHW.net] >>658 Python with Mac import os os.system('play -n synth 1 sin 1000');
700 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 18:36:34.21 ID:Azmo5ss/.net] シェル経由でSoX playコマンド呼んでるだけやんけ Pythonもmacも関係ねぇわ
701 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 19:17:28.35 ID:Y0U/d7P+.net] OSにつく前置詞はwithじゃなくてonだろハゲ
702 名前:デフォルトの名無しさん [2020/10/14(水) 19:30:29.09 ID:pZU5VHHG.net] 試すと音が出て煩そうだから試す気になれない。
703 名前:蟻人間 mailto:sage [2020/10/14(水) 19:50:02.82 ID:TNR/wFHW.net] テレビの自主規制音と同じ音だよ。 https://ja.wikipedia.org/wiki/%E8%87%AA%E4%B8%BB%E8%A6%8F%E5%88%B6%E9%9F%B3
704 名前:デフォルトの名無しさん mailto:sage [2020/10/15(木) 00:45:55.69 ID:BUh584nA.net] >>688 iOS じゃ、play コマンドがなさそうなんだよな。
705 名前:デフォルトの名無しさん mailto:sage [2020/10/15(木) 01:18:37.79 ID:fqrOjoDi.net] 結局このスレで盛り上がるのは環境によらず言語によらず、でも多少は骨のあるようなお題なんだよな へぇその言語ならそんなにキレイに書けるのかとか普段自分が使ってない言語ではどうやって実現できるのか眺めたりするのが面白い 音鳴らすなんてお題として面白いわけがない
706 名前:デフォルトの名無しさん mailto:sage [2020/10/15(木) 01:40:28.46 ID:S6IC+plr.net] ヒント:出題者
707 名前:デフォルトの名無しさん [2020/10/15(木) 11:44:28.12 ID:cDg3UiVL.net] 蟻人間さんへのお題: 文字列を受け取って、RFC 5322にしたがってSubjectヘッダを出力してください(MUST、SHOULDを満たすこと) 文字コードはUTF-8、エンコーディングはBエンコードを使用してください
708 名前:蟻人間 mailto:sage [2020/10/15(木) 13:28:00.67 ID:s1gNbcw/.net] >>695 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")
709 名前:蟻人間 mailto:sage [2020/10/15(木) 13:49:36.74 ID:IXtC9lOP.net] >>696 訂正。 (誤) while len(text) > 78: (正) while len(text) >= 78:
710 名前:デフォルトの名無しさん [2020/10/15(木) 14:30:46.93 ID:cDg3UiVL.net] >>696 いろいろ違うので・・・メールのソース眺めたが良いです
711 名前:デフォルトの名無しさん mailto:sage [2020/10/15(木) 19:14:52.90 ID:QzXinxJa.net] 頭の悪いお題を連投してるやつはやっぱり頭悪いんだな
712 名前:デフォルトの名無しさん [2020/10/15(木) 19:22:03.88 ID:cDg3UiVL.net] そんなことないと思うけどな あまり他人の悪口言わない方が良いよ
713 名前:デフォルトの名無しさん mailto:sage [2020/10/15(木) 19:28:33.00 ID:QzXinxJa.net] くっそみたいなお題延々と出し続けてウザいじゃん
714 名前:デフォルトの名無しさん mailto:sage [2020/10/15(木) 19:29:59.48 ID:MTvivIgb.net] >>638 なんかはいいと思うんだけどな eval使えないHaskellerにはいい練習問題になってる
715 名前:デフォルトの名無しさん mailto:sage [2020/10/15(木) 19:38:14.90 ID:QzXinxJa.net] ウェブアプリつくれだのGUIアプリつくれだの酷い事散々言いまくってるじゃん ◆QZaw55cn4cの方がまだマシ
716 名前:デフォルトの名無しさん mailto:sage [2020/10/15(木) 19:40:03.02 ID:MTvivIgb.net] まぁ音出せとかカラーバー出せとかはクソお題だな
717 名前:デフォルトの名無しさん [2020/10/16(金) 19:48:26.76 ID:2tllxc0n.net] お題 自然数nを 2進数にした時、 1が連続する個数の最大値を求める。 例 20201016 -> 5
718 名前:デフォルトの名無しさん mailto:sage [2020/10/16(金) 20:25:28.88 ID:YQH8/KbW.net] 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
719 名前:デフォルトの名無しさん mailto:sage [2020/10/16(金) 21:03:20.03 ID:a9PKFHNt.net] >>705 ruby f = ->(n) {n.to_s(2).chars.chunk(&:itself).map {|k, a| k == '1' ? a.size : 0}.max}
720 名前:デフォルトの名無しさん mailto:sage [2020/10/16(金) 21:35:06.98 ID:XtprH8ZD.net] >>705 JavaScript const f = (n = 0) => Math.max(...(n.toString(2).match(/1+/g) ?? ['']).map(m => m.length)) console.log(f(20201016)) //=> 5
721 名前:253 mailto:sage [2020/10/16(金) 23:46:14.30 ID:5gS0lg4h.net] >>705 Perl5 use List::Util max; print max map{length} sprintf('%b', 20201016) =~ /(1+)/g; 実行結果 $ perl 18_695_bin1.pl 5
722 名前:デフォルトの名無しさん [2020/10/17(土) 00:12:43.05 ID:7ct7R1y+.net] >>705 Ruby p 20201016.to_s(2).split("0").max.size
723 名前:デフォルトの名無しさん mailto:sage [2020/10/17(土) 00:24:53.85 ID:u2s9P3C4.net] haskell 無名関数というインチキ使ってしまったので再挑戦バージョン import Data.List main = print $ maximum . map sum . group . map (flip mod 2) . takeWhile (/=0) . iterate (flip div 2) $ 20201016
724 名前: mailto:sage [2020/10/17(土) 00:46:45.25 ID:4JRxXuyk.net] >>705 https://ideone.com/hQRZsi
725 名前:デフォルトの名無しさん mailto:sage [2020/10/17(土) 01:58:38.41 ID:S6LboNFt.net] >>705 Ruby n = 20201016 nl = 0 while n > 0 nl = ((nc = (n.odd?)? nc + 1 : 0) > nl)? nc : nl n >>= 1 end puts nl
726 名前:デフォルトの名無しさん mailto:sage [2020/10/17(土) 01:59:32.64 ID:u2s9P3C4.net] >>712 125の時1になった
727 名前:デフォルトの名無しさん mailto:sage [2020/10/17(土) 02:41:53.51 ID:AbkDXvLA.net] これだからQZ
728 名前: mailto:sage [2020/10/17(土) 02:53:09.41 ID:4JRxXuyk.net] >>705 C++: https://ideone.com/7H5HBx >>712 にはロジックに欠陥がありました >>714 ご指摘ありがとうございます。
729 名前:703 mailto:sage [2020/10/17(土) 09:22:46.57 ID:S6LboNFt.net] >>714 自分の >>713 も - nl = 0 + nc = nl = 0
730 名前:デフォルトの名無しさん mailto:sage [2020/10/17(土) 12:19:37.13 ID:a+zi+w45.net] >>705 C++ https://wandbox.org/permlink/udZVzwy6pQKbcPa5
731 名前:デフォルトの名無しさん mailto:sage [2020/10/17(土) 13:46:27.15 ID:eBu6AjRf.net] >>705 C https://ideone.com/DwvfL2
732 名前:デフォルトの名無しさん mailto:sage [2020/10/17(土) 18:57:16.23 ID:S6LboNFt.net] >>705 Ruby n = 20201016 i = 0 while n != 0 n &= n << 1 i += 1 end puts i
733 名前:デフォルトの名無しさん [2020/10/17(土) 19:11:03.54 ID:wXdm0x1E.net] >>720 うまいやり方だな。それには気付かなかった。
734 名前:デフォルトの名無しさん [2020/10/17(土) 19:29:10.40 ID:wXdm0x1E.net] >>705 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が出る。
735 名前:デフォルトの名無しさん mailto:sage [2020/10/17(土) 20:05:12.33 ID:vimxgZ9f.net] >>705 JavaScript let num = 20201016 let ans = num.toString(2).split`0`.sort().pop().length console.log(ans) //=> 5
736 名前:デフォルトの名無しさん mailto:sage [2020/10/17(土) 20:50:55.84 ID:w8j3NnhR.net] >>705 octave https://ideone.com/dO1WZp f = @(n) max(cellfun(@numel, strsplit(dec2bin(n), '0'))); f(20201016)
737 名前:デフォルトの名無しさん [2020/10/17(土) 20:54:06.81 ID:frzgm+pU.net] >>705 Perl https://paiza.io/projects/VO9_CFHPOVbO5iI8uDc__A
738 名前:デフォルトの名無しさん mailto:sage [2020/10/17(土) 23:22:21.08 ID:P3PLPttw.net] いつもRubyの人からなにかしら学ぶことがある
739 名前:デフォルトの名無しさん [2020/10/18(日) 00:42:32.49 ID:nYmbGZmV.net] ハトにエサを与えないで下さい
740 名前:デフォルトの名無しさん mailto:sage [2020/10/18(日) 01:06:12.01 ID:qT62bbHa.net] QZは自分の頭が悪いのをわざわざ周知してもらうためにクソコードを晒すのか ドMだな
741 名前:デフォルトの名無しさん mailto:sage [2020/10/18(日) 03:42:01.18 ID:DpwMGaW+.net] >>720 なるほどな、感心した n>>1 でもいいわけだな
742 名前:デフォルトの名無しさん mailto:sage [2020/10/18(日) 04:21:53.35 ID:xWXtsYNK.net] >>710 のほうが速いと思うが
743 名前:デフォルトの名無しさん mailto:sage [2020/10/18(日) 04:36:21.54 ID:F/EhVBet.net] rubyよく分からないけど>>720 の方が100倍くらいは速そうに思える
744 名前:デフォルトの名無しさん [2020/10/18(日) 05:53:44.51 ID:28u9FaXE.net] うん。速そうだね。数値計算しかしてないし。
745 名前:デフォルトの名無しさん mailto:sage [2020/10/18(日) 10:06:25.57 ID:ARbR7jXS.net] 20201016みたいに桁数が少ないならそうだけど桁数が増えるとルーブが答え×桁数回だからアルゴリズムそのものは遅い 桁数が少ないうちは内部関数しか使ってない利点で早いとは思うけど
746 名前:デフォルトの名無しさん mailto:sage [2020/10/18(日) 12:07:22.14 ID:GUbLWvo/.net] >>733 >>710 ,720 をベンチマークで比較してみた https://ideone.com/t0ZYLg https://ideone.com/DUEWmC 20201016 では 5~6倍 巨大な数だと 7000倍以上
747 名前: mailto:sage [2020/10/18(日) 15:53:00.51 ID:xUpUEWAV.net] >>703 残念ながら、私の出題もイマイチ人気がありませんでした‥‥
748 名前:デフォルトの名無しさん [2020/10/18(日) 21:20:25.30 ID:wanN/5Zd.net] >>695 Java https://paiza.io/projects/frlfP3US1doeAO_HZBnLWQ
749 名前:デフォルトの名無しさん [2020/10/18(日) 21:43:52.67 ID:wanN/5Zd.net] >>678 Java https://paiza.io/projects/0xfQrdW_qpJoUbOO6ux6wg
750 名前:デフォルトの名無しさん [2020/10/18(日) 22:06:12.69 ID:wanN/5Zd.net] >>676 Java https://paiza.io/projects/x3j0kbjqsSoVGNJX5qun2g
751 名前:デフォルトの名無しさん [2020/10/18(日) 22:14:01.64 ID:wanN/5Zd.net] >>705 Java https://paiza.io/projects/Eo4-fSXmdnoqjyHOMsi92Q
752 名前:デフォルトの名無しさん mailto:sage [2020/10/18(日) 22:45:56.62 ID:F/EhVBet.net] >>734 x = n while x != 0 x &= x << 1 i += 1 end ruby知らないから適当に書いたけど こんな感じにしないと二回目以降nが0でやってるっぽい こうすると22倍くらいの差だった
753 名前:デフォルトの名無しさん mailto:sage [2020/10/18(日) 22:54:22.98 ID:F/EhVBet.net] 連続してるビット数が多いときはこの方が速くなったけど すごいごちゃごちゃになった 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
754 名前:デフォルトの名無しさん mailto:sage [2020/10/18(日) 22:56:30.98 ID:QW0aA1Hz.net] >>734 GJ
755 名前:デフォルトの名無しさん mailto:sage [2020/10/19(月) 06:30:07.92 ID:8QFJcUQW.net] >>705 echo "obase=2; 20201016" | bc | sed 's/./&\n/g' | uniq -c | perl -lane 'if ($M < $F[0]) {$M = $F[0]}; END{print $M}' 5
756 名前:724 mailto:sage [2020/10/19(月) 15:26:08.35 ID:u+lqDWSF.net] >>740 ご指摘の通りでした https://ideone.com/DUEWmC を修正しました >>720 は 1の連続が多いと弱いですね
757 名前:デフォルトの名無しさん mailto:sage [2020/10/19(月) 17:41:48.20 ID:Sd7Rn+fr.net] お題 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となる
758 名前:デフォルトの名無しさん mailto:sage [2020/10/19(月) 21:36:44.38 ID:gq9726ze.net] >>743 echo "obase=2; 20201016" | bc | sed 's/0\+/\n/g' | wc -L でよくね?
759 名前:デフォルトの名無しさん mailto:sage [2020/10/19(月) 22:00:17.27 ID:gq9726ze.net] >>745 Bash $ echo "scale=100;e(l(2) / 3)" | bc -l 1.25992104989487316476721060727822835057025146470150 79800819751121552996765139594837293965624362550940
760 名前:デフォルトの名無しさん mailto:sage [2020/10/19(月) 22:30:56.87 ID:14xSvmON.net] >>745 dc dcには平方根の演算子はあるが立方根はないので c^(1/3) = sqrt(c/sqrt(c/sqrt(c/...))) と変形して適当に反復 100k[2z333>av/]dsaxp 1.2599210498948731647672106072782283505702514647015079800819751121552\ 996765139594837293965624362550941
761 名前:デフォルトの名無しさん mailto:sage [2020/10/19(月) 23:54:32.40 ID:mPlPc+C9.net] >>745 参考を誰も参考にしてくれないのにワロタ 参考を元に作ったコード Haskell https://ideone.com/ywJPjx ちなみにrubyのpi.rbが同じテクニック使ってます そっちは定数係数でない三項間関係の漸化式パージョン
762 名前:デフォルトの名無しさん mailto:sage [2020/10/20(火) 02:36:31.61 ID:gFGmv7lM.net] >>746 たしかに
763 名前:デフォルトの名無しさん mailto:sage [2020/10/20(火) 04:08:13.14 ID:Mf7a0fdE.net] おっせえじゃん
764 名前:デフォルトの名無しさん mailto:sage [2020/10/20(火) 21:07:35.93 ID:hsuNVmIy.net] お題:ぼくがかんがえたさいきょうのちょうわへいきん 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)の絶対値の場合と比べて、エラー率の順位は入れ替わるだろうか?
765 名前:デフォルトの名無しさん mailto:sage [2020/10/22(木) 01:17:43.95 ID:rA+WIIWx.net] ...but nobody answered
766 名前:253 mailto:sage [2020/10/23(金) 09:17:13.74 ID:7L0FHKID.net] 正規乱数をモンテカルロ法で算出して doubleと多倍長浮動小数点でそれぞれ計差した2変数調和平均に 差がある率を求めれば良いの? 正規乱数なら書かなくともライブラリにあるんだよね。 あるいは誤り率の計算そのものにモンテカルロ法を使うようなやり方なのかな
767 名前:デフォルトの名無しさん mailto:sage [2020/10/23(金) 14:48:32.25 ID:oxO2c12D.net] 次のプリーズ
768 名前:デフォルトの名無しさん [2020/10/23(金) 20:02:36.14 ID:Vzf4XOui.net] お題 乱数を使ってシミュレーションしてください ジョーカーを除くトランプ52枚から1枚抜き取って箱に入れました その後、残った51枚から3枚引いて確認したら3枚ともダイヤでした では最初に抜き取った箱の中が1枚がダイヤである確率はいくらか?
769 名前:デフォルトの名無しさん mailto:sage [2020/10/23(金) 20:27:24.17 ID:LovVc5SM.net] >>756 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
770 名前:デフォルトの名無しさん mailto:sage [2020/10/23(金) 20:46:02.34 ID:LovVc5SM.net] 途中で送信してしまった 99%信頼区間は 0.20414±0.0010382 => [0.2031018, 0.2051782] 理論値は 10/49 = 0.20408163265306123
771 名前:デフォルトの名無しさん [2020/10/23(金) 20:49:11.91 ID:5NWyTruo.net] 確認前後での確率変動を出せ、っていうお題じゃねえのコレ
772 名前:デフォルトの名無しさん mailto:sage [2020/10/24(土) 01:58:03.71 ID:6bv42JD2.net] お題 ジョーカー除く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枚が与えられたとき、そのような捨て札の組み合わせを求めるプログラムを記述せよ。 ここで、ポーカーの役と配点の対応はプログラムのパラメータとして組み込んで良い。
773 名前:デフォルトの名無しさん mailto:sage [2020/10/24(土) 21:09:47.85 ID:xQuuF55s.net] >>760 // 任意の役の配点を0とする printf(0);
774 名前:デフォルトの名無しさん [2020/10/24(土) 23:43:41.92 ID:DlOr4HzX.net] >>756 Java https://paiza.io/projects/rAHsohR9Q8vhh4kLZnfKAw
775 名前:デフォルトの名無しさん mailto:sage [2020/10/25(日) 09:27:41.37 ID:dKQi7OF0.net] >>760 Perl5 https://ideone.com/stLkXf 役のレートは某ゲームのものを使用 ノーペアのとき 全部変える
776 名前:謔1枚残したほうが有利という結果が出てちょっと驚いてる [] [ここ壊れてます]
777 名前:デフォルトの名無しさん [2020/10/25(日) 10:49:49.59 ID:zd7LSfWt.net] 3が1枚来てて、3が3枚残ってるなら、 ・手元の3を捨てると、3が来ても何も起こらない ・手元に3を残すと、3が来るとワンペアになる つまり、残りのカードを引けるかどうか、になる >>756 の亜種
778 名前:デフォルトの名無しさん mailto:sage [2020/10/25(日) 11:44:16.63 ID:c/nOQwtG.net] 746はシミュレーションも何もただの引っ掛け問題でしょ モンティホール問題の方が引っ掛け問としては出来が良い
779 名前:デフォルトの名無しさん mailto:sage [2020/10/25(日) 12:58:23.56 ID:vQGWPLvq.net] 引っかけも何も条件付確率の初歩の初歩の問題だろ
780 名前:デフォルトの名無しさん mailto:sage [2020/10/25(日) 14:14:17.31 ID:tOCt4zCM.net] 52枚トランプの束で2枚目から4枚目までがダイアであるような場合に限定してその内先頭もダイアであるような場合は全体の何バーセントかを問う問題
781 名前:742 mailto:sage [2020/10/26(月) 01:17:42.67 ID:LimhPZzI.net] >>754 正規乱数自体は既存のライブラリで(Pythonならnumpy.random.randnとか)。 例えば、最初のお題(2/(1/x+1/y)で計算するやつ)は、34%位のエラー率になります。
782 名前:253 mailto:sage [2020/10/27(火) 00:51:04.61 ID:uqMOOUWw.net] そうすると俺にはモンテカルロ法をわざわざ使うところが どこかよく分からないんだよね…
783 名前:デフォルトの名無しさん mailto:sage [2020/10/27(火) 23:07:51.35 ID:9NNPSda/.net] 結局>>752 は数学的にはどういう意味なんやろ x,yがN(0,1)に従う独立確率変数、 ρ:R→RがDouble型に丸める関数(Doubleのレンジに入らない確率はほとんど0だから無視)、 h(x,y)=2xy/(x+y) としたとき P(ρ(h(ρ(x),ρ(y))) ≠ ρ(h(x,y))) ≒ 34% って事?
784 名前:253 mailto:sage [2020/10/28(水) 00:01:38.74 ID:Jno143Es.net] 面白い記号だなそれ。 だが、他の人にも伝わるように書いた方が話が広がってよいよ。 どんなに数学が得意な人でも本当に優秀な人はそうすることができると思う
785 名前:デフォルトの名無しさん mailto:sage [2020/10/28(水) 00:17:22.90 ID:3yQQm3er.net] Φρズと書いてハイロウズと読みます
786 名前:デフォルトの名無しさん mailto:sage [2020/10/28(水) 00:21:17.79 ID:n11gpLQR.net] 煽りでもなく素直に疑問なのだが>>770 のどこら辺がわからないんだ? 正規分布の下りか?
787 名前:253 mailto:sage [2020/10/28(水) 00:30:53.43 ID:Jno143Es.net] >>772 マジレスしようと思ったが、そういう問題じゃないんだよ 言葉で書きゃー2,3行のことなんだから 言葉で人に伝わるように書けばいいだろ と、突き放しちゃ実も蓋も無いので少しマジレスすると ρ:R→R が写像なのは分かる。 がしかしだ P(ρ(h(ρ(x),ρ(y))) ≠ ρ(h(x,y))) ≒ 34% って、お前の教室のホワイトボードじゃねんだぞ。 そんなんでどうっやって世の人と付き合ってんだか…
788 名前:253 mailto:sage [2020/10/28(水) 00:40:32.18 ID:Jno143Es.net] 大体、P()てのは何の関数だ。 どこにでもあるような関数名だが、一般的な関数か? いや、そんなことの説明は要らない お前の言いたいことはそんな自己流の式よりも 手短な読んで分かる日本語で書けるはずだ いいやP()に限らない、お前のレスは一事が万事そんな感じ 一からからやり直せ そしたら相手してやる
789 名前:デフォルトの名無しさん mailto:sage [2020/10/28(水) 00:42:08.54 ID:n11gpLQR.net] >>775 文脈から明らかにP(A)はAが起こる確率でしょうが ちなみに俺は>>770 じゃないんで
790 名前:253 mailto:sage [2020/10/28(水) 00:43:23.90 ID:Jno143Es.net] >>776 それ関数じゃないだろ。何で関数として書くんだ。 どういう関数空間なんだ?
791 名前:253 mailto:sage [2020/10/28(水) 00:47:05.09 ID:Jno143Es.net] 簡単なことを わざわざ難しいことのように書くのは 有能な人のすることではない
792 名前:デフォルトの名無しさん mailto:sage [2020/10/28(水) 00:51:02.28 ID:n11gpLQR.net] >>777 落ち着けよお前 P(事象A) := 事象Aが起こる確率 なんて高校数学の範疇だぞ >>770 が殊更ペダンチックには感じない
793 名前:253 mailto:sage [2020/10/28(水) 01:00:33.01 ID:Jno143Es.net] >>779 別に落ち着いているけど これか 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% これは言葉で書いたらもっと分かりやすくならないのか?
794 名前:253 mailto:sage [2020/10/28(水) 01:15:04.26 ID:Jno143Es.net] 結局 >>770 は 2 / (1 / x + 1 / y)をdoubleで計算した値と倍長精度で計算したものをdouble相当に丸めたものが一致しない割合 この一行をわざわざ他の人に分かりにくい式で再度書いているだけのこと 繰り返しだし分かりにくいし 意味(doubleで計算した値と倍長精度で計算したものをdouble相当に丸めたものが一致しない割合) が欠落している そういうことに気づきな
795 名前:デフォルトの名無しさん mailto:sage [2020/10/28(水) 01:17:27.13 ID:6h0Rpnv/.net] 多分ですけど、あなた以外はそこまでわかりにくい表現だとは感じていないのだと思いますよ
796 名前:253 mailto:sage [2020/10/28(水) 01:19:14.69 ID:Jno143Es.net] まじかw そしたら回答山盛りだ お前もさんも回答よろしくな
797 名前:デフォルトの名無しさん mailto:sage [2020/10/28(水) 01:20:24.09 ID:6h0Rpnv/.net] >>752 の意味するところが数学的に自明になればおのずと回答も付くでしょう
798 名前:253 mailto:sage [2020/10/28(水) 01:20:47.31 ID:Jno143Es.net] 蛇足だが、あの式で意味がわかった上で まさか回答できなかったら、単なる無能だからな
799 名前:253 mailto:sage [2020/10/28(水) 01:27:14.39 ID:Jno143Es.net] >>784 参考までにあなたは今までどのような回答を投稿されましたか?
800 名前:デフォルトの名無しさん mailto:sage [2020/10/28(水) 01:29:09.84 ID:3yQQm3er.net] >>771 > 面白い記号だなそれ。 で、結局面白い記号って何だったの?
801 名前:253 mailto:sage [2020/10/28(水) 01:30:24.94 ID:Jno143Es.net] ふふ、それは ヒ・ミ・ツ
802 名前:デフォルトの名無しさん mailto:sage [2020/10/28(水) 01:43:43.54 ID:3yQQm3er.net] 教科書ないから高校数学 確率で一番上に出たやつ。 https://studysapuri.jp/contents/high/article/subject/sp/math00003.html やっぱ高校の教科書に載ってたよなあww 仮に載ってなかったとして大学で使う書籍にもP載ってないって?w > 俺が大学の頃まではこういう記法は見た記憶が無いんだけど
803 名前:253 mailto:sage [2020/10/28(水) 01:56:33.39 ID:Jno143Es.net] ゆとり以降だなそりゃ
804 名前:デフォルトの名無しさん mailto:sage [2020/10/28(水) 02:11:35.07 ID:d52OC3St.net] 恥の上塗りするくらいなら黙ってればいいのに
805 名前:253 mailto:sage [2020/10/28(水) 02:16:39.09 ID:FRCNqyyj.net] じゃあ何か自慢の回答でもしてよ
806 名前:742 mailto:sage [2020/10/28(水) 05:10:48.17 ID:MEeLXnFm.net] >>770 2/(1/x+1/y) を 2*x*y/(x+y) と変形した場合だと、36%位です(100万回試行してみた)。
807 名前:デフォルトの名無しさん mailto:sage [2020/10/28(水) 06:02:02.77 ID:W3KKdO+Q.net] >>752 C https://ideone.com/iPEwg8 2 / (1 / x + 1 / y) のエラー率は 38.5% 2 * x * y / (x + y) のエラー率は 40.4% と出た
808 名前:742 mailto:sage [2020/10/28(水) 12:23:39.00 ID:jim4KuYP.net] >>794 h0の計算は、xdやxdをlong doubleにcastする感じで! >double h0 = ( xl == 0. || yl == 0. ? 0. : 2. / (1.L / xd + 1.L / yd));
809 名前:742 mailto:sage [2020/10/28(水) 13:16:35.16 ID:jim4KuYP.net] 間違えました double h0 = ( xd == 0. || yd == 0. ? 0. : 2. / (1.L / xd + 1.L / yd));
810 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 00:16:48.93 ID:GFOWX4AY.net] お題:言語機能のみを使い単方向リストを実装しメソッドpush
811 名前:とpopを実装せよ pushはリスト末尾にノードをプッシュし、popはリスト末尾からノードをポップする ノードの持つ値は整数とする [] [ここ壊れてます]
812 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 00:52:01.80 ID:wtq/xrTf.net] 複数pushできるの? popも個数指定できるの?一個ずつ? pushの戻り値はリスト自身?入れた値?成否?
813 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 01:01:50.46 ID:GFOWX4AY.net] >>797 >>798 pushもpopも値は1つずつ pushの戻り値はなんでもいい
814 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 10:47:03.25 ID:jsAu6jIB.net] >>797 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 } }
815 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 12:03:58.95 ID:GFOWX4AY.net] >>800 なんで>>797 ,799の仕様でこんな実装になるんだ? お題ちゃんと読んでる?
816 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 12:11:08.30 ID:moZIRBYC.net] >>801 「言語機能のみを使い」は引っかかる表現だったけどそれのことかい?
817 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 12:16:22.08 ID:95aSRVZj.net] オレもこの「言語機能のみを使い」がわからなかった 「ライブラリ関数使うな」か「文字列操作関数のみを使い」かどっちかかなと わからんから様子見
818 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 12:18:16.67 ID:GFOWX4AY.net] >>802 >>800 は787の仕様としてただしかったわ すまんな こっちのお題の定義があいまいすぎたらしい 言語機能は問題ない
819 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 12:21:59.18 ID:GFOWX4AY.net] >>803 ライブラリ使うなって言いたかった あとお題提出前の実装については>>800 に比べるとかなり冗長な実装をしてある ここに晒す気はないが
820 名前:デフォルトの名無しさん [2020/10/29(木) 12:33:09.26 ID:AOpu1Zek.net] stdlib.h使わずに作るの?
821 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 12:36:05.93 ID:jsAu6jIB.net] >>804 まあええわ 俺もclassは久々に使ったけどできれば使わずに実装したかったわ
822 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 12:50:57.59 ID:GFOWX4AY.net] >>807 こっちの実装したコードに比べるとそっちのコードはえらくシンプルなんだよな 軽くショックだわ >>801 みたいな口きいてすまんかったな
823 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 13:24:14.72 ID:GFOWX4AY.net] >>806 リスト以外の実装は自由の想定 stdio.hも使っておk
824 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 13:27:39.52 ID:GFOWX4AY.net] >>806 C/C++などの言語はmallocなどを使っても良いことにする
825 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 15:09:10.20 ID:dNWGwdex.net] Haskellみたいな純粋関数だとそもそも標準ライブラリだけだと“状態”を作るのも難しいんだよな 同じ表現は永遠に同じ答えを返すからスタックの“状態”を変化させるというのがそもそもできない それをなんとかするのに“モナド”というのがあるんだけど状態を処理する“ステートモナド”は標準ライブラリではないんだよな ほとんど“準標準”だけど
826 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 16:24:06.73 ID:95aSRVZj.net] 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]
827 名前: mailto:sage [2020/10/29(木) 19:01:42.56 ID:7aED6VYA.net] >>797 双方向リストの方が、後々いろいろ流用できてありがたいんですけど、それでも端方向リストでインプリしないといけないのですか?
828 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 19:02:59.18 ID:c1P6mcgH.net] 持て余すくらいなら「なるべく使わない」とか評価基準を示すだけにしとけばいいのに
829 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 19:32:46.09 ID:EQ9lcE/o.net] >>803 全く同じこと思ってたわw
830 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 19:34:40.84 ID:EQ9lcE/o.net] >>807 どうでもいいけどお前のIDもjsだsな
831 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 19:40:10.12 ID:Pf0NRL7D.net] >>797 Brainfuck push: <[>], pop: <[>]<[-]<
832 名前:デフォルトの名無しさん [2020/10/29(木) 20:59:03.61 ID:zgfLAX1f.net] >>797 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
833 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 21:10:47.05 ID:wtq/xrTf.net] >>797 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
834 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 21:13:39.21 ID:wtq/xrTf.net] うわ console.log('JSON: ' + JSON.stringify({'test': list})) //=> JSON: {"test":[2,7,0]} だった
835 名前:デフォルトの名無しさん [2020/10/29(木) 23:09:01.60 ID:MaNQDMIt.net] >>813 お題 双方向リストをC89で実装してください
836 名前:253 mailto:sage [2020/10/29(木) 23:20:15.73 ID:UgpGZWA4.net] >>817
837 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 23:24:39.19 ID:3o7XtB23.net] >>797 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
838 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 23:26:08.36 ID:GFOWX4AY.net] >>813 双方向書きたいってことなら書けば お題は単方向だけど
839 名前:デフォルトの名無しさん mailto:sage [2020/10/30(金) 00:06:20.24 ID:aDtUVDPI.net] >>812 を改良? 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 $
840 名前: 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" [] [ここ壊れてます]
841 名前:253 mailto:sage [2020/10/30(金) 00:07:47.66 ID:hMjmzAXb.net] >>797 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
842 名前:253 mailto:sage [2020/10/30(金) 00:09:56.81 ID:hMjmzAXb.net] >>826 say $y; の下に書いてあった最後の行 say "@s"; をコピペしそびれた…orz
843 名前:253 mailto:sage [2020/10/30(金) 00:22:38.86 ID:hMjmzAXb.net] >>826 Pop関数はこっちの方がいいな、無駄なコピーもないし。 sub Pop($a) { my $b = @$a[-1]; delete @$a[-1]; $b; }
844 名前:253 mailto:sage [2020/10/30(金) 00:32:51.98 ID:hMjmzAXb.net] >>828 deleteは削除したスカラー値を返すわ。だから以下でいいんだ sub Pop($a) { my $b = @$a[-1]; delete @$a[-1]; }
845 名前:253 mailto:sage [2020/10/30(金) 00:34:30.90 ID:hMjmzAXb.net] >>829 my $b = @$a[-1]; 不要だった…orz sub Pop($a) { delete @$a[-1]; }
846 名前:デフォルトの名無しさん [2020/10/30(金) 00:50:28.84 ID:9RgBA+ge.net] >>797 Java https://paiza.io/projects/JKwjWCxSc6dHv_ItEaqwlQ
847 名前:デフォルトの名無しさん [2020/10/30(金) 02:22:50.19 ID:9RgBA+ge.net] >>821 Java https://paiza.io/projects/wtaAasQr_Nu5Zw2D1KoPwg
848 名前:デフォルトの名無しさん mailto:sage [2020/10/30(金) 07:07:30.18 ID:cChJ6BWU.net] >>822 あ?
849 名前:デフォルトの名無しさん mailto:sage [2020/10/30(金) 23:30:40.86 ID:hYhF3+Ov.net] Brainfuck読めないわ 覚えようかな
850 名前:デフォルトの名無しさん mailto:sage [2020/10/31(土) 13:49:55.42 ID:QnYm1bfS.net] お題 与えられた文字列を一文字ずつ見ていき"trick"と"treat"の5文字でどちらが先に揃うか判定してください(順序込み) どちらもヒットしないときは考慮しなくていいです treakOrTreat("trick or treat") // => trick treakOrTreat(". tr ick") // => trick treakOrTreat("ttrriecatk") // => treat treakOrTreat("tri kc eat") // => treat treakOrTreat("my money") // => none
851 名前:デフォルトの名無しさん mailto:sage [2020/10/31(土) 13:51:26.24 ID:QnYm1bfS.net] >>835 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" }
852 名前:デフォルトの名無しさん mailto:sage [2020/10/31(土) 14:54:50.69 ID:HHhQTZ6R.net] 関数名のミススペリングは修正していいですか
853 名前:デフォルトの名無しさん mailto:sage [2020/10/31(土) 15:02:04.99 ID:QnYm1bfS.net] ごっつtypoしてたすまんFIXME
854 名前:デフォルトの名無しさん [2020/10/31(土) 15:07:31.21 ID:DmLmDhBA.net] >>835 Common Lisp https://ideone.com/L8wigO
855 名前:デフォルトの名無しさん mailto:sage [2020/10/31(土) 15:33:31.91 ID:I05R+wBh.net] 相変わらずキモいなあ、いつもの勝手に認定キッズ ミュートにしてるという情報から相手が雑魚であるというぶっ飛んだ推論をする知性の欠片も持ち合わせない負け組
856 名前:デフォルトの名無しさん [2020/10/31(土) 15:36:09.16 ID:DmLmDhBA.net] >>835 Common Lisp https://ideone.com/qHuipq >>839 は無駄な条件判定(二つめの (null a))があったので修正
857 名前:デフォルトの名無しさん mailto:sage [2020/10/31(土) 15:44:11.18 ID:pGrSKCPz.net] >>835 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) }
858 名前:デフォルトの名無しさん [2020/10/31(土) 15:54:22.22 ID:i0S/O8KX.net] >>797 C https://paiza.io/projects/7O3xqQfCoYOhAz-48TxxWw
859 名前:デフォルトの名無しさん mailto:sage [2020/10/31(土) 16:42:52.45 ID:B0ELcd4k.net] >>835 Haskell https://ideone.com/2Rb2sz
860 名前:デフォルトの名無しさん [2020/10/31(土) 17:10:35.46 ID:M62mfk9p.net] >>797 Perl https://paiza.io/projects/E1ha4EgvaVhalIRuJ_To-g
861 名前:デフォルトの名無しさん [2020/10/31(土) 17:42:14.32 ID:/zmNVLOW.net] >>797 Kotlin https://paiza.io/projects/mB7s1uC_4FJk1MFTDpLYsA
862 名前:デフォルトの名無しさん [2020/10/31(土) 21:33:28.24 ID:g64iH70d.net] >>835 Java https://paiza.io/projects/jCNOEenrSmdOMXo6Fl2wyQ
863 名前:デフォルトの名無しさん mailto:sage [2020/10/31(土) 21:58:58.47 ID:t2sIU1o6.net] >>835 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 ) }
864 名前:デフォルトの名無しさん mailto:sage [2020/10/31(土) 22:19:45.63 ID:B0ELcd4k.net] >>844 改定 やはり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"]
865 名前:デフォルトの名無しさん [2020/10/31(土) 22:49:38.34 ID:pe+8/Oyn.net] >>835 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; }
866 名前:253 mailto:sage [2020/10/31(土) 22:58:55.98 ID:i+h07tFB.net] >>835 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
867 名前:デフォルトの名無しさん mailto:sage [2020/10/31(土) 23:10:35.06 ID:8FYB/kmH.net] >>851 なんでお前ずっとコテハンつけてんの?
868 名前:253 mailto:sage [2020/10/31(土) 23:20:38.29 ID:i+h07tFB.net] >>852 IPアドレスがたまに変わるのと自分のレスを見分けやすくするため。固定ではなく番号はたまに変えてる 気にしないで
869 名前:デフォルトの名無しさん mailto:sage [2020/10/31(土) 23:26:17.77 ID:OVAIfmUR.net] >>797 c https://ideone.com/9grZQe
870 名前:デフォルトの名無しさん mailto:sage [2020/10/31(土) 23:27:34.12 ID:wd4K8eMC.net] >>853 専ブラ使えばいいのに
871 名前:253 mailto:sage [2020/10/31(土) 23:32:26.70 ID:i+h07tFB.net] >>855 IPアドレスが変わったり日にちがたった自分のレスを簡単に表示し分けられる専ブラで良いのある? 出来ればLinuxで。ちなStyleは好みではない
872 名前:253 mailto:sage [2020/10/31(土) 23:38:27.89 ID:i+h07tFB.net] >>854 教科書に載っているようなきれいなコード書くね
873 名前:デフォルトの名無しさん mailto:sage [2020/10/31(土) 23:54:01.35 ID:OVAIfmUR.net] >>857 サンクスコ でも、引数の評価順については正直お行儀悪いんで 勉強してるみんなはそのへん各自ぐぐってみてね
874 名前:デフォルトの名無しさん mailto:sage [2020/11/01(日) 00:59:27.52 ID:KABEK1ar.net] >>835 Ruby text = <<'TEXT' trick or treat . tr ick ttrriecatk tri kc eat my money TEXT # 配列化 Trick = "trick".chars Treat = "treat".chars 次へ続く
875 名前:849 mailto:sage [2020/11/01(日) 01:00:32.73 ID:KABEK1ar.net] >>859 の続き 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"]
876 名前:デフォルトの名無しさん [2020/11/01(日) 01:29:12.30 ID:17LNcGyj.net] >>835 Kotlin https://paiza.io/projects/pLXGwy1V_3FlM4eqH2w5tg
877 名前:デフォルトの名無しさん [2020/11/01(日) 01:49:31.61 ID:17LNcGyj.net] >>835 C https://paiza.io/projects/hjm6unXa-mcUi6cx1mTJ9g
878 名前:838 mailto:sage [2020/11/01(日) 12:58:01.92 ID:g/v4ZA9S.net] >>835 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 ) }
879 名前:蟻人間 mailto:sage [2020/11/01(日) 14:40:36.23 ID:wOVD56Lv.net] お題:大阪都構想が実現すると、現在の大阪市は消滅すると予想される。都構想実現前の住所を実現後の住所に変換しなさい。
880 名前:デフォルトの名無しさん mailto:sage [2020/11/01(日) 16:05:05.76 ID:+nQAPqAx.net] 次行ってみよう
881 名前:蟻人間 mailto:sage [2020/11/01(日) 16:41:27.74 ID:wOVD56Lv.net] 参考:https://www.asahi.com/articles/ASNBS733ZNBMPTIL00Q.html
882 名前:蟻人間 mailto:sage [2020/11/01(日) 16:44:49.88 ID:wOVD56Lv.net] これも:https://maidonanews.jp/article/13879682
883 名前:デフォルトの名無しさん mailto:sage [2020/11/01(日) 16:51:14.83 ID:VQGUeFT5.net] お前らは競技プログラミングとかやってる?
884 名前:253 mailto:sage [2020/11/01(日) 16:54:48.84 ID:I8lyxV1q.net] >>868 やろうとしたことはあるがまだ未経験 何か受験勉強みたいになっちゃってるコンテストには魅力を感じない でも世界トップレベルは年間4000万くらい賞金稼ぐとい話をきいてそういうのにはちょっと惹かれる
885 名前:蟻人間 mailto:sage [2020/11/01(日) 17:00:25.77 ID:wOVD56Lv.net] >>865 あんまりバカにするなよ。住所変換できないと大坂大混乱になるよ。
886 名前:デフォルトの名無しさん mailto:sage [2020/11/01(日) 17:18:29.18 ID:EgIfcLXC.net] バカにしてるのはおまえ 他所の住所変更地の状況知らんのか?50年前の住所でも年賀届くわ 数年〜十数年或いはそれ以上旧住所で配送可能。舐めすぎ
887 名前:デフォルトの名無しさん mailto:sage [2020/11/01(日) 17:31:11.77 ID:+nQAPqAx.net] >>870 ここでそのお題といても大混乱が回避できるわけでもなし そういう問題じゃなくてそろそろ自分にいい問題作るセンスがない事自覚すべき
888 名前:デフォルトの名無しさん mailto:sage [2020/11/01(日) 17:35:33.69 ID:S9fsJ+JS.net] データ引っ張ってくるだけじゃん ただの知識問題は悪問
889 名前:デフォルトの名無しさん mailto:sage [2020/11/01(日) 18:32:31.31 ID:erpRcPg0.net] やってみたが 競技系はプログラミングのスキル向上には役立たんよ
890 名前:デフォルトの名無しさん mailto:sage [2020/11/01(日) 18:50:53.93 ID:4+fLUvoM.net] >>867 このサイト気持ち悪いな
891 名前:蟻人間 mailto:sage [2020/11/01(日) 19:52:59.24 ID:wOVD56Lv.net] >>875 太陽風を読めよ。
892 名前:デフォルトの名無しさん mailto:sage [2020/11/01(日) 19:57:24.03 ID:wWMHVvTS.net] >>876 消えろ
893 名前:蟻人間 mailto:sage [2020/11/01(日) 20:04:08.68 ID:wOVD56Lv.net] >>877 お前がえろ
894 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 00:22:13.64 ID:bEILeQs7.net] >>835 octave https://ideone.com/BkciwT
895 名前:デフォルトの名無しさん [2020/11/02(月) 04:28:03.49 ID:2/AbCXtL.net] >>835 Perl https://paiza.io/projects/Ol_sOAbb2ZYW4hIDFLj2wQ 正規表現使ってみました。
896 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 04:45:05.89 ID:BfD57ecO.net] "trick"と"treat"を受理するオートマトンを作って 入力文字列から1文字ずつ与えて状態遷移(または待機)させていく 末尾まで先に受理されたほうを答えとする みたいなことだけ考えた
897 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 04:48:28.19 ID:BfD57ecO.net] けど実装すると無駄にでかくなりそう
898 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 10:04:22.80 ID:/BOVDIIM.net] オートマトンって言語でなんか表現できる構造ある?
899 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 10:41:03.91 ID:5JhQS2vf.net] 正規表現で表現できる⇔オートマトンで受理できる でしょ? 今回なら入力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パターン) .... と正規表現だけで表現できてしまう
900 名前:蟻人間 mailto:sage [2020/11/02(月) 12:23:25.05 ID:iXWhExA8.net] お題:パラボラアンテナが理論上の焦点に電波を集めることを示しなさい。 パラボラアンテナの半径を100とし、原点を中心にx軸上に焦点が来るように配置する。x軸と平行に電波がアンテナに入ってきて、入射角と反射角が等しくなるように電波が反射する。 このとき、どの場所で反射しても、反射した電波を表す直線が理論上の焦点に十分近づくことを示せ。
901 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 12:23:58.15 ID:UfGVYnOo.net] まじでセンスないな
902 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 12:36:09.22 ID:zo3ZJgwO.net] パラボラアンテナの半径ってどこのことだよ
903 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 13:43:55.18 ID:gftnEWfN.net] common lisp https://ideone.com/GZ8Wbt うーん微妙
904 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 14:26:45.62 ID:vIueiXdU.net] >>835 .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
905 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 18:10:30.68 ID:Ac4tp6ZL.net] >>835 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" ]
906 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 19:01:54.49 ID:hORytTpS.net] >>835 #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"); }
907 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 19:55:30.38 ID:0Q72CsT7.net] お題 アスペクト比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
908 名前:869 mailto:sage [2020/11/02(月) 20:41:57.79 ID:PEXljxha.net] >>835 octave https://ideone.com/TknUHT ・残り文字数数える関数fがガバガバだったので修正
909 名前:デフォルトの名無しさん [2020/11/02(月) 20:50:30.27 ID:LqVECFSh.net] >>892 Java https://paiza.io/projects/k8RErATdGPNrkP2gRrOmSw
910 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 20:55:38.75 ID:UfGVYnOo.net] >>892 実用的じゃん
911 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 21:39:44.31 ID:PEXljxha.net] >>892 octave https://ideone.com/un3EHy
912 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 22:00:22.68 ID:PEXljxha.net] >>892 octave https://ideone.com/kETWpz ・若干の変更
913 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 22:02:25.78 ID:i1cL0pVh.net] >>885 消えろ
914 名前:デフォルトの名無しさん [2020/11/02(月) 22:12:37.48 ID:2/AbCXtL.net] >>892 Perl https://paiza.io/projects/3i_gH0-CGf93OpsUWJzFVg
915 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 23:19:41.46 ID:ZpVsHyOp.net] >>892 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))
916 名前:デフォルトの名無しさん mailto:sage [2020/11/03(火) 00:18:12.81 ID:1BjkDVvF.net] >>892 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) ]
917 名前:デフォルトの名無しさん mailto:sage [2020/11/03(火) 01:33:31.56 ID:psuX0FGw.net] お題 {1,2,3,4,5,6,7,8} を幾つかの共通部分を持たない空でない集合にわけるやり方を完全列挙 例えば {1,6}+{2,8}+{3,4,5,7} と {2,8}+{1,6}+{3,4,5,7} は同じやり方になるので二重カウントしないこと
918 名前:デフォルトの名無しさん mailto:sage [2020/11/03(火) 02:32:26.13 ID:yN+x511c.net] >>902 [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
919 名前:デフォルトの名無しさん mailto:sage [2020/11/03(火) 08:10:12.54 ID:WKYb8LN0.net] >>903 きれいだな
920 名前:デフォルトの名無しさん mailto:sage [2020/11/03(火) 09:07:39.02 ID:psuX0FGw.net] 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}}
921 名前:デフォルトの名無しさん mailto:sage [2020/11/03(火) 09:10:16.73 ID:psuX0FGw.net] 美しさだけなら某集合論用処理系に勝る ものはないと思うが.... >>901 の短時間回答能力とHaskelの潜在能力は 驚嘆すべきかも
922 名前:デフォルトの名無しさん mailto:sage [2020/11/03(火) 09:15:47.91 ID:psuX0FGw.net] 間違ってたときのコード貼ってしまったw ~a+~b=A とかは要らなかったw a+b=A とかだけでよかった a \cup bが普通の和集合ね。
923 名前:デフォルトの名無しさん mailto:sage [2020/11/03(火) 21:04:35.96 ID:eC8ouzxK.net] >>892 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%
924 名前:デフォルトの名無しさん [2020/11/04(水) 00:20:20.72 ID:rxWDSDf0.net] >>892 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
925 名前:デフォルトの名無しさん mailto:sage [2020/11/04(水) 00:20:22.20 ID:kNuSoIVx.net] windows知らんけど バッチ・ファイルすげぇなww
926 名前:デフォルトの名無しさん mailto:sage [2020/11/04(水) 18:59:14.79 ID:M+x6liG8u] 【アフィリエイト】ブログで「月100万円稼ぐ方法」を初心者向けにプロブロガーが解説 https://www.youtube.com/watch?v=tnp0oUbg2uc 【実例有り】ブログで月1万円稼ぐまでの具体的な道筋を教える【プロが解説】 https://www.youtube.com/watch?v=S-pk5AmW3g8 【案件も公開】ブログで月20万円稼ぐ方法の全て。具体的な道筋や戦略も全て公開【雑記でもいけた】 https://www.youtube.com/watch?v=Jiujwjhe300 ブログ収益が大きく伸びた、たった1つのきっかけを話す【ネタバレ:人と会う】 https://www.youtube.com/watch?v=r5cutrq6GO4 ブログで稼ぐ仕組み徹底解説】初心者にもやさしく、丁寧に説明 https://www.youtube.com/watch?v=n4qF7xpL7-M 【ミスるとヤバい】特化ブログと雑記ブログ、どっちがいいの?おすすめの運営方法も解説! https://www.youtube.com/watch?v=sh2v5Uqlo1M 【危険】ブログで稼げずに「挫折」してしまう人の特徴【初心者は特に注意】 https://www.youtube.com/watch?v=W86zHTngRLE
927 名前:デフォルトの名無しさん mailto:sage [2020/11/04(水) 20:24:03.31 ID:uO47xEs9.net] >>902 Ruby https://ideone.com/uEqDoX
928 名前:デフォルトの名無しさん mailto:sage [2020/11/05(木) 03:19:19.40 ID:EuRO0zRP.net] >>902 C++ https://ideone.com/YmUte9
929 名前:デフォルトの名無しさん mailto:sage [2020/11/05(木) 20:02:28.58 ID:pDv0veJc.net] お題 '□'(正方形)と'_'(空白)で表される図形を45度回
930 名前:転して描画せよ。 [例1] □ /\ \/ [例2] ___□ □□_□ _□□□ /\ \/\ /\/ /\ \/\/\/ \/\/ \/ [] [ここ壊れてます]
931 名前:デフォルトの名無しさん mailto:sage [2020/11/05(木) 20:47:59.87 ID:uObXfCng.net] デカくなっててワロタ 良さげなお題
932 名前:デフォルトの名無しさん mailto:sage [2020/11/05(木) 23:31:16.69 ID:5bWXoO+B.net] >>914 html <textarea style="transform:rotate(45deg)"> ___□ □□_□ _□□□ </textarea>
933 名前:デフォルトの名無しさん mailto:sage [2020/11/05(木) 23:39:12.30 ID:W9kenpkY.net] >>916 すげぇな 今はCSSでこんなことまでできるのか
934 名前:デフォルトの名無しさん mailto:sage [2020/11/05(木) 23:40:00.35 ID:uObXfCng.net] :scale(2)もしとけ
935 名前:デフォルトの名無しさん mailto:sage [2020/11/06(金) 01:21:28.35 ID:DUBJiW5Z.net] >>914 haskell https://ideone.com/VwHiJD
936 名前:デフォルトの名無しさん [2020/11/06(金) 03:01:56.79 ID:2mWV4tVe.net] >>902 Java https://paiza.io/projects/zGMV5xqRPjP1fxjo1Zu1Nw
937 名前:253 mailto:sage [2020/11/06(金) 13:23:23.40 ID:1EHNC/LO.net] >>902 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
938 名前:デフォルトの名無しさん mailto:sage [2020/11/06(金) 13:24:39.43 ID:DUBJiW5Z.net] >>914 haskell 素直に内包表記使ったVer. https://ideone.com/gA63Fi
939 名前:デフォルトの名無しさん [2020/11/07(土) 15:16:17.29 ID:dGj5mxP2.net] sed 's/□/◇/g' あ、いや、なんでもないです。忘れてください。
940 名前:デフォルトの名無しさん mailto:sage [2020/11/07(土) 15:50:17.56 ID:0+q2MsjY.net] >>914 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
941 名前:デフォルトの名無しさん mailto:sage [2020/11/07(土) 19:47:28.12 ID:/E6xY+R5.net] バッチでやるとかいい根性してる
942 名前:デフォルトの名無しさん [2020/11/07(土) 21:06:37.63 ID:anINQjB0.net] >>914 Common Lisp https://ideone.com/CMyiD0
943 名前:デフォルトの名無しさん mailto:sage [2020/11/07(土) 22:21:52.44 ID:alCltY04.net] >>918 scale(1.41421356)でしょ
944 名前:デフォルトの名無しさん mailto:sage [2020/11/07(土) 23:04:28.88 ID:zLEnd997.net] >>902 ビット操作で直接作れた https://paiza.io/projects/JwD_YC7dX2RRZz8G9ydnaA
945 名前:デフォルトの名無しさん mailto:sage [2020/11/08(日) 00:05:04.78 ID:DLA7KrcO.net] >>924 バッチファイル兄貴いいぞ もっとやれ
946 名前:デフォルトの名無しさん mailto:sage [2020/11/08(日) 00:15:55.29 ID:ct8WHwWl.net] バッチよくやってるな batにトランスパイルできるもっといい感じの構文の言語とかないの
947 名前:デフォルトの名無しさん mailto:sage [2020/11/08(日) 02:24:23.73 ID:vLTv8mzL.net] バッチで>>902 やる猛者はいないのか? QZならできそうだがだんまりか?
948 名前:デフォルトの名無しさん mailto:sage [2020/11/08(日) 02:34:25.46 ID:HKu5GaPi.net] >>928 このコードZen2までのAMDのCPUだと多分とんでもなく遅くなる ここで使ってるpdep命令がintelのやZen3と比べて100倍以上遅いから
949 名前: mailto:sage [2020/11/08(日) 03:02:51.65 ID:H3a4zXqH.net] >>931 私は C しか書けません
950 名前:デフォルトの名無しさん mailto:sage [2020/11/08(日) 03:56:26.07 ID:YnyAcD/m.net] >>930 こんなのならあった 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
951 名前:デフォルトの名無しさん mailto:sage [2020/11/08(日) 03:57:27.82 ID:YnyAcD/m.net] >>934 の続き 再帰サポートのための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 他、クラスフィールドやマジックメソッドなど
952 名前:デフォルトの名無しさん mailto:sage [2020/11/08(日) 04:20:05.05 ID:YnyAcD/m.net] >>930 もうひとつ。 https://github.com/kerrgavin/Transpiler-DSL-to-Windows-Batch-Script >>934 が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 } トランスパイル結果略
953 名前:デフォルトの名無しさん mailto:sage [2020/11/08(日) 05:03:48.08 ID:YnyAcD/m.net] >>930 シェルスクリプトからの変換系: https://github.com/daniel-sc/bash-shell-to-bat-converter https://github.com/sagiegurari/shell2batch あと専用言語からのトランスパイル系でもうひとつ凄いのがあった。 https://github.com/batsh-dev-team/Batsh タイプ的には >>936 と同じような感じなんだけどbatにもシェルスクリプトにもコンパイルできる。 こっちは凄いねスター4,000超えてるわ。 なんでこれが最初に見つからんのや… プレイグラウンド( https://batsh.org/ )もあってサンプルロード・コンパイルもできるから試してみて。 文法はオーソドックスなC系ですね。
954 名前:デフォルトの名無しさん mailto:sage [2020/11/08(日) 05:16:53.07 ID:YnyAcD/m.net] >>937 moongiftに紹介記事があった。 https://www.moongift.jp/2019/08/batsh-bashbatchのスクリプトを生成するプログラミング言語/ …そしてアドレスバー見たら既にお気に入りに登録されていた…
955 名前:デフォルトの名無しさん mailto:sage [2020/11/08(日) 08:18:54.23 ID:ct8WHwWl.net] >>937 これきれいだな
956 名前:デフォルトの名無しさん mailto:sage [2020/11/09(月) 23:19:00.95 ID:biYC5NlX.net] もうすぐポッキーの日 [お題] 人口合計でオール1 URLのページに都道府県別の人口が載っている。 今回使用するのは、2019/10のデータ https://ideone.com/R4PCiQ 同じ県は一回のみで、異なる県を何県でも選んでよい。 (つまり選び方は全部で 2^47 種類) 人口合計が"1"のみの数字となる選び方は何種類あるか? (実質、1111万1111人, 1億1111万1111人になる選び方) ※一発正解問題、実行時間3秒程度。 同ページの他の年月人口でも計算できる程度のクオリティでok ※ちなみに 2015/10データだと916(40+876)種類だった。
957 名前:デフォルトの名無しさん mailto:sage [2020/11/09(月) 23:52:24.94 ID:XExSNiE1.net] 11111111 は43? 111111111はオンラインコンパイラでタイムアウトorz
958 名前:デフォルトの名無しさん mailto:sage [2020/11/10(火) 00:38:20.57 ID:duQVrAg3.net] 面白そうなお題
959 名前:デフォルトの名無しさん mailto:sage [2020/11/10(火) 00:38:46.30 ID:qJS2/p90.net] 111111111 は650かな?
960 名前:デフォルトの名無しさん mailto:sage [2020/11/10(火) 00:45:23.62 ID:qJS2/p90.net] とりあえず 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
961 名前:デフォルトの名無しさん mailto:sage [2020/11/10(火) 02:25:54.45 ID:903MPdZb.net] batコーイ!!
962 名前:デフォルトの名無しさん mailto:sage [2020/11/10(火) 02:49:15.00 ID:VuEsWlWs.net] >>940 https://ideone.com/8nuT5d 力任せなコードだけどどうにか時間内に終わった
963 名前:デフォルトの名無しさん [2020/11/10(火) 13:44:24.83 ID:3xGJBleZ.net] 典型的なdp問題じゃねえの
964 名前:929 mailto:sage [2020/11/10(火) 17:29:30.75 ID:q5cN/btj.net] >>940 ・想定解はDPの数え上げ さすがに1.1億×47は苦しいので、 1.1億に関しては、(全人口 - 1.1億)で計算する。 そうすれば、1600万×47の計算量で済む。 https://ideone.com/R4PCiQ 下にpython(numpy)で想定解追加
965 名前:253 mailto:sage [2020/11/11(水) 00:47:47.87 ID:vox+S3u3.net] (´・ω・`)
966 名前:デフォルトの名無しさん mailto:sage [2020/11/11(水) 18:19:57.16 ID:NMl7/e2v.net] 暇つぶしに>>944 がどれくらい再帰呼び出し読んでるか数えてもらった 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%ほどになるのか 勉強になった
967 名前:デフォルトの名無しさん [2020/11/12(木) 15:39:00.87 ID:VX9X1ew1.net] お題1 1〜nまでの偶数をランダムに出力してください お題2 [開始の数] [増分] [終了の数]を入力として受け取りランダムに出力してください 例 入力: 1 2 10 出力: 1 1 3 9 1 7 5
968 名前:デフォルトの名無しさん mailto:sage [2020/11/12(木) 15:58:04.88 ID:uK53dAw4.net] >>951 を読んで、やっぱり日本語は非論理的な言語だな、と思った。
969 名前:デフォルトの名無しさん [2020/11/12(木) 16:04:34.29 ID:VX9X1ew1.net] 書き手の問題だと思うよ
970 名前:デフォルトの名無しさん mailto:sage [2020/11/12(木) 18:42:17.55 ID:HU5jtk1k.net] オレは深まりゆく秋を感じた
971 名前:デフォルトの名無しさん [2020/11/12(木) 19:26:25.71 ID:VX9X1ew1.net] ふーけゆくー秋の夜ー
972 名前:デフォルトの名無しさん mailto:sage [2020/11/12(木) 19:34:08.43 ID:nzp5rNOe.net] >>951 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
973 名前:デフォルトの名無しさん mailto:sage [2020/11/12(木) 23:53:28.13 ID:HU5jtk1k.net] そゆいみか 入力パースするとこは略して 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]
974 名前:デフォルトの名無しさん mailto:sage [2020/11/13(金) 20:43:02.05 ID:3cTZftC0.net] >>951 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 set
975 名前:local 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 [] [ここ壊れてます]
976 名前:デフォルトの名無しさん mailto:sage [2020/11/13(金) 22:58:48.40 ID:ghr6tNw2.net] オンラインでbat動かせるサイトない? >>958 試して見たいんやけど
977 名前:デフォルトの名無しさん mailto:sage [2020/11/13(金) 23:20:18.52 ID:a1Z/nYk3.net] bat兄貴天才やな
978 名前:デフォルトの名無しさん mailto:sage [2020/11/14(土) 00:46:02.44 ID:WHpB6hAc.net] >>959 それをお題にするのはありかも 947を読んで同じ動きをするプログラムを書け、とかね
979 名前:デフォルトの名無しさん mailto:sage [2020/11/14(土) 06:23:08.91 ID:rQXll7XK.net] 過疎るのもわかるわ
980 名前:デフォルトの名無しさん [2020/11/15(日) 04:26:34.92 ID:UMNa3GdF.net] >>951 Java https://paiza.io/projects/IUNanoZeum1nhkVUBUqXZA
981 名前:デフォルトの名無しさん [2020/11/15(日) 18:33:50.31 ID:UMNa3GdF.net] お題 天気のデータを読み取って翌日の天気は前日と同じと予測しそれが当たる確率を求めてください 入力: 曇,晴,曇,曇,晴,曇,曇,雨,雨,雨,曇,曇,晴,曇,雨,曇,雨,曇,曇,曇,晴,曇,雨,晴,晴,晴,晴,曇,晴,曇,晴
982 名前:デフォルトの名無しさん mailto:sage [2020/11/15(日) 18:40:06.62 ID:KOddDUPF.net] >>964 Ruby gets.split(?,).each_cons(2).tap{|a| p 1.0 * a.count{|b| !b.uniq[1]}/ a.size} # => 0.3333333333333333
983 名前:デフォルトの名無しさん [2020/11/15(日) 18:41:22.95 ID:UMNa3GdF.net] はやいな
984 名前:デフォルトの名無しさん mailto:sage [2020/11/15(日) 20:20:51.56 ID:8j4ATkh0.net] >>964 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
985 名前:デフォルトの名無しさん mailto:sage [2020/11/15(日) 20:22:58.52 ID:KOddDUPF.net] >>967 .split(`,`) では
986 名前:デフォルトの名無しさん mailto:sage [2020/11/15(日) 20:23:55.05 ID:KOddDUPF.net] すまん。バッククウォートだった。
987 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 00:51:51.08 ID:lyH8UsEw.net] >>958 @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
988 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 03:31:51.13 ID:apQPm4KR.net] >>965 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
989 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 03:32:04.47 ID:lyH8UsEw.net] >>964 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
990 名前:デフォルトの名無しさん [2020/11/20(金) 19:52:50.75 ID:HawO8Ftl.net] >>951 Kotlin https://paiza.io/projects/AeE4_7EmFluzVxuefBJmDw
991 名前:とくめい mailto:kakeruyamasato@gmail.com [2020/11/24(火) 01:34:45.23 ID:SQQDs1Pp.net] kakeruyamasato@gmail.comこのメアドを悪用してみせて
992 名前:デフォルトの名無しさん mailto:sage [2020/11/24(火) 08:07:25.33 ID:aaTbFie9.net] 通報しますた
993 名前:デフォルトの名無しさん [2020/11/25(水) 01:49:24.25 ID:O2Mln20T.net] >>964 Kotlin https://paiza.io/projects/-bhKDI048mc0kOJzIFqOHA
994 名前:デフォルトの名無しさん mailto:sage [2020/11/26(木) 19:02:45.00 ID:ACzSTlzf.net] >>951 a,b,c = [1,2,10] puts ((a..c) % b).to_a.shuffle
995 名前:デフォルトの名無しさん [2020/11/27(金) 01:08:20.91 ID:bIFui41M.net] >>977 なんていう言語?
996 名前:デフォルトの名無しさん mailto:sage [2020/11/27(金) 02:57:17.73 ID:ocMZsxYX.net] >>978 rubyでしょ
997 名前:デフォルトの名無しさん [2020/11/27(金) 19:31:40.66 ID:Pnsgs34G.net] rubyだったか。
998 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 00:37:28.60 ID:PcPNtVOH.net] %がわからないって怒られた
999 名前:デフォルトの名無しさん [2020/11/28(土) 07:20:49.13 ID:mYohOVrw.net] お題 以下を表示する Monday Tuesday Wednesday Thursday Friday Saturday Sunday
1000 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 07:34:45.42 ID:CtkueG9H.net] >>982 bat @echo.以下を表示する @echo.Monday @echo.Tuesday @echo.Wednesday @echo.Thursday @echo.Friday @echo.Saturday @echo.Sunday
1001 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 08:05:44.72 ID:nEfgRBi9.net] 意外と難しいな
1002 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 08:40:11.81 ID:wyvnQiBB.net] >>982 Ruby puts Date::DAYNAMES.rotate # => Monday Tuesday Wednesday Thursday Friday Saturday Sunday
1003 名前:デフォルトの名無しさん [2020/11/28(土) 09:00:26.43 ID:2Muxtrov.net] >>977 問題の解釈違わねえ?
1004 名前:デフォルトの名無しさん [2020/11/28(土) 09:12:26.58 ID:nEfgRBi9.net] >>982 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"))
1005 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 11:36:22.72 ID:FGpMIdZG.net] >>981 ( 1..10 ) % 2 range に、% というメソッドは無い!
1006 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 12:27:13.39 ID:GOv1h+p2.net] >>988 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]
1007 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 12:38:57.57 ID:L52xXSLK.net] 予想通りの流れになってくれて何より
1008 名前:977 mailto:sage [2020/11/28(土) 14:12:40.28 ID:FGpMIdZG.net] ruby -e 'p ( ( 1..5 ) % 2 ).to_a' #=> [1, 3, 5] 2 は、各ステップの大きさ
1009 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 16:09:49.88 ID:myGQAvEM.net] ダメだ オンラインでRuby 2.6使えるとこ見つからない どっかない?
1010 名前:デフォルトの名無しさん [2020/11/28(土) 16:34:18.46 ID:gB71rnHS.net] >>992 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
1011 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 16:39:08.00 ID:nEfgRBi9.net] jdoodle初めて知った 手元の汚い環境にもrepelにもpaizaにもなかったとき使おう
1012 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 17:26:12.48 ID:FGpMIdZG.net] paiza は、いつも新しい codepad は、古いような気がする
1013 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 17:30:47.77 ID:FGpMIdZG.net] 漏れは、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 もある
1014 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 17:57:16.56 ID:myGQAvEM.net] >>993 thx でもiphoneでどのサイトもコピペができないorz なんでなんだろう?
1015 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 18:01:21.11 ID:myGQAvEM.net] とりあえず自分で打ち込んで試した shuffleはランダムに並べ替えみたいだからちょっと違うかな
1016 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 22:44:23.07 ID:wyvnQiBB.net] >>998 shuffleの代わりにsampleを使うといい
1017 名前:デフォルトの名無しさん mailto:sage [2020/11/29(日) 06:10:23.39 ID:LsAPFm47.net] >>982 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
1018 名前:デフォルトの名無しさん [2020/11/29(日) 12:05:03.89 ID:POmPIOqu.net] >>982 Julia using Dates for w=1:7 println(Dates.format(Date(1,1,w), "E")) end
1019 名前:デフォルトの名無しさん [2020/11/29(日) 14:25:29.24 ID:KxupmnON.net] >>982 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が土曜になってしまい、 それを並び替えてから出力する必要があって少し複雑になった。
1020 名前:253 mailto:sage [2020/11/29(日) 15:02:42.80 ID:onV9IrOo.net] >>982 Perl5 use Time::Piece; use Time::Seconds; $
1021 名前: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 [] [ここ壊れてます]
1022 名前:253 mailto:sage [2020/11/29(日) 17:21:11.49 ID:onV9IrOo.net] >>982 Perl5、>>1003 のもうチョイ手抜き版 use Time::Piece; for (1..6,0) { print Time::Piece::fullday([(0)x6, $_])."\n" } ~ $ perl 18_971_fullday.pl Monday Tuesday Wednesday Thursday Friday Saturday Sunday
1023 名前:デフォルトの名無しさん [2020/11/29(日) 20:08:13.17 ID:idUZlJAo.net] >>982 Java https://paiza.io/projects/F3UDtssyIBLD9KwEcaTfjA
1024 名前:デフォルトの名無しさん [2020/11/29(日) 20:39:34.37 ID:idUZlJAo.net] お題 配列を入力として受け取り 値が連続するサブ配列のうち、合計が最大のものを出力してください 例 入力:[−2, 1, −3, 4, −1, 2, 1, −5, 4] 出力:[4, −1, 2, 1]
1025 名前: mailto:sage [2020/11/29(日) 21:07:17.97 ID:POdKASdd.net] >>1006 >サブ配列 の定義を教えてください
1026 名前:デフォルトの名無しさん mailto:sage [2020/11/29(日) 21:15:00.96 ID:sOEBQUsx.net] 値が連続しないサブ配列とは?
1027 名前:デフォルトの名無しさん [2020/11/29(日) 21:21:35.35 ID:idUZlJAo.net] >>1007 教えません >>1008 [1, 4, 2, 1, 4] とか
1028 名前:デフォルトの名無しさん mailto:sage [2020/11/29(日) 21:26:09.30 ID:sOEBQUsx.net] [4, −1, 2, 1]は値が連続するサブ配列で [1, 4, 2, 1, 4]は値が連続しないサブ配列? 連続の定義は?
1029 名前:デフォルトの名無しさん [2020/11/29(日) 21:34:10.34 ID:idUZlJAo.net] >>1010 教えません
1030 名前:1001 [Over 1000 Thread.net] このスレッドは1000を超えました。 新しいスレッドを立ててください。 life time: 138日 7時間 40分 24秒
1031 名前:過去ログ ★ [[過去ログ]] ■ このスレッドは過去ログ倉庫に格納されています