Atasi resistor

8

Tujuannya sederhana: mengingat string nilai resistansi, gambar bagian dari "rangkaian listrik" dari resistor tersebut. Contohnya ikuti.

  1. Input: 3. Keluaran:

    --3--
    
  2. Input: 1,2,3. Keluaran:

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

Selanjutnya, resistor dapat digabung paralel (dengan 2 atau 3 resistor per bergabung), tetapi kedalaman yang diperlukan dari sambungan paralel hanya 1.

  1. Input: 1|2. Keluaran:

     |--1--|
    -|     |-
     |--2--|
    
  2. Input: 1|2|3. Keluaran:

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

    Perhatikan , --2--resistor itu sekarang terpusat.

  3. Input: 1|2,3|4|5. Keluaran:

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

Gabungan gabungan:

  1. Input: 1,2,3|4,5,6|7|8,9. Keluaran:

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

Jika akan lebih mudah, input dapat berupa array dua dimensi. Yaitu input untuk contoh terakhir akan terlihat seperti ini: [1,2,[3,4],5,[6,7,8],9].

Beberapa catatan:

  • Tidak ada bentuk lain dari (masuk | keluar) yang diizinkan.
  • Resistansi masing-masing resistor dapat bervariasi dalam rentang dari 1 hingga 9. Nilai lainnya, seperti -, 42atau 0tidak diizinkan.
  • Gabungan suka 1|2|3|4tidak valid. Seperti yang telah disebutkan, maks 3 per paralel bergabung. Gabungan kosong, yaitu ...,|,...atau ...,,...tidak valid.
  • Oh, dan ini kode golf :)
nicael
sumber
Terima kasih atas koreksinya, ini adalah sejumlah tanda hubung. Resistor terpisah didahului dan diikuti oleh dua garis.
nicael
Bisakah garis pertama dan ketiga diisi dengan spasi hingga panjang garis?
TFeld
@Tfeld Trailing / ruang terdepan diizinkan sebelum / setelah seluruh output, tetapi tidak di antara resistor.
nicael
Apakah memimpin / mengikuti garis kosong diperbolehkan ketika tidak ada resistor paralel?
PurkkaKoodari
@ Pietu Hm, biarlah ya :)
nicael

Jawaban:

2

Python 2, 195 byte

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]

Mengambil input sebagai:

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

Keluaran:

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