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/
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は、次のようなプログラムとする: - 現在日時と「えさをやりました。」を出力する。