プログラミングのお題スレ 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/05/06(木) 21:51:43.21ID:q2LSo660
>>670
実力を隠さなくてもいいよ。
672デフォルトの名無しさん
垢版 |
2021/05/06(木) 22:23:58.98ID:wWHyWlvf
>>668
#include <studio.h>
2021/05/07(金) 13:48:08.72ID:H+I+sfZ3
WHEREコマンドはReactOSに既に実装されています。
なので、(あえて作る場合でも)それを基にしてく
ださい(よ、頼むからさ。失礼だと思わないの?)

>コマンドではなく機能です。そして(既に実装されている)
>それは、この目的に対して便利ではありません。

貴方は公開されている(ReactOS実装の?)関数の
コードをパクって、独立したアプリケーションにしたと
いうわけですね。
というのであれば(我々の)メインストリームコードと
同期しているサードパーティコードみたいな感じを
装う必要はありません(はっきり言わせてもらえば
「しないで下さい」)
2021/05/07(金) 13:57:45.37ID:H+I+sfZ3
システムで色々な箇所で使用される短縮名称
を正式名称と(相互)変換する機能なんて
アルゴリズムとかの題材とかには不適。
泥臭い部分がかなりあるシステム固有の設計
の話になるしたとえコードは公開しているに
せよ部外者の立ち入りは歓迎されないのは
当然。 実情を詳しく知らない外部の人に
任せられる部分じゃなかったりするから。
675デフォルトの名無しさん
垢版 |
2021/05/07(金) 19:10:13.55ID:FdFZQv1E
>>656 JavaScript
"A/B/B/B".replace(/^\/|\/?[^\/]*/g, (_, o, s) => console.log(s.substring(0, o)));
676Mb
垢版 |
2021/05/07(金) 22:02:57.18ID:P+8SzjSX
読み仮名(ひらがな、カタカナ)から、単純なコード順の整列キーを
生成するルーチンを書く。
単純にコード順で整列すると、「ガレージ」は「カレー」の直後には
こなくて、「か(蚊)」の後ではなく、「ガ(蛾)」の後に
来てしまう。
比較関数を定義しようとすると、順序関係が一意に決まらなくなって
整列ルーチンが止まらなくなる。また、SQL などの整列機能が利用できない。
業務系のシステムだと、企業名だとか個人名だとかの読みで整列する
要求があるので、読みの入力時に整列用のキーを生成しておくのが
吉と思われる。
2021/05/08(土) 01:15:44.80ID:qYTbA2A2
>>651 C++
エクセル使ったことないから挙動が違ってたらごめんね
最後のほうはやっつけで書いたのでバグってるかもしれない

https://wandbox.org/permlink/AfU4a1aLrkxhkErW
2021/05/08(土) 05:04:40.43ID:PD8fhCnz
>>676 Perl5
仮名を清音に変換してから比較する
https://ideone.com/bzxwnp
2021/05/08(土) 06:08:52.93ID:tI5Uqx1l
>>677
うわー、1000行近い大作。しかもかなりモダンなC++。ひょえーー。
2021/05/08(土) 14:56:47.01ID:bO3UufY6
>>677
ちょっと修正
同じ優先順位の演算子が左結合になってなかった

https://wandbox.org/permlink/2DkQ32dFPC7i8ksn
2021/05/09(日) 21:15:00.81ID:1F2i56L2
お題:
N 人が一列に並んでおり、左から i 人目の人は色 C[i] の服を着ています。

あるチームは次の条件を満たすとき、良いチームであると言います。
- 0 人以上が所属している。
- すべての色 i について、色 i の服を着た人がチームに偶数人所属している。

N 人から "連続する" 0 人以上を選んで良いチームを作るとき、
チームに所属する人の数としてあり得る最大値を求めて下さい。

制約:
1≦N≦10^6
1≦C[i]≦60

入力:
N
C1 C2 ... CN

入力例 1
5
1 2 3 3 1

出力例 1
2

入力例 2
5
1 2 3 4 5

出力例 2
0
2021/05/09(日) 22:47:51.84ID:YYfh4rSr
>>681
Haskell

