字母染色体


11

介绍

字母挑战已经存在于我们的基因中,下面让我们来演示一下。

挑战

准确打印以下文本:

AaBbCc        cCbBaA
BbCcDd        dDcCbB
EeFfGg        gGfFeE
HhIiJj        jJiIhH
KkLlMm        mMlLkK
NnOoPp        pPoOnN
QqRrSs        sSrRqQ
TtUuVv        vVuUtT
   WwXx      xXwW
       Yy  yY
         ZZ
         zz
         ZZ
       Yy  yY
   WwXx      xXwW
TtUuVv        vVuUtT
QqRrSs        sSrRqQ
NnOoPp        pPoOnN
KkLlMm        mMlLkK
HhIiJj        jJiIhH
EeFfGg        gGfFeE
BbCcDd        dDcCbB
AaBbCc        cCbBaA

规则

  • 您必须匹配每个字母的大小写
  • 尾随和/或前导换行符和/或空格是允许的

获奖

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


14
当所有其他行(中间部分除外)具有唯一字母时,前两行都包含B和C并没有多大意义。
致命

1
@Fatalize那会让挑战变得更有趣
Beta Decay

5
我个人认为这则正好相反
Fatalize

2
我相信第9行有误。应该是“ WwXx xX wW ”,而不是“ WwXx xXWw”,不是吗?
GOTO

2
@BetaDecay Fatalize是正确的,这使挑战变得更无聊。
moonheart08

Answers:


18

Vim(无外部工具),106字节

换行符:

