ASCII Cayley图


26

在针对我正在提出的其他挑战进行一些研究时,我遇到了一个Cayley图,特别是这个。因为我是顶级的 挑战者之一,所以我当然必须为此提出ASCII艺术挑战。

您的挑战是如何在两个生成器上生成自由组的Cayley图的ASCII艺术描述,如下所示:

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

输入项

没有输入,除非您的语言明确要求输入才能运行。

输出量

上面显示的ASCII艺术形式。

MD5哈希

由于这是一个非常大的输出,因此在这里检查一下示例形式的一些MD5哈希(所有输出都是UTF-8,不带BOM),以检查您的工作:

  • 正方形空格填充,CR/LF换行和尾随换行符954B93871DAAE7A9C05CCDF79B00BF3C--这是上面使用的表示形式。
  • 正方形空格填充,CR/LF换行符,无尾随换行符-28405EF91DA305C406BD03F9275A175C
  • 方形空格填充,LF换行和尾随换行符-8CA65FB455DA7EE5A4C10F25CBD49D7E
  • 正方形空格填充,LF换行符,无尾随换行符-FDB1547D68023281BB60DBEC82C8D281
  • 没有尾随空格,CR/LF换行符和尾随换行符-77FDE8CE5D7BD1BDD47610BA23264A19
  • 没有尾随空格,CR/LF换行符,没有尾随换行符-EAD390C3EFD37F0FCACE55A84B793AB5
  • 没有尾随空格,LF换行符和尾随换行符-1F6CAB740F87881EB2E65BED65D08C36
  • 没有尾随空格,LF换行符,没有尾随换行符-7D41CE1E637619FEA9515D090BFA2E9C
  • 如果您想与其他MD5进行比较,请让我知道,我将创建它并更新挑战。

规则

  • 前导或尾随的换行符或空格都是可选的,只要字符本身正确对齐即可。
  • 完整的程序或功能都是可以接受的。如果是函数,则可以返回输出而不是打印输出。
  • 如果可能,请提供一个在线测试环境的链接,以便其他人可以尝试您的代码!
  • 禁止出现标准漏洞
  • 这是因此所有常见的高​​尔夫规则都适用,并且最短的代码(以字节为单位)获胜。

我对此感到有点惊讶,无论如何都没有参数化-好像它应该是序列中的第六个。
尼尔,2017年


@Neil我曾考虑过这样做,但由于担心这样做会增加难度而收效甚微,因此决定反对。
AdmBorkBork

看起来-/ |s 的运行遵循公式,(2<<n)-n-2而不是(1<<n)-1我最初的猜测。
尼尔

@Neil实际上是欧拉数,因为它提供了最好的美学。
AdmBorkBork

Answers:


9

的JavaScript(ES6),204个 195 188 180字节

f=
_=>[...Array(9119)].map((_,i)=>~i%96?g(48+~(i/96),47-i%96,5):`
`,g=(x,y,z,n=(1<<z)-z)=>x|y?(x=x<0?-x:x)+(y=y<0?-y:y)<n?` |-+`[2*!x+!y]:z--?x>y?g(x-n,y,z):g(x,y-n,z):` `:`+`).join``
;document.write(`<pre>`+f())

正方形空格填充,LF换行符结尾的换行符,尽管我尚未检查MD5。

f=
m=>[...Array((w=(4<<m)-m*-~m-2)*~-w)].map((_,i)=>~i%w?g(w/2+~(i/w),w/2-i%w-1,m):`
`,g=(x,y,z,n=(1<<z)-z)=>x|y?(x=x<0?-x:x)+(y=y<0?-y:y)<n?` |-+`[2*!x+!y]:z--?x>y?g(x-n,y,z):g(x,y-n,z):` `:`+`).join``
<input type=number min=0 oninput=o.textContent=f(this.value)><pre id=o>+

