ASCII Borromean戒指


24

博罗梅安环是一个奇怪的一套三圈,链接,使得移除它们中的任何一个都将取消与其他两种:

在此处输入图片说明

您可以用几个橡皮筋和一个活页夹环为自己订一套。使用更多的橡皮筋,可以轻松建立任何Brunnian链接

编写一个程序或函数,以输出(打印或返回)这种用Borromean环表示的ascii表示形式:

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

这些行可能有尾随空格,并且可能会有尾随换行符。

以字节为单位的最短代码获胜。


2
我不得不说,这是一个非常艰巨的挑战,因为预期的输出非常简单
Beta Decay 2015年

3
我有点失望。认为挑战将是采用整数大小并输出该大小的环。
Blacklight Shining

是的,我也是这么认为的(程序将int作为输入,然后用那么多组件绘制Brunnian Link,但这不是唯一的,也许有很多交叉?)。这类程序实际上必须进行搜索(或至少是反复试验-这些环是否互锁,如果我删除了一个环,可以免费使用吗?),而不是仅仅画出固定的图片……
alexey,2015年

Answers:


7

CJam,53 51 50 49字节

普通的旧基础转换...

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

所有字符都在扩展的ASCII范围内(ASCII代码1至255),因此字符数==字节数。

在这里在线试用,并得到原代码这里


只是好奇,查询中的换行符在哪里?
马蒂森(Maltysen)2015年

@Maltysen我没有。B/N*由11个字符分割和连接中可换行符
优化

那太酷了。
Maltysen

6

Pyth-51字节

我敢肯定有人会很快打败这个人,但是只是一个基本的压缩答案,因为我感到很懒。我会尽快写一个认真的答案。

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

在这里在线尝试

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个字节

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

示范。

这使用基数4编码,并将字符串切成十分之一,然后在换行符处将它们重新加入。


3

露比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}

与直接基础转换有所不同。

取消高尔夫:

-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个字节

没有获胜,但我认为这是一种可爱的方法:

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

2

BrainFuck,361个字节

这是一个BrainFuck小程序,仅逐字符打印char。

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

1

Staq,109个字符

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

输出:

Executing D:\codegolf\Staq borromean rings.txt

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

Execution complete.
>

0

Python 3,139个字节

这是我可以直接打印出来的最接近的数字(将是134个字节),而实际上却没有这样做。...我不确定如何再将其缩短。

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')
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.