Diesen genauen Text drucken Sie aus:
A
ABA
ABCBA
ABCDCBA
ABCDEDCBA
ABCDEFEDCBA
ABCDEFGFEDCBA
ABCDEFGHGFEDCBA
ABCDEFGHIHGFEDCBA
ABCDEFGHIJIHGFEDCBA
ABCDEFGHIJKJIHGFEDCBA
ABCDEFGHIJKLKJIHGFEDCBA
ABCDEFGHIJKLMLKJIHGFEDCBA
ABCDEFGHIJKLMNMLKJIHGFEDCBA
ABCDEFGHIJKLMNONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWXWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWXYXWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWXYZYXWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWXYXWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWXWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNONMLKJIHGFEDCBA
ABCDEFGHIJKLMNMLKJIHGFEDCBA
ABCDEFGHIJKLMLKJIHGFEDCBA
ABCDEFGHIJKLKJIHGFEDCBA
ABCDEFGHIJKJIHGFEDCBA
ABCDEFGHIJIHGFEDCBA
ABCDEFGHIHGFEDCBA
ABCDEFGHGFEDCBA
ABCDEFGFEDCBA
ABCDEFEDCBA
ABCDEDCBA
ABCDCBA
ABCBA
ABA
A
Technische Daten
- Zusätzliche nachgestellte Zeilenumbrüche sind am Ende der Ausgabe zulässig.
- Zusätzliche nachgestellte Leerzeichen (U + 0020) sind am Ende jeder Zeile zulässig, einschließlich der zusätzlichen nachgestellten Zeilenumbrüche.
- Sie können alle Kleinbuchstaben anstelle von Großbuchstaben verwenden, jedoch nicht teilweise Kleinbuchstaben und teilweise Großbuchstaben drucken.
- Sie können den Text als Funktionsausgabe zurückgeben, anstatt ihn in einem vollständigen Programm zu drucken.
Wertung
Da dies ein Dreieck ist und ein Dreieck drei Seiten hat und 3 eine kleine Zahl ist, sollte Ihr Code in Bezug auf die Anzahl der Bytes klein sein.
code-golf
kolmogorov-complexity
alphabet
Undichte Nonne
quelle
quelle
Antworten:
Vim, 37 Bytes
Legende
quelle
:h<_↵↵↵YZZP
),qq…q
zeichne dann ein Makro ( ) auf, das wiederholt einen Buchstaben aus der obersten Zeile herausschneidet, zwei Kopien davon erstellt, um das Dreieck vertikal zu vergrößern, und füge dann den abgeschnittenen Buchstaben an alle Zeilen an horizontal wachsen. Ich wiederhole dieses Makro noch 24 Mal, um das volle Dreieck zu zeichnen.Logo,
232 207 196190 BytesHat jemand Dreiecke gesagt?
Nehmen Sie Ihren Kompass und Winkelmesser heraus und lassen Sie uns dies auf grafische Weise tun. Die Geometrie verwendet ein gleichseitiges Dreieck, um die Ergebnisse auszurichten. Früher hatte ich ein gleichschenkliges Dreieck, aber es enthielt zu viele Dezimalstellen. Durch diese Änderung wurde auch die Ausgabe komprimiert, wodurch sich die Anzahl der Bildschirmvorbereitungen und Schriftänderungen verringerte, die ich durchführen musste.
Ich habe den Online-Dolmetscher von Calormen verwendet, um diesen zu konkretisieren. Wenn Sie nicht genug Platz auf dem Bildschirm haben, wird es sich ändern, aber Sie können auch mit einigen Zahlen experimentieren, um das zu erledigen. Ich habe in meinem Browser den Vollbildmodus "F11" verwendet.
Die
r
Prozedur zeichnet eine Reihe vonn
Zeichen. Das Zeichen wird automatisch bestimmt, je nachdem, wie viele Segmente es verwenden soll. Derb
Parameter gibt an, wie viel vorübergehend gedreht werden muss, damit die Buchstaben in die richtige Richtung zeigen. Derl
Parameter bestimmt den linearen Abstand zwischen Buchstaben.Die
t
Prozedur wechselt zur nächsten Position und ruft dier
Funktion viermal auf, um ein Dreieck zu erstellen, das bei Bedarf gedreht wird. Ich habe es zweimal für die vertikale Seite aufgerufen, weil das weniger Bytes in Anspruch nahm als das einmalige Aufrufen mit spezieller Behandlung. Das Ende des Vorgangs positioniert die Schildkröte für den Beginn des nächsten Dreiecks, einen Schritt darüber.Z
ist ein Sonderfall, also drucken wir es einfach direkt und drehen es so, als ob wir gerade ein Dreieck fertiggestellt hätten. Schließlicht
wird 25 mal angerufen.quelle
Haskell, 58 Bytes
Definiert eine Funktion
t
, die die Ausgabe als Zeichenfolge zurückgibt.quelle
Jelly ,
1613 BytesVielen Dank an @LeakyNun für das Golfen mit 3 Bytes!
Probieren Sie es online!
Wie es funktioniert
quelle
Python, 74 Bytes
Eine Python 2-Funktion, die druckt und keine Argumente akzeptiert. Die Schlüsselidee besteht darin, das dreieckige Hin- und Rückmuster mit Rekursion zu erzeugen. Betrachten Sie zuerst diese einfachere Funktion, die die Buchstaben 'A' bis 'Z' und zurück bis 'A' druckt:
Die Funktion druckt zuerst "A" (Zeichencode 65), dann wieder "B" (66) und so weiter bis "Z" (90). Von dort hört es auf, sich zu wiederholen. Auf dem Weg zurück in den rekursiven Stapel druckt es jedes Zeichen, das
t
es auf derselben Ebene gedruckt hat, von "Y" zurück zu "A".Der Hauptcode macht dasselbe, mit der Ausnahme, dass er sich
s
bis jetzt in der Buchstabenfolge ansammelt und die Auf- und Ab-Zeichenfolge druckts+s[-2::-1]
.Danke an xsot für 2 Bytes.
In Python 3 ist dasselbe ein Byte kürzer (73 Byte), indem alles in eine Zeile gesetzt wird.
quelle
f(x=66,s='A')
. Auf diese Weise können Sies
im Funktionsaufruf anstelle des Funktionskörpers aktualisieren .Brainfuck,
1733121119 BytesEtwas besser lesbare Version:
Erklärung möglicherweise zu kommen.
quelle
05AB1E ,
20 13 126 Bytes2 Bytes gespart dank Adnan.
6 Bytes gespart dank Magic Octopus Urn und einigen neuen Sprachfunktionen.
Probieren Sie es online!
Erläuterung
quelle
Œ26£
zu.p
, die das Präfix - Befehl ist. Außerdem können Sie ändernD,
zu=
, die Drucke ohne knallen.gF,
!Â
ist sehr nett und eine wirklich nette Funktion.û
neuer als die herausforderung und würde diese antwort nicht konkurrieren lassen.J,
262322 BytesErläuterung
quelle
f=:,1}.|.
Versuchen Sie diesPython 3, 97 Bytes
Ideone es!
quelle
'\n'.join(a+a[-2::-1])
Ruby, 71 Bytes
Probieren Sie es auf repl.it
quelle
> <> 60 Bytes
Probieren Sie es online!
quelle
C
272247234230144137 Bytes:( Ich habe in meiner vorherigen Methode viele Bytes (
272 -> 230
) gespart , dank großartiger Golftipps und -tricks von Sigalor ! )( Durch Umstellung auf eine bessere Methode wurden fast 100 Byte (
230 -> 144
) eingespart. )Meine erste Antwort in
C
. Ich habe gerade erst angefangen, es selbst zu lernen, also lass uns sehen, wie es läuft.C es in Aktion! (Ideone)
quelle
main()
Rückgabetyp und sogar den entfernen#include <stdio.h>
. GCC (und auch Sites wie Ideone) sind damit einverstanden. Als nächstes können Sie Variablendefinitionen in die Parameterliste einer Funktion auslagern. Lassfor(int i=65;...
werdenfor(i=65...
und ändere dichmain()
zumain(i)
. Machen Sie dasselbe auch für jede andere int-Variable (GCC verwendet standardmäßig die fehlenden Typenint
).main()
zumain(i)
?i
Variable in der Initialisierung der for-Schleife nicht deklarieren , müssen Sie sie an einer anderen Stelle deklarieren. Und weil (zumindest in C) die Parameter einer Funktion wie normale Variablen verwendet werden können, sollte es kein Problem geben. Übrigens, welchen Compiler verwenden Sie?C
in Ideone. Ich erhalte mehrere<variable> undeclared
Fehler.JavaScript (ES6), 81 Byte
quelle
Mathematica 59 Bytes
quelle
//Column
vom Ende und das Präfixieren Ihres Codes mitColumn@
Arbeiten.〚
und〛
als einzelne Bytes. Ich bezweifle, dass es eine Single-Byte-Codepage gibt, die sie enthält und auch von Mathematica standardmäßig unterstützt wird. In UTF-8 haben sie drei Bytes zugenommen, sodass sie nichts über der Ebene speichern[[...]]
. Ich bin mir auch nicht sicher, wie legitim esColumn
ist, da es nur wie eine Liste von Zeilen in einem Mathematica-Notizbuch angezeigt wird. Wenn Sie diesen Code aus einer Skriptdatei ausführen, wird nichts angezeigt. IstPrint/@
jedoch die gleiche Anzahl von Bytes und funktioniert in beiden Fällen.[what you see](actual link)
. Ex.[Example Link](https://www.example.com)
, die als Beispiel LinkDyalog APL, 18 Bytes
quelle
R
63 6159 BytesHilfreich
LETTTERS[0]
gibt keine Zeichen zurück.Edit: habe dank @leakynun einen verloren
Edit: noch zwei dank @plannapus
quelle
\n
TSQL, 159 Bytes
Geige
quelle
Javascript (mit externer Bibliothek-Enumerable), 135 Bytes
Link zur Bibliothek: https://github.com/mvegh1/Enumerable
Codeerklärung: Erstellen Sie einen Bereich von Ints beginnend bei 1 für eine Anzahl von 51. Schreiben Sie für jede Zeile eine Zeile gemäß komplexem pred. Machen Sie etwas JS-Zauberei mit globalen Variablen und Caching ... und Voila. Für jedes int in WriteLine erstellen wir den linken Bereich von ints und speichern ihn in globalem "g" und String Joining (Write) mit
""
Trennzeichen und ordnen jedes int dem String zu, der dem int-Zeichencode zugeordnet ist. Dann konzentrieren wir uns auf die rechte Seite, indem wir die Umkehrung dieser Sequenz nehmen (und das erste Element überspringen, da dies mit dem letzten Element der ursprünglichen Reihenfolge übereinstimmt ...) und mit derselben Logik schreiben. EDIT: Aktualisiert die Interna von Write in der Bibliothek. Eine leere Sequenz schreibt jetzt eine leere Zeichenfolge anstelle von null. Dies sparte auch 15 Bytes der Antwort einquelle
import sympy
oder ganzfrom sympy import*
oben. Die Bash + x- Antworten sind unterschiedlich, da Sie x nur installieren müssen , es nicht irgendwie aktivieren.sympy
,numpy
,scipy
etc. die ganze Zeit.Powershell,
6152 BytesDanke an TimmyD für das Speichern von 9 Bytes!
Durchläuft ASCII-Werte für Großbuchstaben vorwärts und rückwärts. Für jede Zahl wird ein Array der ersten X-Nummern erstellt, die erste X-Nummer entfernt und dann die Umkehrung der ersten X-Nummern hinzugefügt, die dann in Zeichen umgewandelt und zu einer Zeichenfolge verbunden werden.
quelle
65..90..65
aus einer Laune heraus angeschlossen, ohne Erfolg. Ich schätze, ich habe vergessen, dass ich die Bereiche einfach addieren könnte.Cheddar ,
10296796967 Bytes17 Bytes dank Downgoat und Inspiration für 10 weitere.
Die Tatsache, dass Zeichenfolgen verketten können, aber keine Arrays, bedeutet, dass ich die beiden Bereiche in Zeichenfolgen konvertieren, verketten und dann wieder in Arrays konvertieren müsste.
Auch die Tatsache, dass
vfuse
ein führender Neuzugang erzeugt wird, bedeutet auch, dass ich die erste Zeile manuell generieren und mich dann auf den Rest konzentrieren müsste.@"
als dyad (Zwei-Argument-Funktion) kann direkt in einen String konvertiert werden, funktioniert jedoch nicht für den umgekehrten Bereich (wenn das erste Argument größer als das zweite ist).Reichweite war halb inklusive. Nach dem Bugfix wurde es inklusive.
Verwendungszweck
Cheddar, 55 Bytes (nicht konkurrierend)
In der neuesten Version mit allen Korrekturen lautet die Antwort:
aber es wurde nach der Herausforderung gemacht.
quelle
@"(1|>26)
kann sein1@"26
String.letters
kann sein(65@"91)
String.letters.slice(0,i)
könnte vielleicht sein65@"(66+i)
C 93 Bytes
Aufruf
f()
ohne Argumente.Probiere es auf ideone aus .
quelle
VBA, 94 Bytes
Rufen Sie im Sofortfenster mit? T auf
Um nur zu erklären, was los ist: Ich verwende die Abs-Funktion zweimal, um sowohl die Alphabet-Traverse als auch die Zeilenlänge wiederzugeben. Es ist für die Aufgabe gut geeignet, da in beiden Fällen nur ein Extremwert vorliegt, der dem Nulldurchgang der Variablen vor Abs entspricht.
Als einfacher Befehlssatz im VBA-Direktfenster werden anstelle eines Programms oder einer Funktion 72 Byte benötigt:
(danke an @GuitarPicker)
quelle
Function T:
, ende mit:?T
(obwohl es nur einmal funktionieren würde, weil du danach T auf "" zurücksetzen?
du mitgehst;
.Python,
7371 BytesVielen Dank an @xnor für die Rekursion
Erläuterung
x
ist der ASCII-Wert des nächsten Buchstabens im Alphabets
ist ein akkumulator für das alphabett
ist eine Linie im Dreieck (dhs
+s backwards
)t
wenn das Alphabet fertig ist (dh wir sind in der Mitte)t+f(...)+t
mit:x
erhöhts
mit dem nächsten Brief angehängtt
aufs
+s backwards
+ zurücksetzen\n
Aktualisieren
\n
(+1) und verkürzten bedingten (-3) dank @xnorquelle
t
in die nächste Runde vorzudringen. Es gibt jedoch einen zusätzlichen führenden Zeilenumbruch.x=66,s='A''
wird es los. Das Basisgehäuse kann auf gekürzt werdenx/92*t or
.HTML + CSS, 884 Zeichen
(763 Zeichen HTML + 121 Zeichen CSS)
Gerade expandierende Leaky Nun 's Kommentar auf MonkeyZeus ' s Antwort . (Obwohl ich den Kommentar falsch lesen könnte ...)
quelle
Brachylog ,
3729 BytesDank an Fatalize für seine Unterstützung.
4 Bytes dank Fatalize und Inspiration für weitere 4 Bytes.
Probieren Sie es online!
Prädikat 0 (Hauptprädikat)
Prädikat 1 (Hilfsprädikat)
Dies baut im Grunde ein Palindrom aus der gegebenen Zeichenfolge auf.
quelle
,A
in Prädikat 1 durch ersetzenh
, indem Sie ein Byte speichern.:1:2yt.
mit:2&.
und das Hinzufügen einer!
(Schnitt Wahl Punkte) am Ende des Prädikats 2.[char:char]y
, um die sustrings zu generieren,abcd…
anstatt~c[A:B]
R
127125 BytesMit dieser Lösung nicht ganz zufrieden, besonders mit den beiden
for
Schleifen, aber mit etwas Besserem geht es nicht!LETTERS
enthält die Großbuchstaben.Ungolfed:
ifelse
ist ein kürzerer Weg zum Abmeldenif... else...
und funktioniert so:ifelse(condition,action if TRUE, action if FALSE)
Eine andere 125-Byte-Lösung:
quelle
Java 131 Bytes
Ohne String (131 Bytes)
Codegolfed
Mit String (173 Bytes)
Codegolfed
Vielen Dank an Manatwork und Kevin Cruijssen
quelle
d!=-1
mitd>-1
, gleiche für k. (Übrigens, Sie haben vergessen, die Golf-Version zu reparieren.)i+=k==1?1:-1
kann seini+=k
undSystem.out.print((char)c+(c+d<65?"\n":"")),c+=d==1?1:-1);
kann seinSystem.out.print((char)c+((c+=d)<65?"\n":"")));
. Insgesamt wird es also ( 131 Bytes ):for(int i=0,k=1;i>-1;k=k>-1&i<25?1:-1,i+=k)for(int c=65,d=1;c>64;d=d>-1&c<65+i?1:-1,System.out.print((char)c+((c+=d)<65?"\n":"")));
Brainfuck, 79 Bytes
Formatiert:
Probieren Sie es online aus
quelle
Sesos , 27 Bytes
Probieren Sie es online! Überprüfen Sie das Debuggen , um den generierten SBIN-Code anzuzeigen.
Sesos Montage
Die obige Binärdatei wurde durch Zusammenstellen des folgenden SASM-Codes generiert.
quelle
/// 208 Bytes
Natürlich nicht gewinnen, aber hier ist es, vor Martin Ender ...
quelle