Parametrised版本222个 216 207 199字节。说明:输出大小为9119个ASCII字符,包括46个换行符。(对于参数化版本,将计算输出大小,包括尾随的换行符。)每个字符都是单独确定的,首先通过检查换行符是否为到期,否则通过在最终字符中间的相对于原点的坐标上调用函数图。该函数递归检查每个尺寸与该点最近的十字的相交点,并根据是否发现该点位于十字的中心或轴上来返回适当的字符。


7

罗达284个 280 238 234字节

{a=[1,-1]t=[]seq 1,95|t+=[" "]*95,_
f={|x,y,i,d|{s=[27,12,5,2,1][i]i++
a|{|j|{seq y,y+s*j|t[_][x]="|"f x,y+s*j,i,2-j}if[d!=2+j]}_
a|{|j|{seq x,x+s*j|t[y][_]="-"f x+s*j,y,i,3-j}if[d!=3+j]}_}if[i<5]
t[y][x]="+"}f 47,47,0,0
t|print _&""}

在线尝试!

这是一个匿名函数。我使用换行符代替分号,因此格式非常好!

递归函数f在二维数组中创建图形,t然后将其打印在最后一行。

我没有找到一种方法来计算27,12,5,2,1几个字节,因此它们是硬编码的。


没有办法计算2的幂吗?
尼尔

@Neil b_shiftl存在一个运算符,但是我认为该程序不能使用太长时间。
fergusq

我唯一能想到的就是base-3?邓诺(Dunno)虽然Roda在基本转换方面有多好...- 10000110001200020001> 1168671727怀疑您可以转换和拆分少于2个字节,但是...
魔术章鱼骨灰盒

3

木炭50 43字节

F³²⁴«P++↷AE…¹¦⁵∧¬﹪ιX³κ⁻X²⁺κ¹⁺κ²εF⁺ε⮌ε¿κ«+κ↶

在线尝试!链接是详细版本的代码。我最初尝试各种反射和旋转,但是它们要么没有做我想要的,要么在某些情况下是越野车。然后,我尝试了嵌套循环方法,但现在切换到此迭代方法,该方法通过根据每个步数可被3的多少次幂除以在每个内部十字之间绘制多条线来工作。它甚至可以很容易地修改为接受大小参数,而仅花费4个字节:

NβF×⁴X³β«P++↷AE…·¹β∧¬﹪ιX³κ⁻X²⁺κ¹⁺κ²εF⁺ε⮌ε¿κ«+κ↶

编辑:我已经找到了如何使用RotateShutterOverlap来实现此任务的方法,但令人讨厌的是,它占用了我44个字节:

A⁰ηF⁶«AηγA⁻⁺X²ιηιηJη⁰P-γ+¿γ⟲SO²⁶⁻×²γ¹»‖⟲SO⁹⁵

如果RotateShutterOverlap接受一个可变的旋转整数,它将减少到40个字节:

A⁰ηF⁶«A∨η¹γA⁻⁺X²ιηιηJη⁰P+γ+⟲SO⎇‹ι⁵Lβ²⁴⁶γ

实际上,使用旋转列表参数需要45个字节:

A⁰ηF⁶«A∨η¹γA⁻⁺X²ιηιηJη⁰P+γ+⟲SO⟦⁶ײ⁺¹⁼⁵ι⟧⁻ײγ¹

这感觉就像对我作弊。:P
HyperNeutrino

@HyperNeutrino略少硬编码的版本:在线尝试!还是那不是你的意思?
尼尔

:PI表示对于木炭来说,这太短了,也太容易了:P
HyperNeutrino

@Neil:O这太神奇了!我想知道您是否可以举一个越野车反射/旋转的例子,以便我可以解决它
仅ASCII

仅@ASCII仅在反射错误的情况下,我认为只有对角线反射之一有效,但我不记得是哪个。我认为错误是未定义的变量(可能是太多的copypasta)。
尼尔

2

05AB1E,620字节

