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

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2019/02/03(日) 11:21:53.20ID:72eosYJ+
プログラミングのお題スレです。

【出題と回答例】
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/

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

※前スレ
https://mevius.2ch.net/test/read.cgi/tech/1538096947/
2019/03/03(日) 17:48:01.52ID:EHdvkNdx
>>475
分からない人は答えなくていいし黙って見ていればいいよ
2019/03/03(日) 18:41:09.09ID:TjAANgsg
>>476
任意に対応すべきだろJK
2019/03/03(日) 18:55:07.69ID:TjAANgsg
>>476
ttps://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1263968897

このサイトは具体的な座標と半径について手計算で解いた例だけど、
座標と半径を一般化して連立二次方程式を解いて交点を求め、
三角形と円弧の面積の差を求めれば重なり合う2円弧の面積が算出できる。
小さい円の中心が大きい円の内側にある場合は、
三角形と円弧の面積の差の求め方を逆にする。
小さい円が大きい円の完全に内側にある場合は、小さい円の面積とする。

x,y座標で式を立てるより、曲座標で表して三角関数使うほうが楽かもしれない。

これをプログラム化すれば良い、筈【だと思う。

以上。
480デフォルトの名無しさん
垢版 |
2019/03/03(日) 19:21:30.98ID:yjYtaUkW
2つの中心を通る線をX軸としてX軸と交わる点の端っこを原点して円の交点と半径で
円一個ずつ積分して面積を出して合わせるしかないだろ。
2019/03/03(日) 19:28:30.68ID:r5nrErEk
半径と中心間の距離から円の交点間の距離(=弦)がわかるから
正弦定理とarcsinで中心角を求めればあとはただの掛け算と引き算だろ
2019/03/03(日) 19:33:55.32ID:TjAANgsg
>>481
二次方程式解かないで済みそうだな
2019/03/03(日) 20:19:21.58ID:ot+8d2KD
それが一番シンプルそうだな
2019/03/03(日) 20:23:33.79ID:8CruhG40
プログラム的には円同士の位置関係で場合分けして、あとは計算一発だから二次方程式をいやがる必要もなくない?
485デフォルトの名無しさん
垢版 |
2019/03/03(日) 21:06:33.77ID:XGcp5yLx
>>473 C
ttps://ideone.com/trIqHx

画像も参照。
ttps://imgur.com/i2G9Ahd
486デフォルトの名無しさん
垢版 |
2019/03/03(日) 22:28:24.90ID:XGcp5yLx
>>485
条件分岐が間違っていたので修正。おそらくあってると思う
https://ideone.com/DjZqEY
余弦定理を使う方法しか思いつかなかったから、それでやった
2019/03/04(月) 01:00:55.59ID:q2TdavLp
488デフォルトの名無しさん
垢版 |
2019/03/04(月) 07:57:27.52ID:7HyVHUwF
お題:不等間隔で与えられる関数表から1次とか2次で補間をしなさい。
2019/03/04(月) 11:04:59.42ID:9wLIIjqc
お題: 2つの任意の英数字からなる芸術的なアスキーアートを出力しろ
2019/03/04(月) 11:07:25.78ID:9wLIIjqc
お題: アスキーアートで芸術的な直線を出力しろ
2019/03/04(月) 12:15:59.00ID:9wLIIjqc
お題: アスキーアートで芸術的な木のアスキーアートを出力しろ
2019/03/04(月) 13:00:20.39ID:enTqHBl5
お題: このバカをどうにかしろ
2019/03/04(月) 13:06:53.32ID:mOK2oiAk
>>489>>490>>491
どうぞ……
https://mevius.5ch.net/test/read.cgi/motenai/1546340528/
2019/03/04(月) 18:59:01.31ID:R4eMfGlu
お題 全角空白区切のCSV

カレントディレクトリにあるCSVファイルを読み込み、指定されたカラム名のデータの合計を求める。
1レコード目にはカラム名がある。
区切り記号は全角空白とする。 データの数字は全てASCII数字だとする。

CSVファイル内のデータ例

カラム1 カラム2 カラム3 カラム4
1,0 2.0 3.0 4.0
2.1 3.1 4.1 5.1
------データ例終わり

