Alfabet po przekątnej

66

Bez danych wejściowych Twoim zadaniem jest wygenerowanie następujących elementów:

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

Niewizualnie Twoim zadaniem jest wygenerowanie każdej litery w alfabecie, ze spacjami przed nią równymi jej pozycji w alfabecie minus jedna.

Jeśli to wydrukujesz, musi wyglądać jak wyżej. Dozwolone są obce białe znaki, które nie wpływają na wygląd, a także końcowy znak nowej linii. Możesz używać wszystkich małych lub wszystkich wielkich liter.

Możesz także zwrócić to z funkcji zgodnie ze zwykłymi regułami, albo jako ciąg znaków z nowymi liniami, albo listę ciągów.

To jest , więc wygrywa najkrótsza odpowiedź w bajtach!

Stephen
źródło
Czy spacje muszą być prawdziwymi spacjami ASCII, czy mogę podać dane wyjściowe jak a<VERTICAL-TAB>b<VERTICAL-TAB>c...? Co powiesz na to, że są tam też jakieś znaki backspace? O ile efekt wizualny jest taki sam?
Cyfrowa trauma
@DigitalTrauma, o ile wygląda to tak samo, nie obchodzi mnie, jakiego rodzaju spacji używasz.
Stephen
Czy mogę używać tabulatorów zamiast spacji?
@ yamboy1 hmm, prawdopodobnie nie. Większość zakładek ma dużą liczbę spacji - jeśli przekątna wygląda tak, jakby miała 4spacje przed nią b, nie będzie wyglądać bardzo przekątnie. Jeśli wygląda na to, że nachylenie jest ~, -1to jest w porządku.
Stephen
nie wpływa na wygląd obejmuje posiadanie dodatkowej spacji lub 2?
MildlyMilquetoast 11.09.17

Odpowiedzi:

87

Węgiel , 2 bajty

↘β

Wypróbuj online!

W jaki sposób?

 β - the lowercase alphabet
↘  - direction

Dokładnie takie wyzwanie, dla którego pierwotnie zaprojektowano węgiel drzewny.

Jonathan Allan
źródło
4
Właściwy język :)
Stephen
2
To mi przypomina, że ​​prawdopodobnie powinienem jeszcze trochę popracować nad Crayon ... Wierzę ↘"abc ... xyz"q, że byłby to najkrótszy działający program. ( Wypróbuj online! ) ↘``26O;)qPowinien działać (zacznij od kliknięcia wstecz; dla każdego I w 0 ... 25, wciśnij niejawne I, zwiększ wstecz i wyjście), ale z jakiegoś powodu generuje błąd „pustego stosu”. ,
ETHproductions
2
2 bajty ?! W jakim kodowaniu STRZAŁKA POŁUDNIOWO-WSCHODNIA jest jednym bajtem?
Wyck
6
@ Wyck Charcoal (uwaga: spekulacja) używa niestandardowej strony kodowej, którą można skompresować do instrukcji 1-bajtowych. To jest uzasadnione dla Code Golf. codegolf.meta.stackexchange.com/questions/9428/…
Draco18s
14
@StephenS, myślę, że masz na myśli prawy dolny język :)
Wossname
18

C, 45 bajtów

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

Dzięki @Dennis za uratowanie 5 bajtów!

Klamka
źródło
9
Działa na mojej maszynie ™
Destructible Lemon
Myślę, że iw pewnym momencie będziesz musiał zainicjować lub zresetować . Przynajmniej w TIO f()działa tylko raz .
Dennis
@Dennis Ah, masz rację. Naprawiono to.
Klamka
f(i){for(i=0;++i<27;printf("%*c\n",i,i+96));}oszczędza kilka bajtów.
Dennis
3
f(i){for(i=96;i<122;)printf("%c\v",++i);}przez 41 bajtów - pamiętaj, aby uruchomić to na rzeczywistym terminalu (tak, jest to dozwolone )
NieDzejkob
13

05AB1E , 14 8 6 bajtów

-2 bajty dzięki @Emigna

AvyNú»

Jak to działa

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.

Wypróbuj online!

Wersja oryginalna, 14 bajtów

