打印字母波


37

您将打印以下确切文本:

ABABABABABABABABABABABABAB
BCBCBCBCBCBCBCBCBCBCBCBCBC
CDCDCDCDCDCDCDCDCDCDCDCDCD
DEDEDEDEDEDEDEDEDEDEDEDEDE
EFEFEFEFEFEFEFEFEFEFEFEFEF
FGFGFGFGFGFGFGFGFGFGFGFGFG
GHGHGHGHGHGHGHGHGHGHGHGHGH
HIHIHIHIHIHIHIHIHIHIHIHIHI
IJIJIJIJIJIJIJIJIJIJIJIJIJ
JKJKJKJKJKJKJKJKJKJKJKJKJK
KLKLKLKLKLKLKLKLKLKLKLKLKL
LMLMLMLMLMLMLMLMLMLMLMLMLM
MNMNMNMNMNMNMNMNMNMNMNMNMN
NONONONONONONONONONONONONO
OPOPOPOPOPOPOPOPOPOPOPOPOP
PQPQPQPQPQPQPQPQPQPQPQPQPQ
QRQRQRQRQRQRQRQRQRQRQRQRQR
RSRSRSRSRSRSRSRSRSRSRSRSRS
STSTSTSTSTSTSTSTSTSTSTSTST
TUTUTUTUTUTUTUTUTUTUTUTUTU
UVUVUVUVUVUVUVUVUVUVUVUVUV
VWVWVWVWVWVWVWVWVWVWVWVWVW
WXWXWXWXWXWXWXWXWXWXWXWXWX
XYXYXYXYXYXYXYXYXYXYXYXYXY
YZYZYZYZYZYZYZYZYZYZYZYZYZ
ZAZAZAZAZAZAZAZAZAZAZAZAZA

眼镜

  • 您可以打印全部小写而不是全部大写。但是,整个输出中的大小写必须保持一致。
  • 您可以打印一个额外的尾随换行符。

计分

由于这是一个波动很小的字母波,因此您的代码在字节数方面也应该很小。实际上,就字节数而言,最小的代码获胜。


39
认真地,另一个字母挑战?
内森·梅里尔

6
@NathanMerrill尽管数量众多,但我不认为他们值得投票。(我只是说,我并不是说您不赞成投票。)
Conor O'Brien

14
只要模式是十分不同的,我不认为如果我们用字母,十进制数字,星号和下划线等,它的问题
丹尼斯

9
@Dennis不管使用什么字符,IMO都会使用这些类型的“模式”挑战。我认为它不是题外话,但我会呼吸新鲜空气。
内森·美林

13
很明显,对字母挑战的需求不再存在-在开始的15个小时内只有39人回答了
trichoplax

Answers:



17

Brainfuck,104个字节

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

1
几乎与Hello World相同。令人印象深刻!
phyrfox

3
@phyrfox 实际上...
Sp3000

14

凸,10个字节

U_(+]D*zN*

在线尝试!

U               Predefined Variable: "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
 _(+            Push a copy with the 'A at the end.
    ]           Add both strings to an array.
     D*         Repeat array 13 times. D defaults to 13.
       z        Transpose.
        N*      Join by newlines. N defaults to "\n"

9

Pyth,11个10字节

jC*13.<BG1

在这里尝试。

        G   the alphabet
       B    bifurcate over
     .<  1  left shift by 1
  *13       repeat 13 times
 C          transpose
j           join on newlines

8

Vim,85 83字节

:h<_<cr><cr><cr>YZZP:s/./\0\r/g<cr><c+v>ggy25Pqqlxj:let @a='xkPjj'<cr>25@akia<esc>25klq11@qh<ctrl+v>25jylpl<c+v>25jdGdd

我知道这可以打更多,但我的头很痛,所以我现在必须停下来。

<cr>是Enter键,<c+v>是ctrl + v,<esc>是转义键。这些都计为一个字节。

我录制了一张gif图像,但它搞砸了。该视频很好,但是:http : //recordit.co/ldLKvho9Gi


8

Ruby,42 39 38 37字节

感谢@ user81655 -3个字节感谢@manatwork
-1个字节感谢@NotthatCharles
-1个字节

