El cromosoma alfabético


11

Introducción

Los desafíos del alfabeto están en nuestro ADN, así que demostrémoslo.

Desafío

Imprima el siguiente texto exactamente:

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

Reglas

  • Debes coincidir con el caso de cada letra
  • Se permiten nuevas líneas y / o espacios finales y / o iniciales

Victorioso

El código más corto en bytes gana.


14
No tiene mucho sentido que las dos primeras líneas contengan B y C cuando todas las demás líneas (excepto la sección central) tienen letras únicas.
Fatalize el

1
@Fatalize Eso es para hacer el desafío un poco más interesante
Beta Decay el

55
Yo personalmente diría que hace lo contrario
Fatalize el

2
Creo que hay un error en la novena línea. Debería ser "WwXx xX wW ", no "WwXx xXWw", ¿no?
GOTO 0

2
@BetaDecay Fatalize tiene razón, eso hace que el desafío sea más aburrido.
moonheart08

Respuestas:


18

Vim (sin herramientas externas), 106 bytes

Nuevas líneas para mayor claridad:

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

Aquí está Return, es Right, es Escape, ʌes CTRL-V y ðes Delete.

animación de golf


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

1
1) Eliminar el punto y coma de la segunda, tercera y cuarta línea 2) Eliminar la nueva línea al final de la primera línea 3) Disfrute de que su respuesta sea más corta que la de daHugLenny 4) Como nadie lo dijo todavía, ¡bienvenido a 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]

Pruébalo en línea!

Abusa del hecho de que el valor predeterminado Write-Outputal final de la ejecución inserta una nueva línea entre los elementos.

La primera línea construye las ramas. Hacemos un bucle en dos rangos correspondientes a los valores ASCII para las letras mayúsculas, cada iteración genera una charmatriz de esa letra y esa letra +32(que es el punto ASCII en minúsculas). Eso se -joinjunta en una cadena larga, luego -spliten cada seis elementos (encapsulados en parens para que se conserven), seguido de un -ne''para extraer los elementos vacíos como resultado de la división, formando así una matriz de cadenas.

Estas cadenas en una matriz get matriz de concatenación para añadir en las WwXx, Yyy Zlos elementos, a continuación, un Padrig ht 10para que se den el ancho apropiado. En este punto tenemos una serie de cadenas como la siguiente (un elemento por línea).

AaBbCc    
BbCcDd    
EeFfGg    
HhIiJj    
KkLlMm    
NnOoPp    
QqRrSs    
TtUuVv    
   WwXx   
       Yy 
         Z

Toda esa matriz se canaliza a otro bucle para construir las cadenas reflejadas con -joinuna inversión de matriz [9..0].

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

Guardamos las cadenas resultantes $xy las incluimos en parens para colocar también una copia en la tubería.

La siguiente línea coloca la zzcadena en la tubería, luego la $xmatriz en orden inverso. Todos estos quedan en la tubería y la salida es 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 gracias a mazzy.


154 bytes - en '(.{6})'cambio (......)y RightPaden su lugar espacios de cola.
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]

Pruébalo en línea!

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

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

que codifica cuántos espacios anteponer a cada línea (que (-1)*' 'es igual a 0*' ').


2

Python 2, 331 241 229 bytes

Lo jugará más 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

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)

Bastante simple, basado en la respuesta de TimmyD, más o menos. Construye el brazo superior izquierdo usando un trozo realmente mal comprimido, luego hace ambos espejos a la vez alrededor de una 'zz' e imprime.

Pruébalo en Repl.


2

05AB1E , 48 46 40 38 36 bytes

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

-2 bytes (y la oportunidad de 10 más con este enfoque alternativo) gracias a @MagicOctopusUrn .

Pruébalo en línea.

Explicación:

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

Vea esta sugerencia mía 05AB1E (sección ¿Cómo comprimir enteros grandes? ) Para comprender por qué Ž3ôes 1008y ƵJes 120.


