Ломтики треугольных алфавитов


15

Если задано число ввода nот 1до 26(или 0до 25), выведите алфавит, читаемый слева направо, вплоть до соответствующей буквы, включая a=1, b=2, c=3, .... Поворот буквы также должен повторяться по вертикали в соответствии с их положением в алфавите. Нечетные числа (когда они 1индексируются) должны быть сбалансированы по горизонтальной линии, в то время как четные числа должны чередоваться между положением сверху или снизу (вы можете выбрать, в каком направлении идти первым). Если вы индексируете 0, то поменяйте местами нечетное / четное в предыдущем предложении.

Иначе говоря - если буква ?имеет буквенное значение #, то #в выводе должны быть копии этой буквы, все они в #столбце th. Эти буквы должны быть равномерно сбалансированы выше и ниже горизонтальной линии, которая имеет a. Если буквы не могут быть сбалансированы равномерно, то чередуйте с наличием «лишней» буквы над и под этой строкой.

Вот первые шесть выходов (с n = 1,2,3,4,5,61 индексом, выбирая чередование снизу первым), разделенные символами новой строки, чтобы вы могли видеть шаблон. Комментарии, объясняющие шаблон, начинаются с #.

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

правила

  • Вы можете выбрать вывод в верхнем или нижнем регистре, но он должен быть согласованным.
  • Вывод не может иметь посторонних пробелов, за исключением необязательного завершающего переноса строки.
  • Либо полная программа или функция приемлемы.
  • Введенный номер может быть взят в любом подходящем формате .
  • Стандартные лазейки запрещены.
  • Это поэтому применяются все обычные правила игры в гольф, и выигрывает самый короткий код (в байтах).

Ответы:



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гарантии стабильной сортировки.


Разве вы не можете отказаться -от вывода строк в обратном порядке, что я считаю допустимым?
Нил

Я думаю, что 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`

Использует сортировку Линн. Написание всего алфавита было на два байта дешевле, чем его вычисление. Изменить: 1 байт сохранен благодаря @ETHproductions, потому что я забыл отметить, что на \nсамом деле представляет буквальный символ новой строки. (Мне не нравится вставлять буквальные переводы строк в мой ответ, когда строка такая длинная.)


Сохраните два байта в алфавите: btoa`...` где ...заменяется результат atob`abcdefghijklmnopqrstuvwxyzz` . (Также можно заменить \nбуквальным
переводом

@ETHproductions Я так понимаю, что будет использовать кодировку ISO, а не UTF?
Нил

Да, это так. Разрешено ли нам использовать ISO-8859-1 вместо UTF-8 в JS?
ETHproductions

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