:h<_↵↵↵YZZPllabc♥
:s/./\u&&/g↵
qa6li↵♥q7@a3i ♥fY
i↵    →→↵  →↵→ð♥
ʌHA ♥9l
qbmaʌ99jY$P`ah@bq@b
y11G:g//m0↵P

是Return,Right,Escape,ʌCTRL-V和ðDelete。

高尔夫动画


3

Python 2,230字节

s='';m=['AaBbCc','BbCcDd','EeFfGg','HhIiJj','KkLlMm','NnOoPp','QqRrSs','TtUuVv','   WwXx',' '*7+'Yy',' '*9+'Z'];
p=lambda l:l.ljust(10)+l[::-1].rjust(10)+'\n';
for l in m:s+=p(l);
s+=' '*9+'zz\n';
for l in m[::-1]:s+=p(l)
print s

1
1)从第二,第三和第四行中删除分号2)在第一行的末尾删除换行符3)答案比daHugLenny的答案短一些4)既然没有人说过,欢迎来到PPCG!
暴民埃里克

3

PowerShell的V2 +,175个 169 163 154字节

($x=(-join(65..67+66..86|%{$_;32+$_}|%{[char]$_})-split'(.{6})'-ne'')+'   WwXx'+'       Yy'+(' '*9+'Z')|% *ht 10|%{$_+-join$_[9..0]})
' '*9+'zz'
$x[10..0]

在线尝试!

滥用默认Write-Output在执行结束时在元素之间插入换行符的事实。

第一行构造分支。我们循环使用两个与大写字母的ASCII值对应的范围,每次迭代输出char该字母和该字母的数组+32(这是小写的ASCII点)。将-join它们一起编成一个长字符串,然后-split在每六个元素上(封装在括号中,以便保留它们),然后通过-ne''分割将空元素拉出,从而形成一个字符串数组。

这些字符串数组中的GET阵列级联添加的WwXxYyZ元素,然后PadRig ht 10使他们所有适当的宽度。此时,我们有一个字符串数组,如下所示(每行一个元素)。

AaBbCc    
BbCcDd    
EeFfGg    
HhIiJj    
KkLlMm    
NnOoPp    
QqRrSs    
TtUuVv    
   WwXx   
       Yy 
         Z

整个数组通过管道传递到另一个循环,以使用-join和数组反转构造镜像字符串[9..0]

AaBbCc        cCbBaA
BbCcDd        dDcCbB
EeFfGg        gGfFeE
HhIiJj        jJiIhH
KkLlMm        mMlLkK
NnOoPp        pPoOnN
QqRrSs        sSrRqQ
TtUuVv        vVuUtT
   WwXx      xXwW   
       Yy  yY       
         ZZ         

我们将结果字符串保存到$x并括在括号中,还将副本放置在管道上。

下一行将zz字符串放置在管道上,然后将$x数组以相反的顺序放置。所有这些都留在管道上,并且输出是隐式的。

PS C:\Tools\Scripts\golfing> .\alphabet-chromosome.ps1
AaBbCc        cCbBaA
BbCcDd        dDcCbB
EeFfGg        gGfFeE
HhIiJj        jJiIhH
KkLlMm        mMlLkK
NnOoPp        pPoOnN
QqRrSs        sSrRqQ
TtUuVv        vVuUtT
   WwXx      xXwW   
       Yy  yY       
         ZZ
         zz
         ZZ
       Yy  yY       
   WwXx      xXwW   
TtUuVv        vVuUtT
QqRrSs        sSrRqQ
NnOoPp        pPoOnN
KkLlMm        mMlLkK
HhIiJj        jJiIhH
EeFfGg        gGfFeE
BbCcDd        dDcCbB
AaBbCc        cCbBaA

-9个字节感谢mazzy。


154个字节 - '(.{6})'代替(......)RightPad代替尾部空格。
mazzy

3

Python 2,156字节

r=('AaBbCc.BbCcDd.EeFfGg.HhIiJj.KkLlMm.NnOoPp.QqRrSs.TtUuVv.   WwXx.%8cy.%10c.%10c'%(89,90,'z')).split('.')
for k in r+r[-2::-1]:s='%-10s'%k;print s+s[::-1]

在线尝试!

512/(i**4+47)-1

,1,1,0,3,7,9,9,9,7,3,0,1,1,

编码要在每行前面添加多少空格((-1)*' '等于0*' ')。


2

Python 2中,331个 241 229字节

以后再打高尔夫球。

l=("AaBbCc|BbCcDd|EeFfGg|HhIiJj|KkLlMm|NnOoPp|QqRrSs|TtUuVv|   WwXx|%sYy"%(" "*7)).split("|");n=0;v=1;p='for i in([8]*8+[6,2])[::v]:print l[n]+" "*i+l[n][::-1];n+=v';exec p;v=-1;n=9;print"{0}ZZ\n{0}zz\n{0}ZZ".format(" "*9);exec p

2

Lua,212字节

s=([[         Z
       Yy 
   WwXx   
TtUuVv_QqRrSs_NnOoPp_KkLlMm_HhIiJj_EeFfGg_BbCcDd_AaBbCc    ]]):gsub("_","    \n")S="         zz"for z in s:gmatch"[%w ]+"do k=z..z:reverse()S=k..'\n'..S..'\n'..k end print(S)

根据TimmyD的回答,很简单。使用一个压缩效果很差的块构建左上臂,然后围绕“ zz”一次镜像两个镜像并进行打印。

在Repl.It上尝试


2

05AB1E48 46 40 38 36 字节

Ž3ô8.DƵJ6XD)bTj»0ð:1žRAu¦«Dl.ιS.;º.∊

@MagicOctopusUrn --2个字节(使用这种替代方法还有10个字节的机会)。

在线尝试。

说明:

Ž3ô            # Push compressed integer 1008
   8.D         # Duplicate it 8 times
      ƵJ       # Push compressed integer 120
        6      # Push 6
         XD    # Push 1 twice
           )   # Wrap all into a list
b              # Convert each to binary
 Tj            # Add leading spaces to each binary-string to make them size 10  
   »           # Then join all strings by newlines
0ð:            # Replace all 0s with spaces
 žR            # Push the string "ABC"
   Au¦«        # Merge the uppercased alphabet minus the first "A" with it
       Dl      # Create a lowercase copy
             # Intersect the uppercase and lowercase strings: "AaBbCcBb..."
           S   # Convert it to a list of characters
1           .; # Replace every 1 with each of these characters in the same order
º              # Then mirror everything vertically without overlap,
 .∊            # and horizontally with the last line overlapping
               # (and output the result implicitly)

请参阅我的05AB1E技巧(如何压缩大整数部分)以了解为什么Ž3ô1008ƵJ120


1
-2个字节,使用遮罩方法:•3ô•8.D120 6 1D)bí.Bí»…abcA¦«Dus.ιv1y.;}0ð:º.∊
Magic Octopus Urn

1
@MagicOctopusUrn阿很好,并与一些压缩和内建"abc"它可以通过6 golfed更多:•3ô•可以是Ž3ô; 120 6 1D可以ƵJ6XD; …abcA¦«Dus.ι可以žRAu¦«Dl.ι。:)
Kevin Cruijssen

1
@MagicOctopusUrn哦,还有2个可以更改í.BíTj(仅适用于新版本,但不确定是错误还是故意的)。因此,您可以使用其他方法隐式启用总计10字节的保存。:D
凯文·克鲁伊森

1
您将找到另一个获胜;)。
魔术

1
@MagicOctopusUrn好,再删除2个。; p也žRAu¦«Dl.ιS可以是A¬žR:uSDl.ι,但不幸的是,这不会节省字节。而0м.B不是0ð:一个字节,而不是更少..还挺希望镜子可以通过添加尾随空格,因此隐框.B不会是必要的,但也许是因为我想其他的挑战更好的他们不这样做。
凯文·克鲁伊森

2

Stax42 41 38 35 字节

înáöêòé{V║»╧å╓ä¥ì√‼╦▓°nlΓΣ▌ê9t☻*$╢√

运行并调试

更新: 41字节解决方案中存在一个错误。(是的,即使它没有输入)在修复它时,我发现还需要剃除3个字节。

再次更新:正在进行竞争,所以我又删除了3个意外字节。

说明: (具有不同但大小相同的解决方案)

VA3(        "ABC"
VAD2T       "BCD...VWX"
+3/         concatenate and split into groups of 3
'Y]+        concatenate ["Y"]
{cv\$m      map each string using: copy, lowercase, zip, flatten
.ZzM+       concatenate ["Z", "z"]
|p          palindromize list of strings
m           map each string _ using the rest of the program and implicitly print output
  c%Nh6+H   (-len(_)/2 + 6) * 2
  )         left-pad (npm lol amirite) to length
  A(        right-pad to 10
  :m        mirror (a + a[::-1])

运行这个


1

Matricks,105个字节(非竞争)

哇,我发现了很多错误。挑战的唯一困难部分是中间的十字架。这几乎使字节计数的一半。

-A 1标志跑

m+/c2+66+*r3*32%c2 7 6v{k-{}1z-L1Q}u{q-Lc2k+{}2b0b0b0a[a0a0u[a89a121]a[u0u90]]}a{Y}u[mQc9a122a122]u{z1cX}

说明:

m + / c2 + 66 + * r3 * 32%c2 7 6#构造“普通”块
v {k-{} 1z-L1Q}#在上方添加“异常”部分
u {q-Lc2k + {} 2b0b0b0a [a0a0u [a89a121] a [u0u90]]}#使奇怪的对角线的1/4
a {Y} u [mQc9a122a122] u {z1cX}#镜像刚创建的块,添加
                                             #在两半之间的小写zs

我还没有解决的另一个错误是,u{z1cX}当您在X。之后放置剪切时,最后一部分不起作用。将调查/修复。


1

///,229字节

/*/\/\///^/        *0/AaBbCc^cCbBaA
*1/BbCcDd^dDcCbB
*2/EeFfGg^gGfFeE
*3/HhIiJj^jJiIhH
*4/KkLlMm^mMlLkK
*5/NnOoPp^pPoOnN
*6/QqRrSs^sSrRqQ
*7/TtUuVv^vVuUtT
*8/   WwXx      xXwW
*9/       Yy  yY
/0123456789^ ZZ
^ zz
^ ZZ
9876543210

在线尝试!



1

Brainfuck,456个字节

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

在线尝试!


0

Python 3,215字节(不竞争)

p=lambda l:l.ljust(10)+l[::-1].rjust(10)
a=("AaBbCc|BbCcDd|EeFfGg|HhIiJj|KkLlMm|NnOoPp|QqRrSs|TtUuVv|   WwXx|%sYy|%sZ"%(7*' ',9*' ')).split('|')
print('\n'.join([p(x)for x in a]+[' '*9+'zz']+[p(x)for x in a[::-1]]))

在线尝试!

从两个Python 2解决方案中汲取了一些想法,但是将它们应用于使用join()的方法,该方法似乎节省了很多字节。这可能会打得更远。我可能稍后再讨论。



@JonathanFrech在此挑战之前很久就发布了Python 3。由于某些其他原因,该标签必须具有“非竞争”标签。
pppery

@pppery我确实注意到的一件事是,这篇文章并没有创造空间来填充染色体的左凹区域。
乔纳森·弗雷希

@squid请问为什么这个答案被标记为不竞争?
乔纳森·弗雷希

0

红宝石177个... 145个字节

puts r=(("%s%s%s\n"*8+"%5s%s\n%9s\n%11s")%[*?a..?c,*?b..?z].map{|x|x.upcase+x}).lines.map{|l|l=l.chop.ljust 10;l+l.reverse},"%11s"%"zz",r.reverse

在线尝试!


0

Bubblegum,168个字节

00000000: 6dd1 c712 8230 1006 e0fb 3e45 5e85 264d  m....0....>E^.&M
00000010: 7a51 b8a1 14e9 1d91 a757 4632 ce38 9bd3  zQ.......WF2.8..
00000020: e6cb a4ec 1f26 626f dc9d 1ce3 cedd d888  .....&bo........
00000030: 819d f898 62cc ef0c 4272 4ac5 8c62 26a6  ....b...BrJ..b&.
00000040: a744 00e9 21e7 4a41 b150 72f9 2181 5a9e  .D..!.JA.Pr.!.Z.
00000050: 2bad a658 6bd5 b954 416f 8cd6 ec28 7666  +..Xk..TAo...(vf
00000060: 6b34 3a58 bd3d 3823 c5d1 19ec de02 77f2  k4:X.=8#......w.
00000070: 667f a1b8 f8b3 37b9 f0a9 2ecf ebfa b5f5  f.....7.........
00000080: fabc c0b1 1ebc 0879 0574 4648 18fe ea6d  .......y.tFH...m
00000090: c3fc b7e3 ef44 f462 f489 6833 68db 6840  .....D.b..h3h.h@
000000a0: 6894 68e8 0cf2 3d6f                      h.h...=o

在线尝试!

由于这是我第一次提交Bubblegum,因此它可能不是最佳解决方案。请仔细检查。

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.