Diagonales Alphabet

66

Ohne Eingabe besteht Ihre Aufgabe darin, Folgendes zu generieren:

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

Nicht visuell besteht Ihre Aufgabe darin, jeden Buchstaben im Alphabet mit Leerzeichen davor zu generieren, die der Position im Alphabet minus eins entsprechen.

Wenn Sie dies ausdrucken, muss es so aussehen wie oben. Überflüssige Leerzeichen, die das Erscheinungsbild nicht beeinträchtigen, sowie abschließende Zeilenumbrüche sind zulässig. Sie können alle Kleinbuchstaben oder alle Großbuchstaben verwenden.

Sie können dies auch von einer Funktion gemäß den üblichen Regeln zurückgeben, entweder als Zeichenfolge mit Zeilenumbrüchen oder als Liste von Zeichenfolgen.

Das ist , also gewinnt die kürzeste Antwort in Bytes!

Stephen
quelle
Müssen die Leerzeichen echte ASCII-Leerzeichen sein, oder kann ich eine Ausgabe wie geben a<VERTICAL-TAB>b<VERTICAL-TAB>c...? Wie wäre es, wenn sich dort auch ein paar Backspace-Zeichen befinden? Solange das visuelle Ergebnis dasselbe ist?
Digital Trauma
@DigitalTrauma Solange es gleich aussieht, ist es mir egal, welche Art von Whitespace Sie verwenden.
Stephen
Kann ich Tabulatoren anstelle von Leerzeichen verwenden?
@ yamboy1 hmm, wahrscheinlich nicht. Die meisten Registerkarten sind auf eine große Anzahl von Leerzeichen eingestellt. Wenn Ihre Diagonale wie 4vor dem Leerzeichen aussieht, sieht bsie nicht sehr diagonal aus. Wenn es so aussieht, als ob die Steigung ~ -1ist, ist es in Ordnung.
Stephen
Hat dies keinen Einfluss auf das Erscheinungsbild?
MildlyMilquetoast

Antworten:

87

Holzkohle , 2 Bytes

↘β

Probieren Sie es online!

Wie?

 β - the lowercase alphabet
↘  - direction

Genau die Art von Herausforderung, für die Charcoal ursprünglich entwickelt wurde.

Jonathan Allan
quelle
4
Die richtige Sprache :)
Stephen
2
Das erinnert mich daran, ich sollte wahrscheinlich noch etwas an Crayon arbeiten ... Ich glaube, das ↘"abc ... xyz"qwäre das kürzeste Arbeitsprogramm. ( Online↘``26O;)q ausprobieren ! ) Sollte funktionieren (mit einem Backtick beginnen; für jedes I in 0 ... 25 das implizite I platzieren, das Backtick und die Ausgabe erhöhen), aber aus irgendeinem Grund wird ein "Empty Stack" -Fehler ausgegeben. .
ETHproductions
2
2 Bytes ?! In welcher Codierung besteht der SOUTH EAST ARROW aus einem einzelnen Byte?
Wyck
6
@Wyck Charcoal (Anmerkung: Spekulation) verwendet eine benutzerdefinierte Codepage, die auf 1-Byte-Anweisungen komprimiert werden kann. Das ist legitim für Code Golf. codegolf.meta.stackexchange.com/questions/9428/…
Draco18s
14
@ Stephens, ich denke du meinst die Sprache unten rechts :)
Wossname
18

C 45 Bytes

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

Vielen Dank an @Dennis für das Speichern von 5 Bytes!

Türknauf
quelle
9
Funktioniert auf meiner Maschine ™
Destructible Lemon
Ich denke, Sie müssten iirgendwann initialisieren oder zurücksetzen . Zumindest auf TIO, f()funktioniert nur einmal .
Dennis
@ Tennis Ah, du hast recht. Das wurde behoben.
Türklinke
f(i){for(i=0;++i<27;printf("%*c\n",i,i+96));}spart ein paar Bytes.
Dennis
3
f(i){for(i=96;i<122;)printf("%c\v",++i);}für 41 Bytes - stellen Sie sicher, dass Sie dies auf einem tatsächlichen Terminal ausführen (ja, dies ist zulässig )
NieDzejkob
13

