プログラミングのお題スレ Part17

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2020/03/13(金) 01:42:47.06ID:0rEhys36
プログラミングのお題スレです。

【出題と回答例】
1 名前:デフォルトの名無しさん
  お題:お題本文

2 名前:デフォルトの名無しさん
  >>1 使用言語
  回答本文
  結果がある場合はそれも

【ソースコードが長くなったら】 (オンラインでコードを実行できる)
https://ideone.com/
http://codepad.org/
http://compileonline.com/
http://rextester.com/runcode
https://runnable.com/
https://code.hackerearth.com/
http://melpon.org/wandbox
https://paiza.io/

宿題は宿題スレがあるのでそちらへ。

※前スレ
プログラミングのお題スレ Part16
https://mevius.5ch.net/test/read.cgi/tech/1573948822/
254デフォルトの名無しさん
垢版 |
2020/04/20(月) 17:09:22.78ID:CQO/p7b7
最下点付近での近似だな
255デフォルトの名無しさん
垢版 |
2020/04/20(月) 17:15:47.88ID:CQO/p7b7
いや普通のだったわ、すまん
2020/04/20(月) 18:33:21.43ID:SXRlK0qI
>>181 Python3 (Javaじゃなくてスマソ >>253 をインプリ, tkinterのインストールされている環境で実行ください)

import math, tkinter as tk
root = tk.Tk()
canvas = tk.Canvas(root, width=300, height=300)
canvas.pack()
x0, y0 = 150, 50
r = 200
v, theta = 0, 3.1415 * 40 / 180
x, y = x0 + r * math.sin(theta), y0 + r * math.cos(theta)
stick = canvas.create_line(x0, y0, x, y, width=2)
ball = canvas.create_oval(x-7, y-7, x+7, y+7, fill='gray')
dt = 20
def show():
  global v, theta, x, y
  a = -0.00098 * math.sin(theta)
  a *= 0.95 if a * v > 0 else 1/0.95 # dumping
  dv = a * dt;
  dtheta = (v + dv/2) * dt / r
  theta += dtheta;
  v += dv;
  x, y = x0 + r * math.sin(theta), y0 + r * math.cos(theta)
  canvas.coords(stick, x0, y0, x, y)
  canvas.coords(ball, x-7, y-7, x+7, y+7)
  root.after(dt, show)
show()
root.mainloop()
257デフォルトの名無しさん
垢版 |
2020/04/20(月) 19:55:58.67ID:qCtnBvYT
そろそろオレ二重振り子見たくなってきちゃったなァ
2020/04/20(月) 20:37:59.21ID:7fNLbA/z
double pendulumはカオスだからNG
259デフォルトの名無しさん
垢版 |
2020/04/20(月) 21:50:54.25ID:3yxFdBsA
>>135
Java 操車場アルゴリズム
https://paiza.io/projects/8rhXD8X0uio122Y78-g_8w
2020/04/20(月) 22:11:41.07ID:7fNLbA/z
>>259
すげえな。
どうやって考えたの?
261デフォルトの名無しさん
垢版 |
2020/04/20(月) 22:36:14.60ID:arq8EuUU
考えたわけじゃなくね?
2020/04/20(月) 23:51:34.10ID:RmTF1U13
これダイクストラなのか
2020/04/21(火) 00:32:44.25ID:2I58wt93
スタックに積んで処理していくっていう昔ながらの方法と何か違うの?
2020/04/21(火) 00:35:59.72ID:2I58wt93
ウィキペディアにあった
265デフォルトの名無しさん
垢版 |
2020/04/21(火) 19:01:08.06ID:Nu/0ktL2
>>258
数値計算にカオスとか関係なくね?
266デフォルトの名無しさん
垢版 |
2020/04/23(木) 02:45:01.66ID:40I0QciX
>>135
bash
https://paiza.io/projects/Qm3KvIJsWVgdXJ1VKJR7DA

