片三角形字母


15

给定一个n1to 26(或0to 25)的输入数字,用来输出从左到右的字母,直到并包括相应的字母a=1, b=2, c=3, ...。扭曲之处在于,字母还必须垂直于字母在字母表中的位置重复。奇数(在1索引时)应在水平线上保持平衡,而偶数应在偏向顶部或底部之间交替(您可以选择先选择哪个方向)。如果您的索引是0,请在前一句中将奇/偶数互换。

换句话说,如果字母的字母值?#,则#输出中应该有该字母的副本,所有副本均在第#th列中。这些字母应在具有的水平线的上方和下方平均平衡a。如果字母不能均匀平衡,则交替在该行的上方和下方具有“额外”字母。

这是前六个输出(n = 1,2,3,4,5,6,以1为索引,选择与底部的第一者交替显示),以换行符分隔,因此您可以看到模式。解释模式的注释以开头#

a         # On a line by itself

ab
 b        # The "extra" letter is below the horizontal

  c
abc       # The 'c' splits evenly
 bc

   d      # Because the 'b' was below, the extra 'd' must be above
  cd
abcd
 bcd


   de
  cde
abcde     # The 'e' balances
 bcde
    e

   def
  cdef
abcdef
 bcdef
    ef
     f    # Since the 'd' was above, the extra 'f' must be below

(跳几行n=26

                       xyz
                      wxyz
                   tuvwxyz
                  stuvwxyz
               pqrstuvwxyz
              opqrstuvwxyz
           lmnopqrstuvwxyz
          klmnopqrstuvwxyz
       hijklmnopqrstuvwxyz
      ghijklmnopqrstuvwxyz
   defghijklmnopqrstuvwxyz
  cdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
 bcdefghijklmnopqrstuvwxyz
    efghijklmnopqrstuvwxyz
     fghijklmnopqrstuvwxyz
        ijklmnopqrstuvwxyz
         jklmnopqrstuvwxyz
            mnopqrstuvwxyz
             nopqrstuvwxyz
                qrstuvwxyz
                 rstuvwxyz
                    uvwxyz
                     vwxyz
                        yz
                         z

规则

  • 您可以选择以大写或小写输出,但必须一致。
  • 除可选的尾随换行符外,输出不能有多余的空格。
  • 完整的程序或功能都是可以接受的。
  • 输入号码可以通过任何合适的格式获取
  • 禁止出现标准漏洞
  • 这是因此所有常见的高​​尔夫规则都适用,并且最短的代码(以字节为单位)获胜。

Answers:


5

果冻2018 字节

Ḷ&2’×ḶỤØaḣ⁸¤ṫW€UGU

我的Python回答的端口。在线尝试。

编辑:丹尼斯通过使用(升级)而不是Þ(按)节省了两个字节!


8

Python 2 101 99字节

r=range(input())
for x in sorted(r,key=lambda x:x*-(x&2)):print bytearray([97+i,32][i<x]for i in r)

xsot通过将x*-(x&2)足够的字符作为排序键来节省了两个字节-由于sorted保证了稳定的排序,结果图像的下半部分不受影响。


您能不能放a -以相反的顺序输出行,我认为这是允许的?
尼尔

我认为x*-(x&2)有效。
xsot



2

的JavaScript(ES6),127个 126字节

n=>[...Array(n).keys()].sort((a,b)=>a*~-(a&2)-b*~-(b&2)).map(i=>` `.repeat(i)+`abcdefghijklmnopqrstuvwxyz`.slice(i,n)).join`\n`

使用@Lynn的排序技巧。写出整个字母表比计算它便宜两个字节。编辑:感谢@ETHproductions,节省了1个字节,因为我忘了要注意\n实际上代表了文字换行符。(当行很长时,我不喜欢在答案中添加文字换行符。)


在字母上保存两个字节:btoa`...` 其中...的替换为的结果atob`abcdefghijklmnopqrstuvwxyzz` 。(此外,您也可以\n用文字换行符替换。)
ETHproductions

@ETHproductions我认为它将使用ISO编码而不是UTF?
尼尔

是的,会的。我们可以在JS中使用ISO-8859-1而不是UTF-8吗?
ETHproductions 2016年

@ETHproductions可能,但是我似乎无法使其正常工作,因此我不会显示它。
尼尔
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.