抵抗を解析する


8

目的は単純です。一連の抵抗値を指定して、それらの抵抗器の「電気回路」の一部を描画します。以下に例を示します。

  1. 入力:3。出力:

    --3--
    
  2. 入力:1,2,3。出力:

    --1----2----3--
    

次に、抵抗を並列に結合できます(結合ごとに2つまたは3つの抵抗によって)が、並列結合の必要な深さは1つだけです。

  1. 入力:1|2。出力:

     |--1--|
    -|     |-
     |--2--|
    
  2. 入力:1|2|3。出力:

     |--1--|
    -|--2--|-
     |--3--|
    

    --2--抵抗が中央に配置されていることに注意してください

  3. 入力:1|2,3|4|5。出力:

     |--1--|  |--3--|
    -|     |--|--4--|-
     |--2--|  |--5--|
    

結合を結合:

  1. 入力:1,2,3|4,5,6|7|8,9。出力:

               |--3--|       |--6--|
    --1----2---|     |---5---|--7--|---9--
               |--4--|       |--8--|
    

より便利な場合は、入力を2次元配列にすることができます。つまり、最後の例の入力は次のようになります[1,2,[3,4],5,[6,7,8],9]

いくつかのメモ:

  • 他の形式の(入力|出力)入力は許可されていません。
  • 各抵抗器の抵抗値は、1から9の他の値の範囲で変えることができるような-42または0禁止されています。
  • のような結合1|2|3|4は無効です。すでに述べたように、並列結合ごとに最大3つです。空の結合、つまり...,|,...また...,,...はは無効です。
  • ああ、これはコードゴルフです:)

修正をありがとう、それはダッシュの固定数です。個別の抵抗の前後に2つのダッシュが続きます。
nicael

1行目と3行目は、行の長さを揃えるためにスペースを埋め込むことができますか?
TFeld

@Tfeldトレーリング/リーディングスペースは、出力全体の前後に使用できますが、抵抗器の間には使用できません。
nicael

並列抵抗がない場合、先行/後行の空行は許可されますか?
PurkkaKoodari 2015

@Pietu Hm、それをイエスにしてください:)
nicael

回答:


2

Python 2、195バイト

a=b=c=''
B=' '*5
H='--'
S=' |'+H;E=H+'| '
for x in input():
 if x>9:a+=S+`x[0]`+E;c+=S+`x[-1]`+E;b+='-|'+[B,H+`x[1]`+H][len(x)>2]+'|-'
 else:b+=H+`x`+H;a+=B;c+=B
print[b,a+'\n'+b+'\n'+c]['|'in a]

入力は次のようになります。

[1,2,[3,4],5,[6,7,8],9]

出力:

           |--3--|       |--6--|      
--1----2---|     |---5---|--7--|---9--
           |--4--|       |--8--|      
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.