对角字母


66

在没有输入的情况下,您的任务是生成以下内容:

a
 b
  c
   d
    e
     f
      g
       h
        i
         j
          k
           l
            m
             n
              o
               p
                q
                 r
                  s
                   t
                    u
                     v
                      w
                       x
                        y
                         z

在非视觉上,您的任务是生成字母表中的每个字母,其前的空格等于其在字母表中的位置减去一个。

如果进行打印,则它必须如上所示。允许不影响外观的多余空格以及结尾的换行符。您可以全部使用小写字母或全部使用大写字母。

您也可以按照通常的规则从函数返回它,可以是带换行符的字符串,也可以是字符串列表。

这是,因此最短答案以字节为单位!


这些空格是否需要为实ASCII空格,或者我可以给出类似的输出a<VERTICAL-TAB>b<VERTICAL-TAB>c...?如果那里也有一些退格字符呢?只要视觉效果是一样的?
Digital Trauma

只要@DigitalTrauma看起来一样,我不在乎您使用哪种空格。
斯蒂芬

我可以使用制表符代替空格吗?

@ yamboy1嗯,可能不是。大多数制表符设置为大量空格-如果您的对角线看起来像4在之前有空格b,则看起来不会很对角线。如果看起来坡度是〜,-1那就很好。
斯蒂芬

不会影响外观包括额外的前导空格或2?
MildlyMilquetoast

Answers:


87

木炭,2 个字节

↘β

在线尝试!

怎么样?

 β - the lowercase alphabet
↘  - direction

正是原木炭设计所面临的挑战。


4
正确的语言:)
Stephen

2
这使我想起,我可能应该在Crayon上做更多的工作……我相信↘"abc ... xyz"q这是最短的工作程序。(在线尝试!↘``26O;)q应该可以工作(从反引号开始;对于0 ... 25中的每个I,弹出隐式I,增加反引号并输出),但是由于某种原因它会引发“空堆栈”错误。 。
ETHproductions

2
2个字节? 东南箭头是什么字节的编码
Wyck

6
@Wyck木炭(注意:推测)使用自定义代码页,可以将其压缩为1个字节的指令。这对于Code Golf是合法的。codegolf.meta.stackexchange.com/questions/9428/…–
Draco18s

14
@StephenS,我想您的意思是右下角的语言:)
Wossname

18

C,45个字节

f(i){for(i=0;++i<27;)printf("%*c\n",i,i+96);}

感谢@Dennis节省了5个字节!


9
可在我的机器上使用
破坏的柠檬

我认为您必须i在某个时候进行初始化或重置。至少在TIO上,f()只能运行一次
丹尼斯,

@丹尼斯啊,你是对的。固定的。
门把手

f(i){for(i=0;++i<27;printf("%*c\n",i,i+96));}保存一些字节。
丹尼斯

3
f(i){for(i=96;i<122;)printf("%c\v",++i);}为41个字节-确保在实际终端上运行它(是的,这是允许的
NieDzejkob

13

05AB1E14 8 6字节

-2个字节,感谢@Emigna

AvyNú»

这个怎么运作

A      # lowercase alphabet
 v     # for letter in alphabet
  y    # push letter
   N   # push index of letter
    ú  # Pad letter with index of letter spaces
     » # Join with stack on newline.

在线尝试!

原始版本,14字节

26FNð×N65+ç«}»

您可以使用保存另外2个字节AvyNú»
Emigna

@Emigna:谢谢!将编辑英寸
尼尔A.