?A.upto(?Z){|a|puts (a+a.next[0])*13}

在repl.it上查看:https ://repl.it/CmOJ


7

Cheddar,48个字节

print(65|>90).map(l->@"[l,l>89?65:l+1]*13).vfuse

切达(Cheddar)擅长使用字符串:D

在线尝试!

说明

print
  (65|>90)            // Range from 65 (A) to 90 (Z)
  .map(l->            // Map through range
    @"                // Convert following array of char codes to string
      [l,             // The character 
       l>89?65:l+1]   // See below for explanation
      *13             // Repeat 13 times
  ).vfuse             // Vertically fuse

怎么l>89?65:l+1办?嗯,这89是char代码Y。基本上,l>89正在检查字母是否为Z,这意味着我们应该返回A。如果l>89为假。我回去l+1,下一个字符


我以为您可以@"在它们之间插入。
Leaky Nun

这不使用函数返回吗?
科纳·奥布赖恩

@ ConorO'Brien是吗?
Downgoat


@ ConorO'Brien哦,在挑战说明中没有看到。将解决
Downgoat '16

7

果冻,10 字节

26ḶḂØAṙZj⁷

在线尝试!

这个怎么运作

26ḶḂØAṙZj⁷  Main link. No arguments.

26Ḷ         Yield [0, ..., 25].
   Ḃ        Bit; compute the parity of each intger.
    ØAṙ     Rotate the alphabet by these amounts.
       Z    Zip; transpose rows and columns.
        j⁷  Join, separating by linefeeds.

Y那时不存在吗?还恭喜10万名!!
Erik the Outgolfer

谢谢!我检查了一下,可悲的Y是,在挑战发布两天后又被添加了。
丹尼斯

因为您可以将它打得更深一些26ḶḂØAṙZY。但是,就目前而言,它仍然很好。
Erik the Outgolfer

7

Haskell,60 58字节

mapM putStrLn[[0..12]>>[a,b]|a:b:_<-scanr(:)"A"['A'..'Z']]

以“ A” scanr(:)开头的列表会从['A'..'Z']右侧的字符中构建一个列表。(-> ["ABCDE...A", "BCDEF..A", ..., "XYZA", "YZA", "ZA", "A"])。(a:b:_)匹配每个子列表的前两个字符(至少两个字符)并复制13个字符。


考虑到其他语言经常使用的一些作弊手段,我认为不包括实际印刷内容是很公平的。在这种情况下,您可以将其替换为“(++” \ n“)= <<”并保存2个字节。可能更多。
MarLinn'8

@MarLinn:不,我不这么认为。高尔夫语言在设计时考虑了隐式打印,大多数其他答案的确有某种打印命令。顺便说一句,unlines甚至比还要短(++"\n")=<<
nimi

7

PowerShell,49个 43字节

TimmyD的混音:

65..89|%{-join[char[]]($_,++$_)*13};"ZA"*13

之前为49个字节:

0..25|%{(""+[char]($_+++65)+[char]($_%26+65))*13}

输出示例


6

Python 2,70 68 54字节

基于列表的解决方案:

L=map(chr,range(65,91))
for i in range(-26,0):print(L[i]+L[i+1])*13

但是为什么要创建列表?感谢LeakyNun:

for i in range(26):print(chr(i+65)+chr(-~i%26+65))*13

6

R,72 67 60 56字节

write(matrix(LETTERS[c(1:26,2:26,1)],26,26,T),"",26,,"")

感谢@Giuseppe额外的4个字节!

rep60字节的基于旧的解决方案:

for(i in 1:26)cat(rep(LETTERS[c(i,i%%26+1)],13),"\n",sep="")

请参阅此处的在线翻译。感谢@ user5957401额外的7个字节!

72字节的基于矩阵的旧解决方案:

for(i in 1:26)cat(matrix(LETTERS[c(1:26,2:26,1)],26,26)[i,],"\n",sep="")

请参阅此处的在线翻译。


1
如果您将indext更改为i in 1:26,则选择的字母LETTERS[c(i,i%%26+1)]可以像6或7个字节一样下降
user5957401 2016年

1
@ user5957401 arf我太固执了(i+1)%%26,以至于我没有做相反的事情!谢谢!
plannapus

1
再次使用矩阵56个字节:)
Giuseppe

