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

■ このスレッドは過去ログ倉庫に格納されています
2020/11/30(月) 00:04:05.21ID:TF2Czp0y
プログラミングのお題スレです。

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

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

※前スレ
プログラミングのお題スレ Part18
https://mevius.5ch.net/test/read.cgi/tech/1594702426/
2021/03/17(水) 18:15:48.86ID:yxHVVu1O
>>481 JavaScript

const s = `abc"def"ghi"jk
l"mno"pqr"stu"`
let quot = ''
let inQuot = false
for (const c of s) {
if (c === '"') {
inQuot = !inQuot
if (!inQuot) {
console.log('[' + quot + ']')
quot = ''
}
continue
}
if (inQuot) quot += c
}
2021/03/17(水) 19:51:53.10ID:rBKLRnxG
>>481 Ruby
str = <<EOS
abc"def"ghi"jk
l"mno"pqr"stu"
EOS
ans = []
str.chomp.split( ?" ).each_slice( 2 ){|a| a[1] && ans << "[#{a[1]}]" }
puts ans
484483
垢版 |
2021/03/17(水) 19:54:51.45ID:rBKLRnxG
一行だった
str.chomp.split( ?" ).each_slice( 2 ){|a| puts "[#{a[1]}]" if a[1] }
485デフォルトの名無しさん
垢版 |
2021/03/17(水) 20:06:06.04ID:KmnDlqKO
>>481 Common Lisp
https://ideone.com/jTFq2F
2021/03/17(水) 21:41:02.00ID:Z+5MBFDf
>>481
Java
https://paiza.io/projects/yXtzX2TRjwJR8M7L5FPddQ
2021/03/17(水) 22:03:41.35ID:Z+5MBFDf
>>475
Java
https://paiza.io/projects/1lPd6CUbhXvgT28lXYY9lw
488デフォルトの名無しさん
垢版 |
2021/03/18(木) 00:09:08.30ID:hcqC4BQb
>>.481 Python

a='"def"ghi"jk\nl"mno"pqr"stu"'

print (a.split('"')[1:-2:2])
489デフォルトの名無しさん
垢版 |
2021/03/18(木) 02:42:51.16ID:QPQ91MJu
>>481
Kotlin
https://paiza.io/projects/YuEG6qbQJJwhXMYXaysklg

Reader で一文字づつ読むような iterator があるとやり易いなと思ったので作った。
AbstractIterator 使うとほとんど自分で考えないで iterator 作れるから良いな。
2021/03/18(木) 09:08:22.43ID:7Uj1c/fU
>>488
abcはどこ行ったの
2021/03/18(木) 10:39:41.29ID:VrFdbA1m
>>481
haskell
https://ideone.com/sNkn4h
2021/03/20(土) 20:18:04.87ID:ct9wvzVp
お題
1〜6の目のあるサイコロを3つ振って出目の合計が9になる組み合わせの数を出力し
1〜6の目のあるサイコロを3つ振って出目の合計が10になる組み合わせの数を出力してください
2021/03/21(日) 21:33:06.36ID:r4JsJNzA
>>429
Java
https://paiza.io/projects/w_m2vJOA0QuDXv3rfdTeXw
2021/03/21(日) 22:50:12.62ID:nWP+aVzk
>>492
(1,2,6)と(6,2,1)は別カウント?
2021/03/21(日) 23:04:48.74ID:kXzg5oUQ
>>492
別カウントでhaskell
https://ideone.com/tYVMtI
2021/03/22(月) 14:10:20.78ID:gNDsQT3i
>>492
コレ公式使うより普通にdpで計算した方がいいな
haskell
https://ideone.com/4ElczD
2021/03/23(火) 19:53:07.80ID:9/alufVN
>>492
Java
https://paiza.io/projects/rJEqEw-lqApWQ3w1e1Zdpw
2021/03/23(火) 20:11:55.19ID:Q0SAT5in
お題:正方形のタイルが格子状に規則正しく並んでいて、そのサイズは5x5である。そのタイル一つひとつに東西南北(E/W/S/Nで表す)いずれかの矢印が描かれている。
タイルの矢印をたどるとき、ループがあるかどうか判定せよ。
2021/03/23(火) 20:19:07.94ID:Q0SAT5in
SWNSW
EWSNN
WSNNE
EEWWS

EESWW
NWSEE
NWWSS
WENNW

EWESN
SWESW
ENNWS
WSEES
2021/03/23(火) 20:24:22.29ID:Q0SAT5in
>>498
補足。
地図と同じように北は上とします。
2021/03/24(水) 21:45:33.44ID:wwqqOVPx
逆方向に進むのもループ?
経路としては一直線上の往復でループ状には見えないけど
2021/03/24(水) 21:49:39.25ID:9eJTJDpk
>>501
逆方向が続くのもループとします。
すべてのループを#で図示して下さい。
2021/03/24(水) 23:30:54.73ID:qbF1qTNF
なんだ
あるかないか判定するだけじゃなくてループ見つけないといけないのか
2021/03/24(水) 23:38:09.42ID:6ziJ9FkW
>>499
5x4にしか見えないけど一段は空白で良いの?
2021/03/25(木) 03:32:47.52ID:y2Be9aot
>>499
haskell
2021/03/25(木) 03:33:15.95ID:y2Be9aot
>>499
リトライorz
haskell
https://ideone.com/qd0GmG
2021/03/25(木) 08:30:44.54ID:KgGsNP0G
>>504
すみません。5x4でした。
2021/03/26(金) 17:38:06.64ID:f2xA4tvU
>>498 を解けなかった人のために解説!

「数学のグラフ理論を勉強しようね」

以上。。。
2021/03/26(金) 21:29:20.85ID:Sj5mIjo2
>>508
お前が解析と集合論の基礎からやり直せクソ虫が
2021/03/26(金) 22:45:38.30ID:0DIw+LLs
グラフ理論の恩恵はあまり受けられない
単に「ループがあるか否か判定せよ」ならグラフの一次のベッチナンボー計算するだけなので行列のランク計算するライブラリ持っている言語なら終わり
しかし「ループをホントに見つけて軌道の点を#にして出力せよ」では結局各点の軌跡を全部計算するしかない
2021/03/26(金) 23:22:53.00ID:0DIw+LLs
嘘書いた
向き付きグラフのoriented cycle探す問題だからbetti numberだけでは決まらない
しかし遷移行列の固有多項式が0になる事が必要十分条件なのでmaximaやmathematicaなら一撃
512デフォルトの名無しさん
垢版 |
2021/03/27(土) 16:14:39.84ID:+EOa1TvV
>>508
これの場合難しく考えなくてもなぞって行って一度通過した所に戻るならループしている、で良いのでは?
ループの個所を示す必要がある場合は2度戻るかを調べて2度通通過した所だけを抜き出す。
513デフォルトの名無しさん
垢版 |
2021/03/27(土) 16:15:05.65ID:+EOa1TvV
まあいいや。これから作ってみよう。
2021/03/27(土) 17:26:26.72ID:ylVvcLaL
強連結成分分解だっけ?

深さ優先探索を2回すれば、強連結成分分解できるとか
2021/03/27(土) 18:03:52.24ID:H6/ZmwtS
というか難しい数学持ち出してもあまり楽にならない
結局なぞって行くのが1番簡明
2021/03/27(土) 18:32:12.25ID:qeISlB+F
トポロジカルソートして矛盾を見つける
2021/03/27(土) 19:27:34.97ID:K5BOpVLO
>>498 Ruby
https://ideone.com/GgRlaw

ブラウザで見ると空白のサイズがずれてしまう
2021/03/28(日) 03:11:42.96ID:bwNgM3Tx
お題:1のビットが3個ある二進表記文字列が与えられたとき、次に大きい
1のビットが3個ある二進表記文字列を求める。

111 -> 1011
1110 -> 10011
101100 -> 110001
2021/03/28(日) 09:27:24.37ID:G8gzYUsv
>>518
haskell
https://ideone.com/ossRKu
520デフォルトの名無しさん
垢版 |
2021/03/28(日) 10:06:41.16ID:bm0TPZRc
↓のQ4の解き方わかる人いたら、教えてほしいです、、、

https://procon.disco.co.jp/backnumber/hiroshima2017/index.html#Q4_jump
2021/03/28(日) 11:23:09.31ID:DP4dwTUs
>>518
C++
https://ideone.com/JZSLMR
522デフォルトの名無しさん
垢版 |
2021/03/28(日) 11:24:32.88ID:4K917Y8t
>>520
マルチはよくないなぁ

以下のプログラミングテスト(Q4)の解き方を教えて下さい。http... - Yahoo!知恵袋
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q13240901843
2021/03/28(日) 11:59:07.61ID:GXcEOVy1
幅優先探索で各まとまりごとに数える
イメージとしては水を流すかんじ
2021/03/28(日) 12:00:53.63ID:kEDn86wz
そんな単純じゃなかった
すまん
525デフォルトの名無しさん
垢版 |
2021/03/28(日) 12:28:42.14ID:iZclnQMF
>>498
python3で頑張りました。
https://ideone.com/jRsBaI
526デフォルトの名無しさん
垢版 |
2021/03/28(日) 12:38:30.87ID:iZclnQMF
>>518
python3。
https://ideone.com/J7MbiO
2021/03/28(日) 13:28:28.53ID:PtqbLDQy
>>520
たぶん
外周に番兵を置いて、番兵に接触する空白も番兵とみなす、このとき斜め方向に接触する空白も番兵とする。
あとはそれぞれコマの四方向のコマと空白のつながりから塊を調べる、コマ数をカウントすれば塊の数。
こんな感じ
528デフォルトの名無しさん
垢版 |
2021/03/28(日) 14:18:33.80ID:vxTq7Eni
>>498
C
https://ideone.com/y4IBiu
529デフォルトの名無しさん
垢版 |
2021/03/28(日) 22:37:55.92ID:P/SJyVCP
>>498
なぞって行って2度通過した個所を出してみたら EW みたいな進んだ方向にただ戻る個所もループという事になったのだが、
それもアリか?アリならできたぞ。そういうのは除外となるともう一段それの発見のための処理を追加する必要がある。
2021/03/28(日) 23:02:47.52ID:omLVBKFC
>>529
上の方でありだって
531527
垢版 |
2021/03/29(月) 00:19:25.86ID:FlEtzfzI
>>520 Ruby
https://ideone.com/n1jLCH
2021/03/29(月) 00:44:12.81ID:DFO7aycs
お題: 上下左右に広がる、がらんどうのX-Y二次元空間がある。直径10cmで質量7kgで均一な密度のボール状の物体Pの中心は、
時刻ゼロのとき、A地点(x1, y1)にあり、ここから謎の力により空中に固定される非常に丈夫な一枚の板と、時刻ゼロより発生する重力を使って、B地点(x2, y2)まで誘導したい。BはAより下にある(y1>y2)。
板は固定すると重力が働いてもびくとも動かない。物体PはB地点を必ず一度以上通過しなければならない。さてどのように板を設置すればいいか。時刻がゼロになる前に板を注文して固定しなければならない。
板は真っ直ぐ直線的であり、板の厚みは考慮しない。摩擦と空気抵抗は無視し、反発係数は1とする。この板は非常に高価なため(1cmが3万円)、なるべく短い長さで注文する必要がある。
重力加速度は下向きで地球上と同じ強さとする。設置する板の両端の座標(x3, y3)〜(x4, y4)[cm]と使用する板の費用price[円]と、時刻ゼロよりB地点到達にかかる時間T[秒]を求めよ。
2021/03/29(月) 00:48:38.14ID:DFO7aycs
>>532
例1)
(x1, y1, x2, y2) == (1, 3, 4, 1).

例2)
(x1, y1, x2, y2) == (0, 10, -8, 0).

例3)
(x1, y1, x2, y2) == (-5, 3, 5, 0).
2021/03/29(月) 07:42:15.30ID:cZtrSLJU
>>532
二次元空間なのにボール状の物体が存在するのか。重力加速度の下向きってどっち?
蟻人間ていつも凝った設定を作ろうとして杜撰なものばかりなイメージがある
2021/03/29(月) 07:43:41.48ID:cZtrSLJU
あ、下は書いてあるのね
2021/03/29(月) 07:47:56.84ID:CQMmtcGJ
そりゃ知能が蟻並みだからな
2021/03/29(月) 08:11:58.61ID:JXmb9uoD
adhdとか何か(学習|発達)障害持ってるんでしょ
ガイジなのは一見して分かるし
2021/03/29(月) 09:01:21.30ID:GDKfaeCK
少なくとも>>532は最小値が存在せんやろ
2021/03/29(月) 09:52:29.10ID:DFO7aycs
注文できる板の最小の長さは1cmとします。初速はゼロとします。
2021/03/29(月) 09:54:01.19ID:GDKfaeCK
じゃあ答えは0
2021/03/29(月) 09:54:28.27ID:GDKfaeCK
じゃなくて1cm
542デフォルトの名無しさん
垢版 |
2021/03/29(月) 10:03:17.39ID:qQUSl3DL
(x1,y1)から右下の(x2,y2)へ45度のスロープ作ったら到達時間は何秒かって問題だろ
板の値段は30000√2円
543デフォルトの名無しさん
垢版 |
2021/03/29(月) 10:08:28.37ID:qQUSl3DL
例にあるマイナス座標の意味がわからない
2021/03/29(月) 10:19:24.26ID:DFO7aycs
与えられたパラメータでBを通過するか判定する関数fを定義して下さい。fが正しく定義され、fに成功するパラメータならば正解とします。ブルートフォースや空間探索を使ってもかまいません。
2021/03/29(月) 10:21:35.37ID:DFO7aycs
>>542
はね返りを使えば板はもっと短くなるかと。右下ではなく左下の場合も可能。
2021/03/29(月) 11:08:10.66ID:GDKfaeCK
>>545
板の設置位置に制限がなく反発係数が1、すなわち運動エネルギーのロスが0なら目標地点がどんなにとおくても、高低差がどんなに小さくても到達できる
hだけ下方に設置してθだけ傾けた時を考える
板に反射した地点を原点、t=0として、初速は√(2gh)、最高到達点までの時間は√(2h/g) cos2θ、水平方向速度は√(2gh)sin2θ、反発地点から最高到達点までの水平距離はhsin4θ、最高到達点の高さはhcos^2(2θ)
方程式
x2-x1=2hsin(2θ)cos(2θ)
y2-y1=-hcos^2(2θ)
はy2-y1<0である時常に解もつ
547デフォルトの名無しさん
垢版 |
2021/03/29(月) 11:35:09.16ID:qQUSl3DL
ちょっとだけ傾いててほぼ水平なら、板の長さは限りなく1cmに近づき、到達時間は無限に近づくわな
あとはB点が線分上にあるか計算するだけでいい
2021/03/29(月) 11:36:43.02ID:DFO7aycs
>>546
だいぶ近いけど、ボールの直径を考慮する必要があるよ。
2021/03/29(月) 12:31:33.01ID:jg4xlr05
>>547
どのみち常に解を持つから問題になってない
2021/03/29(月) 14:04:34.12ID:KXpoeU4l
お題:次の文章を解読するプログラムを作れ。

「この文書は{SJIS:93C192E894E996A7}です。{SJIS:95948A4F8ED2}が閲覧すると、{SJIS:94B182B982E7}れます。」
551520
垢版 |
2021/03/29(月) 21:19:00.34ID:IYjRcjQN
>>522
すみません、ルール違反なんですね…以後気を付けます。

>>527
>>531
ありがとうございます!
考え方まで記載いただき、本当に助かりました。
552デフォルトの名無しさん
垢版 |
2021/03/30(火) 03:21:24.51ID:6PAqNnFi
>>518
Kotlin
https://paiza.io/projects/Y2U2DgK9pKbNVqwu8gjpQQ

1のビットを数える方法は以前どっかで見た方法をそのまんま使った。
これ + じゃなくて xor にするとパリティビット求められるんだよね。
553デフォルトの名無しさん
垢版 |
2021/03/31(水) 02:13:57.15ID:tcwzWNiV
>>550
bash のコマンドラインから Perl 使ってでできた。標準入力から入力して標準出力に出力する。但し端末の入出力は UTF-8 。


perl -MEncode=from_to -pe 's/\{SJIS:(.*?)\}/from_to($s=pack("H*",$1),"cp932","utf8");$s/ge'
554デフォルトの名無しさん
垢版 |
2021/03/31(水) 22:33:07.77ID:IiEAnaBT
お題
数字のみの文字列を昇順の数値の列になるように
区切るすべての場合を求める。
0で始まるものは数値とはみなさない。
数字の順番は変更しない。
2021/03/31(水) 23:13:57.39ID:9YkxM+j+
>>554
入力および対応する出力例をください
2021/04/01(木) 01:04:50.12ID:b9nwt5sF
>>554
長さ1も可、狭義単調増加、文字列は全て0〜9のみとして
Haskell

https://ideone.com/zOXDf0

入力 "20210401"

出力 [[20210401],[2,210401],[2,21,401],[2,210,401],[20,210401],[20,21,401],[20,210,401],[202,10401]]
2021/04/01(木) 02:05:13.86ID:b9nwt5sF
>>554

> 0で始まるものは数値とはみなさない。

↑これ見落としてた
Haskell
https://ideone.com/OyB9LO

入力:20210401
出力:[[20210401],[20,210401],[20,210,401],[202,10401]]
558デフォルトの名無しさん
垢版 |
2021/04/01(木) 19:18:16.37ID:E1T4qUFj
ところで「チンポがシコシコする」という日本語表現は、学術的に正しいと言えるのか?

チンポ「を」シコシコするのではなくて、チンポ「が」シコシコする。この場合、「チンポ」は主語となる。

オブジェクト指向で言う「集約」は2種類あって、全体(俺)と部分(チンポ)が繋がっている場合と、
全体(俺)と部分(チンポ)が別々になっている場合とが考えられる。けれども「チンポ」はそれ自体
が独立した生き物であり、所有者の意思とは無関係に、自ら勃起して「シコシコする」。
例えば寝てる時にエロい夢みて朝起きてみたらチンコが勃起して射精してたとか。

違うか?

「胸がドキドキする」は良いが、「チンポがシコシコする」はダメな理由を、50字以内で述べろ!
2021/04/01(木) 21:20:26.68ID:TdeptelQ
「象は鼻が長い」でググれ
2021/04/01(木) 21:38:06.12ID:yB6nLlLi
お題

下の入力文字列を、「あいう」で始まる文字列に、分割せよ。
出力形式は、配列・改行区切りの文字列などで良い

入力
abあいう1あいう23あいうxyz

出力
["あいう1", "あいう23", "あいうxyz"]
2021/04/02(金) 01:30:32.24ID:X/M76jvg
>>560
haskell
https://ideone.com/mPtrig
2021/04/02(金) 07:24:15.78ID:7wcW7Xmo
>>560 Ruby

p "あいう1あいう23あいうxyz".scan(/あいう.*?(?=あいう|$)/)

# => ["あいう1", "あいう23", "あいうxyz"]
2021/04/02(金) 08:28:35.26ID:FK0Gf9rF
>>560 Ruby
p "abあいう1あいう23あいうxyz".split(/(?=あいう)/)[1..]
2021/04/02(金) 18:13:44.89ID:mPelzphB
>>558
チンポに主体性はない。胸は心に繋がって心には主体性がある
2021/04/02(金) 18:20:21.68ID:LmM0ztAD
>>564
主体性とはなにか説明せよ
566560
垢版 |
2021/04/02(金) 21:51:17.99ID:nXGaO3xM
>>563
2.5 では動かないけど、2.6 では動いた
2021/04/03(土) 08:17:43.34ID:McIcD2xB
>>566
予定では 2.5系は今年の3月末で公式サポート切れですので早めの移行をおすすめします
https://www.ruby-lang.org/ja/news/2020/04/05/support-of-ruby-2-4-has-ended/
2021/04/03(土) 20:31:52.16ID:HCHjqGIn
>>560
Java
https://paiza.io/projects/pfDHDvTyLKx2jlDunhjJSg
2021/04/04(日) 01:19:15.65ID:TsxWz5pg
>>518
Java
https://paiza.io/projects/uS8dmQmZ-tOGGtvCYbGxsQ
2021/04/04(日) 04:15:17.77ID:i8ul4qcC
>>560
Perl でこんな感じでできた。(1行目はbashのコマンドラインからの入力。2行目が出力)

echo 'abあいう1あいう23あいうxyz' | perl -ne 'chomp;@d=split/あいう/;shift(@d);print "[" . join(", ", map { qq("あいう$_") } @d) . "]\n"'
["あいう1", "あいう23", "あいうxyz"]
2021/04/05(月) 20:31:30.41ID:o12owsbD
「像は鼻が長い」でグクった
なるほど気付かなかった
2021/04/06(火) 01:25:45.23ID:zN4gWhl4
次の検索結果を表示しています: 象は鼻が長い
2021/04/06(火) 13:58:55.66ID:ounqm2YM
数学板より
お題:足して9
各桁の和が9である自然数を小さい物順に並べる
9,18,27,36,45,54,63,72,81,90,108,117....
n番目を求める関数を実装せよ

入力:12
出力:117

入力:12345
出力:100204200

入力:123456789
出力:30000100000100000021000001000
2021/04/06(火) 15:10:20.38ID:8eKBKzx+
プロおじのオナニースレ
2021/04/06(火) 15:49:51.64ID:5jp1nWlk
プロおじってなんだ?
2021/04/06(火) 15:59:26.26ID:sYlI8eNJ
数学板の荒らし
2021/04/06(火) 16:27:52.36ID:vlqQXHl9
>>573 Perl
https://ideone.com/CQvj02
2021/04/06(火) 16:52:22.76ID:sYlI8eNJ
>>577
なるほど
うまいな
2021/04/06(火) 16:55:57.07ID:RTS/XrJR
数学板では
プログラム好き好きおじさんと
プログラム怖い怖いおじさんが
意味の無い罵り愛を展開しているのだそうな
5809
垢版 |
2021/04/07(水) 01:03:14.39ID:lZ4PPQGS
意味のない愛か…
イサキが大漁そうだな
アホ草
2021/04/07(水) 03:29:39.17ID:nO5/cs4F
プログラムこわい

落語かよ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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