import Data.List

mxLenGoodTeams cs = let
teams = [ take j $ drop i $ cs |
i <- [ 0..( length cs - 1) ],
j <- [ 2 .. ( length cs - i ) ] ]
isGoodTeam team
= all ( even . length ) $ group $ sort $ team
in maximum $ ( 0 : ) $ map length $ filter isGoodTeam teams

main = do
print $ mxLenGoodTeams $ [ 1,2,3,3,1 ]
print $ mxLenGoodTeams $ [ 1,2,3,4,5 ]
2021/05/10(月) 00:22:13.18ID:mAsL1Pq+
>>681
python
https://ideone.com/8ZEsh2
2021/05/10(月) 01:18:02.63ID:DR29Zbhh
C++ O(N log N)

https://wandbox.org/permlink/W31B0sNEOOuXELla
2021/05/10(月) 01:18:51.44ID:DR29Zbhh
>>681
686デフォルトの名無しさん
垢版 |
2021/05/11(火) 00:16:24.82ID:sq5XRTcM
>>681
問題の意味がわからない。

> - すべての色 i について、色 i の服を着た人がチームに偶数人所属している。

とはどういう意味なのか?
「すべての色 i 」とは何か?
「色 i の服を着た人がチームに偶数人所属」というのはどういう意味なのか? 同じ色の服を着た人は存在しないのだよな?
2021/05/11(火) 05:10:59.51ID:TUYWs3v7
毎度ながら日本語も問題作成も入出力例もクッソ下手だとは思うが
おまえはおまえで読解力無さ過ぎ
連続した (1≦10^6)個のデータ
データ内容は 1≦60
データ内容が偶数個となる連続した部分の最大長
1 2 2 3 3 4 4 5 → 2 2 3 3 4 4 → 6
1 2 3 4 2 3 4 5 → 2 3 4 2 3 4 → 6
1 2 3 4 5 2 3 4 → - → 0
1 2 3 3 2 4 5 4 → 2 3 3 2 → 4
1 2 3 2 2 3 2 4 → 2 3 2 2 3 2 → 6

まあ例に関しては俺も人のこと言えない
陥りやすいミスを確認しやすいキラーサンプル的な例がいくつかあればベスト
2021/05/11(火) 20:07:35.50ID:m1fDyeBb
入出力例は不親切だとは思うが
問題文自体は問題ないでしょう
あれが理解できないというのであれば理解できない側の能力に問題がある
2021/05/11(火) 20:11:36.25ID:jkEXfYRr
色C[i]
色i
終了
2021/05/11(火) 20:21:52.62ID:IH6PME9X
色C[i]は「i番目の人が来ている服の色」
色iは単に色
2021/05/11(火) 20:23:51.68ID:PxX+uCNu
正しくないんだから突っ込まれて当然

>>690
Fラン文系か?
2021/05/11(火) 20:27:14.53ID:IH6PME9X
>>691
真面目に何がダメだったのかわからない
教えてください...
2021/05/11(火) 20:30:24.67ID:AKHuOMpp
別にiが添え字の自然数と宣言しているわけでもなし文法的にも間違ってない
アスペでもない限り理解できる
2021/05/11(火) 20:35:40.14ID:jkEXfYRr
C[blue]みたいな?
iはインデックスじゃないんだ
2021/05/11(火) 20:38:54.00ID:PxX+uCNu
出題の意図は>>681で分かる
>>681はバカということも分かる
2021/05/11(火) 20:40:02.84ID:aw7aUPl3
>>695
お、perlおじさんか?
2021/05/11(火) 20:40:22.57ID:PxX+uCNu
>>686が嫌味で書いたのか本当にわからなかったのかはわからない
698デフォルトの名無しさん
垢版 |
2021/05/12(水) 10:57:02.98ID:xHZdId+E
プログラミング言語が使えても日本語が使えないのでは話が伝わらない。
それだったらプログラミング言語でそのまま書いてくれた方がここのスレでは話が通じる。
699デフォルトの名無しさん
垢版 |
2021/05/12(水) 12:28:32.10ID:kJR81pbU
・左から100番目の人はC[100]の色の服を着ていると読める
・列を自由に入力して良いのなら、最大値はN以下の偶数となり自明
2021/05/12(水) 14:17:43.85ID:Ro8bxiRw
まるで競プロだな
2021/05/12(水) 16:05:32.13ID:ASs2TDTE
>>681
出題者です
問題文がわかりずらかったみたいですいません

