こんにちは、ゴルファー、
今日の私たちの挑戦は、XKCDのコミック356と370に触発されています。抵抗器のグループの抵抗を計算するプログラムを作成します。これはコードの挑戦であることを正当化するのに十分に厳しいものであることを事前に警告しますが、ゴルフ形式で少し複雑なプログラムを書くことには一定の芸術があると思います。最も少ない数のキャラクターが勝利します。
抵抗の計算は、次の2つの式に依存しています。
- 抵抗が直列の場合、抵抗は各抵抗の抵抗の合計です。
- 抵抗が並列の場合、抵抗は各抵抗の抵抗の逆数の合計の逆数になります。
だから-例えば:
あなたの課題は、可能な限り少ない文字数で、最大64個の抵抗器のグループの抵抗を計算することです。特に入力ルールの複雑さについては、お詫び申し上げます。私は、すべての言語が使用できるようにそれらを定義しようとしました。
各抵抗は2つ以上の他の抵抗に接続されます。
入力は有効であることが保証され、1つのエントリと1つの出口ポイントのみが接続されます
ネットワークは、提示されているものよりも多くの数学を必要としないようにするために直列並列になります
入力は、言語に適したものに応じて、ファイル、引数、またはstdinを介して行われます。
入力は、一連の改行またはスラッシュで区切られた、抵抗の抵抗の整数からなるステートメントと、抵抗の片側が接続されている抵抗のIDを区切るスペースで構成されます。
最初の抵抗のIDは1で、連続する抵抗ごとに1ずつ増加します。
開始のIDは常に0になります
最終的な抵抗は常に0オームの抵抗を持ち、そのラインで定義された接続のみを持ちます
例えば:
次のように表すことができます
3 0
6 1
1 0
5 0
0 2 3 4
- 出力は、標準出力またはファイルにすることができます。次のいずれかの方法で表すことができます。
- 小数点以下2桁以上の数字とそれに続く改行
- 整数(分子)、スラッシュ、別の整数(分母)で構成され、その後に改行が続く分数。分数は最低の形である必要はありません-たとえば4/4または10/8は許容範囲です。分数は1/100以内で正確でなければなりません。完全に正確であることにはボーナスはありません。これは、固定小数点演算や浮動小数点演算のない言語が競合できるようにするための松葉杖です。
それがすべての点をカバーしているといいのですが。幸運を!
1 2/1 0/0 1
有効?
/
バックスラッシュではありません。「\」またはスラッシュですか?