出題 カラム3 の合計を求めよ。
解答例 カラム3 = 7.1
2019/03/04(月) 19:01:33.11ID:wk4fvbO+
カンマとピリオド間違えたら死ぬぞ。気を付けれ。
2019/03/04(月) 19:03:32.42ID:rdjSvZ2C
>>494 間違い

データに 1,0 という間違いがあるけど問題ないだろ。
ついでに、この状態でカラム1の様にデータフォーマットが違う場合には正しくデータエラーを報告せよ。
2019/03/04(月) 19:10:24.71ID:wk4fvbO+
日本やアメリカでは、ピリオドは文の終わりや小数点として使う。

カンマは文章途中の区切りや複数の項目の区切りに使う。
2019/03/04(月) 19:12:27.62ID:rdjSvZ2C
>>497 問題に関係ないことを言うなよ。
499デフォルトの名無しさん
垢版 |
2019/03/04(月) 19:12:28.56ID:TpCWsYE8
>>494
awk。-F オプションで指定しているのが全角スペースね。OSやシェルの違いによってはシングルクオーテーションではなくダブルクォーテーションにする必要がある。入力はファイル名指定するか標準入力から読ませる。

awk -F' ' 'BEGIN{getline}{n+=$3}END{print n}'
500デフォルトの名無しさん
垢版 |
2019/03/04(月) 19:15:20.56ID:TpCWsYE8
awkはデータフォーマットがおかしくても適当に0ってことにしちゃったりしてエラーにならんのでデータ異常まで調べたいなら他の言語使った方が良いだろうな。
2019/03/04(月) 19:16:48.51ID:rdjSvZ2C
>>499 カラム名を指定してよ。カラム名は指定された名前であり固定ではない。
502デフォルトの名無しさん
垢版 |
2019/03/04(月) 19:22:30.38ID:TpCWsYE8
>>501
あー。じゃあ後で他の言語で作るか。
2019/03/04(月) 19:42:58.86ID:0eAiVVhP
お題:端末の横幅が与えられるので(*´ω`*)を端末の中央に表示せよ
2019/03/04(月) 20:14:28.23ID:/O719wMt
このバカどうにかしろ
あとチンポジ代わりに直せ
2019/03/04(月) 21:14:51.56ID:x+RRe849
>>503 Ruby
w = 120
printf("%s%s\n", " " * ((w - 10) / 2), "(*´ω`*)")
506デフォルトの名無しさん
垢版 |
2019/03/05(火) 01:17:51.32ID:irQmeRjm
茨木 保健
貴老沢 風花
鬼塚 海鈴
鬼埜 可恋
儀賀沢 一愛
嫌沢 宮子
己問 彩姫
寺沢 七彩
寿川 瑞紀
樹木山 美咲
宗田 純
女ケ沢 美優
女ケ澤 飛鳥
女鹿沢 祐奈
2019/03/05(火) 03:28:01.02ID:CZi591h7
>>494
Ruby で

require 'csv'

# 全角空白区切りで、ヘッダー有り
options = { :headers => true, :col_sep => " " }

# CSV ファイルを、1行ずつ処理する
puts CSV.foreach( "input.csv", options )
.map{ |row| row[ 2 ].to_f }.inject( :+ )
2019/03/05(火) 07:59:44.57ID:0SMIqw+w
>>507 カラム名サーチが入っていないみたいだけど。
例えば ”カラム3” と言うカラム名が指定されたとして書いてみて。3列目と言うことじゃないからね。

