Drei-Drei-Drei!


66

Schreiben Sie ein Programm, das eine Ausgabe wie folgt erzeugt:

  1. Es werden mindestens drei unterschiedliche Zeichen angezeigt.
  2. Die Anzahl der Vorkommen jedes Zeichens ist ein Vielfaches von 3.

Zum Beispiel A TEA AT TEEist eine gültige Ausgabe da jeder der 4 verschiedenen Zeichen, A, E, Tund (space), 3 - mal auftritt.

Natürlich muss eine Herausforderung in Bezug auf die Nummer 3 eine dritte Anforderung haben. Damit:

  1. Das Programm selbst muss auch die ersten beiden Anforderungen erfüllen. (Dies bedeutet, dass Ihr Programm mindestens 9 Byte lang ist.)

Sie müssen ein vollständiges Programm schreiben, keine Funktion. Stellen Sie sicher, dass die Ausgabe Ihres Programms in Ihrer Antwort angezeigt wird.

Um die Dinge interessant zu halten, sind Sie außerdem hoch ermutigt:

  • keine Kommentare verwenden, um die Anforderung 3 zu erfüllen, wenn Sie helfen können
  • um eine Ausgabe zu erzeugen, die nicht nur eine dreimal wiederholte Zeichenfolge ist
  • um die Ausgabe vom Programm selbst zu unterscheiden (für Sprachen, die automatisch den Inhalt ihres eigenen Programms ausgeben können, können Sie einen Beitrag zu diesem Community-Wiki leisten ).

Das ist . Kürzester Code in Bytes gewinnt.


5
Zählen Zeilenumbrüche (als eigenständiges Zeichen)?
Zeppelin

4
Sind Programme erlaubt, die ausschließlich aus Literalen bestehen? (Es gibt eine Menge Sprachen, 123123123die funktionieren werden, wie derzeit geschrieben.)

2
@zeppelin Ja, Zeilenumbrüche gelten als eindeutiges Zeichen.
Darrylyeo

2
Was ich fragen abcabcabcwill ist, kann ein Programm zB mit einer nachgestellten Newline ausgeben?
ETHproductions

1
@ETHproductions Ah, ich verstehe. Nein, das ist nicht erlaubt. Drei nachgestellte Zeilenumbrüche wären jedoch akzeptabel.
darrylyeo

Antworten:


59

Brain-Flak , Flakcats , Brain-Flueue , Brain-Flak Classic , Miniflak und Fλak 18 Bytes

Bewährt optimal!

((([()][()][()])))

Probieren Sie es online!

Erläuterung

Brain-Flak, Brain-Flueue, Miniflak und Fλak

   ([()][()][()]) Push -3
  (              ) Copy
 (                ) Copy

Dies druckt:

-3
-3
-3

(Es gibt eine nachgestellte Zeile)

Brain-Flak Classic

Brain-Flak Classic ist die Originalversion von Brain-Flak und weist einige wichtige Unterschiede zum modernen Brain-Flak auf. In BFC wird [...]der Inhalt gedruckt und nicht negiert.

   [()] Print 1
       [()] Print 1
           [()] Print 1
  (            ) Push 3
 (              ) Push 3
(                ) Push 3

Am Ende der Ausführung wird der Inhalt des Stapels ( 3 3 3) gedruckt.

Dies druckt:

1
1
1
3
3
3

(Es gibt eine nachgestellte Zeile)

Flakcats

Flakcats ist ganz anders als die anderen 4 Flaks und ich bin überrascht, dass dies bei Flakcats funktioniert. Die drei Operatoren hier sind fast dieselben wie die, die Brain-Flak verwendet.

Der Hauptunterschied in diesem speziellen Programm zwischen Flakcats ist der (...)Operator, der in Flakcats ([{}]...)in Brain-Flak äquivalent ist . Dies macht jedoch keinen Unterschied für uns, da es Nullen aufnimmt und somit ähnlich funktioniert wie Brain-Flak.

Hier ist das in Brian-Flak kompilierte Programm:

([{}]([{}]([{}][()][()][()])))

Dies druckt:

-3
-3
-3

(Es gibt eine nachgestellte Zeile)

Optimalitätsnachweis in Brain-Flak und Miniflak

Dies ist kein formeller Beweis, sondern ein informeller Beweis, der erweitert werden müsste, um strenger zu werden

Aufgrund der Einschränkungen, dass Brain-Flak-Programme ein Balanced-String sein müssen und die Programmlänge ein Vielfaches von 3 sein muss, muss jede gültige Einreichung ein Vielfaches von 6 sein. Dies bedeutet, dass jede Lösung, die kleiner als 18 ist, die Länge 12 haben muss.