26FNð×N65+ç«}»
Neil A.
źródło
Możesz zapisać kolejne 2 bajty za pomocą AvyNú».
Emigna
@Emigna: Dzięki! Zmodyfikuje to w.
Neil A.
ƶwydaje się tak idealny, ale tak nie jest :(.
Magic Octopus Urn
Λprawdopodobnie nie był jeszcze w tym czasie dostępny, ale 26A3Λoszczędza bajt.
Kevin Cruijssen
1
@MagicOctopusUrn ₂A3Λbyłby jeszcze krótszy.
Kevin Cruijssen,
12

JavaScript (ES6), 60 59 bajtów

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

Funkcja rekurencyjna, która zwraca ciąg z końcowym znakiem nowej linii.

ETHprodukcje
źródło
1
Whoa, to takie podstępne. Konwersja liczby z zakresu od 10 do 36 na liczbę w dziwnej bazie. Nie rozumiem jeszcze, dlaczego baza też musi się zwiększyć.
Steve Bennett,
2
@ SteveBennett Prawidłowy, ale n.toString(++n)+f(n)bajt jest krótszy niż n.toString(36)+f(n+1).
ETHproductions
1
Możesz zrobić f=(n=10,s='')=>n-36?s+n.toString(++n)+'\n'+f(n,s+' '):""za 55.
Arnauld
1
Zapisać bajt z pewnym ES8: "".padEnd(n-10)+n.toString(++n).
Shaggy
1
@Arnauld, f=(n=10,s='')=>n-36?s+n.toString(++n)+'\n'+f(n,s+' '):swydaje się być dopuszczalne.
Shaggy
12

Rubinowy , 28 bajtów

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

Wypróbuj online!

Wyjaśnienie:

Operator << w łańcuchu w Ruby wykonuje lewę, jak wyjaśniono w Dokumentacji

  • str << liczba całkowita → str

  • str << obj → str

Dołącz - Łączy dany obiekt z ul. Jeśli obiekt jest liczbą całkowitą, jest traktowany jako punkt kodowy i przed konkatenacją jest konwertowany na znak.

GB
źródło
12

R, 38 37 36 bajtów

write(intToUtf8(diag(65:90),T),1,26)

(Użycie writeinspirowane jest odpowiedzią @ Giuseppe .)

Sven Hohenstein
źródło
3
Przysięgam, próbowałem tego, ale nie udało mi się go uruchomić! Dobra robota. Możesz zapisać 1 bajt, używając 65:90, ponieważ dozwolone są wielkie litery.
user2390246
@ user2390246 Dziękujemy za wskazanie!
Sven Hohenstein
możesz użyć 1zamiast ""golić inny bajt.
Giuseppe,
@Giuseppe Dzięki za wskazanie!
Sven Hohenstein,
11

Vim, 29 bajtów

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

Wypróbuj online!

↵ oznacza naciśnij klawisz powrotu

<Esc> oznacza naciśnij klawisz Escape

Jak to działa?

: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
jmriego
źródło
Wypróbuj online! Możesz to wykorzystać, aby to zademonstrować (V opiera się na Vimie i jest w większości kompatybilny wstecz, z wyjątkiem domyślnie autoindentowych domyślnych wyłączeń). Co mniej ważne, nie trafiłeś +w swoje wyjaśnienie, które rzuciło mnie na sekundę.
nmjcman101
Dzięki @ nmjcman101! Próbowałem znaleźć sposób, aby wypróbować vim online i nigdy nie wiedziałem, że o V
jmriego
Możesz użyć zamiast <Esc>. Moim zdaniem wygląda to trochę lepiej.
Wheat Wizard
Można zapisać jeden bajt, jeśli nie {zamiastgg
DJMcMayhem
Możesz użyć 2↵ zamiast ↵↵↵ i może Y zamiast y $
GB
11

Python 2 , 36 bajtów

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

Wykorzystuje to zewnętrzne białe znaki, które nie wpływają na regułę wyglądu .

Wypróbuj online!

Alternatywna wersja, 38 bajtów

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

Daje to dokładny wynik ze specyfikacji wyzwania.

Wypróbuj online!

Dennis
źródło
Jak w %*cogóle działa?
Leaky Nun
%*<identifier>wymaga dwóch argumentów: długości, aby ją uzupełnić i rzeczywistej rzeczy do zastąpienia. Niektóre printfimplementacje mają jeszcze bardziej niejasne funkcje, takie jak %1$<identifier>używane tutaj .
Dennis
9

PHP, 39 bajtów

for($s=a;!$s[26];$s=" ".++$s)echo"$s
";
użytkownik63956
źródło
To raczej gadatliwe :) Oto moje
aross
8

Pure Bash, 13

echo {a..z}^K^H

Tu ^Ki ^Hsą dosłowne pionowe zakładki i kontroli ASCII Backspace znaków. xxdWysypisko tego skryptu jest następująca - stosować xxd -rdo regeneracji rzeczywisty skrypt:

00000000: 6563 686f 207b 612e 2e7a 7d0b 08         echo {a..z}..
  • {a..z}jest standardowym rozszerzeniem nawiasów klamrowych do tworzenia a b c ... z(oddzielone spacją)
  • ^Kzakładka wolną przestrzenią kursorem w dół o jedną linię do tego samego położenia
  • ^Hcofania przemieszcza kursor z powrotem, aby usunąć jedną przestrzeń rozdzielającą

Wypróbuj online . coli tacsą używane w stopce, aby poprawnie renderować w oknie przeglądarki, ale nie jest to konieczne w zwykłym terminalu.


Jeśli powyższe nieortodoksyjne znaki kontrolne na wydruku są dla ciebie zbyt rozciągliwe, możesz to zrobić:

Bash + wspólne narzędzia, 24

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

Tu ^Ki ^Hsą dosłowne pionowe zakładki i kontroli ASCII Backspace znaków. xxdWysypisko tego skryptu jest następująca - stosować xxd -rdo regeneracji rzeczywisty skrypt:

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

Wypróbuj online . Pionowa karta i backspace mogą być niewidoczne dla twojej przeglądarki, ale są tam (niewidoczne na chrome, widoczne na Firefox).

  • col -x ponownie renderuje dane wejściowe w taki sposób, że śmieszne znaki kontrolne są zastępowane spacjami i znakami nowej linii, aby dać ten sam efekt wizualny
  • z jakiegoś powodu colwypisuje wiersze w odwrotnej kolejności. tacpoprawia to.
Cyfrowa trauma
źródło
To jest bardzo fajne :) (i dzięki meta i @Dennis za sugerowanie sortowania odpowiedzi na codegolf według aktywności zamiast wyniku, aby uzyskać lepsze odpowiedzi zamiast (bardzo nudnych) wbudowanych języków codegolf: codegolf.meta.stackexchange. com / pytania / 10127 /… )
Olivier Dulac
Wiele terminali wyświetla się ^Kjako kursor w górę, co jest zachowaniem, które colmusi być tutaj naśladowane.
Neil
@Neil tak, to ma sens - strona colnazywa VT „odwróceniem linii”. xterm, gnome-terminal i terminal OSX zrzucają linię ...
Digital Trauma
8

