Фрагменти трикутної абетки


15

Дано номер входу nвід 1до 26(або 0на 25), вихід читання алфавіту зліва направо до і в тому числі відповідного листа, з a=1, b=2, c=3, .... Скручування букв також повинно повторюватися вертикально відповідно до їх положення в алфавіті. Непарні числа (коли 1-вкладені) повинні бути врівноважені по горизонтальній лінії, тоді як парні цифри повинні чергуватися між перевагою вгорі або внизу (ви можете вибрати, в якому напрямку рухатися першим). Якщо ви маєте 0-індексацію, то поміняйте своєю сумою непарні / навіть у попередньому реченні.

Сформульовано іншим способом - якщо в алфавітному значенні букви ?є #, то #у виводі повинні бути копії цієї літери, всі вони в цьому #стовпці. Ці літери повинні бути рівномірно врівноважені вище та нижче горизонтальної лінії, на якій є 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

Правила

  • Ви можете вивести великі або малі літери, але це повинно бути послідовно.
  • Вихідні дані не можуть мати сторонні пробіли, за винятком додаткового нового рядка.
  • Прийнятна або повна програма, або функція.
  • Номер введення можна приймати у будь-якому відповідному форматі .
  • Стандартні лазівки заборонені.
  • Це тому застосовуються всі звичайні правила гольфу, і найкоротший код (у байтах) виграє.

Відповіді:



8

Пітон 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`

Використовує своєрідну хитрість @ Лінн. Виписання цілого алфавіту було на два байти дешевше, ніж його обчислення. Редагувати: Збережено 1 байт завдяки @ETHproductions, оскільки я забув зазначити, що \nнасправді являє собою буквальний символ нового рядка. (Мені не подобається вводити буквальні нові рядки у свою відповідь, коли рядок такий довгий.)


Збережіть два байти в алфавіті: btoa`...` де ...замінено на результат atob`abcdefghijklmnopqrstuvwxyzz` . (Крім того, ви можете замінити \nбуквальний новий рядок.)
ETHproductions

@ETHproductions Я вважаю, що це використовує кодування ISO, а не UTF?
Ніл

Так, це було б. Чи дозволяється нам використовувати ISO-8859-1, а не UTF-8 в JS?
ETHproductions

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