Chromosom alfabetu


11

Wprowadzenie

Wyzwania alfabetyczne są w naszym DNA, więc pokażmy to.

Wyzwanie

Wydrukuj dokładnie następujący tekst:

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

Zasady

  • Musisz dopasować wielkość liter każdej litery
  • Dozwolone są końcowe i / lub wiodące znaki nowej linii i / lub spacje

Zwycięski

Najkrótszy kod w bajtach wygrywa.


14
Nie ma większego sensu, aby oba pierwsze wiersze zawierały B i C, gdy wszystkie inne wiersze (poza środkową sekcją) mają unikalne litery.
Fatalize

1
@Fatalize To uczyni wyzwanie nieco bardziej interesującym
Beta

5
Osobiście twierdziłbym, że robi to odwrotnie
Fatalize

2
Uważam, że w 9. linii jest błąd. Powinno być „WwXx xX wW ”, a nie „WwXx xXWw”, prawda?
GOTO 0

2
@BetaDecay Fatalize ma rację, co sprawia, że ​​wyzwanie jest bardziej nudne.
moonheart08

Odpowiedzi:


18

Vim (bez narzędzi zewnętrznych), 106 bajtów

Nowe linie dla przejrzystości:

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

Oto Return, ma rację, Escape, ʌCTRL-V i ðjest Delete.

animacja golfa


3

Python 2, 230 bajtów

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) Usuń średnik z drugiej, trzeciej i czwartej linii 2) Usuń nową linię na końcu pierwszej linii 3) Ciesz się, że twoja odpowiedź jest krótsza niż daHugLenny 4) Ponieważ nikt jeszcze tego nie powiedział, witaj w PPCG!
Erik the Outgolfer

3

PowerShell v2 +, 175 169 163 154 bajtów

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

Wypróbuj online!

Nadużywa faktu, że domyślnie Write-Outputpod koniec wykonywania wstawia nową linię między elementami.

Pierwszy wiersz tworzy gałęzie. Zapętlamy dwa zakresy odpowiadające wartościom ASCII dla wielkich liter, każda iteracja generuje chartablicę tej litery i tej litery +32(która jest małymi literami ASCII). To jest -joinpołączone razem w jeden długi ciąg, a następnie -splitna co sześć elementów (otoczonych parenami, aby zostały zachowane), a następnie następuje -ne''wyciągnięcie pustych elementów w wyniku podziału, tworząc w ten sposób tablicę ciągów.

Te ciągi w tablicy array-get konkatenacji dodać na WwXx, Yyi Zelementów, a następnie PadRig ht 10aby im wszystkim odpowiednią szerokość. W tym momencie mamy tablicę ciągów takich jak poniżej (jeden element na linię).

AaBbCc    
BbCcDd    
EeFfGg    
HhIiJj    
KkLlMm    
NnOoPp    
QqRrSs    
TtUuVv    
   WwXx   
       Yy 
         Z

Cała tablica jest przesyłana do innej pętli w celu utworzenia lustrzanych łańcuchów z -joinodwracaniem tablicy [9..0].

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

Zapisujemy powstałe ciągi $xw parenach i otaczamy nimi, aby również umieścić kopię w potoku.

Następny wiersz umieszcza zzciąg w potoku, a następnie $xtablicę w odwrotnej kolejności. Wszystkie są pozostawione w potoku, a dane wyjściowe są niejawne.

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 bajtów dzięki mazzy.


154 bajty - '(.{6})'zamiast (......)i RightPadzamiast spacji.
mazzy

3

Python 2 , 156 bajtów

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]

Wypróbuj online!

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

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

który koduje, ile spacji należy wstawić do każdej linii ( (-1)*' 'równe 0*' ').


2

Python 2, 331 241 229 bajtów

Będzie grał w golfa później.

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 bajtów

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)

Dość proste, oparte na odpowiedzi TimmyD, w pewnym sensie. Tworzy lewe górne ramię przy użyciu naprawdę słabo skompresowanego fragmentu, a następnie wykonuje oba odbicia jednocześnie wokół „zz” i drukuje.

Wypróbuj na Repl.It


2

05AB1E , 48 46 40 38 36 bajtów

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

-2 bajty (i możliwość 10 dodatkowych dzięki temu alternatywnemu podejściu) dzięki @MagicOctopusUrn .

Wypróbuj online.

Wyjaśnienie:

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

Zobacz moją wskazówkę 05AB1E (rozdział Jak kompresować duże liczby całkowite? ), Aby zrozumieć, dlaczego Ž3ôjest 1008i ƵJjest 120.


