O cromossomo do alfabeto

11

Introdução

Os desafios do alfabeto estão no nosso DNA, então vamos mostrá-lo.

Desafio

Imprima exatamente o seguinte texto:

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

Regras

  • Você deve corresponder ao caso de cada letra
  • São permitidas novas linhas e / ou espaços à direita e / ou à esquerda

Ganhando

O código mais curto em bytes vence.

Beta Decay
fonte
14
Não faz muito sentido que as duas primeiras linhas contenham B e C quando todas as outras linhas (exceto a seção intermediária) possuem letras únicas.
Fatalize 23/08/16
1
@Fatalize Isso torna o desafio um pouco mais interessante
Decay Beta
5
Eu pessoalmente argumentar que faz o oposto
Fatalize
2
Eu acredito que há um erro na 9ª linha. Deveria ser "WwXx xX wW ", não "WwXx xXWw", não deveria?
GOTO 0
2
@BetaDecay Fatalize está certo, isso torna o desafio mais chato.
moonheart08

Respostas:

18

Vim (sem ferramentas externas), 106 bytes

Novas linhas para maior clareza:

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

Aqui está Return, está certo, está Escape, ʌestá em CTRL-V e ðestá em Delete.

animação de golfe

Lynn
fonte
3

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
Andrew Dunai
fonte
1
1) Remova o ponto e vírgula da segunda, terceira e quarta linhas 2) Remova a nova linha no final da primeira linha 3) Aproveite a sua resposta sendo mais curta que a daHugLenny's 4) Como ninguém disse isso ainda, seja bem-vindo ao PPCG!
Erik the Outgolfer
3

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]

Experimente online!

Abusa do fato de que o padrão Write-Outputno final da execução insere uma nova linha entre os elementos.

A primeira linha constrói os ramos. Passamos dois intervalos correspondentes aos valores ASCII para as letras maiúsculas, cada iteração gera uma charmatriz dessa letra e dessa letra +32(que é o ponto ASCII minúsculo). Isso é -joineditado em uma cadeia longa e, -splitem seguida, a cada seis elementos (encapsulados em parênteses para que sejam preservados), seguido de a -ne''para extrair os elementos vazios como resultado da divisão, formando assim uma matriz de cadeias.

Essas cordas em uma matriz get matriz concatenação a acrescentar sobre os WwXx, Yye Zos elementos, em seguida, um Padrig ht 10para torná-los toda a largura apropriada. Neste ponto, temos uma matriz de seqüências de caracteres como a seguinte (um elemento por linha).

AaBbCc    
BbCcDd    
EeFfGg    
HhIiJj    
KkLlMm    
NnOoPp    
QqRrSs    
TtUuVv    
   WwXx   
       Yy 
         Z

Essa matriz inteira é canalizada para outro loop para construir as seqüências espelhadas com -joine reversão da matriz [9..0].

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

Salvamos as seqüências resultantes $xe as colocamos entre parênteses para também colocar uma cópia no pipeline.

A próxima linha coloca a zzsequência no pipeline e, em seguida, a $xmatriz na ordem inversa. Tudo isso é deixado no pipeline e a saída está implícita.

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 graças ao mazzy.

AdmBorkBork
fonte
154 bytes - '(.{6})'em vez disso, (......)e RightPadespaços de cauda.
Mazzy
3

Python 2 , 156 bytes

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]

Experimente online!

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

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

que codifica quantos espaços adicionar antes de cada linha ( (-1)*' 'sendo igual a 0*' ').

Lynn
fonte
2

Python 2, 331 241 229 bytes

Golf mais tarde.

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
acrólito
fonte
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)

Simples o suficiente, baseado na resposta de TimmyD, mais ou menos. Constrói o braço superior esquerdo usando um pedaço muito pouco compactado, depois os dois espelhos ao mesmo tempo em torno de um 'zz' e imprime.

Experimente no Repl.It

ATaco
fonte
2

05AB1E , 48 46 40 38 36 bytes

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

-2 bytes (e a oportunidade de mais 10 com essa abordagem alternativa) graças a @MagicOctopusUrn .

Experimente online.

Explicação:

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

Veja esta minha dica 05AB1E (seção Como comprimir números inteiros grandes? ) Para entender por que Ž3ôé 1008e ƵJé 120.