05AB1E , 14 8 6 Bytes

-2 Bytes dank @Emigna

AvyNú»

Wie es funktioniert

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.

Probieren Sie es online!

Originalversion, 14 Bytes

26FNð×N65+ç«}»
Neil A.
quelle
Mit können Sie weitere 2 Bytes speichern AvyNú».
Emigna
@Emigna: Danke! Wird das in bearbeiten.
Neil A.
ƶscheint so perfekt, aber es ist nicht :(.
Magic Octopus Urn
Λwar wahrscheinlich zu diesem Zeitpunkt noch nicht verfügbar, 26A3Λspeichert aber ein Byte.
Kevin Cruijssen
1
@MagicOctopusUrn ₂A3Λwäre noch kürzer gewesen.
Kevin Cruijssen
12

JavaScript (ES6), 60 bis 59 Byte

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

Eine rekursive Funktion, die einen String mit einer nachgestellten Newline zurückgibt.

ETHproductions
quelle
1
Whoa, das ist so hinterhältig. Umwandlung einer Zahl im Bereich von 10 bis 36 in eine Zahl in einer seltsamen Basis. Ich verstehe noch nicht, warum die Basis ebenfalls erhöht werden muss.
Steve Bennett
2
@SteveBennett Richtig, aber n.toString(++n)+f(n)ein Byte kürzer als n.toString(36)+f(n+1).
ETHproductions
1
Sie könnten f=(n=10,s='')=>n-36?s+n.toString(++n)+'\n'+f(n,s+' '):""für 55 tun .
Arnauld
1
Speichern Sie ein Byte mit einigen ES8: "".padEnd(n-10)+n.toString(++n).
Shaggy
1
@Arnauld, f=(n=10,s='')=>n-36?s+n.toString(++n)+'\n'+f(n,s+' '):sscheint zulässig zu sein.
Shaggy
12

Ruby , 28 Bytes

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

Probieren Sie es online!

Erläuterung:

Der << -Operator für eine Zeichenfolge in Ruby führt den in der Dokumentation beschriebenen Trick aus

  • str << Ganzzahl → str

  • str << obj → str

Anhängen - Verkettet das angegebene Objekt mit str. Wenn das Objekt eine Ganzzahl ist, wird es als Codepunkt betrachtet und vor der Verkettung in ein Zeichen konvertiert.

GB
quelle
12

R, 38 37 36 Bytes

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

(Die Verwendung von writeist von @ Giuseppes Antwort inspiriert .)

Sven Hohenstein
quelle
3
Ich schwöre, ich habe es versucht, konnte es aber nicht zum Laufen bringen! Gut gemacht. Sie können 1 Byte mit 65:90 speichern, da Großbuchstaben zulässig sind.
user2390246
@ user2390246 Danke für den Hinweis!
Sven Hohenstein
Sie können ein anderes Byte verwenden, 1anstatt es ""zu rasieren.
Giuseppe
@ Giuseppe Danke für den Hinweis!
Sven Hohenstein
11

Vim, 29 Bytes

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

Probieren Sie es online!

↵ bedeutet die Eingabetaste drücken

<Esc> bedeutet, dass Sie die Escape-Taste drücken

Wie funktioniert das?

: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
quelle
Probieren Sie es online! Sie können dies verwenden, um es zu demonstrieren (V basiert auf Vim und ist größtenteils abwärtskompatibel, mit Ausnahme der anscheinend automatischen Standardeinstellung off). Weniger wichtig ist auch, dass Sie die +Erklärung verpasst haben, die mich für eine Sekunde geworfen hat.
nmjcman101
Vielen Dank @ nmjcman101! Ich habe versucht, einen Weg zu finden, um vim online
jmriego,
Sie können anstelle von verwenden <Esc>. Meiner Meinung nach sieht es ein bisschen besser aus.
Wheat Wizard
Sie können ein Byte speichern, wenn Sie dies {anstelle vongg
DJMcMayhem
Sie könnten 2↵ anstelle von ↵↵↵ und vielleicht Y anstelle von y $
GB
11

Python 2 , 36 Bytes

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

Dies nutzt das überflüssige Leerzeichen, das die Darstellungsregel nicht beeinflusst .

Probieren Sie es online!

Alternative Version, 38 Bytes

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

Dies ergibt die exakte Ausgabe der Herausforderungsspezifikation.

Probieren Sie es online!

Dennis
quelle
Wie funktioniert das %*cüberhaupt?
Undichte Nonne
%*<identifier>Es werden zwei Argumente benötigt: die Länge zum Auffüllen und das eigentliche zu ersetzende Element. Einige printfImplementierungen haben noch mehr undurchsichtige Funktionen, wie die, die %1$<identifier>ich hier verwendet habe .
Dennis
9

PHP, 39 Bytes

for($s=a;!$s[26];$s=" ".++$s)echo"$s
";
user63956
quelle
Dies ist ziemlich ausführlich :) Hier ist meins
etwa am
8

Pure Bash, 13

echo {a..z}^K^H

Hier ^Kund dort ^Hstehen buchstäblich vertikale Tabulator- und Backspace-ASCII-Steuerzeichen. Der xxdSpeicherauszug dieses Skripts sieht folgendermaßen aus: Verwenden Sie xxd -rdiese Option, um das aktuelle Skript neu zu generieren:

00000000: 6563 686f 207b 612e 2e7a 7d0b 08         echo {a..z}..
  • {a..z}ist eine Standarderweiterung für Bash-Klammern a b c ... z(durch Leerzeichen getrennt)
  • Mit der ^Kvertikalen Registerkarte wird der Cursor eine Zeile nach unten an dieselbe Position verschoben
  • Die ^HRücktaste bewegt den Cursor um eins zurück, um das Trennzeichen zu löschen

Probieren Sie es online aus . colund tacwerden in der Fußzeile verwendet, um dies in einem Browserfenster korrekt wiederzugeben. Dies ist jedoch in einem normalen Terminal nicht erforderlich.


Wenn die obigen unorthodoxen Steuerzeichen in der Ausgabe für Sie zu lang sind, können Sie Folgendes tun:

Bash + gemeinsame Dienstprogramme, 24

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

Hier ^Kund dort ^Hstehen buchstäblich vertikale Tabulator- und Backspace-ASCII-Steuerzeichen. Der xxdSpeicherauszug dieses Skripts sieht folgendermaßen aus: Verwenden Sie xxd -rdiese Option, um das aktuelle Skript neu zu generieren:

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

Probieren Sie es online aus . Die vertikale Registerkarte und die Rücktaste werden möglicherweise von Ihrem Browser unsichtbar gemacht, sind jedoch vorhanden (auf Chrome unsichtbar, auf Firefox sichtbar).

  • col -x Rendert die Eingabe erneut, sodass lustige Steuerzeichen durch Leerzeichen und Zeilenumbrüche ersetzt werden, um dasselbe visuelle Ergebnis zu erzielen
  • Aus irgendeinem Grund werden die colZeilen in umgekehrter Reihenfolge ausgegeben. tackorrigiert das.
Digitales Trauma
quelle
Das ist sehr cool :) (und dank meta und @Dennis dafür, dass sie vorgeschlagen haben, die Antworten auf Codegolf nach Aktivität anstatt nach Punktzahl zu sortieren, bessere Antworten anstelle der (sehr langweiligen) integrierten Codegolfsprachen: codegolf.meta.stackexchange. com / questions / 10127 /… )
Olivier Dulac
Viele Terminals rendern ^Kals Cursor auf, was das Verhalten ist, coldas hier emuliert werden muss.
Neil
@Neil ja, das macht Sinn - die colManpage nennt einen VT einen "Reverse Line Feed". xterm, gnome-terminal und OSX-terminal fallen alle in einer Zeile ...
Digital Trauma
8