Brain-Flak , 124, 116 , 106 bajtów

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

Wypróbuj online!

Wyjaśnienie:

Ta odpowiedź narusza Nilad wysokości stosu , ale w nowy sposób, z którego nigdy wcześniej nie korzystałem, z czego jestem dumny. Poza tym odpowiedź nie jest zbyt mądra.

Analizując znaki użyte w tej sztuce ASCII, tak naprawdę często stosuje się trzy wartości:

  • 32 (spacja),

  • 64 (dodaj 64 do N, aby uzyskać N-tą literę alfabetu), i

  • 10 (nowa linia)

Jak również 26. (liczba pętli) I te liczby są wypychane w różnych lokalizacjach, więc nie możemy tak naprawdę ponownie użyć wartości pośrednich, aby zmniejszyć duże liczby. A wypychanie wszystkich z tych liczb to aż 86 bajtów:

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

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

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

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

To jest okropne. Oto, w jaki sposób sprawiamy, że jest to wygodniejsze. Oczywistym podejściem jest przesunięcie 32na alternatywny stos, co powoduje, że nasz 32fragment staje się: (<>({})<>)a nasz 64fragment staje się (<>({})({})<>). Jeśli połączymy nasz początkowy push 32 z naszym początkowym push 26 , możemy z grubsza zaoszczędzić 8 bajtów. (mój pierwszy golf).

Ale tutaj pojawia się sztuczka, z której jestem naprawdę dumny. Ponieważ nie używamy alternatywnego stosu do niczego innego, równie dobrze moglibyśmy zagrać w golfa w dół 10. Aby to zrobić, wypchniemy 4 dowolne liczby na stos bezpośrednio na początku programu. Ponieważ naciskamy również na 32, zwiększa to wartość []niladu, do 5, co czyni nasz 10fragment kodu znacznie wygodniejszym. I na szczęście dla nas, to pozwala nam również zagrać w golfa na push 32 i 26 w dół!

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

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