ƶ看起来如此完美,但它不是:(。
魔术八达通瓮城

Λ可能当时尚不可用,但是26A3Λ节省了一个字节。
凯文·克鲁伊森

1
@MagicOctopusUrn ₂A3Λ会更短。
凯文·克鲁伊森

12

JavaScript(ES6),60 59字节

f=(n=10)=>n-36?" ".repeat(n-10)+n.toString(++n)+`
`+f(n):""

一个递归函数,该函数返回带有尾随换行符的字符串。


1
哇,真是偷偷摸摸。将10到36范围内的数字转换为怪异的数字。尚不明白为什么基数也必须增加。
史蒂夫·贝内特

2
@SteveBennett正确,但n.toString(++n)+f(n)比短一个字节n.toString(36)+f(n+1)
ETHproductions

1
你可以做f=(n=10,s='')=>n-36?s+n.toString(++n)+'\n'+f(n,s+' '):""的55
阿尔诺

1
使用一些ES8保存一个字节:"".padEnd(n-10)+n.toString(++n)
毛茸茸的

1
@Arnauld,f=(n=10,s='')=>n-36?s+n.toString(++n)+'\n'+f(n,s+' '):s似乎是允许的。
毛茸茸的

12

Ruby,28个字节

26.times{|a|puts" "*a<<97+a}

在线尝试!

说明:

Ruby中字符串上的<<操作符可以解决问题,如文档中所述

  • str <<整数→str

  • str << obj→str

附加-将给定对象连接到str。如果对象是Integer,则将其视为代码点,并在连接之前将其转换为字符。



11

Vim,29个字节

:h<_↵↵↵y$ZZ25o <Esc>{qqpblD+q25@q

在线尝试!

↵表示按回车键

<Esc>表示按退出键

这是如何运作的?

:h<_↵↵↵                             Open the help and navigate to the alphabet
       y$ZZ                         Copy the alphabet and close the help
           25o <Esc>                Abuse auto-indent and create a whitespace diagonal
                    gg              Go to the beginning of the file
                      qq            Record a macro
                        pb          Paste the alphabet and go to the first letter
                          lD        Go to the second letter and cut the rest of the alphabet
                            +       Go to the first non-blank character in the next line
                             q      Stop recording the macro
                              25@q  Run the macro for the remaining letters

在线尝试! 您可以使用它来演示它(V基于Vim,并且大多数向后兼容,除非自动缩进默认为off)。同样,不太重要的是,您错过了+您的解释,这使我花了一秒钟。
nmjcman101

谢谢@ nmjcman101!我试图找到一种在线尝试vim的方法,却从不了解V
jmriego

您可以使用代替<Esc>。我认为它看起来要好一些。
小麦巫师

如果您愿意,可以保存一个字节,{而不是gg
DJMcMayhem

您可以使用2↵代替↵↵↵,也可以使用Y代替y $
GB

11

Python 2,36个字节

n=65;exec"print'%*c'%(n,n);n+=1;"*26

这利用了不影响外观规则的外部空白

在线尝试!

替代版本,38字节

n=1;exec"print'%*c'%(n,n+96);n+=1;"*26

这将产生质询规格的确切输出。

在线尝试!


怎么%*c工作?
Leaky Nun

%*<identifier>有两个参数:填充的长度和实际要替换的东西。有些printf实现甚至具有更晦涩的功能,例如%1$<identifier>在这里使用的。
丹尼斯,


8

纯重打击,13岁

echo {a..z}^K^H

这里^K^H是文字垂直选项卡和退格ASCII控制字符。xxd此脚本的转储如下-用于xxd -r重新生成实际脚本:

00000000: 6563 686f 207b 612e 2e7a 7d0b 08         echo {a..z}..
  • {a..z}是要制作的标准bash括号扩展a b c ... z(空格分隔)
  • ^K垂直分页的光标下移一行下降到同一位置
  • ^H退格键,光标移动回到一个擦除分离器空间

在线尝试coltac在页脚中使用它,以使其在浏览器窗口中正确呈现,但这在常规终端中是不必要的。


如果输出中的上述非常规控制字符对您来说太麻烦了,那么您可以这样做:

Bash +通用工具,24

echo {a..z}^K^H|col -x|tac

这里^K^H是文字垂直选项卡和退格ASCII控制字符。xxd此脚本的转储如下-用于xxd -r重新生成实际脚本:

00000000: 6563 686f 207b 612e 2e7a 7d0b 087c 636f  echo {a..z}..|co
00000010: 6c20 2d78 7c74 6163                      l -x|tac

在线尝试。垂直选项卡和退格键可能会被浏览器渲染为不可见,但它们在那里(在chrome中不可见,在Firefox中可见)。

  • col -x 重新渲染输入,以便将有趣的控制字符替换为空格和换行符以提供相同的视觉效果
  • 由于某些原因,col以相反的顺序输出行。 tac纠正这一点。

太酷了:)(感谢meta和@Dennis建议根据活动而不是分数来对codegolf排序答案,以得到更好的答案,而不是内置(非常无聊)的codegolf语言:codegolf.meta.stackexchange。 com / questions / 10127 /…
Olivier Dulac

许多终端将^K光标向上渲染,这是col必须在此处模拟的行为。
尼尔

@Neil是的,这很有意义- col联机帮助页将VT称为“反向换行”。xterm,gnome终端和OSX终端都下降了一条线…
Digital Trauma

8

Brain-Flak124,116,106字节

((((()))))(((([][]){}){})[[]()]<>){(({})<(({})<({}<>({})({})<>)>)
{({}<(<>({})<>)>[()])}{}(<>[][]<>)>[()])}

在线尝试!

说明:

这个答案滥用了Stack Height Nilad,但是以一种我从未使用过的新方式,我为此感到非常自豪。除此之外,答案不是太聪明。

因此,分析此ASCII技术中使用的字符时,实际上经常使用三个值:

  • 32(空格),

  • 64(将64加到N以获得字母的第N个字母),以及

  • 10(换行符)

以及26(循环数),这些数字被推到不同的位置,因此我们不能真正地重用中间值来减小较大的数字。而将所有这些数字全部推入仅一个字节就高达86个字节:

10:
((()()()()()){})

26:
((((()()()){}){}()){})

32:
((((()()()()){}){}){})

64:
(((((()()()()){}){}){}){})

这太可怕了。因此,这就是我们使它更加方便的方法。最明显的方法是将a压入32备用堆栈,这使我们的32代码段变为:(<>({})<>)而我们的64代码段变为(<>({})({})<>)。如果我们将初始推送32与初始推送26相结合,则可以大致节省8个字节。(我的第一个高尔夫)。

但是,这正是我真正引以为傲的诀窍。由于我们没有在其他任何东西上使用备用堆栈,因此我们也可能会降低10杆。为此,我们将在程序开始时将4个任意数字压入堆栈。由于我们也按下了32,因此将[]nilad 的值增加到5,这使我们的10代码片段更加方便。对于我们来说是幸运的,它实际上也使我们能够向下推动32和26片段!

#Push 32, 26
(((((()()()()){}){}){})<>[(()()()){}])

#Push 10
((()()()()()){})

成为

#Push 32, 26 (-2 bytes)
(((((())))))((([][][]){}()())[[]]<>)

#Push 10 (-6 bytes)
(<>[][]<>)

因此,这里有一个详细的解释:

# Push 1 four times
((((()))))

# Push 32 to main stack (to reuse later)...
((([][][]){}()())

# And then 26 to the alternate stack
[[]()]<>)

#While true
{

    # Keep track of the current TOS
    (({})<

        # Push [TOS, TOS + 64] (To get uppercase characters)
        (({})<({}<>({})({})<>)>)

        # TOS times...
        {
            # Decrement the loop counter, while pushing a space underneath it
            ({}<(<>({})<>)>[()])

        # Endwhile, pop zeroed counter
        }{}

        # Push 10 (newline)
        (<>[][]<>)

    # Push TOS - 1 back one
    >[()])

# Endwhile
}

7

V15 13 11字节

¬azòÙr klDj

在线尝试!

说明

¬az         ' Insert a-z
   ò        ' Recursively
    Ù       ' Duplicate current line down
     r      ' Replace the first character with a ' '
       kl   ' Move up a line and right
         D  ' Delete from here to the end
          j ' Move back down

7

Google表格, 67 65字节

=ArrayFormula(IF(ROW(A1:Z)=COLUMN(A1:Z26),CHAR(96+ROW(A1:Z26)),))

= ArrayFormula(IF(ROW(A1:Z)= COLUMN(A1:Z26),CHAR(96 + ROW(A1:Z26)),“”))

弄清楚任何空白都可以使用,我已经使用了明显的空单元格

输出量

让我知道这是否不算数,是否误解了字节数或是否搞砸了礼节,这是我在这里的第一篇文章。

编辑:事实证明,我可以通过省略“”来节省2个字节,因为Google表格将接受空的if值。


1
欢迎使用PPCG :)看起来不错!胜过其他Google表格答案!
斯蒂芬

7

APL(Dyalog)9 7 字节SBCS

-2个字节感谢ngn的提示。

↑⍨∘-⌸⎕A

[在线尝试!] [TIO-j3o0ipjy]

⎕A 大写一个 lphabet

 在每个(元素,索引列表)对之间,插入以下默认函数:

↑⍨ 从元素(字母)中取...

 …

- 负索引字符数,即从后面开始的许多字符,在前面填充空格。

在线尝试!


真好 我的J尝试更加冗长。这些动词有没有翻译成J?
约拿(Jonah)

@乔纳语动词:is {.and is i.副词:¨is "0and is ~
亚当

谢谢。看起来J翻译不那么简洁:(a.{~97+i.26){."0~-1+i.26
乔纳(Jonah)

@Adám输出看起来不符合要求;提示:使用以输出一个适当的矩阵,并保存2个字节
NGN

@ngn 您还可以返回(...)字符串列表。但我会调查。编辑:哦,是的,当然!
亚当

6

八度,25 19还是12?个字节

[diag(65:90)+32 '']

在线尝试!

@LuisMendo提出的其他解决方案(12字节),我在Windows版本的Octave中对其进行了测试:

diag('a':'z')

说明:

生成的对角矩阵a:z


@LuisMendo在tio中,我无法产生相同的结果。这是一个可以求值的表达式,可以产生所需的结果:)
rahnema1

Luis提出的解决方案现在似乎可以在TIO上使用...也许是新版本的Octave?
Stewie Griffin

还是tio的新版本!?
rahnema18年

6

Java 8,72 71 70 61字节

o->{for(int a=0;a++<26;)System.out.printf("%"+a+"c%n",a+96);}

通过输出大写字母而不是小写字母来获得-1个字节。
通过直接打印-1字节,而不是返回多行字符串。@OliverGrégoire可以直接使用
-8个字节来摆脱。并且通过更改为-1字节。printfString s="";()->o->

在这里尝试。


天真的实现比我想象的要短。您可以使用c=65(或64实际上)保存一个字节,因此不需要3位数字。返回数组而不是字符串可以为您节省任何字节,因为您可以删除+"\n"
TheLethalCoder

@TheLethalCoder啊,不知道我们被允许输出大写字母。略过了。谢谢。输出数组是什么意思?像数组数组一样?
Kevin Cruijssen

1
@TheLethalCoder欢迎任何提示,谢谢。但是在这种情况下,它不会更短。:)
Kevin Cruijssen

1
@Winter关于您的第一个建议,在本元文章中仍在讨论中,但是从投票的角度来看,我认为从现在开始确实允许这样做。至于第二个,我不确定。这有点像欺骗/弯曲规则,尤其是在本元文章和答案的评论中进行了激烈的讨论之后。
Kevin Cruijssen

1
62字节:()->{for(int a=0;a++<26;)System.out.printf("%"+a+"c%n",a+96);}使用与其他挑战相同的想法
奥利维尔·格雷戈尔

5

果冻 10  9 字节

得益于Dennis,因此为-1个字节(避免直接J通过减小范围来减小26Ḷ

26Ḷ⁶ẋżØaY

打印结果的完整程序。

在线尝试!

ØaJ’⁶ẋż因为7是一个monadic链接,它返回一个字符列表列表的列表,但这[["a"],[" ","b"],[" ","c"],...]很可能是不可接受的。)

但是,如果我没有想到更短的方法,我将不会感到惊讶!

怎么样?

26Ḷ⁶ẋżØaY - Main link: no arguments
26        - literal 26
  Ḷ       - lowered range = [0,1,2,...,26]
   ⁶      - literal space character
    ẋ     - repeat          [ [],      [' '],      [' ',' '],    ...,  [' ',' ',...,' ']]
      Øa  - yield lowercase alphabet
     ż    - zip             [[[],'a'],[[' '],'b'],[[' ',' '],'c'],...,[[' ',' ',...,' '],'z']]
        Y - join with newlines  [[],'a','\n',[' '],'b',\n',[' ',' '],'c','\n',...,'\n',[' ',' ',...,' '],'z']
          - implicit print (smashes the above together, printing the desired output)

我什至允许,[["a"],[" ","b"],[" "," ","c"],...]因为chars列表是字符串的替代定义,但是元组似乎不适合:)
Stephen

是的,这就是我的想法。
Jonathan Allan

1
...请注意,在上面每个"..."字符都是一个字符列表,所以实际上是[[['a']],[[[' '],['b']],[[' ',' '],['c']],...]因为Jelly没有字符串,只有列表。
乔纳森·艾伦,

26Ḷ⁶ẋżØaY保存一个字节。
丹尼斯,

ØaJ’⁶ẋż7,供您选择的版本。
Leaky Nun


5

爱丽丝22 20字节

52E&waq'a+q&' d&o]k@

在线尝试!

即使输出是字符串,事实证明序数模式也不是解决此难题的方法。

说明

52E&w             k@     do 26 times
     a                   push 10 (LF)
      q                  push current tape position (initially zero)
       'a+               add the ASCII code for "a"
          q&'            push 32 (space) a number of times equal to tape position
              d&o        output entire stack
                 ]       move tape position one space to the right

先前的解决方案

["za/?rO&
' !]\"ohkw@/

在线尝试!

在找到该解决方案之前,我经历了大约十个23字节的解决方案。

说明

该程序使用磁带跟踪要输出的空格数。基数和序数模式使用相同的磁带,但是它们具有独立的磁头。两种模式对在磁带上看到的内容有不同的解释,并且程序充分利用了这种差异。

这些命令按以下顺序执行:

[                   move cardinal tape position left
 "za"               push this string (as a string, since the final " is in ordinal mode)
     r              interpolate to entire range (i.e., the lowercase alphabet backward)
      h             split first character from string
       &            for each character in string: push that character and...
        w                                         push current address onto return address stack
         ' !        (cardinal mode) place 32 (space) at current cardinal tape position
            ]       (cardinal mode) move cardinal tape position right
             ?      (back to ordinal mode) read string from tape starting at ordinal tape position
                    this string will consist of n-1 spaces.
              o     output string of spaces
               O    output top of stack (current letter) followed by newline
                k   return to pushed return address. 
                    after 26 times through this loop, the return address stack will be empty and this is a no-op.
                 @  terminate

5

Brainfuck,103个字节

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

在线尝试!

变量的位置有些改进。

说明

>-<-----[[<+>->>+++>-<<<]>++]   Initializes the tape.
<<<<<<<<<[-]>[-]>>-             Resets variables that
                                need to be at 0.
[                               For loop (25 to 0).
 <[-]<<[>+>+<<-]>>[<<+>>-]      Copy the spaces count in
                                order to use it in a loop.
 <[>>>>.<<<<-]                  Prints the spaces.
                                Prints the character followed
 <+>>>>.+>>.<<<-                by a new line. Also decrements
                                the main loop counter.
]

5

Google表格,69个字节

=ArrayFormula(JOIN("
",REPT(" ",ROW(A1:A26)-1)&CHAR(96+ROW(A1:A26))))

这里没什么复杂的。唯一的技巧是使用ArrayFormulaROW(A1:A26)为该JOIN函数返回26个不同的值。输出看起来像这样:

输出量


我认为Excel 2016可以执行相同的操作,TEXTJOIN但是我无法在在线版本中输入数组公式,而我自己只有2013。公式为:

=TEXTJOIN("
",FALSE,REPT(" ",ROW(A1:A26)-1)&CHAR(96+ROW(A1:A26)))

将其输入为数组公式(Ctrl+ Shift+ Enter{ }时,两边都将大括号括起来,使其达到67个字节。欢迎任何可以验证它有效的人使用它作为自己的答案。


5

种子,6014字节

我认为这不会赢得任何奖项,但仅仅是出于娱乐目的,这是Seed的一种解决方案。

86 11103250503694729158762257823050815521568836599011209889044745493166180250197633623839266491438081837290079379263402288506775397211362446108152606095635373134468715450376738199004596861532212810083090232034321755895588102701453625219810339758989366211308223221344886043229936009486687653111291562495367476364760255760906228050130847228170228716790260998430434027546345063918859356161024202180254514539438087787769611000320430464740566450402368450792375043801526494811596087812709169139468697779440918934518195843690439213251884693846598754642076364755341359062651237754916053099089619667382845958005035392458577634784453744876558142057256976895330859887974064083588368087014591508237946214519271550243549214199679364098489146944338807874570414584343165070707969101892779772740177526390597395955859236589308394889243501541206981604661264930842784772121710695027991351718061777696274815931123342985242351444203296855501870888626347939456384376808446806093364176576945969539054970975848477876079897476093353730443488664472826635815956526890935049081522728044807877072639829234224838977148057506785320443165975265560224605597481381188291535996775480326796788286452216432605854564432262547835415260058472165825285438444435690700488258778785613363062417500848996527077259315494936037544655054620369560227407957368700650031346856230643646273909094915618471799926504192999361174763592054723307855670381682927214117502862645460031555724588536036895597768493827964819026940533784490457441244859937078155137620826821294513857153097135094397278852300032685608169642137925241118197368192392427097109982751185030229544527638686131131545529690698706313745703838144933923021851042677941879847025167921010148923860660695145106913052517930707522151230705792709484338746351589089180137363986003757314611932324492978098101655359729841878862276799317010824753645947659706175083519817734448003718088115457982394423932136760435046136644679525408371158980833993157988971884061469882136904103033944270884697456159261033500286722891139158500027351042265757431184139617566089023339480051231776345929815102059539844917563709940188668873305602146506284075271989710388430531233185164106985265575418252638186398535149202928422854319253947591044830747981534342833040219194969504971457701296402664807369043224201667623773161453335066484102800249947322601702575025462427139266561015140950621152993027466758026351218924607290766894274223554418125824416921899080393405328694235821466034161071834073874727856768719898425047229002772806527172294625623026601313091815217479540688812203850300478145319935479599086534606210099372526810614742385909275512758349679098012967475393301857434507012875239092688018536028125644341148882858752275129016876257290205949225918496182271679312996010157634568807332616541938310641844258434083838017690572891417189135014450484203635258935943095637185443145042430274553211816422809756194554145177421779800554334935224073734034988935790096239926730047370699006392111034056662661567902477446646680125183082979598538506383502737734442490068661537425714549752783861222862366340979663873475326752237893690641570287341027097775099918958849864419430754493042534812120486345363285167685811903366691676146427476942948696624274431993989133835880516551024369474029197791751838810883302415448112237526350703063618171739262753474029252659418383385834751808940073804107171146665382663467460066719556797639176747423279761528061219482681051780434845070421974558638870988408449698678976622755518024906714421419806347234183574860655249471877105716127767795785164699804819127058322715857697491583787449703283625085118896433923054087238479453964363805045497229148813441732912067120594705269402106426011497763749556561398150139686331615167139081591537739333533146667211063179804707883556569241294269430626179579760506971066676011512530066694518309930078451295032445835025178124213221937594928472509588116557231122849491576207720183829735710200290762251904109318007206980645946249679357907549498615310165588678201768095297568708803842208357473777731751349499510116345704811971207818719582793964185192140178454948686109674659005978400204479072321714207828018696339659886683414074211823497880135255138161141724546221354224299071581607979907417508104234534779573666933024250229754952685174194168516481670999039048675109878524061868078078216337487277443941946961426121900907734301692962783139932352047932263834773963592317279425421954035566305805348109175553209815893678595198155962166838761859540063188209014774346841267440789072833797121217961797443744676162541668802226500817146368372390178287945076657776275930590173768326046610094573983886099504933977126798348879838826160714899283593774855907724617352862079916515034033299006419237012240730789008999523238851913897908225482003661109026061857228300111070725651744312468140016983078297938157227595743419983763920290850801438187869169473456288283458163865462359588316419331445070232596307970490434468929587726795603069137946085898481642595124580643542063564880389350236902538522311931690905858973696558714577085714396738993556273941292496636824719451697631982422926675238248502170501569627556395875619564600587531422890212003952929325067813498958390095519100963598626450443103780781917045489137526377521695121594716424797216910752252094749957224424042047863869830458287114846161217532552045343745235776511344577755412402833175338541217548987687334493461236111032661075185714361252784989689657180878190058132112701323898697673356854132286586129946906160482715702618768869398700713988301485421822519104930442450343377920756456344715552821899659777521739288202633751258303637433110490141551780764889912485271829265224821750882760152112536985349681370761157202793523201156381835717321637420939424473215237574260806475544972321933149796156065126465186203580256364372579422208318560608817806013462242728082475787319168695978160861791054731154820533251279706873332364894538291172324730671914083193733203570060223897442373172904974570329139578763294810924815364789498523721281918680145538278976651264

它将转换为以下Befunge程序:

vaa{       @>
v#      g02<v
>30g20g`   |
10g-:!v!: < >#<
v,:g02_40g,1- ^
>1+20p$91+, v


4

加++,1069字节

+97
&
-87
&
+22
&
+66
&
-88
&
+22
&
&
+67
&
-89
&
+22
&
&
&
+68
&
-90
&
+22
&
&
&
&
+69
&
-91
&
+22
&
&
&
&
&
+70
&
-92
&
+22
&
&
&
&
&
&
+71
&
-93
&
+22
&
&
&
&
&
&
&
+72
&
-94
&
+22
&
&
&
&
&
&
&
&
+73
&
-95
&
+22
&
&
&
&
&
&
&
&
&
+74
&
-96
&
+22
&
&
&
&
&
&
&
&
&
&
+75
&
-97
&
+22
&
&
&
&
&
&
&
&
&
&
&
+76
&
-98
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
+77
&
-99
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
+78
&
-100
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+79
&
-101
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+80
&
-102
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+81
&
-103
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+82
&
-104
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+83
&
-105
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+84
&
-106
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+85
&
-107
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+86
&
-108
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+87
&
-109
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+88
&
-110
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+89
&
-111
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+90
&
P

在线尝试!

是的 那是硬编码的。我敢肯定有更好的方法,如果您想找到它,请继续,但是这种方法似乎效果最好,因为Add ++很难与内存一起使用。


4

R59 49 47字节

-10字节感谢djhurio

-2个字节感谢Sven Hohenstein

write("diag<-"(matrix("",26,26),letters),"",26)

打印到标准输出。被user2390246超越

在线尝试!


您可以替换26^2使用676,以节省一个字节。
门把手

2
m=matrix("",26,26);diag(m)=letters;write(m,'',26)(49个字节)
djhurio

对于相同数量的字节,您可以使用cat(m,fill=27)
JAD

1
@djhurio“用于相同数量的字节”
JAD

1
@Giuseppe命令"diag<-"(x, y)类似于diag(x) <- y。该值未分配给变量,但已返回。
Sven Hohenstein

4

> <>46 44 42字节

"A"0::?!v" "o1-40.
*(?!;30.>~$:oao1+$1+:d2

在线尝试!

说明

Line 1:
"a"0::?!v" "o1-40.
"a"0                       :Initialize the stack items (print char and space count)
    ::?!v                  :Duplicate the space count, check if 0, go down if 0
         " "o1-            :Print a space then take 1 from the space count
               40.         :Jump to codepoint row 0 col 4 (this restarts the loop)
Line 2:
*(?!;30.>~$:oao1+$1+:d2
        >~                 :Remove the zeroed space counter off the stack
          $:oao1+          :Place our print char on the top of the stack, duplicate and print it, print a new line, increase it by 1; a->b->c etc
                 $1+       :Place our space count on the top of the stack and increase it by 1
*                   :d2    :Duplicate the space counter, add 26 to the stack
 (?!;                      :Add 0 to the stack, less than compare 0, if the counter is above 0 it terminates
     30.                   :Jump to the first line, (back to printing spaces)

这与我以前的46个字节完全不同,因此我也将TIO包含到唯一的一个字节中。 46个字节在线尝试!

以下是Emigna提交的内容的链接,这是第一个> <>答案,但我相信我的答案与众不同(并节省了一些字节),值得第二个答案。

艾米娜的答案


现在我们被捆绑了。最好,如果您确定打出一两个字节
就好

@Emigna,我认为保存3个字节就足够了:也许我还有更多工作要做:)
鹈鹕

4

Haskell66 65 58 57 45 43字节

感谢@nimi@maple_shaft节省了12个 14字节。

unlines[(' '<$['b'..n])++[n]|n<-['a'..'z']]

在线尝试!


1
您会得到相同的分数,但有时可以<$代替复制使用:(' '<$[1..(fromEnum n-97)])
maple_shaft

2
您可以将@maple_shaft的建议更改为(' '<$['b'..n])
nimi

由于允许使用未命名的函数,因此不需要f=
nimi

2
顺便说一句,相同的字节数:['a'..'z']>>= \n->(' '<$['b'..n])++[n,'\n']
nimi

4

PHP,23字节

注意:使用IBM-850编码。

<?=join(~¶,range(a,z));

像这样运行:

echo '<?=join(~¶,range(a,z));' | php -n;echo
# With default (utf8) terminal:
echo '<?=join("\v",range(a,z));' | php -n;echo

说明

创建一个由字母的所有字符组成的数组,并将其与垂直制表符粘合在一起。



4

brainfuck,80个字节

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

在线尝试!

格式:

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

使用简单的乘法生成函数将一些常量放入内存,然后重复打印N个空格的过程,然后重复'A' + Nfor N = 0..25

注释:

INITIALIZE TAPE: 10 32 65 >26< 0 0
C_NEWLINE: 10
C_SPACE: 32
V_ALPHA: 65
V_COUNTER: 26
V_PREFIX: 0
V_PREFIX_TEMP: 0
++++++++[>+>++++>++++++++>+++<<<<-]>++>>+>++

WHILE V_COUNTER != 0  [-
   "PRINT C_SPACE REPEATED V_PREFIX TIMES"
   "V_PREFIX_TEMP = V_PREFIX"
     V_PREFIX TIMES  >[-
       PRINT C_SPACE <<<.>>>
       INCREMENT V_PREFIX_TEMP >+<
     ]
   "V_PREFIX = V_PREFIX_TEMP PLUS 1"
     V_PREFIX_TEMP PLUS 1 TIMES  >+[-
       INCREMENT V_PREFIX <+>
     ]
   PRINT C_ALPHA <<<.
   INCREMENT C_ALPHA +
   PRINT C_NEWLINE <<.
>>>]
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.