1
-2 bajty przy użyciu maski:•3ô•8.D120 6 1D)bí.Bí»…abcA¦«Dus.ιv1y.;}0ð:º.∊
Magic Octopus Urn

1
@MagicOctopusUrn Ah fajnie, a przy pewnej kompresji i wbudowanym systemie "abc"można grać w golfa o 6 więcej: •3ô•może być Ž3ô; 120 6 1Dmoże być ƵJ6XD; …abcA¦«Dus.ιmoże być žRAu¦«Dl.ι. :)
Kevin Cruijssen

1
@MagicOctopusUrn Aha, i jeszcze 2, zmieniając í.Bína Tj(działa tylko w nowej wersji, ale nie jestem pewien, czy to błąd, czy celowo). W ten sposób domyślnie włączyłeś 10-bajtowe oszczędzanie przy alternatywnym podejściu. : D
Kevin Cruijssen

1
Musisz znaleźć jeszcze jedną do wygrania;).
Magic Octopus Urn

1
@MagicOctopusUrn Fine, 2 kolejne usunięte. ; p I žRAu¦«Dl.ιSmoże być alternatywnie A¬žR:uSDl.ι, ale niestety nie uratuje bajtów. I 0м.Bzamiast 0ð:bajtu jest więcej zamiast mniej… Trochę jakby miał nadzieję, że lustra mogą domyślnie boksować, dodając końcowe spacje, więc .Bnie byłoby to konieczne, ale może lepiej, że nie są w przypadku innych wyzwań.
Kevin Cruijssen

2

Stax , 42 41 38 35 bajtów

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

Uruchom i debuguj

Aktualizacja: Wystąpił błąd w 41-bajtowym rozwiązaniu. (tak, mimo że nie ma danych wejściowych) Podczas naprawy znalazłem jeszcze 3 bajty do golenia.

Zaktualizuj ponownie: trwa rywalizacja, więc usunąłem jeszcze 3 bajty nieprzewidziane.

Wyjaśnienie: (innego, ale jednakowego rozmiaru rozwiązania)

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

Uruchom ten


1

Matryce , 105 bajtów (niekonkurencyjne)

Whoa, znalazłem wiele błędów. Jedyną trudną częścią tego wyzwania był krzyż na środku. To sprawia, że ​​liczy się prawie połowa bajtów.

Uruchom z -A 1flagą

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}

Wyjaśnienie:

m + / c2 + 66 + * r3 * 32% c2 7 6 # Zbuduj „normalny” blok
v {k - {} 1z-L1Q} # Dodaj powyższą część „nienormalną”
u {q-Lc2k + {} 2b0b0b0a [a0a0u [a89a121] a [u0u90]]} # Zrób 1/4 dziwnej przekątnej
a {Y} u [mQc9a122a122] u {z1cX} # Mirror nowo utworzonego bloku, dodając
                                             # małe litery zs pomiędzy połówkami

Kolejnym błędem, którego jeszcze nie naprawiłem, jest to, że ostatnia część u{z1cX}nie działa, gdy umieścisz cięcie po X. Zbada / naprawi.


1

/// , 229 bajtów

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

Wypróbuj online!



1

Brainfuck, 456 bajtów

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

Wypróbuj online!


0

Python 3 , 215 bajtów (niekonkurencyjny)

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

Wypróbuj online!

Pobiera kilka pomysłów z dwóch rozwiązań Python 2, ale stosuje je w podejściu wykorzystującym join (), które wydaje się oszczędzać sporo bajtów. Możliwe, że można to jeszcze pograć w golfa; Mogę wrócić do tego później.



@JathanathanFrech Python 3 został wydany na długo przed tym wyzwaniem. Musi mieć tag „niekonkurujący” z innego powodu.
pppery

@pppery Jedną z rzeczy, które zauważyłem, jest to, że ten post nie tworzy spacji, aby wypełnić lewy wklęsły region chromosomu.
Jonathan Frech

@squid Czy mogę zapytać, dlaczego ta odpowiedź została oznaczona jako niekonkurująca?
Jonathan Frech

0

Rubinowy , 177 ... 145 bajtów

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

Wypróbuj online!


0

Bubblegum, 168 bajtów

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

Wypróbuj online!

Ponieważ jest to moje pierwsze zgłoszenie Bubblegum, może nie być optymalnym rozwiązaniem. Proszę sprawdź dwa razy.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.