Алфавитная хромосома


11

Вступление

Проблемы с алфавитом есть в нашей ДНК, так что давайте покажем это.

Вызов

Напечатайте следующий текст точно:

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, когда все остальные строки (кроме средней части) имеют уникальные буквы.
Роковая

1
@Fatalize Это сделает задачу немного более интересной
Beta Decay

5
Я лично утверждал бы, что это делает наоборот
Fatalize

2
Я считаю, что в 9-й строке есть ошибка. Должно быть "WwXx xX wW ", а не "WwXx xXWw", не так ли?
Перейти 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

Python 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

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объединяется в одну длинную строку, затем -splitна каждые шесть элементов (заключенных в скобки, чтобы они были сохранены), а затем - -ne''для извлечения пустых элементов в результате разбиения, таким образом формируя массив строк.

Эти строки в массиве GET-массива конкатенации , чтобы добавить на WwXx, Yyи Zэлементы, а затем в 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 и заключаем их в скобки, чтобы также поместить копию в конвейер.

Следующая строка помещает 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

-9 байт благодаря маззи.


154 байта - '(.{6})'вместо (......)и RightPadвместо хвостовых пространств.
Маззи

3

Python 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,3,7,9,9,9,7,3,0,-1,-1,

который кодирует, сколько пробелов нужно добавить к каждой строке ( (-1)*' 'равно 0*' ').


2

Python 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.;º.∊

-2 байта (и возможность еще на 10 с этим альтернативным подходом) благодаря @MagicOctopusUrn .

Попробуйте онлайн.

Объяснение:

Ž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ð:º.∊
Волшебная урна осьминога

1
@MagicOctopusUrn Ах, хорошо, и с некоторым сжатием и встроенным в "abc"него можно сыграть еще 6: •3ô•можно Ž3ô; 120 6 1Dможет быть ƵJ6XD; …abcA¦«Dus.ιможет быть žRAu¦«Dl.ι. :)
Кевин Круйссен

1
@MagicOctopusUrn Да, и еще 2, изменив í.Bíна Tj(работает только в новой версии, но не уверен, что это ошибка или преднамеренная). Таким образом, неявно вы включили 10-байтовое сохранение в сумме с вашим альтернативным подходом. : D
Кевин Круйссен

1
Ты должен найти еще одного, чтобы выиграть;).
Волшебная урна осьминога

1
@MagicOctopusUrn Отлично, еще 2 удалены. ; p И žRAu¦«Dl.ιSальтернативно может быть A¬žR:uSDl.ι, но, к сожалению, это не спасет байты. И 0м.Bвместо 0ð:байта больше, а не меньше. Кинда надеялась, что зеркала могут неявно поменяться, добавляя конечные пробелы, так что в .Bэтом не будет необходимости, но, может быть, лучше не делать этого для других задач, я полагаю.
Кевин Круйссен,

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

Матрицы , 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 # Построить «нормальный» блок
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

@pppery Одна вещь, которую я заметил, это то, что этот пост не создает пробелов для заполнения левой вогнутой области хромосомы.
Джонатан Фрех

@squid Могу я спросить, почему этот ответ был помечен как не конкурирующий?
Джонатан Фрех


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

Попробуйте онлайн!

Так как это моя первая подача Bubblegum, это может быть не оптимальным решением. Пожалуйста, проверьте дважды.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.