セットアップ
あなたが与えられていると仮定し、N 1と、ヒューズ≤ N ≤5、長いメートルでそれぞれが、そしてここで、各ヒューズの関連する燃焼速度有するN個当たりのメートルDの時間。
ヒューズは、片端または両端で点灯し、その後片端または両端で消灯、再点灯、再消灯などを、ヒューズが完全に消費されるまで何度でも行うことができます。ヒューズを瞬時に点灯および消灯することができ、ヒューズが完全に消費された(燃えた)瞬間を正確に観察できます。
ヒューズは切断できず、端以外は点灯できません。
このような設定により、2つのヒューズ点灯/消費イベント間の時間を測定することにより、無限に正確なタイミングシステムが可能になります。たとえば、1時間あたり1メートルの燃焼速度を持つ2つのヒューズがある場合、次の方法で正確に45分(3/4時間)を測定できます。
- 同時に:最初のヒューズを両端で点灯し、2番目のヒューズを一端で点灯し、時間間隔の開始をマークします
- 最初のヒューズが消費された瞬間(30分後)に2番目のヒューズの2番目の端を点灯
- 2番目のヒューズが消費された瞬間(15分後)に時間間隔の終わりをマークする
チャレンジ
時間数の小数t、およびn個のヒューズの正確な燃焼速度を表すn個の小数のセットが与えられた場合、ヒューズの系統的燃焼によりt時間を正確に測定できる場合、真の値を出力/返すプログラムまたは関数を記述します。そうでなければ偽の値。
プログラムへの入力は次のいずれかです。
- 次の形式のコマンドライン引数
TN/TD N1/D1 N2/D2 N3/D3 ...
TN/TD N1/D1 N2/D2 N3/D3 ...
読み取りstdin
または同等の形式の文字列TN/TD N1/D1 N2/D2 N3/D3 ...
関数の引数として渡されたフォームの文字列["TN/TD", "N1/D1", "N2/D2", "N3/D3", ...]
関数の引数として渡される文字列の配列
すべての場合、t = TN
/ TD
、ここでTN
、TD
∈[1,10000]。
同様に、すべての場合において:ヒューズ用の燃焼速度は、iが = NをI / D I = N<i>
/ D<i>
、ここでN<i>
、D<i>
∈[1,10]∀ I。
常に1〜5個のヒューズ(包括的)があり、すべての入力が有効で範囲内にあると仮定することができます。また、すべての入力分数が最も低い用語で与えられていると仮定することもできます。
このチャレンジでは、小数コンポーネントで浮動小数点数を使用することはできません。つまり、アプリケーションの任意の場所で浮動小数点数を使用する場合、小数成分がゼロの整数値のみを使用できます。
得点
これはコードゴルフの挑戦であるため、バイト単位での最短の準拠提出が勝ちとなります。
入力/出力の例
input: 29/6 3/2 2/3 3/5 3/7 7/5
output: true
One solution:
- light both ends of fuse 1, mark start of interval
- on fuse 1 consumption: light both ends of fuse 2, light one end of fuse 5
- on fuse 5 consumption: extinguish one end of fuse 2, light both ends of fuse 3,
light both ends of fuse 4
- on fuse 2 consumption: extinguish one end of fuse 3, extinguish both ends of
fuse 4
- on fuse 3 consumption: relight one end of fuse 4
- on consumption of fuse 4: mark end of interval (29/6 hours)
input: 2/1 3/1 5/1 7/1
output: false
input: 5/1 6/1 1/6 9/1 1/9
output: true
One solution:
- light fuse 1 at one end, light fuse 2 at both ends, light fuse 4 at both ends
- on fuse 1 consumption: extinguish one end of fuse 2, mark start of interval
- on fuse 4 consumption: relight one end of fuse 2
- on fuse 2 consumption: mark end of interval (5 hours)
ハッピーフュージング!:)