ASCII Borromean Yüzükler


24

Borromean halkalar bunlardan herhangi birinin kaldırılması diğer iki bağlantıyı kaldırır şekilde bağlanmış üç dairenin meraklı bir set şunlardır:

görüntü tanımını buraya girin

Birkaç lastik bant ve bağlayıcı halka ile kendiniz için bir set yapabilirsiniz . Daha fazla lastik bantla, herhangi bir Brunnian bağlantısını yapmak kolaydır .

Borromean halkalarının bu resmi temsilini çıkaran (basan veya iade eden) bir program veya işlev yazın:

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

Satırlar sonda boşluklara sahip olabilir ve sonda yeni bir satır olabilir.

Bayt cinsinden en kısa kod kazanır.


2
Beklenilen çıktı ne kadar basit olduğu için bunun oldukça zor bir mesele olduğunu söylemeliyim
Beta Decay

3
Biraz hayal kırıklığına uğradım. Zorluğun bir tamsayı boyutunda olması ve bu boyutta halkalar çıkarması gerektiğini düşündüm.
Blacklight Shining

evet, ben de öyle düşünmüştüm (program bir girdi olarak int alır ve daha sonra bu birçok bileşenle Brunnian Link'i çizer, ancak bu benzersiz değil, belki bir kaç geçiş noktası olabilir mi?). Bu tür bir program aslında arama yapmak zorunda kalacak (ya da en azından deneme yanılma - bu halkalar birbirine kenetlenir mi ve birini çıkarırsam, serbest mi gidersin?) Sadece sabit bir resim çizmek yerine ...
alexey

Yanıtlar:


7

CJam, 53 51 50 49 bayt

Düz eski temel dönüşüm ...

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

Tüm karakterler genişletilmiş ASCII aralığındadır (ASCII kodu 1 - 255), bu nedenle karakter sayısı == bayt sayısı.

Burada çevrimiçi deneyin ve orijinal kodu buradan alın


Merak ediyorum, aramanızdaki yeni hat nerde?
Maltysen

@Maltysen Bende yok. B/N*11 karakter böler ve newline olur
Optimizer

bu coooool.
Maltysen

6

Pyth - 51 bayt

Birisinin bu kadar çabuk geçeceğinden eminim, ama sadece bir baz sıkıştırma cevabı çünkü tembel hissediyorum. Yakında ciddi bir cevap yazmaya çalışacağım.

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

Burada çevrimiçi deneyin .

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

4

Pyth, 49 bayt

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

Gösteri.

Bu 4 taban kodlamasını kullanır ve dizgiyi onbirinci parçalara böler, sonra onları yeni satırlarda birleştirir.


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}

Düz taban dönüşümünden farklı bir şey.

Ungolfed:

-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.

3

Ruby, 117 bayt

Kazanmama, ama sevimli bir yaklaşım olduğunu düşündüm:

puts'    --
    |     |
--  |
|   | |   |
| -||
| | | | | |
| | -|
| |   | |
-||
  |     |
  --'.gsub /-./,'+\0---+ '

2

BrainFuck, 361 bayt

İşte küçük bir BrainFuck programı, sadece char karakter yazdırarak.

+++++++++[->>>>++++++++++++++<+++++<+++++<++++<]>----....>--.>.....>-->++++++++++<<<.>>>.<<<<....>>>.<<<.....>>>.>.<<<.>.....<.<...>>>.>.<.<<<...>>>.<<<.>>>.<<<...>>>.>.<.<<<.>.>.>.<...<.<.>>>.>.<.<<<.>>>.<<<.>>>.<<<.>>>.<<<.>>>.<<<.>>>.>.<.<<<.>>>.<<<.>.>.>.<...<.>>>.<.<<<.>>>.<<<...>>>.<<<.>>>.>.<<<.>.>.<...<.<.>>>.>.<<<<..>>>.<<<.....>>>.>.<<<<..>.>.....<.

1

Staq , 109 karakter

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

çıktı:

Executing D:\codegolf\Staq borromean rings.txt

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

Execution complete.
>

0

Python 3, 139 bayt

Bu, gerçekten yapmadan doğrudan (134 byte olur) basabildiğim en yakın şey.

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')
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.