The Alphabet Chromosome
Vim (no external tools), 106 bytes
Newlines for clarity:
:h<_↵↵↵YZZPllabc♥
:s/./\u&&/g↵
qa6li↵♥q7@a3i ♥fY
i↵ →→↵ →↵→ð♥
ʌHA ♥9l
qbmaʌ99jY$P`ah@bq@b
y11G:g//m0↵P
Here ↵
is Return, →
is Right, ♥
is Escape, ʌ
is CTRL-V, and ð
is Delete.
PowerShell v2+, 175 169 163 154 bytes
($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]
Try it online!
Abuses the fact that default Write-Output
at the end of execution inserts a newline between elements.
The first line constructs the branches. We loop over two ranges corresponding to the ASCII values for the capital letters, each iteration output a char
array of that letter and that letter +32
(which is the lowercase ASCII point). That's -join
ed together into one long string, then -split
on every six elements (encapsulated in parens so they're preserved), followed by a -ne''
to pull out the empty elements as a result of the split, thus forming an array of strings.
These strings in an array get array-concatenation to add on the WwXx
, Yy
, and Z
elements, then a PadRight 10
to make them all the appropriate width. At this point we have an array of strings like the following (one element per line).
AaBbCc
BbCcDd
EeFfGg
HhIiJj
KkLlMm
NnOoPp
QqRrSs
TtUuVv
WwXx
Yy
Z
That whole array is piped to another loop to construct the mirrored strings with -join
and array-reversing [9..0]
.
AaBbCc cCbBaA
BbCcDd dDcCbB
EeFfGg gGfFeE
HhIiJj jJiIhH
KkLlMm mMlLkK
NnOoPp pPoOnN
QqRrSs sSrRqQ
TtUuVv vVuUtT
WwXx xXwW
Yy yY
ZZ
We save the resulting strings into $x
and enclose in parens to also place a copy on the pipeline.
The next line places the zz
string on the pipeline, then the $x
array in reverse order. All of those are left on the pipeline and output is implicit.
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 bytes thanks to mazzy.
Python 2, 230 bytes
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