•1dOœ˜‘Av–Qs†ƒFã&äuÌʹÝ2býádÙI’´Ëœ¼)Y»+™ß›[Vg“Ò¢Jù1no<V<*Ét*-¢&â-ßBÆ×090`11-øsµ–¶1VÛ==ü:¼÷ØûÍZ„æ¹=#ùÞV«¡fä&Έ'ëˆÝ=ä^‰¤?Êçù!ØèØr-3îÛ+êò‚û¢½°BéG¦U”Ü1žˆr6S‹“ŽKRK°A¹ª¿â9]}×u¬]ž„Îï›V¦Â¶4Ãï¢v£×é´Ü2Äžiqô>§17F*ÎañníÆ4]s8mÏ›HSÏ771í´‰d3´Þ|À]Uà{þñýqø’e„XÿF4–:Yl&uqžÍÒÿ¾u9¤jóHP‰çêoÒNŠX-°xpÒÿ*ejÏD0Ë+GnÊ-/§3ÜJÙˆƒÌ=ŒÒOX‰|O%wæ[n‹ã4)ôF+~´Ö{aÄ$(Þí¼”÷u–qÿBòfÂíÜìTó–xÝwû¾])<§O«\‚e°‡¾‹K…ZDPô;µ!ò&Ô¼¨1gŠ—Ÿ¦©zW¢¾×4K±ÔÄ_ìûÄ‚3¶Ñ>‚bùn±œ×)ÙCâRö裶”ˆ1ßÑֱͮ[ZéRïyÓxÓE¨cW˜{Ã’ùoE›¥ÚvA¨‹êÆýÑY½RÎ5´‘Ê™uåÄr"ãYð÷I!0¤)å‡ëž”>úèWò}é€@.ØñÈQ€ñ{Á„‘Ü’‰~Çñ=…|“ڃĬcóÇkþÛÇ–š;{¡¦½ÕrÎé–àTz€Kì2à^|¢èˆÎxž“å$œ2ô»EidœþFrSS¥ÝÜ—X¡á~îþQ˜NÜGñ¥Q)aè•4B"1230"" +-|"‡48ôû€û»

在线尝试!

我所做的只是将图案切成四分之四,将符号转换为4底,将图案的1/4压缩为214底,然后将其翻转到对称线上。我正在使用实际算法来研究更智能的东西,但是直到完成为止,这才是我的工作。


4
这是迄今为止05AB1E我所看到的最大答案。xD这种语言的答案通常接近6.20,而不是620。;)
Kevin Cruijssen

@KevinCruijssen如果要求迭代4,它会小得多。仍在研究05AB1E中的实际算法...比我想象的要难。
Magic Octopus Urn'Mar

2

Python 3,264个字节

def F(g,p,d,k):
 for c in'-|'[d.real!=0]*(2**k-k-1):g[p]=c;p+=d
 P(g,p,k-1)
def P(g,p,k):
 if'+'==g.setdefault(p,'+')and k:
  for d in[1,1j,-1,-1j]:F(g,p+d,d,k)
g={}
P(g,0j,5)
print('\n'.join(''.join(g.get(r+c*1j,' ')for c in range(-47,48))for r in range(-47,48)))

使用一对相互递归的函数。F画线,P插入“ +”。可以打更多的高尔夫球,但是暂时没有。


1

C,236字节

char t[95][95],i=95;f(x,y,s,n,m){if(t[y][x]<33){m=~s+(1<<s);for(n=~m;n++<m;)t[y][x+n]='-',t[y+n][x]=n==0?'+':'|';if(s--)f(x+n,y,s),f(x-n,y,s),f(x,y+n,s),f(x,y-n,s);}}main(){memset(t,32,9025);f(47,47,5);while(i--)printf("%.95s\n",t[i]);}

只是在显示之前递归地构建字符表。

在线尝试!

感谢@Neil使我意识到分支的长度遵循实际规则。

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.