Bảng chữ cái nhiễm sắc thể


11

Giới thiệu

Những thách thức về bảng chữ cái nằm trong DNA của chúng tôi, vì vậy hãy cho thấy nó.

Thử thách

In chính xác văn bản sau:

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

Quy tắc

  • Bạn phải phù hợp với trường hợp của từng chữ cái
  • Trailing và / hoặc hàng đầu mới và / hoặc không gian được cho phép

Chiến thắng

Mã ngắn nhất trong byte thắng.


14
Điều này không có nghĩa gì khi cả hai dòng đầu tiên đều chứa B và C khi tất cả các dòng khác (thanh phần giữa) có các chữ cái duy nhất.
Gây tử vong vào

1
@Firthize Điều đó làm cho thử thách trở nên thú vị hơn một chút
Beta Decay

5
Cá nhân tôi sẽ tranh luận điều đó ngược lại
Fatalize 23/8/2016

2
Tôi tin rằng có một sai lầm trong dòng thứ 9. Cần được "WwXx XX WW ", không phải "WwXx xXWw", không nên nó?
GOTO 0

2
@BetaDecay Fatalize là đúng, điều đó làm cho thử thách trở nên nhàm chán hơn.
moonheart08

Câu trả lời:


18

Vim (không có công cụ bên ngoài), 106 byte

Dòng mới cho rõ ràng:

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

Đây là Return, is Right, là Escape, ʌlà CTRL-V và ðlà Delete.

hoạt hình golf


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

1
1) Xóa dấu chấm phẩy từ dòng thứ hai, thứ ba và thứ tư 2) Xóa dòng mới ở cuối dòng đầu tiên 3) Thưởng thức câu trả lời của bạn ngắn hơn daHugLenny 4) Vì chưa có ai nói điều đó, xin chào mừng bạn đến với 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]

Hãy thử trực tuyến!

Lạm dụng thực tế là mặc định Write-Outputở cuối thực thi chèn một dòng mới giữa các thành phần.

Dòng đầu tiên xây dựng các nhánh. Chúng tôi lặp qua hai phạm vi tương ứng với các giá trị ASCII cho các chữ in hoa, mỗi lần lặp lại xuất ra một charmảng của chữ cái đó và chữ cái +32đó (là điểm ASCII chữ thường). Điều đó -joinkết hợp thành một chuỗi dài, sau đó -splitcứ sáu yếu tố (được gói gọn trong các ô vuông để chúng được bảo tồn), tiếp theo là -ne''kéo ra các phần tử trống do kết quả của sự phân tách, do đó tạo thành một chuỗi các chuỗi.

Những chuỗi trong một mảng get mảng nối để thêm vào WwXx, YyZcác yếu tố, sau đó một PadRig ht 10để làm cho họ tất cả chiều rộng thích hợp. Tại thời điểm này, chúng ta có một chuỗi các chuỗi như sau (một phần tử trên mỗi dòng).

AaBbCc    
BbCcDd    
EeFfGg    
HhIiJj    
KkLlMm    
NnOoPp    
QqRrSs    
TtUuVv    
   WwXx   
       Yy 
         Z

Toàn bộ mảng đó được dẫn đến một vòng lặp khác để xây dựng các chuỗi được nhân đôi với -joinvà đảo ngược mảng [9..0].

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

Chúng tôi lưu các chuỗi kết quả vào $xvà gửi vào parens để đặt một bản sao trên đường ống.

Dòng tiếp theo đặt zzchuỗi trên đường ống, sau đó $xmảng theo thứ tự ngược lại. Tất cả những cái còn lại trên đường ống và đầu ra là ẩn.

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 nhờ mazzy.


154 byte - '(.{6})'thay vào đó (......)RightPadthay vào đó là không gian đuôi.
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]

Hãy thử trực tuyến!

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

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

mã hóa có bao nhiêu khoảng trắng để thêm vào mỗi dòng ( (-1)*' 'bằng 0*' ').


2

Python 2, 331 241 229 byte

Sẽ chơi golf sau.

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 byte

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)

Đủ đơn giản, dựa trên câu trả lời của TimmyD, loại. Xây dựng cánh tay trái trên cùng bằng cách sử dụng một đoạn nén thực sự kém, sau đó thực hiện cả hai gương cùng một lúc quanh 'zz' và in.

Hãy dùng thử trên Altern.It


2

05AB1E , 48 46 40 38 36 byte

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

-2 byte (và cơ hội cho 10 lần nữa với phương pháp thay thế này) nhờ @MagicOctopusUrn .

Hãy thử trực tuyến.

Giải trình:

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