カラム4 カラム2 カラム1 カラム3
かも知れない。
2019/03/05(火) 08:10:31.80ID:utDz1VTj
変な流れが続いていたから、バカっぽいお題をいくつか出した後に一見まともそうなお題のふりして宿題をやってもらおうという腹かと勘ぐってしまう。
2019/03/05(火) 09:08:51.84ID:BKNc7BtY
>>509
お前の思いちゃんと伝わったよ
問題解けクズ
2019/03/05(火) 09:12:40.32ID:DIrFqE8l
>>510
宿題は自分でやれカス
2019/03/05(火) 09:42:11.28ID:BKNc7BtY
>>511
お前の宿題だが
2019/03/05(火) 09:45:18.09ID:DIrFqE8l
死ね
2019/03/05(火) 11:33:12.77ID:7U5lBe0C
だから言語制限なしで通すとやっぱネタギレじゃん
2019/03/05(火) 12:09:12.75ID:KQ31R4yU
お題1: テトリスタイリング問題を解決しろ
ここでテトリスタイリング問とは任意の図形のアスキーアートを入力すると
全てのテトリスのブロックに隣接するブロックの種類が異なるようにタイリングしたアスキーアートを出力する
問題である

お題2: テトリスタイリングNブロックス問題を解決しろ
ここでこの問題は上の問題でブロックの種類の数Nを最小にする問題である

例:
入力:
****
****
****

出力:
1002
1002
1122
2019/03/05(火) 12:21:13.18ID:WJ/srpVX
>>515
これじゃダメなのか?

1011
1001
1101
2019/03/05(火) 12:23:52.27ID:KQ31R4yU
>>516
それでもええで
2019/03/05(火) 23:56:55.78ID:0SMIqw+w
>>515 ボクちゃんわかんない。
何で縦の列は1とか同じ種類が許されてるの? なんか上から下へとか言う動きを前提にしてるの?
2019/03/06(水) 01:19:54.96ID:tTGpH/KM
>>518
https://upload.wikimedia.org/wikipedia/commons/9/9a/Tetrominoes_letter_oriented.png
片面テトロミノ(画像参照)を回転させて指定の形に詰め込め
ただし、同じテトロミノを隣接させてはいけない。 ってことじゃろ

515の出力例でいうと、
0は画像の水色、1は黄色、2は紫色の奴ってこと
2019/03/06(水) 08:04:05.66ID:bBth0ZZS
>>515 その出力例だと、タイルの種類は3種類じゃないの?
1と2を同じだとみなせば、同じ種類と隣接するからダメだろ?

>>516 だと完全に2種類だが。
2019/03/06(水) 10:13:54.30ID:Z0o65K/P
>>520
>>519
2019/03/06(水) 11:44:29.70ID:cM1JcwP7
>>521
だからこそ出題例>>515は3種類のブロックを使ってるんだろ? 
2種類で出来ていないから問2に対しては不正解では?
2019/03/06(水) 11:58:00.89ID:OdnfdSEH
>>522
例がお題2とお題1両方の答えになっているなんてことはどこにも書いてないだろ
例を見ればだれでもどのお題の答えかわかるだろ
2019/03/06(水) 12:34:51.62ID:cM1JcwP7
>>523 誰でも解ると言うのは言い過ぎ。 何が正しいのかを示すのが例なんだし。
なんにせよお題の出し方が独断すぎるよ。
テトリスタイリングなんて知らない人にとっては説明不足だし
>>519 の説明があって初めて平面上の回転図形は同じとみなし、裏表の回転は許さないと解るけど。
それでも519のブロックは4個の組み合わせのブロックしかないが、どうして4個固定なのか? 最大辺の個数を単位とするのか?

この場合は5個固定?
***
***
***
***
***
2019/03/06(水) 12:44:07.40ID:OdnfdSEH
>>524
釣りだろ?
本当にわからないのなら病院に行くレベルw
526516
垢版 |
2019/03/06(水) 12:54:30.31ID:lTLUMkgQ
>>523
分からなかった
527デフォルトの名無しさん
垢版 |
2019/03/06(水) 12:57:33.38ID:FCOQEIBI
わかっても今のところ解く気は起きない
2019/03/06(水) 12:58:29.33ID:Z0o65K/P
>>522
あなた、前に書き込んでた中卒の人?
529デフォルトの名無しさん
垢版 |
2019/03/06(水) 13:01:54.00ID:uLgh04dF
>>199>>441が理解できなかったってやつと同一人物なのは分かる
2019/03/06(水) 13:08:31.07ID:URj2ByGk
>>524
>どうして4個固定なのか? 

テトリスってゲームがあってそれに出てくるブロックが>>519

>>515
>全てのテトリスのブロック