Aufgrund der Ausgabe in Zeilenumbrüchen muss die endgültige Höhe des Stapels ein Vielfaches von drei sein, da sonst die Ausgabeeinschränkungen verletzt werden.

Jede gültige Einreichung der Länge 12 muss zwei Arten von Klammern enthalten (weniger würde die Beschränkung der Anzahl unterschiedlicher Zeichen aufheben und mehr würde mehr als 12 Zeichen bedeuten). Da das Programm eine Ausgabe erzeugt, muss es einen Push haben.

Dies lässt uns unser anderes Set von Zahnspangen auswählen. Die Optionen sind:

<...>/<>

Dies schlägt fehl, weil wir "Wert" erzeugen müssen, um eine andere Zahl als Null zu erzeugen. Wir müssen a aufgeben (), um eine Eins zu erzeugen, die es unmöglich macht, mehr als zweimal zu drücken.


[...]/[]

Dies schlägt aus demselben Grund fehl, aus dem auch das letzte fehlgeschlagen ist. Die eckigen Klammern sind wirklich schlecht im Wert. Die []Monade kann einen Wert schaffen, aber wir müssen zuerst die Zahlen drücken und dann haben wir nicht mehr genug Parens, um dreimal zu drücken.


{...}/{}

Diese ist vielversprechend, wir könnten eine Schleife erstellen und eine verwenden (), um mehrere Male zu pushen, aber leider ist dies nicht möglich.

Damit die Schleife endet, muss sich irgendwann eine Null auf dem Stapel befinden, und damit wir die richtige Ausgabe haben, muss sich am Ende des Programms etwas anderes als Null auf dem Stapel befinden. Da wir weder über []noch <>am Ende der Schleife die Null muss eine implizite Null von der Unterseite des Stapels sein. Dies bedeutet, dass die Schleife dem Stapel keine neuen Zahlen hinzufügen kann, was ihn unbrauchbar macht.


Da keine der geschweiften Klammern ein Programm der Länge 12 erstellen kann, kann keines existieren.

Da Miniflak eine Teilmenge von Brain-Flak ist, wäre jedes kürzere Miniflak-Programm auch ein kürzeres Brain-Flak-Programm und existiert daher nicht.

Optimalitätsnachweis in Brain-Flueue

Brain-Flueue ist eine Scherzsprache, die auf Brain-Flak basiert. Die beiden sind sich so ähnlich, dass ihre Interpreten überall bis auf zwei Zeilen identisch sind. Der Unterschied zwischen den beiden besteht darin, dass Brain-Flueue, wie der Name schon sagt, seine Daten in Warteschlangen speichert, während Brain-Flak seine Daten in Stapeln speichert.

Zu Beginn haben wir die gleichen Einschränkungen hinsichtlich der Programmgröße, die von Brain-Flak erstellt wurde. Daher suchen wir nach einem Programm der Größe 12. Außerdem benötigen wir ein (...), um eine Ausgabe und ein weiteres Paar zu erstellen. Die <>und []-Paare funktionieren nicht in Brain-Flueue aus genau demselben Grund, aus dem sie nicht in Brain-Flak funktionieren.

Jetzt wissen wir, dass unser Programm aus den Zeichen bestehen muss ((())){{{}}}.

Mit den gleichen Methoden wie im vorherigen Beweis können wir zeigen, dass das endgültige Programm eine Schleife enthalten muss.

Hier unterscheiden sich die Beweise, da Brain-Flueue über Warteschlangen und nicht über Stapel hinweg arbeitet und das Programm eine Schleife mit Werten in der Warteschlange verlassen kann.

Um die Schleife zu verlassen, benötigen wir eine Null in der Warteschlange (oder eine leere Warteschlange, aber wenn die Warteschlange leer ist, haben wir das gleiche Problem wie bei Brain-Flak), was bedeutet, dass wir unser Programm mit öffnen müssen ({}), um die zu erstellen Null. Wir benötigen einen Push innerhalb der Schleife, um die erforderliche Anzahl von Elementen in die Warteschlange zu verschieben. Wir müssen auch eine Zahl ungleich Null vor die Schleife schieben, damit wir überhaupt in die Schleife eintreten können. Dies wird uns das absolute Minimum kosten (()). Wir haben jetzt mehr Parens verwendet als wir.

Somit gibt es kein Brain-Flueue-Programm, um die 12-Byte-Aufgabe zu erledigen, und außerdem ist unser Programm dort optimal.

Optimale Lösung für Flakcats und Brain-Flak Classic

Die folgende Lösung ist optimal für Flakcats und Brain-Flak Classic.

((([][][])))

Erläuterung

    [][][] -3
 (((      ))) push 3 times

Alternative 24-Byte-Brain-Flak-Lösungen