想定解法書きます (配列はすべて 0-index です)
A[0] = 0
A[i] = A[i - 1] xor (2^(C[i - 1] - 1)) (1≦i≦N)
な配列 A を考えます

ある区間 [L, R) がいいチームであるならば、A[R] xor A[L] = 0 です (累積和と同じ発想です)
両辺に A[R] を xor すると A[L] = A[R] になります

R を全探索しながらあり得る L のうちで一番左側のものを連想配列などで求めることで
N = 10^6 などのケースでも高速に答えを得ることができます
702デフォルトの名無しさん
垢版 |
2021/05/13(木) 13:08:14.73ID:tJiNVUVY
問題文の他例が二つしかないから分かりにくい
>>687の説明みるまで何が良いチームなのか分かりにくい
2021/05/13(木) 19:07:49.38ID:3W7MB1VC
> 一列に並んでおり、左から
左てなんだ?先頭末尾なら分かるが
> 良いチームであると言います
なんだそのモヤる日本語。普通にチームで良いだろ
チームの条件として色が偶数があれば良いんだから
> i 人目の人は色 C[i] の服を着て
あとの制約見るまで一意かと勘違いする。説明でいちいち C[i] と置くのもイミフ

説明をただただややこしくしてるだけ
仕事で仕様の説明でこんな喩え話してきたらキレるわ
2021/05/13(木) 21:41:53.75ID:B4CYAsif
短気すぎるだろ
705Mb
垢版 |
2021/05/13(木) 21:42:39.21ID:kEXKw6jf
>>693
> アスペでもない限り理解できる
「アスペルガー症候群」というのは、昔は「高機能広汎性発達障害」といって、
わりと馬鹿にしたもんでもない。かくいう私も、いわゆる「アスペ」の
一人だ。

ここで問題。日本語の(現代語の)動詞のうち、アルゴリズム的に押さえこめる
動詞(規則活用動詞)"以外の" 動詞はいくつあるか。
なお、「長尾の法則」(頭から見ていって、非・漢字から漢字に変化するところで、
文節は切れる)は使ってよし(「お」とか「ご」とかは名詞につくから、
このさい関係はなし)。
とりあえず六つはあって、サ変とかカ変とかは既知だけど、「そもそも、
どれだけあるのか?」っつー話になると、かなり面倒。
2021/05/13(木) 21:45:18.19ID:B4CYAsif
>>705
> アルゴリズム的に押さえこめる

これどういう意味? 意味わかんなすぎてキレそうなんだけど
2021/05/13(木) 22:16:56.76ID:lZ9C/hi/
お前も短気すぎるw
2021/05/13(木) 23:36:26.05ID:mWio4uhK
さっさとPythonやらせれ
ちょっとでいいから
20年前に覚えたPerlに変わるマクロがいるんじゃああああああ

VBAでいいとかいわない
709デフォルトの名無しさん
垢版 |
2021/05/14(金) 11:54:50.47ID:l/Mcr9Yu
バカの書いた不適切な文書は不和をもたらす
>>681のことな
2021/05/14(金) 13:21:20.02ID:23AH7lhZ
もうこれからは出題するときは頭に馬鹿には理解できない問題
ってとりあえず書いておけばいいのに
そうすれば荒れることもなくなるだろうから
2021/05/14(金) 13:38:00.72ID:f3dsViZI
【コミュニティの一生】

面白い人が面白いことをする

面白いから凡人が集まってくる

住み着いた凡人が居場所を守るために主張し始める

面白い人が見切りをつけて居なくなる

残った凡人が面白くないことをする

