Le chromosome de l'alphabet

11

introduction

Les défis de l'alphabet sont dans notre ADN, alors montrons-le.

Défi

Imprimez exactement le texte suivant:

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

Règles

  • Vous devez faire correspondre la casse de chaque lettre
  • Les nouvelles lignes et / ou espaces de fin et / ou de début sont autorisés

Gagnant

Le code le plus court en octets gagne.

Beta Decay
la source
14
Cela n'a pas beaucoup de sens que les deux premières lignes contiennent à la fois B et C lorsque toutes les autres lignes (sauf la section médiane) ont des lettres uniques.
Fatalize
1
@Fatalize C'est pour rendre le défi un peu plus intéressant
Beta Decay
5
Je dirais personnellement que cela fait le contraire
Fatalize
2
Je pense qu'il y a une erreur dans la 9e ligne. Doit être "WwXx xX wW ", pas "WwXx xXWw", n'est-ce pas?
GOTO 0
2
@BetaDecay Fatalize a raison, ce qui rend le défi plus ennuyeux.
moonheart08

Réponses:

18

Vim (pas d'outils externes), 106 octets

De nouvelles lignes pour plus de clarté:

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

Voici Return, Right, Escape, ʌCTRL-V et ðDelete.

animation de golf

Lynn
la source
3

Python 2, 230 octets

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
la source
1
1) Supprimer le point-virgule des deuxième, troisième et quatrième lignes 2) Supprimer le retour à la ligne à la fin de la première ligne 3) Appréciez que votre réponse soit plus courte que daHugLenny 4) Puisque personne ne l'a encore dit, bienvenue chez PPCG!
Erik the Outgolfer le
3

PowerShell v2 +, 175 169 163 154 octets

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

Essayez-le en ligne!

Abuse le fait que la valeur par défaut Write-Outputà la fin de l'exécution insère une nouvelle ligne entre les éléments.

La première ligne construit les branches. Nous bouclons sur deux plages correspondant aux valeurs ASCII pour les lettres majuscules, chaque itération génère un chartableau de cette lettre et de cette lettre +32(qui est le point ASCII minuscule). C'est -joinédité ensemble dans une longue chaîne, puis -splittous les six éléments (encapsulés en parens afin qu'ils soient préservés), suivi d'un -ne''pour extraire les éléments vides à la suite de la division, formant ainsi un tableau de chaînes.

Ces chaînes dans un tableau get-concaténation de tableau pour ajouter les WwXx, Yyet les Zéléments, puis un Padrig ht 10pour les faire toute la largeur appropriée. À ce stade, nous avons un tableau de chaînes comme le suivant (un élément par ligne).

AaBbCc    
BbCcDd    
EeFfGg    
HhIiJj    
KkLlMm    
NnOoPp    
QqRrSs    
TtUuVv    
   WwXx   
       Yy 
         Z

Ce tableau entier est dirigé vers une autre boucle pour construire les chaînes en miroir avec -joinet inverser le tableau [9..0].

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

Nous enregistrons les chaînes résultantes $xet les mettons entre parenthèses pour en placer également une copie sur le pipeline.

La ligne suivante place la zzchaîne sur le pipeline, puis le $xtableau dans l'ordre inverse. Tous ces éléments sont laissés sur le pipeline et la sortie est implicite.

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 octets grâce à mazzy.

AdmBorkBork
la source
154 octets - à la '(.{6})'place (......)et à la RightPadplace des espaces de queue.
Mazzy
3

Python 2 , 156 octets

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]

Essayez-le en ligne!

Peut-être que la formule 512/(i**4+47)-1

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

qui code le nombre d'espaces à ajouter à chaque ligne ( (-1)*' 'étant égal à 0*' ').

Lynn
la source
2

Python 2, 331 241 229 octets

Va jouer au golf plus tard.

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
acrolithe
la source
2

Lua, 212 octets

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)

Assez simple, basé sur la réponse de TimmyD, en quelque sorte. Construit le bras supérieur gauche en utilisant un morceau vraiment mal compressé, puis fait les deux miroirs à la fois autour d'un «zz» et imprime.

Essayez-le sur Repl.It

ATaco
la source
2

05AB1E , 48 46 40 38 36 octets

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