Staje się

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

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

Oto szczegółowe wyjaśnienie:

# 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
}
DJMcMayhem
źródło
7

V , 15 13 11 bajtów

¬azòÙr klDj

Wypróbuj online!

Wyjaśnienie

¬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
nmjcman101
źródło
7

Arkusze Google, 67 65 bajtów

=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)), „”))

Po wyjaśnieniu, że zrobi to dowolna biała spacja, użyłem widocznie pustych komórek

Wynik

Daj mi znać, jeśli to się nie liczy, jeśli źle zrozumiałem liczbę bajtów lub zepsułem jakąś etykietę, ponieważ jest to mój pierwszy post tutaj.

Edytuj: Okazuje się, że mogę zapisać 2 bajty, pomijając „”, ponieważ arkusze Google zaakceptują pustą wartość if.

Mr.Parivir
źródło
1
Witamy w PPCG :) Wygląda dobrze! Dobra robota, wyprzedzając odpowiedź innych Arkuszy Google!
Stephen
7

APL (Dyalog) , 9 7 bajtów SBCS

-2 bajty dzięki podpowiedzi ngn.

↑⍨∘-⌸⎕A

[Wypróbuj online!] [TIO-j3o0ipjy]

⎕A wielkie lphabet

 pomiędzy każdą parą (element, lista indeksów) wstaw następującą ukrytą funkcję:

↑⍨ z elementu (litery) weź…

 …

- negated-index liczba znaków, tj. tyle znaków z tyłu, wypełnienie z przodu spacjami.

Wypróbuj online!

