알파벳 염색체


11

소개

우리의 DNA에는 알파벳 문제가 있으므로, 그것을 보여 드리겠습니다.

도전

다음 텍스트를 정확하게 인쇄하십시오.

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가 포함되어 있다는 것은 의미가 없습니다.
Fatalize

1
@Fatalize 도전을 좀 더 재미있게 만드는 것입니다
Beta Decay

5
나는 개인적으로 그것이 반대라고 주장한다
Fatalize

2
나는 9 번째 줄에 실수가 있다고 생각합니다. "WwXx xXWw"가 아니라 "WwXx xX wW "여야합니까?
GOTO 0

2
@BetaDecay Fatalize가 옳으므로 도전이 더 지루해집니다.
moonheart08

답변:


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

파이썬 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에 오신 것을 환영합니다!
Outgolfer Erik

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하나의 긴 줄로 묶인 다음 -split6 개의 요소 (파란으로 캡슐화되어 보존 됨) -ne''마다 나뉘고 분할 결과 빈 요소를 꺼내어 문자열 배열을 형성합니다.

배열 가져 오기 배열 연결에서 이러한 문자열은에 추가 WwXx, YyZ다음 요소가 구성 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파이프 라인에 저장하고 파이프 라인에 사본을 배치하기 위해 parens로 묶습니다.

다음 줄은 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

mazzy 덕분에 -9 바이트.


154 바이트 - '(.{6})'대신 (......)하고 RightPad대신에 꼬리 공간.
mazzy

3

파이썬 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,,7,9,9,9,7,,0,1,1,

각 줄 앞에 몇 개의 공백을 넣을지를 인코딩합니다 ( (-1)*' '와 같음 0*' ').


2

파이썬 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

루아, 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

05AB1E , 48 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하고 ƵJ있다 120.


1
마스크 접근법을 사용하여 -2 바이트 :•3ô•8.D120 6 1D)bí.Bí»…abcA¦«Dus.ιv1y.;}0ð:º.∊
Magic Octopus Urn

1
@MagicOctopusUrn 아 멋지다. 그리고 약간의 압축과 내장 "abc"으로 6 개 이상 골프를 뛸 •3ô•수있다 Ž3ô. 120 6 1D될 수 있습니다 ƵJ6XD; …abcA¦«Dus.ι일 수 있습니다 žRAu¦«Dl.ι. :)
Kevin Cruijssen

1
@MagicOctopusUrn 아, 그리고 2 이상으로 변경 í.Bí하여 Tj(새 버전에서만 작동하지만 버그인지 의도적인지는 확실하지 않습니다). 따라서 암시 적으로 대체 방법으로 총 10 바이트를 절약 할 수 있습니다. : D
Kevin Cruijssen

1
당신은 이길 하나 더 찾아야합니다;).
Magic Octopus Urn

1
@MagicOctopusUrn Fine, 2 개 더 제거했습니다. ; p 그리고 žRAu¦«Dl.ιS대안으로 A¬žR:uSDl.ι이지만, 불행히도 바이트를 절약하지 못합니다. 그리고 0м.B대신에 0ð:더 적은 바이트보다 더 많은 바이트 .B입니다.
Kevin Cruijssen

2

Stax , 42 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 # "normal"블록 구성
v {k-{} 1z-L1Q} # 위의 "비정상적인"부분 추가
u {q-Lc2k + {} 2b0b0b0a [a0a0u [a89a121] a [u0u90]]} # 이상한 대각선의 1/4을 만듭니다.
a {Y} u [mQc9a122a122] u {z1cX} # 방금 만든 블록을 미러링하고 추가
                                             # 사이에 소문자 z

내가 아직 수정하지 않은 또 다른 버그는 마지막 부분 u{z1cX}이 컷 다음에 컷을 넣을 때 작동하지 않는다는 것 X입니다. 조사 / 수정합니다.




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 September

@pppery 제가 주목 한 것은이 게시물이 염색체의 왼쪽 오목 영역을 채울 공간을 만들지 않는다는 것입니다.
Jonathan Frech

@squid 왜이 답변이 경쟁이 아닌 것으로 표시 될 수 있습니까?
Jonathan Frech


0

풍선 껌, 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

온라인으로 사용해보십시오!

이것이 내 첫 번째 풍선 껌 제출이므로 최적의 솔루션이 아닐 수도 있습니다. 다시 확인하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.