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 :)

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--|      
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.