5

MATL,13字节

1Y2tn:!to~!+)

在线尝试!

1Y2    % Predefined string literal: 'AB···Z'
tn:    % Duplicate, number of elements, range: gives [1, 2, ···, 26]
!      % Transpose into a column vector
to~!   % Duplicate and transform into [0, 1, 0, 1, ···, 1] using modulo 2
+      % Addition with broadcast. Gives 2D numeric array
)      % Index (modularly) into string. Implicitly display.

5

水母,26个字节

P
+'A
~
| S
+$ r2
 ,'
r'

请注意最后两行的尾随不可打印字符。 在线尝试!

说明

这基本上是一种算术操作方法:制作一个具有0-1模式交替的26×26网格,将每行的索引添加到该行的每个元素,减少mod 26,并添加ASCII值A。水母中的字符只是带有特殊标志的数字,所有算术运算均按预期进行。

从下到上:

  • 's为字符文字; 它们后面跟着ASCII码为26的不可打印字符,代表这些字符。
  • 下半部分r计算从0到25的字符范围。
  • ,形成从所述两个不可打印字符的一对。
  • r给定较高的参数2,并形成范围[0 1]
  • $采用该范围,并且它重塑成通过它的其他参数,它是在一对unprintables的给定形状。这给出了一个26×26的交替行矩阵0 1 0 1 0 1 ...
  • 较低的+将char范围0-25添加到此矩阵。加法分布在行上,因此行i递增i。由于south参数包含char,因此它也转换为char矩阵。
  • ~|带翻转参数的is模数:南部参数(上面的char矩阵)以东部参数为模减少(S将参数寻找过程向南旋转,因此这是不可打印的文字26)。
  • 较高的值+将文字添加A到结果矩阵的每个坐标中。
  • P打印结果矩阵形式,也就是在自己的行不带引号的每一行。

1
我想尝试打高尔夫球,但是后来我看到了写代码的他的名字。
Leaky Nun

@LeakyNun您仍然可以尝试!尽管26字节适合此挑战。
Zgarb

5

Vim,31个字节

:h<_↵↵↵YZZPJra0qqy2l13Plr↵25@qD

返回键在哪里。

在此处输入图片说明


5

Perl,26个字节

@Dom Hastings的解决方案。(比我的短12个字节!)
由于@Ton Hospel, -1个字节

say+($_++,chop)x13for A..Z

使用-M5.010或运行-E

perl -E 'say+($_++,chop)x13for A..Z'

设法将其降低到33:,say+($_++,$_--=~/^./g)x13for A..Z但是我敢肯定有一种方法可以缩短以下时间:say+($_++,$_--)x13for A..Z...
Dom Hastings

不知道为什么要--在里面放,不需要!哦 27:say+($_++,/^./g)x13for A..Z
Dom Hastings

@DomHastings做得好!say+($_,$_++)x13for A..Z首先,我尝试了一下,但没有成功,但看来我应该进一步朝这个方向努力!
达达

1
say+($_++,chop)x13for A..Z多保存一个字节
Ton Hospel '16

@TonHospel太好了,谢谢。
达达

5

T-SQL 133字节(通过:@ t-clausen.dk)

SELECT REPLICATE(Char(number+65)+IIF(number=25,'A',Char(number+66)),13)FROM spt_values WHERE number<26and'P'=TYPE

T-SQL,151字节

使用CTE生成数字序列

;WITH n(a,v) AS(SELECT CHAR(65)+CHAR(66), 66 UNION ALL SELECT CHAR(v)+CHAR(v+1), v+1 FROM n WHERE v < 91)SELECT REPLICATE(REPLACE(a,'[','A'),13) FROM n

T-SQL,155字节

SELECT REPLICATE(Char(number+65)+ CASE WHEN number=25 THEN 'A' ELSE Char(number+66) END, 13) FROM master.dbo.spt_values  WHERE name IS NULL AND number < 26

我已将您的答案降低到113个字符。我在TSQL中提供了一个非常不同的答案
t-clausen.dk