-2 octets (et l'opportunité pour 10 de plus avec cette approche alternative) grâce à @MagicOctopusUrn .

Essayez-le en ligne.

Explication:

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

Voir cette astuce 05AB1E (section Comment compresser les grands entiers? ) Pour comprendre pourquoi Ž3ôest 1008et ƵJest 120.

Kevin Cruijssen
la source
1
-2 octets en utilisant une approche par masque:•3ô•8.D120 6 1D)bí.Bí»…abcA¦«Dus.ιv1y.;}0ð:º.∊
Magic Octopus Urn
1
@MagicOctopusUrn Ah bien, et avec un peu de compression et la fonction intégrée, "abc"il peut être joué par 6 autres: •3ô•peut l'être Ž3ô; 120 6 1Dpeut être ƵJ6XD; …abcA¦«Dus.ιpeut être žRAu¦«Dl.ι. :)
Kevin Cruijssen
1
@MagicOctopusUrn Oh, et 2 de plus en changeant í.Bíen Tj(ne fonctionne que dans la nouvelle version, mais je ne sais pas si c'est un bug ou intentionnel). Donc, implicitement, vous avez activé une économie de 10 octets au total avec votre approche alternative. : D
Kevin Cruijssen
1
Vous devez en trouver un de plus pour gagner;).
Magic Octopus Urn
1
@MagicOctopusUrn Fine, 2 de plus supprimés. ; p Et žRAu¦«Dl.ιSpourrait également l'être A¬žR:uSDl.ι, mais malheureusement cela ne sauvera pas les octets. Et 0м.Bau lieu de, 0ð:c'est un octet de plus au lieu de moins .. J'espérais que les miroirs pourraient implicitement encadrer en ajoutant des espaces de fin afin que .Bcela ne soit pas nécessaire, mais il vaut peut-être mieux qu'ils ne le fassent pas pour d'autres défis, je suppose.
Kevin Cruijssen
2

Stax , 42 41 38 35 octets

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

Exécuter et déboguer

Mise à jour: il y avait un bogue dans la solution de 41 octets. (oui, même s'il n'a pas d'entrée) En le réparant, j'ai trouvé 3 octets de plus à raser.

Mettre à jour à nouveau: la concurrence est en marche, j'ai donc supprimé 3 octets de contingence supplémentaires.

Explication: (d'une solution différente, mais de taille identique)

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

Exécutez celui-ci

récursif
la source
1

Matricks , 105 octets (sans concurrence)

Whoa, j'ai trouvé beaucoup de bugs. La seule partie difficile de ce défi était la croix au milieu. Cela fait presque la moitié du nombre d'octets.

Courez avec le -A 1drapeau

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}

Explication:

m + / c2 + 66 + * r3 * 32% c2 7 6 # Construire le bloc "normal"
v {k - {} 1z-L1Q} # Ajoutez la partie "anormale" ci-dessus
u {q-Lc2k + {} 2b0b0b0a [a0a0u [a89a121] a [u0u90]]} # Faites le 1/4 de la diagonale bizarre
a {Y} u [mQc9a122a122] u {z1cX} # Refléter le bloc qui vient d'être créé, en ajoutant
                                             # z minuscules entre les moitiés

Un autre bug que je n'ai pas encore corrigé est que la dernière partie u{z1cX}ne fonctionne pas lorsque vous mettez la coupe après le X. Enquêtera / corrigera.

Bleu
la source
1

/// , 229 octets

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

Essayez-le en ligne!

Erik le Outgolfer
la source
1

PowerShell , 150 octets

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

Essayez-le en ligne!

mazzy
la source
1

Brainfuck, 456 octets

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

Essayez-le en ligne!

orthoplex
la source
0

Python 3 , 215 octets (sans concurrence)

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

Essayez-le en ligne!

Prend quelques idées des deux solutions Python 2, mais les applique à une approche utilisant join () qui semble économiser pas mal d'octets. Il est possible que cela puisse être joué plus loin; Je pourrais y revenir plus tard.

calamar
la source
Notez que les réponses ne doivent plus être marquées comme non concurrentes .
Jonathan Frech
@JonathanFrech Python 3 est sorti bien avant ce défi. Celui-ci doit avoir la balise "non concurrent" pour une autre raison.
pppery
@pppery Une chose que j'ai remarquée, c'est que ce message ne crée pas d'espaces pour remplir la région concave gauche du chromosome.
Jonathan Frech
@squid Puis-je demander pourquoi cette réponse a été marquée comme non concurrente?
Jonathan Frech
0

Rubis , 177 ... 145 octets

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

Essayez-le en ligne!

GB
la source
0

Bubblegum, 168 octets

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

Essayez-le en ligne!

Puisque c'est ma première soumission Bubblegum, ce n'est peut-être pas la solution optimale. Veuillez revérifier.

orthoplex
la source