Adám
źródło
Miły. Moja próba J była bardziej szczegółowa. Czy istnieje tłumaczenie tych czasowników na J?
Jonah
@Jonah Czasowniki: jest {.i jest i.przysłówkami: ¨jest "0i jest ~.
Adám
Dzięki. Wygląda na to, że tłumaczenie J traci zwięzłość:(a.{~97+i.26){."0~-1+i.26
Jonasz
@ Adám wynik nie wygląda na wymagany; wskazówka: użyj, aby
wypisać
@ngn Możesz także zwrócić (…) listę ciągów. Ale zbadam. Edycja: O tak, oczywiście!
Adám
6

Oktawa, 25 19 czy 12? bajty

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

Wypróbuj online!

Inne rozwiązanie zaproponowane przez @LuisMendo (12 bajtów), które testowałem w wersji Windows Octave:

diag('a':'z')

Wyjaśnienie:

Generuje macierz diagonalną a:z.

rahnema1
źródło
@LuisMendo In tio Nie mogę uzyskać tego samego rezultatu. To wyrażenie, które można ocenić, które daje pożądany rezultat :)
rahnema1
Rozwiązanie zaproponowane przez Luisa wydaje się teraz działać na TIO ... Może nowa wersja Octave?
Stewie Griffin
Lub nowa wersja tio !?
rahnema1
6

Java 8, 72 71 70 61 bajtów

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

-1 bajt, wypisując wielkie litery zamiast małych.
-1 bajt, drukując bezpośrednio, zamiast zwracać ciąg wielowierszowy.
-8 bajtów dzięki @ OliverGrégoire przy użyciu printfbezpośrednio, aby się pozbyć String s="";. A także -1 bajt, zmieniając ()->na o->.

Wypróbuj tutaj.

Kevin Cruijssen
źródło
Naiwne wdrożenie jest krótsze, niż bym się spodziewał. Możesz zapisać bajt za pomocą c=65(lub 64faktycznie), więc nie potrzebujesz 3-cyfrowego numeru. Czy zwracanie tablicy zamiast ciągu może zaoszczędzić bajty, ponieważ można usunąć +"\n"?
TheLethalCoder
@TheLethalCoder Ah, nie wiedziałem, że wolno nam wypisywać wielkie litery. Przejrzałem to. Dzięki. A co masz na myśli mówiąc, że wypisujesz tablicę? Jak tablica tablic?
Kevin Cruijssen
1
@TheLethalCoder Każda wskazówka jest mile widziana, więc dziękuję. Ale w tym przypadku nie będzie krótszy. :)
Kevin Cruijssen
1
@Winter O twojej pierwszej sugestii, która jest wciąż dyskutowana w tym meta- postie , ale sądząc po głosach, wydaje mi się, że od teraz jest to dozwolone. Co do drugiego, nie jestem pewien ... To trochę jak oszustwo / naginanie zasad, szczególnie po tych gorących dyskusjach w komentarzach do tego meta postu i odpowiedzi .
Kevin Cruijssen
1
62 bajty: ()->{for(int a=0;a++<26;)System.out.printf("%"+a+"c%n",a+96);}używając tego samego pomysłu, co w innym wyzwaniu .
Olivier Grégoire,
5

Galaretka ,  10  9 bajtów

-1 bajt dzięki Dennisowi (unikaj zmniejszania Jpoprzez zastosowanie obniżonego zakresu 26Ḷ, bezpośrednio)

26Ḷ⁶ẋżØaY

Pełny program, który drukuje wynik.

Wypróbuj online!

( ØaJ’⁶ẋżdla 7 to monadyczny link, który zwraca listę list list znaków, ale to jest coś, [["a"],[" ","b"],[" ","c"],...]co prawdopodobnie jest niedopuszczalne).

Nie zdziwiłbym się jednak, gdyby istniała krótsza droga, o której nie myślałem!

W jaki sposób?

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)
Jonathan Allan
źródło
Pozwoliłbym nawet, [["a"],[" ","b"],[" "," ","c"],...]ponieważ lista znaków jest alternatywną definicją łańcucha, ale krotka nie wydaje się pasować :)
Stephen
Tak właśnie myślałem.
Jonathan Allan,
1
... zauważ, że na powyższym każdym z nich "..."jest lista znaków, więc tak naprawdę to dlatego, [[['a']],[[[' '],['b']],[[' ',' '],['c']],...]że Jelly nie ma ciągów, tylko listy.
Jonathan Allan
26Ḷ⁶ẋżØaYzapisuje bajt.
Dennis
ØaJ’⁶ẋżdla 7, dla twojej alternatywnej wersji.
Leaky Nun
5

PowerShell, 29 bajtów

0..25|%{' '*$_+[char]($_+97)}
TessellatingHeckler
źródło
Podoba mi się, jak dodajesz 97 do $_siebie, miło.
root
5

Alice , 22 20 bajtów

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

Wypróbuj online!

Mimo że wyjście jest ciągiem, okazuje się, że tryb porządkowy nie jest sposobem na podjęcie tego wyzwania.

Wyjaśnienie

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

Poprzednie rozwiązanie

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

Wypróbuj online!

Przejrzałem około dziesięciu 23-bajtowych rozwiązań, zanim udało mi się je znaleźć.

Wyjaśnienie

Ten program używa taśmy do śledzenia liczby spacji do wydrukowania. Tryby kardynalny i porządkowy używają tej samej taśmy, ale mają osobne głowice taśmy. Oba tryby mają różne interpretacje tego, co widzą na taśmie, a program w pełni wykorzystuje tę różnicę.

Polecenia są wykonywane w następującej kolejności:

[                   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
Nitrodon
źródło
5

Brainfuck, 103 bajty

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

Wypróbuj online!

Lokalizację zmiennych można w jakiś sposób poprawić.

Wyjaśnienie

>-<-----[[<+>->>+++>-<<<]>++]   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.
]
6infinity8
źródło
5

Arkusze Google, 69 bajtów

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

Nic skomplikowanego tutaj. Jedyną sztuczką jest użycie ArrayFormulai ROW(A1:A26)zwrócenie 26 różnych wartości JOINfunkcji. Dane wyjściowe wyglądają tak:

Wynik


Myślę, że Excel 2016 może zrobić to samo, TEXTJOINale nie mogę wprowadzać formuł tablicowych w wersji online i mam tylko 2013 rok. Wzór powinien być następujący:

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

Wprowadzenie go jako formuły tablicowej ( Ctrl+ Shift+ Enter) dodaje nawiasy klamrowe { }po obu stronach, zwiększając go do 67 bajtów. Każdy, kto może zweryfikować, czy to działa, może użyć go jako własnej odpowiedzi.

Inżynier Toast
źródło
5

Ziarno , 6014 bajtów

Nie sądzę, że to zdobędzie jakiekolwiek nagrody, ale dla zabawy, oto rozwiązanie w Seed.

86 11103250503694729158762257823050815521568836599011209889044745493166180250197633623839266491438081837290079379263402288506775397211362446108152606095635373134468715450376738199004596861532212810083090232034321755895588102701453625219810339758989366211308223221344886043229936009486687653111291562495367476364760255760906228050130847228170228716790260998430434027546345063918859356161024202180254514539438087787769611000320430464740566450402368450792375043801526494811596087812709169139468697779440918934518195843690439213251884693846598754642076364755341359062651237754916053099089619667382845958005035392458577634784453744876558142057256976895330859887974064083588368087014591508237946214519271550243549214199679364098489146944338807874570414584343165070707969101892779772740177526390597395955859236589308394889243501541206981604661264930842784772121710695027991351718061777696274815931123342985242351444203296855501870888626347939456384376808446806093364176576945969539054970975848477876079897476093353730443488664472826635815956526890935049081522728044807877072639829234224838977148057506785320443165975265560224605597481381188291535996775480326796788286452216432605854564432262547835415260058472165825285438444435690700488258778785613363062417500848996527077259315494936037544655054620369560227407957368700650031346856230643646273909094915618471799926504192999361174763592054723307855670381682927214117502862645460031555724588536036895597768493827964819026940533784490457441244859937078155137620826821294513857153097135094397278852300032685608169642137925241118197368192392427097109982751185030229544527638686131131545529690698706313745703838144933923021851042677941879847025167921010148923860660695145106913052517930707522151230705792709484338746351589089180137363986003757314611932324492978098101655359729841878862276799317010824753645947659706175083519817734448003718088115457982394423932136760435046136644679525408371158980833993157988971884061469882136904103033944270884697456159261033500286722891139158500027351042265757431184139617566089023339480051231776345929815102059539844917563709940188668873305602146506284075271989710388430531233185164106985265575418252638186398535149202928422854319253947591044830747981534342833040219194969504971457701296402664807369043224201667623773161453335066484102800249947322601702575025462427139266561015140950621152993027466758026351218924607290766894274223554418125824416921899080393405328694235821466034161071834073874727856768719898425047229002772806527172294625623026601313091815217479540688812203850300478145319935479599086534606210099372526810614742385909275512758349679098012967475393301857434507012875239092688018536028125644341148882858752275129016876257290205949225918496182271679312996010157634568807332616541938310641844258434083838017690572891417189135014450484203635258935943095637185443145042430274553211816422809756194554145177421779800554334935224073734034988935790096239926730047370699006392111034056662661567902477446646680125183082979598538506383502737734442490068661537425714549752783861222862366340979663873475326752237893690641570287341027097775099918958849864419430754493042534812120486345363285167685811903366691676146427476942948696624274431993989133835880516551024369474029197791751838810883302415448112237526350703063618171739262753474029252659418383385834751808940073804107171146665382663467460066719556797639176747423279761528061219482681051780434845070421974558638870988408449698678976622755518024906714421419806347234183574860655249471877105716127767795785164699804819127058322715857697491583787449703283625085118896433923054087238479453964363805045497229148813441732912067120594705269402106426011497763749556561398150139686331615167139081591537739333533146667211063179804707883556569241294269430626179579760506971066676011512530066694518309930078451295032445835025178124213221937594928472509588116557231122849491576207720183829735710200290762251904109318007206980645946249679357907549498615310165588678201768095297568708803842208357473777731751349499510116345704811971207818719582793964185192140178454948686109674659005978400204479072321714207828018696339659886683414074211823497880135255138161141724546221354224299071581607979907417508104234534779573666933024250229754952685174194168516481670999039048675109878524061868078078216337487277443941946961426121900907734301692962783139932352047932263834773963592317279425421954035566305805348109175553209815893678595198155962166838761859540063188209014774346841267440789072833797121217961797443744676162541668802226500817146368372390178287945076657776275930590173768326046610094573983886099504933977126798348879838826160714899283593774855907724617352862079916515034033299006419237012240730789008999523238851913897908225482003661109026061857228300111070725651744312468140016983078297938157227595743419983763920290850801438187869169473456288283458163865462359588316419331445070232596307970490434468929587726795603069137946085898481642595124580643542063564880389350236902538522311931690905858973696558714577085714396738993556273941292496636824719451697631982422926675238248502170501569627556395875619564600587531422890212003952929325067813498958390095519100963598626450443103780781917045489137526377521695121594716424797216910752252094749957224424042047863869830458287114846161217532552045343745235776511344577755412402833175338541217548987687334493461236111032661075185714361252784989689657180878190058132112701323898697673356854132286586129946906160482715702618768869398700713988301485421822519104930442450343377920756456344715552821899659777521739288202633751258303637433110490141551780764889912485271829265224821750882760152112536985349681370761157202793523201156381835717321637420939424473215237574260806475544972321933149796156065126465186203580256364372579422208318560608817806013462242728082475787319168695978160861791054731154820533251279706873332364894538291172324730671914083193733203570060223897442373172904974570329139578763294810924815364789498523721281918680145538278976651264

Przekłada się na następujący program Befunge:

vaa{       @>
v#      g02<v
>30g20g`   |
10g-:!v!: < >#<
v,:g02_40g,1- ^
>1+20p$91+, v
TehPers
źródło
4

Dodaj ++ , 1069 bajtów

+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

Wypróbuj online!

Tak. To jest zakodowane. Jestem pewien, że istnieje lepszy sposób i jeśli chcesz go znaleźć, śmiało, ale wydaje się, że ten sposób działa najlepiej, ponieważ Add ++ jest trudny do pracy z pamięcią.

Cairney Coheringaahing
źródło
4

R , 59 49 47 bajtów

-10 bajtów dzięki djhurio

-2 bajty dzięki Svenowi Hohensteinowi

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

Drukuje na standardowe wyjście. Outgolfed by user2390246

Wypróbuj online!

Giuseppe
źródło
Można wymienić 26^2z 676zapisać bajt.
Klamka
2
m=matrix("",26,26);diag(m)=letters;write(m,'',26)(49 bajtów)
djhurio
Dla tej samej ilości bajtów możesz wydrukować matrycę, używająccat(m,fill=27)
JAD
1
@djhurio „Za taką samą ilość bajtów”
JAD
1
@Giuseppe Polecenie "diag<-"(x, y)jest podobne do diag(x) <- y. Wartość nie jest przypisana do zmiennej, ale jest zwracana.
Sven Hohenstein
4

> <> , 46 44 42 bajtów

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

Wypróbuj online!

Wyjaśnienie

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)

To jest zupełnie inne ujęcie od moich poprzednich 46 bajtów, więc dołączyłem również TIO do jedynego. 46 bajtów Wypróbuj online!

Poniżej znajduje się link do oświadczeń Emigny, była to pierwsza> <> odpowiedź, ale uważam, że moja jest wystarczająco inna (i oszczędza kilka bajtów), aby uzasadnić drugą.

Odpowiedź Emigny

Pelikan turkusowy
źródło
A teraz jesteśmy związani. Najlepiej, jeśli grasz w bajt lub dwa;)
Emigna
@Emigna, myślałem, że 3 zapisane bajty będą wystarczające: o, chyba mam jeszcze trochę pracy :)
Pelikan Teal
4

Haskell , 66 65 58 57 45 43 bajtów

Dzięki @nimi i @maple_shaft za oszczędność 12 14 bajtów.

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

Wypróbuj online!

vroomfondel
źródło
1
Otrzymasz ten sam wynik, ale czasami możesz użyć <$zamiast replikować:(' '<$[1..(fromEnum n-97)])
maple_shaft
2
Możesz zmienić sugestię @ maple_shaft na (' '<$['b'..n]).
nimi
Ponieważ funkcje nienazwane są dozwolone, nie ma potrzeby f=.
nimi
2
Btw, policz sam bajt: ['a'..'z']>>= \n->(' '<$['b'..n])++[n,'\n'].
nimi
4

PHP, 23 bajty

Uwaga: używa kodowania IBM-850.

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

Uruchom tak:

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

Wyjaśnienie

Utwórz tablicę wszystkich znaków alfabetu, połącz go za pomocą pionowej zakładki jako kleju.

aross
źródło
4

pieprzenie mózgu , 80 bajtów

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

Wypróbuj online!

Sformatowany:

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

Wykorzystuje prostą funkcję mnożnikowy generacji umieścić kilka stałych w pamięci, a następnie powtarza się proces drukowania przestrzeni N, a następnie 'A' + Nna N = 0..25.

Adnotacja:

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 <<.
>>>]
Conor O'Brien
źródło
4

RProgN 2 , 5 bajtów

aS`\x0B.

\ x0B jest literałem tabulacji pionowej

To po prostu pobiera małe litery, dzieli je i łączy z pionowymi zakładkami. Daje to zamierzony efekt na niektórych terminalach Bash.

Uruchamianie skryptu

ATaco
źródło