(<((<((<(())>)())>)())>)

Probieren Sie es online!

((<((<((<>)())>)())>)())

Probieren Sie es online!

((((((()()()){}){}){})))

Probieren Sie es online!


2
+1 für den Beweis auch.
HyperNeutrino

3
+1 auch für die Polyglotte, insb. Nicht alle Ausgänge sind gleich.
Shieru Asakoto

27

Gelee , 9 Bytes

**‘‘‘888*

Ein vollständiges Programm, das 700227072 druckt , das 888 Würfel hat.

TryItOnline!

Wie?

**‘‘‘888* - Main link: no arguments
          - implicit L=R=0
*         - power       A = L ^ R = 1
  ‘       - increment   B = L + 1 = 1
 *        - power       C = A ^ B = 1
   ‘      - increment   D = C + 1 = 2
    ‘     - increment   E = D + 1 = 3
     888  - literal     F = 888
        * - power           F ^ E = 700227072

5
888^3ist 700227072? Das ist sehr clever, vielleicht können andere Sprachen diesen Trick anwenden.
ETHproductions

23

Polyglot von rein wörtlichen Antworten, 9 Bytes

333111222

Dies ist ein Community-Wiki-Beitrag zum Sammeln von Antworten, bei denen es sich nur um ein Wort handelt, das die betreffende Sprache automatisch ausgibt. Da es sich um ein Community-Wiki handelt, können Sie es jederzeit bearbeiten, um weitere Sprachen hinzuzufügen, in denen es funktioniert.

Dieses Programm funktioniert in:

  • PHP
  • HTML (wohl keine Sprache)
  • Gelee (und M )
  • 7 (Interessanter, weil das Programm sowohl als Daten als auch als Code interpretiert wird ; der erste 3druckt die Daten, der Rest des Programms ist nutzlose Stapelverwaltung)
  • CJam
  • Japt
  • Karotte
  • R (die R-Anzeige gibt auch [1] als Metadaten aus)
  • RProgN
  • Eigentlich (obwohl es tatsächlich druckt 2\n2\n2\n1\n1\n1\n3\n3\n3\n)
  • ///
  • Nudel
  • TI-Basic
  • SimpleTemplate
  • ReRegex
  • Schale
  • Ressource (obwohl dies die Zeichenfolge umgekehrt ausgibt)

Die letzte Zeile ignorierend, ist dies in einigen weiteren Sprachen gültig:

Die meisten Links führen zu Try It Online!


3
Dies wird 2\n2\n2\n1\n1\n1\n3\n3\n3\nin Actually gedruckt , was vollkommen gültig ist. Sollte das der Post hinzugefügt werden?
ETHproductions

@ETHproductions Ich denke eigentlich Eigentlich sollte der Beitrag hinzugefügt werden, da es den gleichen Code verwendet;)
Kritixi Lithos

Als derjenige, der Actually gemacht hat, bin ich damit einverstanden, dass es in diesen Beitrag gehört. Die Zeilenumbrüche machen eigentlich keinen Unterschied.
Mego

Dies funktioniert auch für die Sprache, die ich geschrieben habe: SimpleTemplate . Es kompiliert es zu einem Over-Kill echo '333111222';(in PHP), aber es funktioniert.
Ismael Miguel