https://ja.wikipedia.org/wiki/%E3%83%86%E3%83%88%E3%83%AA%E3%82%B9
テトリス
>4つの正方形を組み合わせて作られた、片面型テトロミノ状のブロックピース
>(以下の7種、本作ではこれらを「テトリミノ」(Tetrimino)と呼ぶ)
>がフィールド上方からランダムに1種類ずつ落下してくる。
2019/03/06(水) 13:09:30.85ID:f/NWPYTA
>>441は分からんかった
問題を考えさせてほしい
問題文を考えさせるんじゃなく
2019/03/06(水) 13:50:33.24ID:cM1JcwP7
>>530 片面テトリミノの基本は4個だけどこれを使う前提なら、3x5とか4の倍数の面積にならない図形は解けないよね。
聞いてるのは3x5はどうするのと言う話。
2019/03/06(水) 14:02:02.94ID:URj2ByGk
>>532
「解けない」でいいんだろ
2019/03/06(水) 16:31:44.46ID:OdnfdSEH
>>532
この問題は君の思ってる小学校の算数とは違うんだよ
2019/03/06(水) 18:11:04.36ID:+4ROOaYr
問題の難しさと、問題の曖昧さは関係ないけどな。
難しい問題の条件が曖昧だと鼻から解く気になれない。
2019/03/06(水) 18:18:58.86ID:OdnfdSEH
考えればわかることまでいちいち書かないのは常識
それを曖昧とは言わない
2019/03/06(水) 19:39:35.98ID:RlXQ9XDp
数学者は常識人
2019/03/06(水) 19:40:44.95ID:L0cGL7i+
当たり前のことでもいちいち全部書くのがこの業界の常識だが
2019/03/06(水) 19:57:47.15ID:2Etc0l5z
仕様書をやりとりしてみれば如何に他人に解らせることが難しいか理解できると思うけどな。 多分出題者は余り経験していないんだろう。

仕様をいい加減で進めても後で痛い目を見るのは自分。
(最初は完全でないのは当然、打ち合わせで抜けを詰めていけば良い話)
2019/03/06(水) 20:41:28.07ID:OdnfdSEH
>>538
テトリスがなにかなんて自分でググって調べればいいことだろ
そんなことまで面倒みれない
541デフォルトの名無しさん
垢版 |
2019/03/06(水) 20:51:34.66ID:Xwbjxxrc
お題の面白さに共感しなければ趣味だから解かない。
542デフォルトの名無しさん
垢版 |
2019/03/06(水) 21:21:50.81ID:FCOQEIBI
そういや安かったのでPS4用のテトリスを何気なく買って連日やってたら慣れてきちゃってレベル15の40ライン消しが楽にできるようになってしまったなあ。
今さらテトリスうまくなってどうすんだ俺w
543デフォルトの名無しさん
垢版 |
2019/03/07(木) 03:21:20.86ID:QS9GxyX4
>>494
Kotlin
https://paiza.io/projects/w5ywqyfGfQpwllH68rmt5A

入力はカラム名の行が最初にあり、次の行からはデータが続き「# カラム名」の行で終わり、
そこで指定したカラム名の列の合計値が出力される。

エラーはデータが数値として解釈できない文字列、項目数がカラム名の数と一致しない行、
同一カラム名があった場合に出る。一度エラーになると # の行まで読み飛ばされる。
544デフォルトの名無しさん
垢版 |
2019/03/07(木) 17:22:14.11ID:bbRk4M8e
お題
R言語にandmaginsとうう関数がある。
m行n列の行列を渡すと行ごとの合計と列ごとの合計を追加して
(m+1)行(n+1)列の行列を返す。
同様の関数をつくる。

1 2 3
4 5 6

1 2 3 6
4 5 6 15
5 7 9 21
となる
2019/03/07(木) 19:35:31.07ID:gyMjU+f2
>>544
C++
https://ideone.com/XhFw95
2019/03/07(木) 23:35:37.41ID:bSfNx8gZ
>>544 Squeak/Pharo Smalltalk

| fn |
fn := [:arr | arr, {arr sum} collect: [:row | row, {row sum}]].
fn value: #(
(1 2 3)
(4 5 6)
).

