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/
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