Brain-Flak , 124, 116 , 106 Bytes

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

Probieren Sie es online!

Erläuterung:

Diese Antwort missbraucht die Stapelhöhe Nilad , aber auf eine neue Art und Weise, die ich noch nie benutzt habe, auf die ich ziemlich stolz bin. Davon abgesehen ist die Antwort nicht allzu klug.

Wenn man also die in dieser ASCII-Grafik verwendeten Zeichen analysiert, gibt es tatsächlich drei Werte, die häufig verwendet werden:

  • 32 (Leerzeichen),

  • 64 (addiere 64 zu N, um den N-ten Buchstaben des Alphabets zu erhalten) und

  • 10 (newline)

Sowie 26. (Anzahl der Schleifen) Und diese Zahlen werden an verschiedene Stellen verschoben, so dass wir Zwischenwerte nicht wirklich wiederverwenden können, um die großen Zahlen kleiner zu machen. Und alle diese Zahlen zu pushen, sind allein satte 86 Bytes:

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

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

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

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

Das ist schrecklich. So machen wir es Ihnen bequemer. Der naheliegende Ansatz besteht darin, a 32auf den alternativen Stapel zu schieben , wodurch unser 32Snippet zu: (<>({})<>)und unser 64Snippet zu wird (<>({})({})<>). Wenn wir unseren anfänglichen Push 32 mit unserem anfänglichen Push 26 kombinieren , können wir ungefähr 8 Bytes einsparen. (mein erstes Golf).

