Kromosom Alfabet

11

pengantar

Tantangan alfabet ada dalam DNA kita, jadi mari kita tunjukkan.

Tantangan

Cetak teks berikut dengan tepat:

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

Aturan

  • Anda harus mencocokkan huruf setiap huruf
  • Trailing dan / atau baris baru dan / atau spasi diizinkan

Kemenangan

Kode terpendek dalam byte menang.

Peluruhan Beta
sumber
14
Tidak masuk akal bahwa dua baris pertama mengandung B dan C ketika semua baris lainnya (kecuali bagian tengah) memiliki huruf unik.
Fatalkan
1
@Fatalize Itu membuat tantangan sedikit lebih menarik
Beta Decay
5
Saya pribadi berpendapat itu melakukan sebaliknya
Fatalize
2
Saya percaya ada kesalahan di baris ke-9. Seharusnya "WwXx xX wW ", bukan "WwXx xXWw", bukan?
GOTO 0
2
@BetaDecay Fatalize benar, yang membuat tantangan lebih membosankan.
moonheart08

Jawaban:

18

Vim (tanpa alat eksternal), 106 byte

Baris baru untuk kejelasan:

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

Ini Return, Right, Escape, ʌCTRL-V, dan ðDelete.

animasi golf

Lynn
sumber
3

Python 2, 230 byte

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
Andrew Dunai
sumber
1
1) Hapus tanda titik koma dari baris kedua, ketiga dan keempat 2) Hapus baris baru di akhir baris pertama 3) Nikmati jawaban Anda lebih pendek dari daHugLenny 4) Karena belum ada yang mengatakannya, selamat datang di PPCG!
Erik the Outgolfer
3

PowerShell v2 +, 175 169 163 154 byte

($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]

Cobalah online!

Menyalahgunakan fakta bahwa default Write-Outputdi akhir eksekusi memasukkan baris baru antar elemen.

Baris pertama membangun cabang. Kami mengulangi dua rentang yang sesuai dengan nilai ASCII untuk huruf kapital, setiap iterasi menghasilkan chararray huruf itu dan huruf itu +32(yang merupakan titik ASCII huruf kecil). Itu -joindisatukan menjadi satu string panjang, lalu -splitpada setiap enam elemen (dienkapsulasi dalam parens sehingga mereka dipertahankan), diikuti oleh a -ne''untuk mengeluarkan elemen kosong sebagai hasil dari perpecahan, sehingga membentuk array string.

String ini dalam berbagai get array Rangkaian untuk menambahkan pada WwXx, Yy, dan Zunsur-unsur, maka PadRig sebuah ht 10untuk membuat mereka semua lebar yang sesuai. Pada titik ini kita memiliki array string seperti berikut (satu elemen per baris).

AaBbCc    
BbCcDd    
EeFfGg    
HhIiJj    
KkLlMm    
NnOoPp    
QqRrSs    
TtUuVv    
   WwXx   
       Yy 
         Z

Seluruh array disalurkan ke loop lain untuk membangun string cermin dengan -joindan 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         

Kami menyimpan string yang dihasilkan ke dalam $xdan melampirkan di parens juga menempatkan salinan di pipa.

Baris selanjutnya menempatkan zzstring pada pipeline, kemudian $xarray dalam urutan terbalik. Semua itu ditinggalkan di jalur pipa dan hasilnya tersirat.

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 byte berkat mazzy.

AdmBorkBork
sumber
154 byte - '(.{6})'sebagai gantinya (......)dan RightPadbukan buntut spasi.
mazzy
3

Python 2 , 156 byte

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]

Cobalah online!

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

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

yang mengkodekan berapa banyak ruang untuk dipertukarkan ke setiap baris ( (-1)*' 'sama dengan 0*' ').

Lynn
sumber
2

Python 2, 331 241 229 byte

Akan golf lebih nanti.

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
akrolit
sumber
2

Lua, 212 Bytes

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)

Cukup sederhana, berdasarkan jawaban TimmyD, semacam. Buat lengan kiri atas menggunakan potongan yang benar-benar tidak dikompresi, lalu lakukan kedua mirror sekaligus di sekitar 'zz', dan cetak.

Cobalah di Repl.It

ATaco
sumber
2

05AB1E , 48 46 40 38 36 byte

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

-2 byte (dan kesempatan untuk 10 lebih dengan pendekatan alternatif ini) terima kasih kepada @MagicOctopusUrn .

Cobalah online.

Penjelasan:

Ž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)

Lihat tip tambang 05AB1E ini (bagian Bagaimana cara mengompresi bilangan bulat besar? ) Untuk memahami mengapa Ž3ôada 1008atau ƵJtidak 120.