面白くないので皆居なくなる
712デフォルトの名無しさん
垢版 |
2021/05/14(金) 14:08:14.84ID:4R64iY9Y
問題を作るのは難しいからしゃあない
どんな入力で、求めるのが値なのかアルゴリズムなのかを明示すればいい
2021/05/14(金) 15:59:25.59ID:BwDBHw+5
お題: join関数を自作せよ
join関数は第2引数の配列を第1引数の文字列で連結する関数である

func join(sep, array)

s = join(':', ['1', '2', '3'])
puts(s)
# 1:2:3

sepは文字列で、文字列で無かった場合の動作は未定義である
arrayは長さが0以上の配列で要素は文字列である。それ以外の構造は未定義である
2021/05/14(金) 16:23:22.95ID:WbiXCFQ1
先に解答例を作ってそこから試験問題作る先生のように
逆にたどって問題作れば分かり易い問題作れるのに

イキって、よーし、ぼくちゃん問題作っちゃるぞー!って、
解答未定のまま問題から作り始めるから今回のようにアフォなことになるんよ
2021/05/14(金) 16:35:13.82ID:cn5v//cT
python
def joint(s,x,y=""):
if len(x) == 1:
print(f"{x[-1]}{y}")
else:
joint(s,x[:-1],f"{s}{x[-1]}{y}"))
716デフォルトの名無しさん
垢版 |
2021/05/14(金) 16:45:17.02ID:4R64iY9Y
>>713
C
https://ideone.com/ecufbl
2021/05/14(金) 19:57:58.55ID:BwDBHw+5
>>713
C++
https://ideone.com/HCgb0A

モダンなC++だともっと書き方違うんだろうか?
11, 14あたりしか知らないので不安
2021/05/14(金) 20:06:49.42ID:m9ewaxml
>>713
Haskell

join x = tail . concat . map ( ( x : ) . return )

main = do
print $ join ':' "123"
print $ join ' ' "Hello"
719デフォルトの名無しさん
垢版 |
2021/05/14(金) 20:28:04.72ID:DpIMp/DM
>>713 Lua
function join(d, a)
local r = a[1]
for i = 2, #a do
r = r .. d .. a[i]
end
return r
end

print(join(":", {"1", "2", "3"}))
実行結果
1:2:3
2021/05/14(金) 20:49:04.94ID:SGxg0iSp
def join(sep, list)
□return sep.join(list)
721デフォルトの名無しさん
垢版 |
2021/05/14(金) 21:20:46.78ID:9KJ7FZky
>>713 sh
https://ideone.com/wlbCfa
2021/05/14(金) 21:50:11.90ID:G1LerHLY
>>713
Java
https://paiza.io/projects/XDT_nug6wRMHKiGsDF55Dw
2021/05/14(金) 22:06:57.32ID:YwXzhkVg
お題: split関数を自作せよ。
split関数は第2引数の文字列を第1引数の文字列を区切りとして分割した配列を返す関数である。

func split(sep, str)

s = split(':', '1:2:3')
puts(s)
# [1, 2, 3]

sepは文字列で、文字列で無かった場合の動作は未定義である。sepの長さがゼロの場合は第二引数を一文字ずつ分割する。
strは長さが0以上の文字列である。
2021/05/14(金) 22:12:56.30ID:vm/4NlOj
join見て脊髄反射する虫並みの思考
725デフォルトの名無しさん
垢版 |
2021/05/14(金) 23:14:10.50ID:RR8r1Nrv
>>713
Kotlin または Kotlin script

関数定義

fun join(sep: String, vararg a: String) = a.reduce { acc, s -> "$acc$sep$s" }

使用する時
println(join(",", "abc", "def", "1", "23", "456"))
または
println(join(",", arrayOf("abc", "def", "1", "23", "456")))

これで出力はどちらもこうなる。