Aber hier kommt der Trick ins Spiel, auf den ich wirklich stolz bin. Da wir den alternativen Stack für nichts anderes verwenden, könnten wir genauso gut die 10 runter spielen. Dazu legen wir gleich zu Beginn des Programms 4 beliebige Zahlen auf den Stack. Da wir auch 32 drücken, erhöht dies den Wert von []nilad auf 5, was unser 10Snippet viel praktischer macht. Und zum Glück können wir damit auch den Push-32- und den Push-26- Snippet nach unten spielen!

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

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

Wird

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

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

Also hier ist eine detaillierte Erklärung:

# 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
quelle
7

V , 15 13 11 Bytes

¬azòÙr klDj

Probieren Sie es online!

Erläuterung

¬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
quelle
7

Google Sheets, 67 65 Bytes

=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)), ""))

Nach der Klarstellung, dass Whitespace ausreichend ist, habe ich sichtbar leere Zellen verwendet

Ausgabe

Lassen Sie mich wissen, wenn dies nicht zählt, wenn ich die Byteanzahl falsch verstanden habe oder wenn ich eine Etikette durcheinander gebracht habe, da dies mein erster Beitrag hier ist.

Bearbeiten: Es stellt sich heraus, dass ich 2 Bytes einsparen kann, indem ich das "" weglasse, da Google Sheets einen leeren if-Wert akzeptieren.

Mr.Parivir
quelle
1
Willkommen bei PPCG :) Sieht gut aus! Gute Arbeit, die andere Antwort von Google Sheets zu schlagen!
Stephen
7

APL (Dyalog) , 9 7 Bytes SBCS

-2 Bytes dank des Hinweises von ngn.

↑⍨∘-⌸⎕A

[Online ausprobieren!] [TIO-j3o0ipjy]

⎕A der Großbuchstabe A lphabet

 Fügen Sie zwischen jedem (Element, Liste der Indizes) Paar die folgende implizite Funktion ein:

↑⍨ aus dem Element (dem Buchstaben) nehmen ...

 das…

- negierter Index Anzahl der Zeichen, dh die Anzahl der Zeichen von hinten, die auf der Vorderseite mit Leerzeichen aufgefüllt sind.

Probieren Sie es online!