Kevin Cruijssen
sumber
1
-2 byte menggunakan pendekatan topeng:•3ô•8.D120 6 1D)bí.Bí»…abcA¦«Dus.ιv1y.;}0ð:º.∊
Magic Octopus Mm
1
@ MagicOctopusUrn Ah bagus, dan dengan beberapa kompresi dan builtin "abc"itu bisa golf dengan 6 lebih: •3ô•bisa Ž3ô; 120 6 1Dbisa ƵJ6XD; …abcA¦«Dus.ιbisa žRAu¦«Dl.ι. :)
Kevin Cruijssen
1
@ MagicOctopusUrn Oh, dan 2 lainnya dengan mengubah í.Bíke Tj(hanya berfungsi di versi baru, tetapi tidak yakin apakah ini bug atau disengaja). Jadi secara implisit Anda mengaktifkan penghematan 10-byte total dengan pendekatan alternatif Anda. : D
Kevin Cruijssen
1
Anda harus menemukan satu lagi untuk menang;).
Magic Gurita Guci
1
@MagicOctopusUrn Baik, 2 lagi dihapus. ; p Dan žRAu¦«Dl.ιSbisa juga A¬žR:uSDl.ι, tapi sayangnya itu tidak akan menghemat byte. Dan 0м.Bbukannya 0ð:byte lebih banyak daripada kurang .. Agak berharap cermin mungkin secara implisit kotak dengan menambahkan spasi sehingga .Btidak perlu, tapi mungkin lebih baik mereka tidak untuk tantangan lain kurasa.
Kevin Cruijssen
2

Stax , 42 41 38 35 byte

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

Jalankan dan debug itu

Pembaruan: Ada bug dalam solusi 41 byte. (ya, meskipun tidak memiliki input) Sambil memperbaikinya, saya menemukan 3 byte lagi untuk dicukur.

Perbarui lagi: Ada kompetisi yang sedang berlangsung, jadi saya menghapus 3 byte kontingensi lagi.

Penjelasan: (dari solusi berbeda, namun berukuran identik)

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])

Jalankan yang ini

rekursif
sumber
1

Matricks , 105 byte (tidak bersaing)

Wah, saya menemukan banyak bug. Satu-satunya bagian sulit dari tantangan ini adalah salib di tengah. Itu membuat hampir setengah jumlah byte.

Jalankan dengan -A 1bendera

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}

Penjelasan:

m + / c2 + 66 + * r3 * 32% c2 7 6 # Bangun blok "normal"
v {k - {} 1z-L1Q} # Tambahkan bagian "abnormal" di atas
u {q-Lc2k + {} 2b0b0b0a [a0a0u [a89a121] a [u0u90]]} # Buat 1/4 dari diagonal aneh
a {Y} u [mQc9a122a122] u {z1cX} # Mencerminkan blok yang baru saja dibuat, menambahkan
                                             # huruf kecil z di antara dua bagian

Bug lain yang belum saya perbaiki adalah bahwa bagian terakhir, u{z1cX}tidak berfungsi ketika Anda meletakkan potongan setelah X. Akan menyelidiki / memperbaiki.

Biru
sumber
1

/// , 229 byte

/*/\/\///^/        *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

Cobalah online!

Erik the Outgolfer
sumber
1

PowerShell , 150 byte

($x='AaBbCc
BbCcDd
EeFfGg
HhIiJj
KkLlMm
NnOoPp
QqRrSs
TtUuVv
   WwXx
       Yy
         Z'-split'
'|% *ht 10|%{$_+-join$_[9..0]})
' '*9+'zz'
$x[10..0]

Cobalah online!

mazzy
sumber
1

Brainfuck, 456 byte

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

Cobalah online!

orthoplex
sumber
0

Python 3 , 215 byte (Tidak Bersaing)

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]]))

Cobalah online!

Mengambil beberapa ide dari dua solusi Python 2, tetapi menerapkannya pada pendekatan menggunakan join () yang tampaknya menyimpan beberapa byte. Ada kemungkinan bahwa ini bisa di-golf lebih lanjut; Saya mungkin meninjau kembali nanti.

cumi-cumi
sumber
Perhatikan bahwa jawaban tidak lagi harus ditandai tidak bersaing .
Jonathan Frech
@JonathanFrech Python 3 dirilis jauh sebelum tantangan ini. Ini harus memiliki tag "tidak bersaing" untuk beberapa alasan lain.
pppery
@pppery Satu hal yang saya perhatikan adalah postingan ini tidak membuat spasi untuk mengisi daerah cekung kiri kromosom.
Jonathan Frech
@ cumi Boleh saya bertanya mengapa jawaban ini ditandai tidak bersaing?
Jonathan Frech
0

Ruby , 177 ... 145 byte

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

Cobalah online!

GB
sumber
0

Bubblegum, 168 byte

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

Cobalah online!

Karena ini adalah pengiriman Bubblegum pertama saya, itu mungkin bukan solusi yang optimal. Harap periksa ulang.

orthoplex
sumber