アルファベット染色体


11

前書き

アルファベットの課題は私たちのDNAにあります。

チャレンジ

次のテキストを正確に印刷します。

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
他のすべての行(中央セクションを除く)に一意の文字がある場合、最初の2行にBとCの両方が含まれていることはあまり意味がありません。
16

1
@Fatalizeチャレンジをもう少し面白くするためです
ベータ崩壊

5
私は個人的には反対し主張するだろう
Fatalize

2
9行目に間違いがあると思います。「WwXx xXWW」ではなく、「WwXx xX wW」である必要があります。
後藤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行目、および4行目からセミコロンを削除します。2)1行目の最後にある改行を削除します。3)daHugLennyの回答より短い回答を楽しみます。
エリックアウトゴルファー16

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値に対応する2つの範囲をループします。各反復charは、その文字とその文字+32(小文字のASCIIポイント)の配列を出力します。それは-join一緒に1つの長い文字列にまとめられ、次に-split6つの要素ごとに(ペアレントにカプセル化されて保存されます)、その後-ne''、分割の結果として空の要素を引き出し、文字列の配列を形成します。

追加する配列のget配列-連結でこれらの文字列WwXxYyおよびZ要素、そしてPadRig ht 10それらにすべての適切な幅をします。この時点で、次のような文字列の配列があります(1行に1つの要素)。

AaBbCc    
BbCcDd    
EeFfGg    
HhIiJj    
KkLlMm    
NnOoPp    
QqRrSs    
TtUuVv    
   WwXx   
       Yy 
         Z

その配列全体が別のループにパイプされて-join、およびarray-reversingでミラー化された文字列が構築されます[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バイトはmazzyのおかげです。


154バイト - '(.{6})'代わりに(......)RightPad代わりにテールスペース。
mazzy

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

1103799973011

各行の先頭に追加するスペースの数をエンコードします((-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

Lua、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

05AB1E48 46 40 38 36 バイト

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

@MagicOctopusUrnのおかげで、-2バイト(およびこの代替アプローチでさらに10の機会があります)。

オンラインでお試しください。

説明:

Ž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ôis 1008およびƵJis を理解してください120


1
•3ô•8.D120 6 1D)bí.Bí»…abcA¦«Dus.ιv1y.;}0ð:º.∊
マジックタコのUr

1
@MagicOctopusUrnああ、すごい、そしていくつかの圧縮とビルトインを使うと、"abc"さらに6人でゴルフをする•3ô•ことができますŽ3ô120 6 1DすることができますƵJ6XD; …abcA¦«Dus.ιすることができますžRAu¦«Dl.ι。:)
ケビンクルーッセン

1
@MagicOctopusUrnああ、さらに2に変更í.BíしてTj(新しいバージョンでのみ機能しますが、バグか意図的かはわかりません)。そのため、代替アプローチで合計10バイトの節約を暗黙的に有効にしました。:D
ケビンクルーッセン

1
勝つためにもう1つ見つける必要があります;)。
魔法のタコUr

1
@MagicOctopusUrn Fine、さらに2つ削除されました。; PとするžRAu¦«Dl.ιS代わりになり得るA¬žR:uSDl.ιが、残念ながらそれはバイト保存されません。そして、0м.B代わりに0ð:1バイト少なくなります。ミラーは、後続のスペースを追加することで暗黙的にボックス化することを望みました.B
ケビンCruijssen

2

Stax42 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

まだ修正していないもう1つのバグは、最後の部分が、の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]]))

オンラインでお試しください!

2つのPython 2ソリューションからいくつかのアイデアを取り入れますが、join()を使用するアプローチにそれらを適用すると、かなりのバイトが節約されるようです。これをさらにゴルフできる可能性があります。これについては後で再検討します。



@JonathanFrech Python 3は、このチャレンジよりもずっと前にリリースされました。これには、他の何らかの理由で「非競合」タグが必要です。
-pppery

@pppery私が気づいたことの1つは、この投稿が染色体の左凹領域を埋めるためのスペースを作成しないことです。
ジョナサンフレッチ

@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提出であるため、最適なソリューションではない可能性があります。再確認してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.