Adam
quelle
Nett. Mein Versuch war etwas ausführlicher. Gibt es eine Übersetzung dieser Verben in J?
Jonah
@Jonah Verben: ist {.und ist i.Adverbien: ¨ist "0und ist ~.
Adám
Vielen Dank. Sieht aus wie die J-Übersetzung etwas an Kürze verliert:(a.{~97+i.26){."0~-1+i.26
Jonah
@Adám die Ausgabe sieht nicht wie erforderlich aus; Hinweis: Verwenden Sie diese
Option,
@ngn Sie können auch (…) eine Liste von Zeichenfolgen zurückgeben. Aber ich werde nachforschen. Edit: Oh ja, natürlich!
Adám
6

Oktave, 25, 19 oder 12? Bytes

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

Probieren Sie es online!

Andere von @LuisMendo vorgeschlagene Lösung (12 Bytes), die ich in der Windows-Version von Octave getestet habe:

diag('a':'z')

Erläuterung:

Erzeugt eine diagonale Matrix von a:z.

rahnema1
quelle
@ LuisMendo In tio kann ich nicht das gleiche Ergebnis produzieren. Es ist ein Ausdruck, der ausgewertet werden kann, der das gewünschte Ergebnis
liefert
Die von Luis vorgeschlagene Lösung scheint jetzt auf TIO zu funktionieren ... Neue Version von Octave vielleicht?
Stewie Griffin
Oder neue Version von tio !?
rahnema1
6

Java 8, 72 71 70 61 Bytes

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

-1 Byte durch Ausgabe des Großbuchstabens anstelle des Kleinbuchstabens.
-1 Byte durch direktes Drucken, anstatt einen mehrzeiligen String zurückzugeben.
-8 Bytes dank @ OliverGrégoire mit printfdirekt loswerden String s="";. Und auch -1 Byte durch Ändern ()->auf o->.

Probieren Sie es hier aus.

Kevin Cruijssen
quelle
Die naive Umsetzung ist kürzer als ich gedacht hätte. Sie können ein Byte mit c=65(oder 64tatsächlich) speichern, sodass Sie die dreistellige Nummer nicht benötigen. Kann die Rückgabe eines Arrays anstelle der Zeichenfolge Byte sparen, wenn Sie das Array entfernen können +"\n"?
TheLethalCoder
@TheLethalCoder Ah, ich wusste nicht, dass wir das Großbuchstaben ausgeben dürfen. Überflog das. Vielen Dank. Und was meinen Sie mit der Ausgabe eines Arrays? Wie ein Array von Arrays?
Kevin Cruijssen
1
@TheLethalCoder Jeder Tipp ist willkommen, also danke. Aber in diesem Fall wird es nicht kürzer sein. :)
Kevin Cruijssen
1
@Winter Über Ihren ersten Vorschlag wird in diesem Meta-Post noch diskutiert , aber nach den Stimmen zu urteilen, ist es in der Tat von nun an erlaubt. Was den zweiten betrifft, bin ich mir nicht sicher. Es fühlt sich an, als würde man die Regeln betrügen / verbiegen, besonders nach diesen hitzigen Diskussionen in den Kommentaren dieses Metapostens und den Antworten .
Kevin Cruijssen
1
62 Bytes: ()->{for(int a=0;a++<26;)System.out.printf("%"+a+"c%n",a+96);}Verwendung der gleichen Idee wie bei einer anderen Herausforderung .
Olivier Grégoire
5

Gelee ,  10  9 Bytes

-1 Byte dank Dennis (Vermeiden Sie Dekrementierung Jdurch 26Ḷdirekte Verwendung eines niedrigeren Bereichs )

26Ḷ⁶ẋżØaY

Ein vollständiges Programm, das das Ergebnis druckt.

Probieren Sie es online!

( ØaJ’⁶ẋżBei 7 handelt es sich um einen monadischen Link, der eine Liste von Listen mit Listen von Zeichen zurückgibt, aber [["a"],[" ","b"],[" ","c"],...]das ist wahrscheinlich nicht akzeptabel.)

Es würde mich jedoch nicht wundern, wenn es einen kürzeren Weg gäbe, über den ich nicht nachgedacht habe!

Wie?

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
quelle
Ich würde sogar zulassen, [["a"],[" ","b"],[" "," ","c"],...]da eine Liste von Zeichen eine alternative Definition für eine Zeichenfolge ist, aber ein Tupel scheint nicht zu passen :)
Stephen
Ja das ist, was ich dachte.
Jonathan Allan
1
... beachten Sie, dass in den obigen "..."Abschnitten jeweils eine Liste von Zeichen aufgeführt ist. In Wirklichkeit hat [[['a']],[[[' '],['b']],[[' ',' '],['c']],...]Jelly keine Zeichenfolgen, sondern nur Listen.
Jonathan Allan
26Ḷ⁶ẋżØaYSpeichert ein Byte.
Dennis
ØaJ’⁶ẋżfür 7, für deine alternative version.
Undichte Nonne
5

PowerShell, 29 Byte

0..25|%{' '*$_+[char]($_+97)}
TessellatingHeckler
quelle
Ich mag, wie Sie 97 hinzufügen, $_während Sie gehen, nett.
root
5

Alice , 22-20 Bytes

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

Probieren Sie es online!

Obwohl es sich bei der Ausgabe um eine Zeichenfolge handelt, stellt sich heraus, dass der Ordinalmodus für diese Herausforderung nicht geeignet ist.

Erläuterung

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

Vorherige Lösung

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

Probieren Sie es online!

Ich habe ungefähr zehn 23-Byte-Lösungen durchgearbeitet, bevor ich diese finden konnte.

Erläuterung

Dieses Programm verwendet das Band, um die Anzahl der auszugebenden Leerzeichen zu verfolgen. Kardinal- und Ordinalmodus verwenden dasselbe Band, haben jedoch separate Bandköpfe. Die beiden Modi interpretieren das, was sie auf dem Band sehen, unterschiedlich, und das Programm nutzt diesen Unterschied voll aus.

Die Befehle werden in der folgenden Reihenfolge ausgeführt:

[                   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
quelle
5

Brainfuck, 103 Bytes

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

Probieren Sie es online!

Die Position der Variablen ist irgendwie verbesserbar.

Erläuterung

>-<-----[[<+>->>+++>-<<<]>++]   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.
]
6Unendlichkeit8
quelle
5

Google Sheets, 69 Bytes

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

Hier ist nichts kompliziert. Der einzige Trick ist die Verwendung von ArrayFormulaund ROW(A1:A26), um 26 verschiedene Werte für die JOINFunktion zurückzugeben. Die Ausgabe sieht folgendermaßen aus:

Ausgabe


Ich denke, Excel 2016 kann dasselbe tun, TEXTJOINaber ich kann in der Online-Version keine Array-Formeln eingeben und habe nur 2013 selbst. Die Formel sollte lauten:

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

Wenn Sie es als Matrixformel ( Ctrl+ Shift+ Enter) eingeben, werden { }auf beiden Seiten geschweifte Klammern eingefügt, sodass es 67 Byte lang ist. Jeder, der überprüfen kann, ob es funktioniert, kann es als eigene Antwort verwenden.

Ingenieur Toast
quelle
5

Seed , 6014 Bytes

Ich denke nicht, dass dies Preise gewinnen wird, aber nur zum Spaß, hier ist eine Lösung in Seed.

86 11103250503694729158762257823050815521568836599011209889044745493166180250197633623839266491438081837290079379263402288506775397211362446108152606095635373134468715450376738199004596861532212810083090232034321755895588102701453625219810339758989366211308223221344886043229936009486687653111291562495367476364760255760906228050130847228170228716790260998430434027546345063918859356161024202180254514539438087787769611000320430464740566450402368450792375043801526494811596087812709169139468697779440918934518195843690439213251884693846598754642076364755341359062651237754916053099089619667382845958005035392458577634784453744876558142057256976895330859887974064083588368087014591508237946214519271550243549214199679364098489146944338807874570414584343165070707969101892779772740177526390597395955859236589308394889243501541206981604661264930842784772121710695027991351718061777696274815931123342985242351444203296855501870888626347939456384376808446806093364176576945969539054970975848477876079897476093353730443488664472826635815956526890935049081522728044807877072639829234224838977148057506785320443165975265560224605597481381188291535996775480326796788286452216432605854564432262547835415260058472165825285438444435690700488258778785613363062417500848996527077259315494936037544655054620369560227407957368700650031346856230643646273909094915618471799926504192999361174763592054723307855670381682927214117502862645460031555724588536036895597768493827964819026940533784490457441244859937078155137620826821294513857153097135094397278852300032685608169642137925241118197368192392427097109982751185030229544527638686131131545529690698706313745703838144933923021851042677941879847025167921010148923860660695145106913052517930707522151230705792709484338746351589089180137363986003757314611932324492978098101655359729841878862276799317010824753645947659706175083519817734448003718088115457982394423932136760435046136644679525408371158980833993157988971884061469882136904103033944270884697456159261033500286722891139158500027351042265757431184139617566089023339480051231776345929815102059539844917563709940188668873305602146506284075271989710388430531233185164106985265575418252638186398535149202928422854319253947591044830747981534342833040219194969504971457701296402664807369043224201667623773161453335066484102800249947322601702575025462427139266561015140950621152993027466758026351218924607290766894274223554418125824416921899080393405328694235821466034161071834073874727856768719898425047229002772806527172294625623026601313091815217479540688812203850300478145319935479599086534606210099372526810614742385909275512758349679098012967475393301857434507012875239092688018536028125644341148882858752275129016876257290205949225918496182271679312996010157634568807332616541938310641844258434083838017690572891417189135014450484203635258935943095637185443145042430274553211816422809756194554145177421779800554334935224073734034988935790096239926730047370699006392111034056662661567902477446646680125183082979598538506383502737734442490068661537425714549752783861222862366340979663873475326752237893690641570287341027097775099918958849864419430754493042534812120486345363285167685811903366691676146427476942948696624274431993989133835880516551024369474029197791751838810883302415448112237526350703063618171739262753474029252659418383385834751808940073804107171146665382663467460066719556797639176747423279761528061219482681051780434845070421974558638870988408449698678976622755518024906714421419806347234183574860655249471877105716127767795785164699804819127058322715857697491583787449703283625085118896433923054087238479453964363805045497229148813441732912067120594705269402106426011497763749556561398150139686331615167139081591537739333533146667211063179804707883556569241294269430626179579760506971066676011512530066694518309930078451295032445835025178124213221937594928472509588116557231122849491576207720183829735710200290762251904109318007206980645946249679357907549498615310165588678201768095297568708803842208357473777731751349499510116345704811971207818719582793964185192140178454948686109674659005978400204479072321714207828018696339659886683414074211823497880135255138161141724546221354224299071581607979907417508104234534779573666933024250229754952685174194168516481670999039048675109878524061868078078216337487277443941946961426121900907734301692962783139932352047932263834773963592317279425421954035566305805348109175553209815893678595198155962166838761859540063188209014774346841267440789072833797121217961797443744676162541668802226500817146368372390178287945076657776275930590173768326046610094573983886099504933977126798348879838826160714899283593774855907724617352862079916515034033299006419237012240730789008999523238851913897908225482003661109026061857228300111070725651744312468140016983078297938157227595743419983763920290850801438187869169473456288283458163865462359588316419331445070232596307970490434468929587726795603069137946085898481642595124580643542063564880389350236902538522311931690905858973696558714577085714396738993556273941292496636824719451697631982422926675238248502170501569627556395875619564600587531422890212003952929325067813498958390095519100963598626450443103780781917045489137526377521695121594716424797216910752252094749957224424042047863869830458287114846161217532552045343745235776511344577755412402833175338541217548987687334493461236111032661075185714361252784989689657180878190058132112701323898697673356854132286586129946906160482715702618768869398700713988301485421822519104930442450343377920756456344715552821899659777521739288202633751258303637433110490141551780764889912485271829265224821750882760152112536985349681370761157202793523201156381835717321637420939424473215237574260806475544972321933149796156065126465186203580256364372579422208318560608817806013462242728082475787319168695978160861791054731154820533251279706873332364894538291172324730671914083193733203570060223897442373172904974570329139578763294810924815364789498523721281918680145538278976651264

Es übersetzt in das folgende Befunge-Programm:

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

++ hinzufügen , 1069 Bytes

+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

Probieren Sie es online!

Ja. Das ist hartcodiert. Ich bin mir sicher, dass es einen besseren Weg gibt, und wenn Sie ihn finden möchten, fahren Sie fort, aber dieser Weg scheint am besten zu funktionieren, da es schwierig ist, mit dem Arbeitsspeicher in Add ++ zu arbeiten.

Caird Coinheringaahing
quelle
4

R , 59 49 47 Byte

-10 bytes dank djhurio

-2 Bytes danke an Sven Hohenstein

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

Druckt nach Standard. Vom User2390246 überfordert

Probieren Sie es online!

Giuseppe
quelle
Sie können ersetzen 26^2mit 676einem Byte zu speichern.
Türklinke
2
m=matrix("",26,26);diag(m)=letters;write(m,'',26)(49 Bytes)
Djhurio
Für die gleiche Anzahl von Bytes können Sie die Matrix mitcat(m,fill=27)
JAD
1
@ Djhurio "Für die gleiche Anzahl von Bytes"
JAD
1
@ Giuseppe Der Befehl "diag<-"(x, y)ist ähnlich wie diag(x) <- y. Der Wert wird keiner Variablen zugewiesen, sondern zurückgegeben.
Sven Hohenstein
4

> <> , 46 44 42 Bytes

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

Probieren Sie es online!

Erläuterung

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)

Dies ist eine völlig andere Einstellung als meine vorherigen 46 Bytes, daher habe ich auch die TIO in die einzige aufgenommen. 46 bytes Online testen!

Unten ist ein Link zu Emignas Einsendungen, es war die erste Antwort, aber ich glaube, meine ist anders genug (und spart ein paar Bytes), um eine zweite zu rechtfertigen.

Emignas Antwort

Blaugrüner Pelikan
quelle
Und jetzt sind wir gebunden. Am besten spielen Sie ein oder zwei Bytes später;)
Emigna
@Emigna, ich dachte, 3 gesicherte Bytes wären genug: o denke, ich habe noch etwas zu tun :)
Teal Pelican
4