@ t-Clausen.dk太好了。请发表您的答案。我会删除我的。
阿努·特里帕蒂

没有理由删除您的答案,您可以使用我的小提琴来改善您的答案。我已经在1个小时前发布过文章,如果您喜欢TSQL,则应该看看我的其他答案。我为其中的大多数制作了小提琴
t-clausen.dk


4

Pyth,10个字节

jCm.<G~!ZG

示范

说明:

jCm.<G~!ZG
  m      G    Map over G, predefined to the lowercase alphabet.
              This will give 26 columns.
   .<G        Left shift (cyclically) G by
        Z     Z elements. Z is initialized to 0.
      ~!      After using its value, logical not Z. (0 -> 1, 1 -> 0)
 C            Transpose
j             Join on newlines

尼斯,希望我对您了解Pyth
Stan Strum

4

Brainfuck,88 86字节

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

需要具有8位单元的解释器和在左侧没有边界的磁带。在线尝试!


3

Lua,80 65字节。

s = string c = s.char for i=1,26 do print(s.rep(c(64+i)..c((65+(i%26))),13)) end

在Leaky Nun的帮助下

c=("").char for i=1,26 do print((c(64+i)..c(65+i%26)):rep(13))end

在处理字符串等方面,Lua是一种效率很低的语言,因此这是我可以缩小范围的最佳方法。


欢迎来到PPCG!不错的第一篇文章!如果删除一些不必要的空格,则可以节省5个字节:s=string c=s.char for i=1,26 do print(s.rep(c(64+i)..c((65+(i%26))),13))end
GamrCorps '16

for i=1,26 do print(((64+i):char()..(65+(i%26)):char()):rep(13))end(未测试)
Leaky Nun

因为string.rep(x,13)基本上是x:rep(13)
Leaky Nun

对!我忘记了字符串元表默认情况下指向字符串库的索引。
ATaco

虽然不错,但是65+(i%26)之类的数字除非存储为整数,否则不会算作字符串。我将努力使这种工作成为现实。
ATaco


3

05AB1E,12个字节

ADÀ)øvyJ5Ø×,

说明

AD            # push 2 copies of the alphabet
  À           # rotate the 2nd one left by 1
   )ø         # add to list and zip
     v        # for each
      yJ      # join the pair
        5Ø×   # repeat it 13 times
           ,  # print with newline

在线尝试


我知道这是一个古老的问题,但我无能为力。ADÀ)ø13×»9字节也可以正常工作。
Datboi

@Datboi:现在确实可以使用,但是不幸的是,在发布此问题时它不起作用:(
Emigna

3

Mathematica,82 75 67 66字节

Print@FromCharacterCode@PadLeft[{},26,{i-1,i}~Mod~26+65]~Do~{i,26}

技术上来说更短,尽管它以小写而不是大写打印:

Mathematica,64个字节

Print[""<>FromLetterNumber@Table[{i-1,i}~Mod~26+1,13]]~Do~{i,26}

1
不错的技巧PadLeft
Leaky Nun


1

MATLAB,47 38字节

a=(65:90)';char(repmat([a a([2:end 1])],1,13))

char(repmat([65:90;[66:90 65]]',1,13))

第一个以ASCII格式制作字母的列数组,在其右边添加作为列的移位副本,将所得的26 * 2数组按列复制13次,转换为字符数组并默认打印。

第二个将2 * 26的字母和移位的字母组成一个数组,将其转置,然后如上所述继续。


您可以使用[... '']代替保存一个字节char(...)
pajonk

而且您可以简单地[65:90;66:90 65]保存两个字节。
pajonk



1

PHP,102字节

<?php $a='ABCDEFGHIJKLMNOPQRSTUVWXYZA';$i=-1;while($i++<25){echo str_repeat(substr($a,$i,2),13)."\n";}

您可以从字母字符串中删除引号。用实际的回车代替\ n代替\ n。从@insertusername那里窃取了这个想法。因此,请检查他的回答是否符合我的意思。编辑:也请使用短标记符号<?。您还不需要在<?之后的空格。因此<?$a='ABC'也可以。
Jeroen

1

Ruby,41个字节

26.times{|i|puts [*?A..?Z,?A][i,2]*''*13}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.