4
@IsmaelMiguel: Dies ist eine Community-Wiki- Antwort. Es wurde nur zu 29% von ETHproductions geschrieben (und tatsächlich war ich es, der die Antwort ursprünglich erstellt hat, wie Sie aus dem Versionsverlauf ersehen können. ETHproductions enthält in der aktuellen Version der Antwort mehr Text als jeder andere, aber definitiv nicht. ' t verantwortlich für die ganze Sache). Ihr gesamter Zweck besteht darin, von einer großen Anzahl von Benutzern in Zusammenarbeit bearbeitet zu werden. (Dies unterscheidet sich von normalen Antworten, die nicht zum Bearbeiten vorgesehen sind.)

21

C #, 114 111 118 102 Bytes

Wenn es uns nicht wichtig ist, richtige Wörter zu verwenden: (102 Bytes)

class CCcddiilMMmmnrrSSsttvvWWyy{static void Main(){{System.Console.Write(("A TEA AT TEE"));;;}}}///".

Wenn es uns um richtige Wörter geht: (120 Bytes)

class erebeWyvern{static void Main(){int embedWildbanana;{System.Console.Write(("A TEA AT TEE"));;}}}///CC Myst mvcSMS".

Meine ursprüngliche Übermittlung - Groß- und Kleinschreibung wird nicht berücksichtigt: (113 Byte)

class EreBeWyvern{static void Main(){int embedwildbanana; {System.Console.Write(("A TEA AT TEE"));;}}}/// vyt".

Ich weiß, dass der Kommentar nicht wirklich im Geiste des CG ist, aber es ist alles, was ich in einer begrenzten Zeit einfallen lassen könnte. Ich werde sehen, ob ich es im Laufe des Tages verbessern kann. Sicherlich muss ich mindestens ein paar Bonuspunkte bekommen, damit ich abenteuerlustig bin.

Edit: Danke an roberto06 für das Auffinden der fehlenden Buchstaben!


1
Ich bin ein C ++ - Typ, nicht C #, aber können Sie den Write-Aufruf nicht einfach in {()} einbinden, ohne ihn zu beeinflussen?
Sparr

1
Möglicherweise können Sie das Argument in Klammern setzen und nicht den gesamten Aufruf.

7
Brownie-Punkte für die wilde Banane.
darrylyeo

6
Nett! Ich mag die Variablennamen. +1
MildlyMilquetoast

1
Sie sollten Vaus Ihrem Kommentar entfernen und hinzufügen vyt, da er Vnur dort vorhanden ist, während er vzweimal vorhanden ist (Tippfehler, denke ich), yauch zweimal vorhanden ist und tfünfmal vorhanden ist. Sehen Sie hier . Trotzdem super Arbeit!
roberto06

18

JavaScript, 36 33 Bytes

alert(((alert|alert||333111222)))

Warnungen 333111222. Dies funktioniert, weil |beide Operanden in 32-Bit-Ganzzahlen konvertiert werden und jeder Wert, der nicht wie eine Ganzzahl aussieht (z. B. die Funktion alert), in konvertiert wird0 . 0|0ist 0, so gibt der ||Operator seinen rechten Operanden zurück, oder333111222

Noch ein paar interessante Versionen:

(a="(trelalert)\\\"")+alert(a+=a+=a)

Ausgänge (trelalert)\"(trelalert)\"(trelalert)\".

Eine Lösung mit .repeatder gleichen Länge wäre dank der gemeinsamen aert:

alert("(trpp.all)\\\"".repeat(3.33))

welche Ausgänge (trpp.all)\"(trpp.all)\"(trpp.all)\".

Profitieren Sie von den zusätzlichen Backslashes, um sie loszuwerden lund sie funktionieren p fast :

a\x6cert("(trax.cc)\"".re\x70eat(6.00677))

Dieser gibt aus (trax.cc)"(trax.cc)"(trax.cc)"(trax.cc)"(trax.cc)"(trax.cc)".


1
Netter Missbrauch von Dezimalstellen!
darrylyeo

2
@darrylyeo Heh, danke. Ich hätte die leicht in die Schnur stecken können, aber das wäre nicht so lustig ;-)
ETHproductions

Ich dachte, ich würde dich wissen lassen, dass du von einer ES6-Antwort gekrönt wurdest .
darrylyeo

14

CJam , 9 Bytes

10,10,10,

Ausgänge 012345678901234567890123456789

Probieren Sie es online!

Erläuterung

10,       The range from 0 to 9
   10,    The range from 0 to 9
      10, The range from 0 to 9

funktioniert nicht 3,3,3, für 7 Bytes?
Chim

Ah! Ja, die dritte Voraussetzung :)
chim

Argh, eine verpasste Gelegenheit zu nutzen 99,99,99,, warum denn nicht?
Workoverflow

@workoverflow Weil das mit der dritten Anforderung nicht funktioniert. Das Programm muss drei verschiedene Zeichen enthalten.
DLosc

@ DLosc Touche, das habe ich vergessen!
Workoverflow

11

Brainfuck , 12 Bytes

++[+...][][]

Niemand sagte, die Ausgabe müsse kurz sein. Dies gibt 3 Kopien jedes ASCII-Zeichens mit Ausnahme der ersten 2 aus.

Sie können beweisen, dass dies so kurz wie möglich ist. Sie müssen ausgeben, daher benötigen Sie 3 '.' Es müssen verschiedene Ausgänge vorhanden sein, daher benötigen Sie 3 [+ -], jetzt haben wir bis zu 6 Zeichen. 9 Zeichen müssen gedruckt werden, was bedeutet, dass entweder 6 weitere 'hinzugefügt werden.' Oder fügen Sie eine Schleife hinzu, die weitere 6 Zeichen hinzufügt.

Probieren Sie es online!


10

Python 2, 36 30 Bytes

Da ein abschließender Zeilenumbruch nicht zulässig ist, ist dieser wahrscheinlich so kurz wie möglich:

print"\\\""*3;print;print;3**3

Probieren Sie es online aus

Es \"wird dreimal ausgegeben, gefolgt von drei Zeilenumbrüchen.