Haskell , 66 65 58 57 45 43 Bytes

Vielen Dank an @nimi und @maple_shaft für das Speichern von 12 bis 14 Bytes.

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

Probieren Sie es online!

vroomfondel
quelle
1
Sie würden die gleiche Punktzahl erhalten, aber manchmal können Sie <$anstelle von replizieren:(' '<$[1..(fromEnum n-97)])
maple_shaft
2
Sie können den Vorschlag von @ maple_shaft in ändern (' '<$['b'..n]).
nimi
Da unbenannte Funktionen zulässig sind, ist das nicht erforderlich f=.
Nimi
2
Btw, gleiche Byte zählen: ['a'..'z']>>= \n->(' '<$['b'..n])++[n,'\n'].
nimi
4

PHP, 23 Bytes

Anmerkung: Verwendet die IBM-850-Codierung.

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

Laufen Sie wie folgt:

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

Erläuterung

Erstellen Sie ein Array aller Buchstaben des Alphabets und fügen Sie es mit einem vertikalen Tabulator als Klebstoff hinzu.

aross
quelle
4

Brainfuck , 80 Bytes

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

Probieren Sie es online!

Formatiert:

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

Verwendet eine einfache multiplikative Generierungsfunktion, um einige Konstanten im Speicher abzulegen, und wiederholt dann den Vorgang des Druckens von N Leerzeichen 'A' + Nfür N = 0..25.

Kommentiert:

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
quelle
4

RProgN 2 , 5 Bytes

aS`\x0B.

\ x0B ist ein vertikales Tabulatorliteral

Dies nimmt nur das Kleinbuchstaben, teilt es und verbindet es mit vertikalen Tabulatoren. Dies bewirkt den beabsichtigten Effekt auf bestimmte Bash-Terminals.

Ausführen des Skripts

Ein Taco
quelle