このコードのゴルフパズルのインスピレーションは、ブリッジとトーチの問題です。この問題では、ブリッジの開始時にd人がすべて最短時間で橋を渡らなければなりません。
キャッチは、最大2人が一度に横断できることです。さもないと、橋は自重でつぶれ、グループは橋を渡るために運ばなければならない1つのトーチにしかアクセスできません。
パズル全体の各人には、橋を渡るのにかかる時間が指定されています。2人が一緒に交差する場合、ペアは最も遅い人と同じくらい遅くなります。
橋を渡らなければならない人数は決まっていない。あなたのソリューションは、dの任意の値に対して機能しなければなりません。
この問題に標準入力を使用する必要はありませんが、問題を説明するために、以下の入力および出力形式を使用して説明します。最初の数dは、橋の始点にいる人の数です。次に、コードはd個の数字をスキャンし、それぞれが人の速度を表します。
コード出力は、前述の基準を満たしながら、ブリッジの開始から終了までのすべてのユーザーを横断するのに必要な最短時間になります。
以下に、いくつかの入力ケースと出力ケース、および最初の入力ケースの説明を示します。この情報からアルゴリズムを導き出し、可能な限り少ないバイトのコードで問題を解決するのはあなた次第です。
入力
4
1 2 5 8
出力
15
この出力に到達するには、人々は次の方法で交差する必要があります。
A and B cross forward (2 minutes)
A returns (1 minute)
C and D cross forward (8 minutes)
B returns (2 minutes)
A and B cross forward (2 minutes)
道に沿ってガイドする別のテストケースを次に示します。
入力
5
3 1 6 8 12
出力
29
ルール:
- 入力がソートされないと仮定し、自分でソートする必要があります(必要な場合)
- パズルの人数は4人に固定されていません(N> = 1)
- すべてのグループと個々の交差点にはトーチが必要です。トーチは1つだけです。
- 各グループは最大2人で構成する必要があります!
- いいえ、橋から飛び降りて反対側に泳ぐことはできません。このような他のトリックはありません;)。
1 4 5 6 7同様の問題があります。25対26
N >= 2人だけを扱うことに気づきました(つまり、奇妙なことに、「1人が交差する必要がある」という些細なケースを扱うのに余分な仕事です)、この点に関するいくつかの明確化は素晴らしいでしょう。前もって感謝します。
1 3 4 514ない15.返すべき、