Die folgenden Programme zählen die nachgestellte Zeile nicht, daher sind sie nicht gültig.

27 Bytes :

print"""printprint"""*3*3*3

Druckt 54 jedes Zeichens in print.

Probieren Sie es online aus


Gleiche Länge, kürzere Ausgabe:

print"""printprint*3*3"""*3

Ausgänge printprint*3*3printprint*3*3printprint*3*3


24 Bytes:

print~9;print~9;print~9;

Sie könnten print"""printprint*3*3"""*3für eine viel kürzere Ausgabe tun
;-)

Könnten Sie nicht print 123;print 123;print 123;für die naive Lösung tun ?
ETHproductions

OP hat klargestellt, dass der einfache Zeilenumbruch nicht erlaubt ist (siehe Kommentare).
FlipTack

1
@ETHproductions Sicher. Es kommt darauf an, wie naiv wir sind.
mbomb007

3
Noch naiver:print~9;print~9;print~9;
Sp3000


9

C 66 Bytes

main(i){{for(i=0;i<3;i++){printf("""poop+fart=<3<3at0m=m0n""");}}}

Ausgabe

poop+fart=<3<3at0m=m0npoop+fart=<3<3at0m=m0npoop+fart=<3<3at0m=m0n    

Alte Version 72 Bytes

main(i){for(i=0;i<3;i++){printf("poop+fart=<3<3 at {\"0m=m0\"}" "\n");}}

2
Ihr Code ist nicht nur viel kleiner als das, was ich getan habe, sondern er enthält auch echte Patzer und Fürze. Bravo.
Dim

9

JavaScript (ES6), 30 Byte

+alert((({alert}+{alert}+{})))

Ausgänge [object Object][object Object][object Object].

Erstellt drei Objekte:

  • Die ersten beiden sind von der Form { "alert" : alert }mit ES6-Notation{alert}

  • Das dritte ist ein einfaches leeres Objekt

Dann werden sie miteinander +verkettet, und alle drei haben einen identischen Ausdruck wie eine Zeichenfolge [object Object].

Der Zeilenumbruch +ist nutzlos, nur vorhanden, um die Anzahl der +Zeichen auszufüllen , aber für die Ausgabe des Programms ungefährlich.


Weise, die andere JS-Antwort zu schlagen!
Darrylyeo

Sie sollten auch (ES6)den Titel hinzufügen .
Darrylyeo

@darrylyeo Danke! :) Und ich fügte hinzu, ES6
Apsillers

8

PKod , 9 Bytes

sonsonson

Ausgaben: 111222333


Erläuterung:

Background: PKod has only one variable that you mess with, with the code
This variable starts with default value of 0

s  -  Add next char to the variable, and jump over it. 
n  -  Print numeric value of variable

o hat den ASCII-Zeichencode "111" als Dezimalzahl. S addiert also 111 zur Variablen und gibt dann die Zahl aus. Erster "Sohn" macht es 111 und druckt 111. Als nächstes macht es 222 und druckt 222, zuletzt macht es 333 und druckt 333



7

Mikroskript II, 9 Bytes

{{{~~~}}}

Erläuterung: Erstellt einen Codeblock, ruft ihn jedoch nicht auf. Bei Beendigung der Ausführung wird implizit der Inhalt des Hauptregisters (dh dieses Codeblocks) gedruckt.


Hast du etwas Ähnliches in der Quine Challenge gepostet?
wizzwizz4

@ wizzwizz4 {}wäre technisch gesehen eine Quine, aber ich denke nicht, dass es unserer Definition einer "richtigen Quine" entspricht. Das Programm "q"q(das ich der Quine Challenge unterworfen habe) funktioniert jedoch.
SuperJedi224

@wizzwizz4: Das wäre kein richtiges Quine, da jeder Charakter für sich steht.

7

Hexagony , 9 Bytes

x!!xx@@!@

Probieren Sie es online!

Ausdrucken 120120120. xkann ersetzt werden durch f-m(102-109)

Erläuterung

  x ! ! 
 x x @ @
! @ . . .

Das xx@@ ist nur ein Füllstoff, um die Regeln einzuhalten. Der Hauptfluss wird im Speicher xgespeichert (mit ASCII-Wert 120) und dann dreimal als Zahl gedruckt.


7

C 111 Bytes

(Beachten Sie, dass die Byteanzahl auch die drei gleichen Zahlen ist. Wow. Sie können nicht mehr Meta als das tun.)

#include<stdio.h>
#define b "<acdhlmoprsu>."
#define t "en"
main(){{{printf(("<acdhlmoprsu>." b b t t t));;;}}}

Drucke:

<acdhlmoprsu>.<acdhlmoprsu>.<acdhlmoprsu>.enenen


