Cincin Borromean ASCII

24

The cincin Borromean adalah seperangkat penasaran tiga lingkaran, terkait sehingga penghapusan salah satu dari mereka akan membatalkan tautan dua lainnya:

masukkan deskripsi gambar di sini

Anda dapat membuat set untuk diri sendiri dengan beberapa karet gelang dan cincin pengikat . Dengan lebih banyak karet gelang, membuat tautan Brunnian mudah .

Tulis program atau fungsi yang menampilkan (mencetak atau mengembalikan) representasi ascii-art dari cincin Borromean ini:

    +-----+
    |     |
+-----+   |
|   | |   |
| +-|---+ |
| | | | | |
| | +-|---+
| |   | |
+-|---+ |
  |     |
  +-----+

Garis mungkin memiliki spasi tambahan dan mungkin ada garis tambahan tambahan.

Kode terpendek dalam byte menang.

Hobi Calvin
sumber
2
Saya harus mengatakan bahwa ini adalah tantangan yang cukup sulit karena betapa sederhananya output yang diharapkan
Beta Decay
3
Saya sedikit kecewa. Saya pikir tantangannya adalah mengambil ukuran bilangan bulat dan cincin keluaran sebesar itu.
Blacklight Shining
ya, saya pikir juga begitu (program mengambil int sebagai input dan kemudian menggambar Brunnian Link dengan banyak komponen, tapi itu tidak unik, mungkin sejumlah penyeberangan?). Program semacam itu harus benar-benar melakukan pencarian (atau setidaknya coba-coba - apakah cincin-cincin ini saling terkait dan jika saya menghapusnya, lakukan gratis?) Alih-alih hanya menggambar gambar tetap ...
alexey

Jawaban:

7

CJam, 53 51 50 49 byte

Konversi basis lama yang polos ...

"FÓîÞ¤ÛY­ËB[¢O²êÍÓ
}²|äG"299b4b"+ -|"f=B/N*

Semua karakter berada dalam jangkauan ASCII yang diperluas (kode ASCII 1 hingga 255), jadi jumlah karakter == jumlah byte.

Cobalah online di sini dan dapatkan kode asli di sini

Pengoptimal
sumber
Hanya ingin tahu, di mana baris baru dalam pencarian Anda?
Maltysen
@Maltysen saya tidak memilikinya. B/N*dibagi dengan 11 karakter dan bergabung menjadi baris baru
Pengoptimal
itu coooool.
Maltysen
6

Pyth - 51 byte

Saya yakin seseorang akan mengalahkan ini cepat, tetapi hanya jawaban kompresi dasar karena saya merasa malas. Saya akan mencoba menulis jawaban serius segera.

s@L"
 +-|"jC" zB²;¶Ê ¿ïÁ»#-ÌClHõy%|ap"5

Coba di sini online .

s              Reduce on string concatenation
 @L            Map second arg to index first arg
  "..."        String of all chars (Pyth allows literal newlines)
  j            Base conversion to list
   C           Base conversion 256 -> 10
    "..."      Base 256 string
   5           To Base 5
Maltysen
sumber
4

Pyth, 49 byte

jbc11s@L"+ -|"jC"Tª]UʨWÕÝ_K¨}ÝÝ÷K¨Ý]Òê]UÕ*¡"4

Demonstrasi.

Ini menggunakan pengkodean basis 4, dan memotong string menjadi sebelas, kemudian bergabung kembali pada baris baru.

isaacg
sumber
3

Ruby, 110

-2.upto(8){|i|s=" "*(i%6)+"+-----+"*(1-i%2)+" "*9
6.times{|j|"@d me?K[RR@"[i+2].ord>>j&1>0&&s[j*2]=?|}
puts s}

Sesuatu yang berbeda dari konversi basis lurus.

Tidak Disatukan:

-2.upto(8){|i|                                           #for each line
  s=" "*(i%6)+"+-----+"*(1-i%2)+" "*9                    #load s with "+-----+" (if required!) padded appropriately with leading spaces and with nine trailing spaces.   
  6.times{|j|"@d me?K[RR@"[i+2].ord>>j&1>0&&s[j*2]=?|}   #replace characters with | as necessary, according to the 6-bit number encoded by each character in the magic string.
  puts s}                                                #print the line.
Level River St
sumber
3

Ruby, 117 byte

Tidak menang, tapi saya pikir itu pendekatan yang lucu:

puts'    --
    |     |
--  |
|   | |   |
| -||
| | | | | |
| | -|
| |   | |
-||
  |     |
  --'.gsub /-./,'+\0---+ '
Lynn
sumber
2

BrainFuck, 361 byte

Berikut ini adalah program BrainFuck kecil, hanya mencetak char by char.

+++++++++[->>>>++++++++++++++<+++++<+++++<++++<]>----....>--.>.....>-->++++++++++<<<.>>>.<<<<....>>>.<<<.....>>>.>.<<<.>.....<.<...>>>.>.<.<<<...>>>.<<<.>>>.<<<...>>>.>.<.<<<.>.>.>.<...<.<.>>>.>.<.<<<.>>>.<<<.>>>.<<<.>>>.<<<.>>>.<<<.>>>.>.<.<<<.>>>.<<<.>.>.>.<...<.>>>.<.<<<.>>>.<<<...>>>.<<<.>>>.>.<<<.>.>.<...<.<.>>>.>.<<<<..>>>.<<<.....>>>.>.<<<<..>.>.....<.
AboveFire
sumber
1

Staq , 109 karakter

&iiiqi{1" "}{211}{c"| "}{fcc}{o"+-|"}{p"+--"}{r"---+"}{ec;}22pr;22c22epr21ec2f2ecor1effcefor;f2ceor1e2c22e2pr

keluaran:

Executing D:\codegolf\Staq borromean rings.txt

    +-----+
    |     |
+-----+   |
|   | |   |
| +-|---+ |
| | | | | |
| | +-|---+
| |   | |
+-|---+ |
  |     |
  +-----+

Execution complete.
>
ML
sumber
0

Python 3, 139 byte

Ini adalah yang terdekat dengan pencetakan langsung (yang akan menjadi 134 byte) tanpa benar-benar melakukannya .... Saya tidak yakin bagaimana mempersingkatnya lagi.

a='+-----+'
b='+-|---+'
c=' '*4
d='| '
e=c+d
print(c+a,e*2,a+e[1:],"|   | "*2,d+b+" |",d*6,d+d+b,"| |   "*2,b+" |",e[2:]+e,"  "+a,sep='\n')
mbomb007
sumber