Xem 05AB1E mẹo này của tôi (phần Làm thế nào để nén các số nguyên lớn? ) Để hiểu tại sao Ž3ô1008ƵJ120.


1
-2 byte sử dụng phương pháp mặt nạ:•3ô•8.D120 6 1D)bí.Bí»…abcA¦«Dus.ιv1y.;}0ð:º.∊
Bạch tuộc ma thuật Urn

1
@MagicOctopusUrn Ah đẹp, và với một số nén và dựng sẵn, "abc"nó có thể được đánh gôn thêm 6: •3ô•có thể Ž3ô; 120 6 1Dcó thể được ƵJ6XD; …abcA¦«Dus.ιcó thể žRAu¦«Dl.ι. :)
Kevin Cruijssen

1
@MagicOctopusUrn Oh, và 2 người nữa bằng cách thay đổi í.Bíthành Tj(chỉ hoạt động trong phiên bản mới, nhưng không chắc đó là lỗi hay cố ý). Vì vậy, bạn hoàn toàn kích hoạt tiết kiệm 10 byte tổng cộng với phương pháp thay thế của mình. : D
Kevin Cruijssen

1
Bạn phải tìm thêm một để giành chiến thắng;).
Bạch tuộc ma thuật Urn

1
@MagicOctopusUrn Phạt, xóa thêm 2. ; p Và žRAu¦«Dl.ιScó thể thay thế A¬žR:uSDl.ι, nhưng thật không may, điều đó sẽ không lưu byte. Và 0м.Bthay vì 0ð:là một byte nhiều hơn thay vì ít hơn .. Kinda hy vọng các gương có thể đóng hộp hoàn toàn bằng cách thêm các dấu cách để .Bkhông cần thiết, nhưng có lẽ tốt hơn là chúng không cho các thử thách khác tôi đoán.
Kevin Cruijssen

2

Stax , 42 41 38 35 byte

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

Chạy và gỡ lỗi nó

Cập nhật: Có một lỗi trong giải pháp 41 byte. (vâng, mặc dù nó không có đầu vào) Trong khi sửa nó, tôi đã tìm thấy thêm 3 byte để cạo.

Cập nhật lại: Có sự cạnh tranh đang diễn ra, vì vậy tôi đã loại bỏ thêm 3 byte dự phòng.

Giải trình: (của một giải pháp khác, nhưng có kích thước giống hệt nhau)

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

Chạy cái này


1

Matricks , 105 byte (không lọc)

Whoa, tôi tìm thấy rất nhiều lỗi. Phần khó duy nhất của thử thách này là thánh giá ở giữa. Điều đó làm cho gần một nửa số byte.

Chạy với -A 1cờ

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}

Giải trình:

m + / c2 + 66 + * r3 * 32% c2 7 6 # Xây dựng khối "bình thường"
v {k - {} 1z-L1Q} # Thêm phần "bất thường" ở trên
u {q-Lc2k + {} 2b0b0b0a [a0a0u [a89a121] a [u0u90]]} # Tạo 1/4 đường chéo kỳ lạ
a {Y} u [mQc9a122a122] u {z1cX} # Phản chiếu khối vừa tạo, thêm
                                             # chữ thường zs ở giữa một nửa

Một lỗi khác tôi chưa sửa là phần cuối cùng, u{z1cX}không hoạt động khi bạn đặt phần cắt sau X. Sẽ điều tra / sửa chữa.




1

Brainfuck, 456 byte

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

Hãy thử trực tuyến!


0

Python 3 , 215 byte (Không cạnh tranh)

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

Hãy thử trực tuyến!

Lấy một số ý tưởng từ hai giải pháp Python 2, nhưng áp dụng chúng cho một cách tiếp cận bằng cách sử dụng phép nối () dường như tiết kiệm được một vài byte. Có thể điều này có thể được đánh gôn hơn nữa; Tôi có thể xem lại điều này sau.



@JonathanFrech Python 3 đã được phát hành từ lâu trước thử thách này. Điều này phải có thẻ "không cạnh tranh" vì một số lý do khác.
pppery

@pppery Một điều tôi đã nhận thấy là bài đăng này không tạo khoảng trống để lấp đầy vùng lõm trái của nhiễm sắc thể.
Jonathan Frech

@squid Tôi có thể hỏi tại sao câu trả lời này đã được đánh dấu là không cạnh tranh?
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

Hãy thử trực tuyến!


0

Bong bóng, 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

Hãy thử trực tuyến!

Vì đây là lần gửi Bubblegum đầu tiên của tôi, nó có thể không phải là giải pháp tối ưu. Xin vui lòng kiểm tra lại.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.