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

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--|      
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.