"=> #(
(1 2 3 6)
(4 5 6 15)
(5 7 9 21)
) "
2019/03/08(金) 00:35:43.62ID:N66/0TP0
大文字小文字だけが異なる、ファイル名を見つける

入力
aB.txt
Ab.txt
xx
cd
cD
CD

出力
aB.txt : Ab.txt
cd : cD : CD
2019/03/08(金) 04:41:32.92ID:JrzgN4oN
#!/bin/sh
infile="aB.txt Ab.txt xx cd cD CD"
for f in ${infile}; do
echo $f $(echo $f | tr [:lower:] [:upper:])
done | awk '
{ save[$2] = save[$2] " : " $1 }
END {
for (i in save) print save[i]
}' | sed 's/^ : //' | sort | awk 'NF > 1 {print}'
2019/03/08(金) 09:23:36.88ID:iTwHpxzE
>>547 Squeak Smalltalk

| fn |
fn := [:arr |
| groups |
groups := arr groupBy: #asLowercase having: [:group | group size > 1].
groups values collect: #asArray
].
fn value: #('aB.txt' 'Ab.txt' 'xx' 'cd' 'cD' 'CD').

"=> #(('cd' 'cD' 'CD') ('aB.txt' 'Ab.txt')) "
550デフォルトの名無しさん
垢版 |
2019/03/08(金) 09:47:13.60ID:pv8HlopZ
>>547
それはWindowsとかでは試せないのでは?ディレクトリが違うならできるだろうけど。
(まあWindowsでもWSLでUbuntuとか動かせばできるが)
551547
垢版 |
2019/03/08(金) 11:48:57.26ID:N66/0TP0
同一フォルダ内での、大文字小文字だけが異なるファイル名は、Windows では作れないけど、
Linux では作れてしまうので、それをチェックする目的です