abc,def,1,23,456
2021/05/14(金) 23:19:19.70ID:SGxg0iSp
def split(sep,str)
□return str.split(sep)
727デフォルトの名無しさん
垢版 |
2021/05/14(金) 23:24:38.63ID:4R64iY9Y
>>723
C
https://ideone.com/MFemfK
728デフォルトの名無しさん
垢版 |
2021/05/15(土) 00:15:44.50ID:yahE8f7K
sepの長さがゼロなら一文字ずつ分割するか
忘れてたわ
2021/05/15(土) 00:33:17.27ID:YdirCY4B
出題者は効率のいいアルゴリズムを考え(>>701)させたかったが、
回答者は言われた通りのものを実装するだけのお題を望んでたって感じか (だから問題文がややこしいとか言われるんだろう)
このスレ向きのお題じゃなかったな
730デフォルトの名無しさん
垢版 |
2021/05/15(土) 00:56:03.56ID:JNomAybm
ンなワケねえだろ
お前本人か?

競プロの他の問題文と比べて明らかに文章の質が低いじゃん
731デフォルトの名無しさん
垢版 |
2021/05/15(土) 02:20:17.81ID:yahE8f7K
>>723
C
直しといた
2バイト文字は追加料金
https://ideone.com/CO94bV
2021/05/15(土) 09:21:42.89ID:YsUBX88Q
やはり速度が問題ならその旨ちゃんと書かないとわからない
そもそもプログラムは早ければいいわけではないし、短ければいいわけでもないし、可読性が高ければそれでいいわけでもない
それらは全部トレードオフの関係があってどこにウェイトを置くかはそれが使われる場面場面で変わってくる
「このお題では速度重視」というならその旨明示しないと
2021/05/15(土) 09:48:59.68ID:GxLTBboh
ゴルフ問題でもいいぞ
734デフォルトの名無しさん
垢版 |
2021/05/15(土) 12:53:51.38ID:yahE8f7K
100桁以下の60進数の数列があって、条件に適合し得る部分の最大の長さはいくらかだから
N以下の偶数の最大値で自明だろ
だから何の問題なのか分からんって人がいるんじゃね?
735デフォルトの名無しさん
垢版 |
2021/05/15(土) 13:06:25.58ID:yahE8f7K
100桁じゃねえ100万桁だ
736デフォルトの名無しさん
垢版 |
2021/05/15(土) 13:07:07.72ID:yahE8f7K
100万桁じゃねえ100万以下だ
737デフォルトの名無しさん
垢版 |
2021/05/15(土) 13:08:15.70ID:yahE8f7K
100万桁で良いのか
寝ぼけてんな、失礼
738デフォルトの名無しさん
垢版 |
2021/05/15(土) 15:54:17.99ID:d+8scdvN
>>723
Kotlin
https://paiza.io/projects/rXwwuvtSVOP4hMo6FOyZuA

どうせループさせるんだから Iterator 作ってやっちゃおうか、など、色々やって長くなった。
2021/05/15(土) 15:57:04.95ID:d+8scdvN
区切り文字列が長さ0の時の処理がバグってて最後の文字がなくなるな。
こっそり直しておこう。
2021/05/15(土) 15:58:56.01ID:d+8scdvN
直った。
2021/05/16(日) 11:50:18.74ID:EAK6Onef
お題: 任意のテキストデータから数値データを抽出し、列挙するプログラム。

「12あいうえお34.5かき7.0くけこ」
→[12, 34.5, 7].

「0.12ABC3.45DE0.02FGH」
→[0.12, 3.45, 0.02].
2021/05/16(日) 12:30:25.44ID:KcTdWT19
>>741
document.querySelectorAll('span.name').forEach(e => {
  if(e.innerText.indexOf('蟻人間') >= 0){
    e.parentElement.parentElement.style.display = 'none';
}
})
743デフォルトの名無しさん
垢版 |
2021/05/16(日) 13:03:07.41ID:rG9ernac
>>741 Common Lisp
https://ideone.com/2uH8t4
744デフォルトの名無しさん
垢版 |
2021/05/16(日) 13:38:29.85ID:rG9ernac
>>743
この string-split-if には不満が残る