5

99 , 15 Bytes

9 9  9999
9
9
9

Das sind neun Neunen, drei Leerzeichen und drei Zeilenvorschübe . Die Ausgabe ist -1110-1110-1110 .

Probieren Sie es online!

Wie?

9 9  9999 - V(9)=V(9)-V(9999)=1-1111=-1110
9         - print V(9)
9         - print V(9)
9         - print V(9)

Die beiden Leerzeichen werden als eins behandelt, dieses dritte Leerzeichen kann auch in einer Zeile nachgestellt werden.


5

Bash + Coreutils, 15 9 Bytes

id;id;id;

Probieren Sie es online!

Beispielausgabe:

uid=1000 gid=1000 groups=1000 context=system_u:unconfined_r:sandbox_t:s0-s0:c19,c100,c173,c211
uid=1000 gid=1000 groups=1000 context=system_u:unconfined_r:sandbox_t:s0-s0:c19,c100,c173,c211
uid=1000 gid=1000 groups=1000 context=system_u:unconfined_r:sandbox_t:s0-s0:c19,c100,c173,c211

(Wenn Sie dies ausprobieren, wird Ihre UID, GID usw. dreimal gedruckt.)


Wenn Sie vermeiden möchten, dass dieselbe Zeichenfolge dreimal wiederholt wird (und im Gegensatz zu meiner ersten Antwort die gleiche Ausgabe für alle Benutzer haben), ist das Beste, was ich für bash + Unix-Dienstprogramme gefunden habe, 15 Byte lang:

dc<<<cczdzfzfdf

Probieren Sie diese zweite Version online aus!

Ausgabe:

2
0
0
3
2
0
0
3
3
2
0
0

(Keine Zeilenumbrüche im Programm, 12 Zeilenumbrüche in der Ausgabe.)

Erklärung des DC-Programms in dieser Antwort:

c Clears the stack.
Stack: (empty)

c Clears the stack.
Stack: (empty)

z Pushes the current size of the stack (0) onto the stack.
Stack: (top) 0

d Duplicates the item at the top of the stack.
Stack: (top) 0 0

z Pushes the current size of the stack (2) onto the stack.
Stack: (top) 2 0 0

f Prints the stack, top to bottom, with a newline after each item printed (this prints the first 3 lines of the output, 2 / 0 / 0 /)

z Pushes the current size of the stack (3) onto the stack.
Stack: (top) 3 2 0 0

f Prints the stack, top to bottom, with a newline after each item printed (this prints the next 4 lines of the output, 3 / 2 / 0 / 0 /)

d Duplicates the item at the top of the stack.
Stack: (top) 3 3 2 0 0

f Prints the stack, top to bottom, with a newline after each item printed (this prints the final 5 lines of the output, 3 / 3 / 2 / 0 / 0 /)

Wie funktioniert der zweite?
Therealfarfetchd

@therealfarfetchd Ich habe der Antwort eine Erklärung hinzugefügt.
Mitchell Spector

Verdammt, DC ist viel mächtiger als ich dachte. Gute Arbeit!
Therealfarfetchd

@therealfarfetchd Danke. Ich mag DC. Übrigens gab es ein paar Tippfehler in der Erklärung, die ich gerade behoben habe.
Mitchell Spector

5

LOLCODE , 273 240 ( 360 286) Bytes

HAI 1.2
I HAS A U
IM IN YR M UPPIN YR Q TIL BOTH SAEM Q 1
VISIBLE "Y SUB.EK"
IM OUTTA YR M
IM IN YR T UPPIN YR Q TIL BOTH SAEM Q 2
VISIBLE "Y SUB.EK"
IM OUTTA YR T
IM IN YR X UPPIN YR Q TIL BOTH SAEM Q 12
VISIBLE "IM"
IM OUTTA YR X
KTHXBYE

Beachten Sie die nachstehende neue Zeile und versuchen Sie es online . Die zweite Zeile war mehr oder weniger willkürlich und kann möglicherweise durch einen kürzeren Befehl ersetzt werden, aber ich habe gerade LOLCODE für dieses Rätsel gelernt . Da die Versionsnummer in der ersten Zeile erforderlich ist, habe ich die Nummern verwendet, um Schleifen der Länge 1, 2 und 0, Mod. 3, hinzuzufügen, um sicherzustellen, dass die richtige Anzahl von Zeichen gedruckt wird. Daraus habe ich einfach jedes Zeichen gezählt (mit diesem Tool ). Wenn es 3 Mal 0 mod erschien, war keine Aktion erforderlich. Wenn es dreimal 1 Mod auftauchte, wurde es zur 1- und 2-Schleife hinzugefügt, sodass es dreimal in der Ausgabe auftauchte. Wenn es 2 Mod 3-mal auftrat, wurde der Charakter der 12-Loop hinzugefügt.EDIT: Durch Ersetzen der erstenVISIBLE Mit einer Zuweisung (immer noch nutzlos, aber 12 statt 11 neue Zeilen erforderlich) konnte ich 33 Bytes abschneiden.