1
-2 bytes utilizando un enfoque de máscara:•3ô•8.D120 6 1D)bí.Bí»…abcA¦«Dus.ιv1y.;}0ð:º.∊
Urna de pulpo mágico

1
@MagicOctopusUrn Ah bien, y con un poco de compresión y la construcción "abc"se puede jugar por 6 más: •3ô•puede ser Ž3ô; 120 6 1Dpuede ser ƵJ6XD; …abcA¦«Dus.ιpuede ser žRAu¦«Dl.ι. :)
Kevin Cruijssen

1
@MagicOctopusUrn Oh, y 2 más cambiando í.Bía Tj(solo funciona en la nueva versión, pero no estoy seguro de si es un error o es intencional). De manera implícita, habilitó un ahorro de 10 bytes en total con su enfoque alternativo. : D
Kevin Cruijssen

1
Tienes que encontrar uno más para ganar;).
Urna mágica del pulpo

1
@MagicOctopusUrn Bien, 2 más eliminados. ; p Y žRAu¦«Dl.ιSpodría ser alternativamente A¬žR:uSDl.ι, pero desafortunadamente eso no ahorrará bytes. Y en 0м.Blugar de 0ð:es un byte más en lugar de menos ... Esperaba que los espejos se encajonen implícitamente al agregar espacios finales para .Bque no sea necesario, pero quizás sea mejor que no lo hagan para otros desafíos, supongo.
Kevin Cruijssen

2

Stax , 42 41 38 35 bytes

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

Ejecutar y depurarlo

Actualización: hubo un error en la solución de 41 bytes. (sí, aunque no tiene entrada) Mientras lo arreglaba, encontré 3 bytes más para afeitarme.

Actualice nuevamente: hay competencia en marcha, así que eliminé 3 bytes de contingencia más.

Explicación: (de una solución diferente, pero de tamaño 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])

Ejecute este


1

Matrices , 105 bytes (sin competencia)

Vaya, encontré muchos errores. La única parte difícil de este desafío fue la cruz en el medio. Eso hace que casi la mitad del byte cuente.

Corre con la -A 1bandera

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}

Explicación:

m + / c2 + 66 + * r3 * 32% c2 7 6 # Construir el bloque "normal"
v {k - {} 1z-L1Q} # Agregue la parte "anormal" arriba
u {q-Lc2k + {} 2b0b0b0a [a0a0u [a89a121] a [u0u90]]} # Haz el 1/4 de la diagonal extraña
a {Y} u [mQc9a122a122] u {z1cX} # Refleja el bloque que acaba de crear, agregando
                                             # z minúsculas entre mitades

Otro error que aún no he solucionado es que la última parte u{z1cX}no funciona cuando pones el corte después del X. Investigará / arreglará.


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

Pruébalo en línea!



1

Brainfuck, 456 bytes

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

Pruébalo en línea!


0

Python 3 , 215 bytes (no competitivos)

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

Pruébalo en línea!

Toma algunas ideas de las dos soluciones de Python 2, pero las aplica a un enfoque usando join () que parece ahorrar bastantes bytes. Es posible que esto pueda jugar más golf; Podría volver a visitar esto más tarde.


Tenga en cuenta que las respuestas ya no tienen que marcarse como no competitivas .
Jonathan Frech

@JonathanFrech Python 3 fue lanzado mucho antes de este desafío. Esto debe tener la etiqueta "no compitiendo" por alguna otra razón.
pppery

@pppery Una cosa que noté es que esta publicación no crea espacios para llenar la región cóncava izquierda del cromosoma.
Jonathan Frech

@quid ¿Puedo preguntar por qué esta respuesta se ha marcado como no 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

Pruébalo en línea!


0

Chicle, 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

Pruébalo en línea!

Como esta es mi primera presentación de Bubblegum, puede que no sea la solución óptima. Revisa otra vez, por favor.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.