(string-split-if #'alpha-char-p "123abc456")
実際の結果: ("123" "" "" "456")
期待した結果: ("123" "456")
2021/05/16(日) 13:51:01.02ID:EAK6Onef
>>742
NG設定してね。
746デフォルトの名無しさん
垢版 |
2021/05/16(日) 16:25:18.39ID:bjgpsQdf
>>741
Eを使った浮動小数点の表現はどうする? 1.23E-8 みたいな。とりあえずなしで良い?
作るとしたら正規表現使うからあろうがなかろうがたいした問題ではないが。
747デフォルトの名無しさん
垢版 |
2021/05/16(日) 16:28:58.27ID:bjgpsQdf
>>741
Perl5

もうほとんど何も考えてない。文字列切り出してるだけ。
以下は Linux で bash のコマンドラインで実行したところ。

$ echo '0.12ABC3.45DE0.02FGH' | perl -ne 'while(/(\d+(\.\d+)?)/g){print "$1\n"}'
0.12
3.45
0.02
$
2021/05/16(日) 18:23:07.91ID:EAK6Onef
お題: テキストデータに含まれている数値データを全部2倍にしたテキストを返すプログラム。

「7ABC123DE0.5FG82」
→「14ABC246DE1FG164」.

「あいう75.04えおか54きく-25」
→「あいう150.08えおか108きく-50」.
749デフォルトの名無しさん
垢版 |
2021/05/16(日) 18:35:21.17ID:bjgpsQdf
>>748
Perl5

Perlだとこういうのはほとんど何も考えずに作れて楽だね。

$ ( echo '7ABC123DE0.5FG82' ; echo 'あいう75.04えおか54きく-25' ) | perl -pe 's/(\d+(\.\d+)?)/$1*2/ge;'
14ABC246DE1FG164
あいう150.08えおか108きく-50
$
750デフォルトの名無しさん
垢版 |
2021/05/16(日) 19:37:22.32ID:bjgpsQdf
>>748
Kotlin script

小数点以下の桁数を元の文字列に合わせるために java.text.DecimalFormat クラスを使用しているが、長くなってしまったなあ。
以下はコマンドラインから kotlinc で動かした Kotlin の REPL での入力と出力(>>> がプロンプト)。

>>> val ls = listOf("7ABC123DE0.5FG82", "あいう75.04えおか54きく-25")
>>> ls.forEach { println(it.replace(Regex("""\d+(\.\d+)?""")) { java.text.DecimalFormat(it.value.replace(Regex("\\d"), "#")).format(it.value.toDouble() * 2.0) }) }
14ABC246DE1FG164
あいう150.08えおか108きく-50
>>>
2021/05/16(日) 20:57:57.47ID:kWXR6C+3
お題:メールアドレスの難読化。

"info@example.com" ---> "info at example dot com".

"katayama.hirofumi.mz@example.com" ---> "katayama dot hirofumi dot mz at example dot com".
752デフォルトの名無しさん
垢版 |
2021/05/17(月) 02:01:43.00ID:GcVF7Ydc
お題:オートマドリング
以下の各問の要求された面積の所要室及び廊下を配置した、最も全体面積の小さい間取り図を出力せよ。
また、各間取り図は次の条件を満たすものとする。

・各室は廊下に面し、建物全体の形は長方形とする。
・間取り図は一文字を一坪とし、室はアルファベット、廊下は+で表示。
・廊下の面積は自由に決めて良い。
・最小面積の間取り図が複数の場合は、そのうち一つを表示すれば良い。
・全体面積(坪)を間取り図の下に表示。

【例】
所要室と要求面積(坪)
A:4, B:6, C:8, D:4

【出力例】
AAAA+DDD
BBBB+CCD
BBCCCCCC
(24)

【問1】
A:3, B:5, C:4

【問2】
A:8, B:4, C:6

【問3】
A:5, B:2, C:3, D:6, E,2
2021/05/17(月) 03:50:50.63ID:LfCDcICC
めちゃくちゃ住みにくそうな家だ
2021/05/17(月) 06:56:11.27ID:9WebrBNt
>>752
廊下は外周に接する必要があるかどうかとか、廊下は一続きか二つ以上あっても良いかとか、その辺は自由?
755デフォルトの名無しさん
垢版 |
2021/05/17(月) 09:38:24.31ID:9/Dbs2kw
間取りが出来てればいいんで問題ないのだろう
人間が住むとも書かれてないし地球上のものだという保証もない

規定数の記号が並んでいればいいんじゃないか?
ようするに員数を満たしてりゃいいんだよ
756デフォルトの名無しさん
垢版 |
2021/05/17(月) 12:26:47.92ID:GcVF7Ydc
補足条件です

・廊下の一端は外周に接する事
・室はそれぞれ連続している事

ダメな例
AADDDDCC
BBAA++CC
BBBBCCCC

・廊下が外周に接していない
・室Aが連続していない
757デフォルトの名無しさん
垢版 |
2021/05/17(月) 12:28:14.13ID:GcVF7Ydc
廊下はいくつ有っても良いです
758デフォルトの名無しさん
垢版 |
2021/05/17(月) 12:39:02.89ID:GcVF7Ydc
廊下の数と面積が自由なら簡単になってしまったかw
修正 廊下は一続きに制限します
759デフォルトの名無しさん
垢版 |
2021/05/17(月) 12:49:02.42ID:GcVF7Ydc
>>756
このダメ例では、室Bが廊下に面してないので、それもダメ
2021/05/17(月) 13:15:02.22ID:iILyYqea
B B + E E
C C + A A
C D D A A
D D D D A
手で作る方がプログラム書くより簡単そうだ
問3とかこれでいいんでしょ
761デフォルトの名無しさん
垢版 |
2021/05/17(月) 13:37:58.59ID:GcVF7Ydc
>>760
正解です
人間が解くパズルとしてはそれほど難しくない
それをコードに落とすという問題です
更に形状、方位、上下階の連携などを制約に加えると、実用アプリの基本アルゴリズムになります
762デフォルトの名無しさん
垢版 |
2021/05/17(月) 13:38:47.16ID:9/Dbs2kw
宇宙ホテルだと部屋種類が10000くらいあるんだろ
そして部屋数合計は100億だ
廊下の長さは1光年くらいあってもいい

なんで人間の地球人の尺度で考えるのか
これが分からない
763デフォルトの名無しさん
垢版 |
2021/05/17(月) 13:46:24.75ID:GcVF7Ydc
>>762
制約が無いとお題にならんでしょ
764デフォルトの名無しさん
垢版 |
2021/05/17(月) 14:15:20.81ID:9/Dbs2kw
所要室数の上限と要求面積の上限が制約なんじゃあないの
でもその制約がどこにも書かれているようには見えない
無いものを見ろと言われましても
765デフォルトの名無しさん
垢版 |
2021/05/17(月) 14:22:18.03ID:9/Dbs2kw
どうやって最小面積を保証するんだろうか
766デフォルトの名無しさん
垢版 |
2021/05/17(月) 14:26:41.86ID:GcVF7Ydc
>>764
各問の室名(アルファベット)が所要室
数字がその室の面積
それら所要室を全て配置して、かつ全体が最小面積となるのが答え

例えば問3の解答例だと

BB+DDDD
EE++DDA
CCCAAAA

これは面積が21となり最小では無いのでダメ
767デフォルトの名無しさん
垢版 |
2021/05/17(月) 14:30:19.46ID:9/Dbs2kw
>>766
所要室数の上限はもしかして26+26=52っていうワケ?
それっぽっちしかないの?
768デフォルトの名無しさん
垢版 |
2021/05/17(月) 14:30:34.32ID:GcVF7Ydc
>>765
最小面積は、所要室の合計面積プラス最小限の廊下面積
各室が廊下に面するので、最低限必要な廊下の面積も計算可能
例えば外周に接する2坪の廊下なら、5室が面する事が出来る
2021/05/17(月) 14:32:43.00ID:LfCDcICC
面積わかって長方形という指定があるんだから最小面積はわか
770デフォルトの名無しさん
垢版 |
2021/05/17(月) 14:33:17.80ID:GcVF7Ydc
>>767
制限を撤廃して拡張しようと思えばいくらでも出来るよ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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