Kevin Cruijssen
fonte
1
-2 bytes utilizando uma abordagem de máscara:•3ô•8.D120 6 1D)bí.Bí»…abcA¦«Dus.ιv1y.;}0ð:º.∊
Magia Octopus Urna
1
@MagicOctopusUrn Ah, legal, e com alguma compressão e o builtin "abc"ele pode ser jogado por mais 6: •3ô•pode ser Ž3ô; 120 6 1Dpode ser ƵJ6XD; …abcA¦«Dus.ιpode ser žRAu¦«Dl.ι. :)
Kevin Cruijssen
1
@MagicOctopusUrn Ah, e mais 2 mudando í.Bípara Tj(funciona apenas na nova versão, mas não tenho certeza se é um bug ou intencional). Então, implicitamente, você ativou uma economia de 10 bytes no total com sua abordagem alternativa. : D
Kevin Cruijssen 9/04/19
1
Você tem que encontrar mais um para ganhar;).
Magic Octopus Urn
1
@MagicOctopusUrn Fine, mais 2 removidos. ; p Como žRAu¦«Dl.ιSalternativa A¬žR:uSDl.ι, poderia ser , mas infelizmente isso não salvará bytes. E, em 0м.Bvez de, 0ð:é um byte a mais, em vez de menos. Meio que esperava que os espelhos incluíssem implicitamente espaços adicionando espaços à direita, para .Bque não fossem necessários, mas talvez seja melhor que não façam para outros desafios, eu acho.
Kevin Cruijssen 9/04/19
2

Stax , 42 41 38 35 bytes

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

Execute e depure

Atualização: houve um erro na solução de 41 bytes. (sim, mesmo que não tenha entrada) Enquanto o corrigia, encontrei mais 3 bytes para fazer a barba.

Atualize novamente: há concorrência em andamento, por isso removi mais 3 bytes de contingência.

Explicação: (de uma solução diferente, mas com tamanho idêntico)

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

Execute este

recursivo
fonte
1

Matrizes , 105 bytes (não concorrentes )

Uau, eu encontrei muitos insetos. A única parte difícil desse desafio foi a cruz no meio. Isso faz quase metade da contagem de bytes.

Corra com a -A 1bandeira

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}

Explicação:

m + / c2 + 66 + * r3 * 32% c2 7 6 # Construa o bloco "normal"
v {k - {} 1z-L1Q} # Adicione a parte "anormal" acima
u {q-Lc2k + {} 2b0b0b0a [a0a0u [a89a121] a [u0u90]]} # Faça o 1/4 da diagonal estranha
a {Y} u [mQc9a122a122] u {z1cX} # Espelha o bloco recém-criado, adicionando
                                             # zs minúsculas entre as metades

Outro erro que ainda não corrigi é que a última parte u{z1cX}não funciona quando você coloca o corte após o X. Irá investigar / corrigir.

Azul
fonte
1

/// , 229 bytes

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

Experimente online!

Erik, o Outgolfer
fonte
1

PowerShell , 150 bytes

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

Experimente online!

confuso
fonte
1

Brainfuck, 456 bytes

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

Experimente online!

orthoplex
fonte
0

Python 3 , 215 bytes (não-concorrente)

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

Experimente online!

Adota algumas idéias das duas soluções Python 2, mas as aplica a uma abordagem usando join () que parece economizar alguns bytes. É possível que isso possa ser jogado ainda mais; Eu poderia revisitar isso mais tarde.

Restabelecer Monica
fonte
Observe que as respostas não precisam mais ser marcadas como não concorrentes .
Jonathan Frech
O @JonathanFrech Python 3 foi lançado muito antes deste desafio. Isso deve ter a tag "não concorrente" por algum outro motivo.
pppery
@pppery Uma coisa que notei é que este post não cria espaços para preencher a região côncava esquerda do cromossomo.
Jonathan Frech
@squid Posso perguntar por que esta resposta foi marcada como não competitiva?
Jonathan Frech
0

Ruby , 177 ... 145 bytes

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

Experimente online!

GB
fonte
0

Chiclete, 168 bytes

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

Experimente online!

Como esta é minha primeira submissão ao Bubblegum, pode não ser a solução ideal. Por favor cheque duas vezes.

orthoplex
fonte