Analysieren Sie die Widerstände

8

Das Ziel ist einfach: Zeichnen Sie angesichts der Reihe von Widerstandswerten den Teil des "Stromkreises" dieser Widerstände. Beispiele folgen.

  1. Eingabe : 3. Ausgabe:

    --3--
    
  2. Eingabe : 1,2,3. Ausgabe:

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

Als nächstes können die Widerstände parallel verbunden werden (durch 2 oder 3 Widerstände pro Verbindung), aber die erforderliche Tiefe der parallelen Verbindungen beträgt nur 1.

  1. Eingabe : 1|2. Ausgabe:

     |--1--|
    -|     |-
     |--2--|
    
  2. Eingabe : 1|2|3. Ausgabe:

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

    Beachten Sie , dass der --2--Widerstand jetzt zentriert ist.

  3. Eingabe : 1|2,3|4|5. Ausgabe:

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

Kombinierte Verknüpfungen:

  1. Eingabe : 1,2,3|4,5,6|7|8,9. Ausgabe:

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

Wenn es bequemer wäre, kann die Eingabe ein zweidimensionales Array sein. Dh die Eingabe für das letzte Beispiel würde folgendermaßen aussehen : [1,2,[3,4],5,[6,7,8],9].

Einige Notizen:

  • Andere Formen von (In | Out) Puts sind nicht zulässig.
  • Der Widerstand jedes Widerstands kann im Bereich von 1 bis 9. Andere Werte variieren, wie -, 42oder 0nicht zugelassen sind.
  • Die Verknüpfungen wie 1|2|3|4sind ungültig. Wie bereits erwähnt, maximal 3 pro Parallelverbindung. Leere Verknüpfungen, dh ...,|,...oder ...,,...sind ungültig.
  • Oh, und das ist Code Golf :)
nicael
quelle
Vielen Dank für die Korrektur, es ist eine feste Anzahl von Strichen. Vor den einzelnen Widerständen stehen zwei Striche.
Nicael
Können die erste und dritte Zeile mit Leerzeichen aufgefüllt werden, um die Länge der Zeilen auszugleichen?
TFeld
@Tfeld Nachgestellte / führende Leerzeichen sind vor / nach dem gesamten Ausgang zulässig, jedoch nicht zwischen den Widerständen.
Nicael
Sind führende / nachfolgende leere Leitungen zulässig, wenn keine parallelen Widerstände vorhanden sind?
PurkkaKoodari
@Pietu Hm, lass es ja sein :)
Nicael

Antworten:

2

Python 2, 195 Bytes

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]

Nimmt Eingabe als:

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

Ausgabe:

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