Ausgabe (60 Byte):

Y SUB.EK
Y SUB.EK
Y SUB.EK
IM
IM
IM
IM
IM
IM
IM
IM
IM
IM
IM
IM

Beachten Sie die nachfolgende neue Zeile.

Das Schöne an dieser Lösung im Vergleich zu den anderen Antworten ist, dass die Ausgabe leicht manipuliert werden kann, um etwas aussagekräftigen Text auszugeben. Beispiel (286 Bytes mit nachfolgender neuer Zeile):

HAI 1.2
I HAS A U
IM IN YR MW UPPIN YR Q TIL BOTH SAEM Q 1
VISIBLE "YO SUB. EEEEK!"
IM OUTTA YR MW
IM IN YR STA UPPIN YR Q TIL BOTH SAEM Q 2
VISIBLE "YO SUB. EEEEK!"
IM OUTTA YR STA
IM IN YR XURG UPPIN YR Q TIL BOTH SAEM Q 12
VISIBLE "IMO U R SWAG! "
IM OUTTA YR XURG
KTHXBYE

Probieren Sie es online aus. Ausgabe (222 Bytes mit nachfolgender neuer Zeile):

YO SUB. EEEEK!
YO SUB. EEEEK!
YO SUB. EEEEK!
IMO U R SWAG! 
IMO U R SWAG! 
IMO U R SWAG! 
IMO U R SWAG! 
IMO U R SWAG! 
IMO U R SWAG! 
IMO U R SWAG! 
IMO U R SWAG! 
IMO U R SWAG! 
IMO U R SWAG! 
IMO U R SWAG! 
IMO U R SWAG! 

Leider kann ich nicht so gut mit Anagrammen umgehen wie ich dachte: ')


1
Willkommen auf der Seite!
DJMcMayhem

@ DJMcMayhem Danke. Was muss ich tun, um LOLCODE so gut zu verlinken, wie ich es von anderen Posts kopiert habe? (der # [Sprache] -Stil) Der Link zum Quellcode ist in der Antwort enthalten.
SK19

Am einfachsten ist es, wenn Sie Ihr Programm in TIO gestellt haben, das Link-Menü zu verwenden und die Auswahl für "Code Golf Submission" auszuwählen (oder zu kopieren). Das gibt Ihnen eine Vorlage für einen neuen Beitrag. Ich habe den Teil kopiert, den Sie von dort aus vermisst zu haben schienen.
Ørjan Johansen

5

SCHALE

zum scherzen :) ( 9 Bytes )

ls;ls;ls;

oder ernster ( 24 Bytes )

sed s/./sed.g./g <<< edg

Ergebnis:

sed.g.sed.g.sed.g.

5

PHP, 24 Bytes

<?=111?><?=222?><?=333?>

1
Was gibt diese Ausgabe aus? Wie funktioniert es?
DJMcMayhem

Es verwendet den PHP-Shorttag <?zusammen mit der unmittelbaren echoAnweisung, <?=um 123 dreimal auszugeben.
Junkfoodjunkie

Die kürzere Version, die Sie gerade bearbeitet haben, ist ungültig, da die <= ?>Zeichen nicht mehrmals vorkommen.
DJMcMayhem

Ah, richtig, ich wusste, dass es einen Grund dafür gab, dass die ursprüngliche Version so war, wie sie war - ich war völlig überfordert -, ich werde sie zurückändern.
Junkfoodjunkie


4

Japt, 9 Bytes

000OoOoOo

Druckt undefinedundefinedundefined. Online testen!

Erläuterung

Dieser Code wird in das folgende JavaScript übersetzt:

000,O.o(O.o(O.o()))

O.oist eine Funktion, die etwas ohne abschließende Zeilenumbrüche ausgibt. Wenn kein Argument angegeben wird, wird es ausgegeben undefined, was als Fehler angesehen werden kann, aber hier nützlich ist. Es wird auch zurückgegeben undefined, sodass alle drei Aufrufe gedruckt werdenundefined .

Ich bin sicher, es gibt viele andere Möglichkeiten, dies zu tun ...


1
O_o Interessant :)
geisterfurz007

4

05AB1E , 9 Bytes (ich denke, man könnte sagen, das war ein Stück PI)

-0 Bytes dank Emigna / ETHProductions, die Lösung korrekter gemacht.