Linuxでも、こういうファイル名は作らない方がよい
2019/03/08(金) 16:35:28.24ID:VhFMuL/G
>>551
死ね
2019/03/08(金) 17:12:36.80ID:qP6cz7Aj
時々死ねと言うやついるけど同じやつなのか? いい加減で大人になれ。
554デフォルトの名無しさん
垢版 |
2019/03/08(金) 18:19:49.57ID:aY8HpC9F
イ`
2019/03/08(金) 18:42:00.27ID:eAQ60MzF
お題: 1=2を証明しろ
証明出来ないは無しで
2019/03/08(金) 18:49:56.10ID:qP6cz7Aj
>>555 それは言語によるんじゃないの? 論理的にはあり得ない。
一般的には、0がFalse でそれ以外がTrueと言うだけでは?
2019/03/08(金) 18:58:42.07ID:8R2ZaOuQ
整数のオーバーフロー使えば楽に証明できるけど、それはもはや基礎数学の整数じゃないし。
2019/03/08(金) 19:14:26.55ID:2owB+W9f
>>544 octave
https://ideone.com/JoTcaP
2019/03/08(金) 19:17:05.52ID:ru9qZk5w
お題:
N人の人物がある部屋に出入りしています。
i番目の人は時刻a[i]に入室し、時刻b[i]に退室します。(1 <= a[i] < b[i])

すべての人は入退室時に以下の通り行動します。
・入室時に、照明がOFFならば照明をONにする。
・退室時に、室内に自分以外に誰もいなければ照明をOFFにする。

最初は照明がOFFになっていて室内には誰もいません。
複数の人物が同時に入退室することはないものとします。

照明がONになっている時間の合計を求めなさい。

a={1,3,5}
b={2,4,6}
=> 3

a={1,2}
b={5,6}
=> 5

a={100,1,2}
b={105,3,4}
=> 8
2019/03/08(金) 20:42:26.76ID:q/o0JPH8
>>364
brainf*ck
>++++++++++<+[,.>.<]
2019/03/08(金) 20:42:27.70ID:AweN/YnK
★ぁりがdヾ(。・ω・。)ノぁりがd★
2019/03/08(金) 20:54:42.10ID:2owB+W9f
>>559 ruby
https://ideone.com/yo3mvc
563デフォルトの名無しさん
垢版 |
2019/03/08(金) 21:22:26.01ID:QMcItLTV
>>559 Common Lisp
https://ideone.com/2hHoAC
2019/03/08(金) 21:55:03.73ID:2owB+W9f
>>547 ruby
https://ideone.com/faTKf5
565デフォルトの名無しさん
垢版 |
2019/03/09(土) 08:53:56.42ID:irV15TzB
>>410 J
f =: 3 : 0
 > , { ;/(,. toupper) y
)
566562
垢版 |
2019/03/09(土) 09:29:27.51ID:8CAUa/TL
>>559 ruby
すこーしすっきり
f = ->a, b {a.zip(b).map {|c| (c.first...c.last).to_a}.inject(:|).size}

f = ->a, b {a.zip(b).map {|c, d| [*c...d]}.inject(:|).size}
567547
垢版 |
2019/03/09(土) 10:58:09.02ID:GVs3bbIF
>>564
たった2行とは、素晴らしい!
JavaScript(JS)とか、関数型プログラミングだね

f(&:upcase), f(&:chomp)
関数型でも、こういうように呼ぶ関数名が明確にわかる点では、Ruby はJS をしのぐ!

漏れが以下で作ったけど、手続き型の処理で、10行以上も掛かったw
情けない

Ruby 初心者スレッド Part 65
https://mevius.5ch.net/test/read.cgi/tech/1545421414/234
2019/03/09(土) 12:51:20.88ID:C6v7oEvs
クソみてーな恣意的な記号使いはperl譲りだな
2019/03/09(土) 13:17:28.26ID:capoU8RA
アンダースコア_はprologの時点であるんじゃね
それに記号なら恣意的だろ
570デフォルトの名無しさん
垢版 |
2019/03/09(土) 19:25:50.03ID:hBO8FWAE
>>544
Haskell

main = mapM_ print $ newxss ++ [zipWith (+) (newxss!!0) (newxss!!1)]

xss = [[1,2,3],[4,5,6]]

newxss = map (\xs -> xs ++ [sum xs]) xss
2019/03/09(土) 19:49:27.50ID:R3sqYFdd
お題:文字列と数値nが与えられるのでn番目の文字とそれ以外の文字を上下にスライドさせて表示する

入力
abc 2

出力
*b*
a*c
2019/03/09(土) 19:57:53.65ID:C6v7oEvs
お題か出力のどっちかが間違っている
日本語勉強した方がいい
573デフォルトの名無しさん
垢版 |
2019/03/09(土) 19:58:57.39ID:hBO8FWAE
>>544,570

任意の数の行列だったか。。。
修正

main = mapM_ print $ newxss ++ [lastxs]

xss = [[1,2,3],[4,5,6],[7,8,9]]

newxss = map (\xs -> xs ++ [sum xs]) xss

lastxs = map sum $ retsu newxss

retsu ([]:xs) = []
retsu xss = map head xss:retsu (map tail xss)
574デフォルトの名無しさん
垢版 |
2019/03/09(土) 20:10:49.99ID:0OOZ8KrR
>>557
オーバーフローは数学ですらないだろ。こっちは数学。


宇宙を支えていたのは、驚異のたし算だった
私がこのたし算を知ったのは20歳のころでした。その衝撃は、私の運命を変えるまでの威力を持っていました。
私の大学は2年生で所属学科を決めるシステムになっており、私はアインシュタインに憧れて物理学科に進もうとしていました。
その私が出会ったのがラマヌジャン(1887-1920)です。彼が描いた2つの絵を見た瞬間、私の中で何かが変わりました。
http://jbpress.ismedia.jp/mwimgs/4/b/400/img_4b7f33022b840f792a0324a10b89a24d369437.jpg
http://jbpress.ismedia.jp/articles/-/46939
2019/03/09(土) 20:18:26.71ID:XY+I2Bbh
>>574
応用数学ではオーバーフローも数学の一種。
576デフォルトの名無しさん
垢版 |
2019/03/09(土) 20:25:11.72ID:hBO8FWAE
>>364

Haskell

main = mapM_ (\c -> putStrLn $ c:[]) "hello"
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況