eval は使ってないw
267デフォルトの名無しさん
垢版 |
2020/04/23(木) 05:19:07.09ID:GeQlI54q
>>265
ウルトラマンカオス。
2020/04/23(木) 22:15:50.71ID:CuZLC5Yi
>>181 Common Lisp (SBCL) + CLX。X Window Systemが使える環境で。>>253, >>256を参考に
(require "asdf")
(asdf:load-system "clx")
(defpackage #:pendulum (:use #:common-lisp #:xlib))
(in-package #:pendulum)
(defvar *display* (open-default-display))
(defvar *screen* (display-default-screen *display*))
(defvar *window* (create-window :parent (screen-root *screen*)
         :x 0 :y 0
         :width 300 :height 300
         :background (screen-white-pixel *screen*)))
(defvar *gcontext* (create-gcontext :drawable *window*))
(defparameter *x0* 150)
(defparameter *y0* 50)
(defparameter *r* 200)
(defparameter *theta0* (/ (* pi 40) 180))
(defparameter *dt* 0.03)
(map-window *window*)
(loop for v = 0 then (+ v dv)
  for theta = *theta0* then (+ theta dtheta)
  for x = (+ *x0* (floor (* *r* (sin theta))))
  for y = (+ *y0* (floor (* *r* (cos theta))))
  for a = (let ((a (* -0.00098 (sin theta)))) (funcall (if (> (* a v) 0) #'* #'/) a 0.95))
  for dv = (* a *dt*)
  for dtheta = (/ (* (+ v (/ dv 2)) *dt*) *r*)
  do (progn
    (draw-line *window* *gcontext* *x0* *y0* x y)
    (draw-arc *window* *gcontext* (- x 7) (- y 7) 14 14 0 (* 2 pi) t)
    (clear-area *window*)))
2020/04/23(木) 23:35:29.80ID:CLpyggBI
乙。
270デフォルトの名無しさん
垢版 |
2020/04/23(木) 23:53:39.74ID:lusTU/GG
お題: 配列と列数が与えられるので配列を行列に再構築して返せ
例:
in < [1, 2, 3, 4], 2
out > [[1, 2], [3, 4]]
2020/04/24(金) 00:06:04.10ID:B1fvRJ4E
>>270 Perl5

$s = [1, 2, 3, 4];
$ncol = 2;
push @b, [splice @$s, 0, $ncol] while @$s;
use Data::Dump 'dump';
print dump(\@b,)."\n";


実行結果
~ $ perl 17_270.pl
[[1, 2], [3, 4]]
2020/04/24(金) 00:32:20.67ID:9Lyz0QqN
>>270 Ruby

p [*eval(str.sub(/],/,"].each_slice"))] # => [[1, 2], [3, 4]]
2020/04/24(金) 01:48:19.75ID:m2hQekEP
>>270 D
void main() @safe {
import std.stdio : writeln;
import std.range : chunks;
[1, 2, 3, 4].chunks(2).writeln;
}
274デフォルトの名無しさん
垢版 |
2020/04/24(金) 02:15:23.92ID:XDANT2WI
>>270 matlab

reshape([1,2,3,4],[],2)
2020/04/24(金) 06:44:44.69ID:q4hgA9QE
入力無視すんなら最初からprint([[1,2,],[3,4]])ってかけばええやんw
276デフォルトの名無しさん
垢版 |
2020/04/24(金) 06:56:30.60ID:oaHyD4Kv
>>270 J
f =: 4 : 0
(-x) , \ y
)

  2 f 1 2 3 4
1 2
3 4
277デフォルトの名無しさん
垢版 |
2020/04/24(金) 13:12:17.03ID:UlmQZP6K
>>275
あんたバカ?
2020/04/24(金) 14:03:24.71ID:LCR05+vC
このスレは入力のハードコーディングは禁止だって>>1に書いてるだろ?
279デフォルトの名無しさん
垢版 |
2020/04/24(金) 15:04:41.40ID:SqTnlu82
みなのもの戦に備えろ
280デフォルトの名無しさん
垢版 |
2020/04/24(金) 15:36:47.80ID:fZ+Jqbcm
>>270
Kotlin
https://paiza.io/projects/F6x2m9b-Hs-a2yOZFxLMAw

こういうことをするための chunked() という拡張関数がライブラリに最初からあるので自分ではほとんど何も考えてない。
2020/04/24(金) 16:43:36.97ID:QbKPO/NJ
      \∧_ヘ     / ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ,,、,、,,, / \〇ノゝ  <  どうすっかな……      ,,、,、,,,
    /三√ ゚Д゚) /   \_______
     /三/| ゚U゚|\      ,,、,、,,,               
 ,,、,、,,, U (:::::::::::)∪  ,,、,、,,,
      //三/|三|\       ,,,,    ,,、,、,,,
      ∪  ∪
  ,,          ,    ,,,,    ,,、,、,,,       ,,、,、,,,
,,,,,    ∧_∧ うまいモナー,,,,,   、 ,,,,,,   ,,,,,,,,    ,,,,,
 ,,,   ( ´∀`)___,,,,___ ,, ∧_∧ ゲンキニ シテルカナ・・・___,,
  / ̄ ( つ日ヽ   ∧_∧    (    )               /
/    (__))   (´∀` )   (    )    ∧_∧∧_∧ / マターリモナー
 ∧_∧∧_∧ドーゾ (日ノ )  | | |    ( ´∀`) ´∀`)
 ( ´∀`) ´∀`)    ((__)  ,(_(_) (○)⊂   ) つ日⊂ ) モーナー
―(つ⊂  ) つ⊂ )―――――――――――ヽ|〃(⌒)(⌒) (⌒)(⌒)
   (⌒)(⌒) (⌒)(⌒)グーグー
2020/04/24(金) 19:26:26.62ID:q4hgA9QE
>>277
死ねよゴミ
2020/04/24(金) 19:46:51.66ID:OOGSSbp6
お題:ABC問題を解いてみましょう。

概要。
https://originalnews.nico/249090
サンプル。
https://wandbox.org/permlink/ohmA7kG8HdpG2pKF
2020/04/24(金) 20:10:45.78ID:zMxMvQeG
解くって何をするん?
2020/04/24(金) 20:28:58.54ID:Ln0giejY
論文のurlを表示するとかでいいんじゃね?
2020/04/24(金) 20:56:21.49ID:pA5GOauV
お題
XORゲートは4つのNANDゲートで構成できることが知られている
この構成方法をプログラムで探索せよ

i番目のNANDゲートの入力を(ai,bi)、出力をciとする
XORゲートの入力を(X,Y)、出力をZとする

出力例
X->a1
Y->b1
X->a2
c1->b2
Y->a3
c1->b3
c2->a4
c3->b4
c4->Z
287デフォルトの名無しさん
垢版 |
2020/04/24(金) 23:27:45.63ID:giWR9tWL
>>286
Step 6, Solution 1
0 : -1, -2: 0, 0, 1, 1 : 2
1 : -1, -2: 0, 1, 0, 1 : 2
2 : 1, 0: 1, 1, 1, 0 : 3
3 : 2, 0: 1, 1, 0, 1 : 3
4 : 2, 1: 1, 0, 1, 1 : 3
5 : 4, 3: 0, 1, 1, 0 : 2
2020/04/25(土) 02:15:29.89ID:7k5qv/w/
2020/04/25(土) 08:29:40.90ID:He4LT43P
>>286 Ruby
https://ideone.com/OJiVYh
対称など考慮せずに 384通りの解が出てきた
ループ判定は手抜き
2020/04/25(土) 09:02:48.23ID:mTthreta
[0,0,0,0] は Array.new(4, 0)
[ nil,nil, nil,nil, nil,nil, nil,nil ] は Array.new(8)
って書いた方が分かりやすいな
あとcase-when はthenを使うのが良し
2020/04/25(土) 13:22:15.71ID:o1s8FM4j
細かっw
292289
垢版 |
2020/04/27(月) 07:09:24.46ID:0mP+psCA
>>286 Ruby
https://ideone.com/TERW16
svg で回路図化、配線は手抜き
293デフォルトの名無しさん
垢版 |
2020/04/27(月) 09:21:19.63ID:Vk+6u7Hb
次は全加算器をやってみよう。
4入力セレクタ辺りで限界でしょう。
2020/04/27(月) 18:53:24.75ID:KzmnkBMz0
このスレってアルゴリズムとかデータ構造を解説してくれる人はあまりいなんだな
295デフォルトの名無しさん
垢版 |
2020/04/27(月) 19:18:51.96ID:XYadQOO0
聞かれなかったから
296デフォルトの名無しさん
垢版 |
2020/04/27(月) 19:29:48.45ID:9Rl/jVuf
>>294
わからないことあったら聞こうよ
ガキじゃねえんだからさ
2020/04/27(月) 19:39:12.12ID:11UvoXnI
そらコードしか書かんわな
298デフォルトの名無しさん
垢版 |
2020/04/27(月) 19:49:07.31ID:uF9iuztD
アルゴリズムは金になるからここじゃあ書かないよ。
聞きたくなるようなコードをチラ見せするのがプロ。
2020/04/27(月) 19:50:45.91ID:hGnxzjbK
聞きたくなるようなのあったか?
2020/04/27(月) 19:54:18.21ID:11UvoXnI
そもそもここにそんな高等なお題でねえだろ
2020/04/27(月) 21:06:36.61ID:KzmnkBMz
知らない言語の長いコードを読むのは難しいからアルゴリズムだけ書いてほしい
そうじゃなかったら何のために披露してるのかわからない
2020/04/27(月) 21:16:33.23ID:11UvoXnI
知らない言語を知ればいいだけやん
2020/04/27(月) 21:17:48.49ID:D3+TkawX
(誰かがきっと俺のコードをじっくり読んでくれるはず…!)
304デフォルトの名無しさん
垢版 |
2020/04/27(月) 21:26:35.22ID:04Et8o2n
perlとかだと全くわからん
暗号にしか見えん
まあそれが楽しいんだろうけどw
305デフォルトの名無しさん
垢版 |
2020/04/27(月) 22:44:33.33ID:9Rl/jVuf
アルゴリズムを教えるためのスレじゃないからなw
306デフォルトの名無しさん
垢版 |
2020/04/27(月) 22:46:29.62ID:Nbm5XyHg
アルゴリズムの自信作を披露するスレだろ?
2020/04/27(月) 22:49:14.07ID:d54bWA3b
やりましたの報告スレじゃね?
しらんけど
2020/04/27(月) 22:50:44.47ID:pfA6eg61
お題:ワープ付き迷路
始点(S)、終点 (G)、通路(.)、ワープ(0-9)、壁(#)で構成される大きさH×Wの迷路を考える
プレイヤーは、隣接する壁以外のマスにコスト1で移動することができる
ワープマスに入った場合、プレイヤーは対となるワープマスにコスト0で強制的に移動する
迷路中に存在する0-9の個数は、各数字について0個または2個である

始点から終点に移動するときの最小コストを求めよ
ただし、終点に到達できない場合は"impossible"と出力せよ

4 6
1#S...
....#.
#####.
1..G..
=> 7 (ワープを使わずに右に進むとコストは8)

3 3
S1G
###
1##
=> impossible (ワープ先で身動きが取れなくなる)

1 22
S01234567890123498765G
=> 5 (S→0→9→4→5→G)
2020/04/27(月) 22:57:02.43ID:EEEc2NVc
>>301
披露してる側には意味はあるだろう。
お前の方には読めないコードでは意味がないのかもしれないけど、それはお前の都合でしかないだろう。
310デフォルトの名無しさん
垢版 |
2020/04/27(月) 23:03:37.42ID:4xqUIPcT
まあそうムキになるな
余裕がある人はコメントなりレスなりで解説入れたりすればいいと思うよ
2020/04/27(月) 23:15:10.00ID:KzmnkBMz
>>309
例えば?
2020/04/27(月) 23:44:27.07ID:EEEc2NVc
>>311
とりあえず思い付くままにかいてみると、
アルゴリズムだけだったらとるに足らない問題だったり、逆に難しいけどそれただの数学の問題だよねってのが多いけど、それをプログラミング言語で書くから解く方も面白いし見る側も面白い。
同じ問題でも使う言語によって使える機能や記法が異なるから、様々な回答、解法が出てくる。
大抵の人は複数言語が読めるし詳しくなくてもちょっと考えたり調べれば読めるから、読めない人がいることをケアする必要性は特にない。
Jとか一部の言語のワンライナーとかは読めないことが多いけど、むしろそういう読めないようなコードで実現されていることが面白いし、読めないながらも感心してしまう。
アルゴリズムを疑似言語的に書こうとするとどうしても曖昧さや人によって解釈が異なる問題が出てしまうが、仕様が定義された言語を使えばその問題は回避できる。
2020/04/27(月) 23:47:51.61ID:KzmnkBMz0
312
>>292とか>>268ってどういうアルゴリズムなん?
やっぱ概要入れてくれたほうが親切だと思う
2020/04/27(月) 23:51:19.00ID:KzmnkBMz0
スマホのほうにはslipコマンドが設定してあるのでIDちょっと違いますが
自分はID:KzmnkBMzです
2020/04/27(月) 23:55:26.10ID:EEEc2NVc
>>313
説明つけてくれればそりゃ親切だろうけど、回答する人に初めからそこまで求めるなよ。
疑問があれば質問すればいいだけでしょ?
2020/04/27(月) 23:59:22.23ID:KzmnkBMz0
>>315
そういう見方もあるかもしれないですね
親切なレスには説明ついていて助かりますね
317デフォルトの名無しさん
垢版 |
2020/04/28(火) 01:00:38.45ID:0FC2c4TG
こういう流れを見てると、つくづくプログラマーって学生時代に冴えなかった奴等の巣窟なんだって痛感するよね…
2020/04/28(火) 01:33:53.12ID:mJox3ckA
自分語りかよ…
人を自分と一緒にしないでくれ

>>313 言っちゃー悪いそのレベルだと、まだまだ山のように勉強が必要だと思う
2020/04/28(火) 01:38:11.95ID:LE+4zw96
誰かに教えるスレじゃないんだからそういう見方しかないと思うけど…
2020/04/28(火) 01:38:37.06ID:tOE52D5S
>>317
それとブラック企業で使い潰され余裕ない奴な
2020/04/28(火) 01:46:12.43ID:ljT+88J3
俺は職業プログラマではないけどプライド高い人は多そうなイメージ
他板でもプログラミングスレは大抵荒れてる
2020/04/28(火) 01:48:31.06ID:dQnTZ6B4
勘違いしている底辺が大半
ごく一部が優秀
でもその付加価値に見合った価格が支払われない残念な分野
2020/04/28(火) 04:03:48.39ID:4kUhwH6S
教えて欲しいと言えないバカが文句言うスレ
2020/04/28(火) 04:09:27.13ID:lOCVF0xa
酷いアスペを見た
2020/04/28(火) 04:11:48.33ID:uDpqz1hl
>>324
減った?
326デフォルトの名無しさん
垢版 |
2020/04/28(火) 04:29:18.44ID:ayTn4wb+
>>294のワード効きすぎだろ
何がそんなに刺さったんだ?
実際は1人が騒いでるだけか??
2020/04/28(火) 04:53:50.52ID:4kUhwH6S
スレへのヘイトになってるからねえ
死ねよ自己中
2020/04/28(火) 04:55:48.64ID:4kUhwH6S
>>294
こいつだけは絶対に許さない
2chの兵力あげてぶっ潰す
329デフォルトの名無しさん
垢版 |
2020/04/28(火) 05:02:44.84ID:WLGi8zNs
執念やば
330デフォルトの名無しさん
垢版 |
2020/04/28(火) 05:04:21.21ID:XMwGDU9f
そしてキモ
331デフォルトの名無しさん
垢版 |
2020/04/28(火) 05:17:51.27ID:xTCZFQnU
とうしつこはい…
2020/04/28(火) 05:58:30.72ID:0ndGBSxH
疑問があったら聞けばいいのに
333デフォルトの名無しさん
垢版 |
2020/04/28(火) 06:47:24.12ID:6K6MgdzD
自然科学 + グラフ理論 + 手書き作業 = アルゴリズム
2020/04/28(火) 06:58:04.37ID:cTXOkUEK
単振り子のアルゴリズムなんて運動方程式解くだけだろ
近似すれば高校生でも解ける
2020/04/28(火) 06:58:48.43ID:9sR0wNPf
アルゴリズムを勉強するスレでもないし
アルゴリズムを競うスレでもない
2020/04/28(火) 06:59:56.72ID:9sR0wNPf
>>334
振り子の運動方程式を解くのは非常に難しい
2020/04/28(火) 07:01:29.73ID:cTXOkUEK
>>336
中学生か?
それとも日本語初心者か?
2020/04/28(火) 07:03:30.32ID:9sR0wNPf
運動方程式を解く
の意味がわかってないアホ
2020/04/28(火) 07:04:23.62ID:cTXOkUEK
振幅が小さい時は簡単に微分方程式解けるだろ
日本語が読めないアホ
2020/04/28(火) 07:05:19.37ID:9sR0wNPf
近似にしても
±90度振れる振り子を近似するのは高校生には出来ない
2020/04/28(火) 07:05:41.36ID:9sR0wNPf
>>339
条件の後付け
2020/04/28(火) 07:06:24.06ID:cTXOkUEK
>>334「近似すれば高校生でも解ける」
後付けじゃねえよ。最初から言ってるわ
死ねよ
2020/04/28(火) 07:06:58.86ID:9sR0wNPf
振幅が小さいとき
2020/04/28(火) 07:07:14.65ID:cTXOkUEK
単振り子の微分方程式解くときに他にどんな近似するっていうんだ
真面目に精神障害者だろコイツ
2020/04/28(火) 07:09:17.81ID:9sR0wNPf
>>344
それしか知らないのに簡単とか言うな
2020/04/28(火) 07:10:42.04ID:9sR0wNPf
解析的には解けない
シミュレーションに頼る
シミュレーションの精度を上げるにも技術がいる

一言で簡単とか言うアホは何もわかってない
2020/04/28(火) 07:10:47.87ID:cTXOkUEK
>>345
死ねよアホ
お前がアホだからこの程度すら簡単に思えないだけ
死ね
2020/04/28(火) 07:12:17.62ID:cTXOkUEK
自分が頭悪いの棚に上げていちゃもんつけられても困るわ
2020/04/28(火) 07:32:33.87ID:9sR0wNPf
10cmの理想的な単振り子
90度の位置から初速度ゼロで離して
ちょうど10分後の位置を求めよ

簡単だって言うならやってみて
2020/04/28(火) 07:37:31.08ID:9sR0wNPf
近似が高校で習う1通りしか無いと思ってる時点でアホだし
そもそも近似でしか解けない

「単振動近似なら高校生でも解ける」
これなら誰も反対しない
2020/04/28(火) 07:38:59.20ID:9sR0wNPf
お題
10cmの理想的な単振り子
90度の位置から初速度ゼロで離して
ちょうど10分後の位置を求めよ
2020/04/28(火) 07:43:14.50ID:cTXOkUEK
振り子の運動方程式解くときに近似って言われて振幅が小さい場合を想定できないのは障害者のお前くらいだわ
2020/04/28(火) 07:44:14.89ID:cTXOkUEK
>>351
社会の迷惑だからさっさと死んどけ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。