žqžqžq???

Alternative Versionen:

ž[g-Q]ž[g-Q]ž[g-Q]???

[g-Q] - Kann hier einen beliebigen Buchstaben aQ setzen, sofern alle übereinstimmen (siehe unten).

Probieren Sie es online!

Erklärt:

PI,PI,PI,SORT,JOIN,SORT,JOIN,SORT,JOIN.

Ergebnis:

...111111222333333333444555555555666777888999999999

Der Grund, warum es nur 9 Bytes sind, ist, dass Sie die Sortierungen nicht benötigen. Ich habe sie nur eingefügt, um sie zu veranschaulichen.

Ergebnis ohne {Code:

3.1415926535897933.1415926535897933.141592653589793


Alternative Wiedergaben:

Die folgenden Befehle können anstelle von PI verwendet werden:

ž 23  > žg       push current year
        žh       push [0-9]
        ži       push [a-zA-Z]
        žj       push [a-zA-Z0-9_]
        žk       push [z-aZ-A]
        žl       push [z-aZ-A9-0_]
        žm       push [9-0]
        žn       push [A-Za-z]
        žo       push [Z-Az-a]
        žp       push [Z-A]
        žq       push pi
        žr       push e
        žu       push ()<>[]{}
        žy       push 128
        žz       push 256
        žA       push 512
        žB       push 1024
        žC       push 2048
        žD       push 4096
        žE       push 8192
        žF       push 16384
        žG       push 32768
        žH       push 65536
        žI       push 2147483648
        žJ       push 4294967296
        žK       push [a-zA-Z0-9]
        žL       push [z-aZ-A9-0]
        žM       push aeiou
        žN       push bcdfghjklmnpqrstvwxyz
        žO       push aeiouy
        žP       push bcdfghjklmnpqrstvwxz
        žQ       push printable ASCII character set (32-128)

2
Geh raus zum Wortspiel; für den Trick aber einen bekommen :)
Geisterfurz007

Schön! Ich glaube nicht žv, žwoder žxgelten allerdings , da sie jeweils nur zwei verschiedene Ziffern.
ETHproductions

Hmm, wozu dienen die rückwärts gerichteten Zeichenklassen?
ETHproductions

@ETHproductions ahhh, vergaß at least 3, war nur PI zuerst, als ich es schrieb. Was meinst du rückwärts Charakterklassen?
Magic Octopus Urn

1
Beachten Sie, dass dies nur gültig ist, wenn Sie die implizit gedruckte Zeile nicht mitzählen. Das könnte leicht durch den Austausch fixiert werden JJJmit ???though.
Emigna

4

Cubix , 12 Bytes

Eine etwas langweilige Antwort. Gibt drei 10Sekunden gefolgt von Zeilenumbrüchen aus

N@N@NOoOoOo@

Probieren Sie es online! Karten zum Würfel

    N @
    N @
N O o O o O o @
. . . . . . . .
    . .
    . .

NDrückt 10 auf den Stack
Oox3. Outputs 10 und Newline halten
@das Programm an

Die Initiale N@N@wird nicht getroffen.


Ich zähle 34 Leerzeichen: /
SK19

@ SK19 Der Code enthält N@N@NOoOoOo@und enthält keine Leerzeichen.
MickyT

Ah, okay, ich dachte, der Würfel
müsste auch

4

Pepe , 24 Bytes

rEeEEeeEEErreEErreEEreEE

Probieren Sie es online!

Das Programm enthält 6 Rs, 6 Es und 12 Es.

Erläuterung:

rEeEEeeEEErreEErreEEreEE # full program

rEeEEeeEEE               # push '103' to the stack
          rreEErreEE     # output as int (r flag: preserve)
                    reEE # output as int

Ausgabe:

103103103

3

V , 9 Bytes

12i12i12i

Probieren Sie es online!

Ausgänge 12i24 mal:

12i12i12i12i12i12i12i12i12i12i12i12i12i12i12i12i12i12i12i12i12i12i12i12i

Vim, 12 Bytes

12i12i12i<ESC><ESC><ESC>

Gibt das Gleiche aus wie die V-Antwort



3

Befunge 93 , 9 Bytes

...,,,@@@

TIO

Prints 0 0 0(Trailing Space, gefolgt von 3 Null Bytes)

Da Befunges Stapel mit 0s aufgefüllt ist , können wir sowohl das ASCII-Zeichen mit diesem Wert als auch die ganze Zahl selbst drucken. Da Befunge nach einer Ganzzahl automatisch ein Leerzeichen ausgibt, bleiben uns drei verschiedene Zeichen übrig.

.prints 0(Leerzeichen am Ende), ,druckt ein Null-Byte und @beendet das Programm

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.