Schreiben Sie ein Programm, das eine Ausgabe wie folgt erzeugt:
- Es werden mindestens drei unterschiedliche Zeichen angezeigt.
- Die Anzahl der Vorkommen jedes Zeichens ist ein Vielfaches von 3.
Zum Beispiel A TEA AT TEE
ist eine gültige Ausgabe da jeder der 4 verschiedenen Zeichen, A
, E
, T
und (space)
, 3 - mal auftritt.
Natürlich muss eine Herausforderung in Bezug auf die Nummer 3 eine dritte Anforderung haben. Damit:
- 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 Code-Golf . Kürzester Code in Bytes gewinnt.
code-golf
restricted-source
darrylyeo
quelle
quelle
123123123
die funktionieren werden, wie derzeit geschrieben.)abcabcabc
will ist, kann ein Programm zB mit einer nachgestellten Newline ausgeben?Antworten:
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
Dies druckt:
(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.Am Ende der Ausführung wird der Inhalt des Stapels (
3 3 3
) gedruckt.Dies druckt:
(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:
(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
Alternative 24-Byte-Brain-Flak-Lösungen
Probieren Sie es online!
Probieren Sie es online!
Probieren Sie es online!
quelle
Gelee , 9 Bytes
Ein vollständiges Programm, das 700227072 druckt , das 888 Würfel hat.
TryItOnline!
Wie?
quelle
888^3
ist700227072
? Das ist sehr clever, vielleicht können andere Sprachen diesen Trick anwenden.Polyglot von rein wörtlichen Antworten, 9 Bytes
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:
3
druckt die Daten, der Rest des Programms ist nutzlose Stapelverwaltung)2\n2\n2\n1\n1\n1\n3\n3\n3\n
)Die letzte Zeile ignorierend, ist dies in einigen weiteren Sprachen gültig:
Die meisten Links führen zu Try It Online!
quelle
2\n2\n2\n1\n1\n1\n3\n3\n3\n
in Actually gedruckt , was vollkommen gültig ist. Sollte das der Post hinzugefügt werden?echo '333111222';
(in PHP), aber es funktioniert.C #,
114111118102 BytesWenn es uns nicht wichtig ist, richtige Wörter zu verwenden: (102 Bytes)
Wenn es uns um richtige Wörter geht: (120 Bytes)
Meine ursprüngliche Übermittlung - Groß- und Kleinschreibung wird nicht berücksichtigt: (113 Byte)
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!
quelle
V
aus Ihrem Kommentar entfernen und hinzufügenvyt
, da erV
nur dort vorhanden ist, während erv
zweimal vorhanden ist (Tippfehler, denke ich),y
auch zweimal vorhanden ist undt
fünfmal vorhanden ist. Sehen Sie hier . Trotzdem super Arbeit!JavaScript,
3633 BytesWarnungen
333111222
. Dies funktioniert, weil|
beide Operanden in 32-Bit-Ganzzahlen konvertiert werden und jeder Wert, der nicht wie eine Ganzzahl aussieht (z. B. die Funktionalert
), in konvertiert wird0
.0|0
ist0
, so gibt der||
Operator seinen rechten Operanden zurück, oder333111222
Noch ein paar interessante Versionen:
Ausgänge
(trelalert)\"(trelalert)\"(trelalert)\"
.Eine Lösung mit
.repeat
der gleichen Länge wäre dank der gemeinsamenaert
:welche Ausgänge
(trpp.all)\"(trpp.all)\"(trpp.all)\"
.Profitieren Sie von den zusätzlichen Backslashes, um sie loszuwerden
l
und sie funktionierenp
fast :Dieser gibt aus
(trax.cc)"(trax.cc)"(trax.cc)"(trax.cc)"(trax.cc)"(trax.cc)"
.quelle
CJam , 9 Bytes
Ausgänge
012345678901234567890123456789
Probieren Sie es online!
Erläuterung
quelle
99,99,99,
, warum denn nicht?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!
quelle
Python 2,
3630 BytesDa ein abschließender Zeilenumbruch nicht zulässig ist, ist dieser wahrscheinlich so kurz wie möglich:
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 :
Druckt 54 jedes Zeichens in
print
.Probieren Sie es online aus
Gleiche Länge, kürzere Ausgabe:
Ausgänge
printprint*3*3printprint*3*3printprint*3*3
24 Bytes:
quelle
print"""printprint*3*3"""*3
für eine viel kürzere Ausgabe tunprint 123;print 123;print 123;
für die naive Lösung tun ?print~9;print~9;print~9;
Perl 6 , 15 Bytes
Druckt sechs verschiedene Zeichen, jeweils dreimal:
Probieren Sie es online!
Wie es funktioniert
$_
.$_
Beginnt als Typ Objekt vom TypAny
, dassay
als druckt(Any)
.quelle
C 66 Bytes
Ausgabe
Alte Version 72 Bytes
quelle
JavaScript (ES6), 30 Byte
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.quelle
(ES6)
den Titel hinzufügen .PKod , 9 Bytes
Ausgaben: 111222333
Erläuterung:
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
quelle
Ruby , 12 Bytes
Ausgänge
Probieren Sie es online!
Um das zweite "ermutigte" Kriterium zu erfüllen, benötige ich 15 Zeichen:
produziert
Probieren Sie es auch online aus!
quelle
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.
quelle
{}
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.Hexagony , 9 Bytes
Probieren Sie es online!
Ausdrucken
120120120
.x
kann ersetzt werden durchf-m
(102-109)Erläuterung
Das
xx@@
ist nur ein Füllstoff, um die Regeln einzuhalten. Der Hauptfluss wird im Speicherx
gespeichert (mit ASCII-Wert 120) und dann dreimal als Zahl gedruckt.quelle
C 111 Bytes
(Beachten Sie, dass die Byteanzahl auch die drei gleichen Zahlen ist. Wow. Sie können nicht mehr Meta als das tun.)
Drucke:
quelle
PHP , 33 Bytes
Ich entschied mich für etwas Interessanteres als das 9-Byte-Programm ohne PHP-Tag.
Ausgänge
<?;<?=;'"<?;<?=;'"<?;<?=;'"
Probieren Sie es online!
quelle
99 , 15 Bytes
Das sind neun Neunen, drei Leerzeichen und drei Zeilenvorschübe . Die Ausgabe ist -1110-1110-1110 .
Probieren Sie es online!
Wie?
Die beiden Leerzeichen werden als eins behandelt, dieses dritte Leerzeichen kann auch in einer Zeile nachgestellt werden.
quelle
Bash + Coreutils,
159 BytesProbieren Sie es online!
Beispielausgabe:
(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:
Probieren Sie diese zweite Version online aus!
Ausgabe:
(Keine Zeilenumbrüche im Programm, 12 Zeilenumbrüche in der Ausgabe.)
Erklärung des DC-Programms in dieser Antwort:
quelle
LOLCODE ,
273240 (360286) BytesBeachten 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 ersten
VISIBLE
Mit einer Zuweisung (immer noch nutzlos, aber 12 statt 11 neue Zeilen erforderlich) konnte ich 33 Bytes abschneiden.Ausgabe (60 Byte):
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):
Probieren Sie es online aus. Ausgabe (222 Bytes mit nachfolgender neuer Zeile):
Leider kann ich nicht so gut mit Anagrammen umgehen wie ich dachte: ')
quelle
SCHALE
zum scherzen :) ( 9 Bytes )
oder ernster ( 24 Bytes )
Ergebnis:
quelle
PHP, 24 Bytes
quelle
<?
zusammen mit der unmittelbarenecho
Anweisung,<?=
um 123 dreimal auszugeben.<= ?>
Zeichen nicht mehrmals vorkommen.Stapel,
3621 BytesAusgänge
Bearbeiten: 15 Bytes dank @ P.Ktinos gespeichert.
quelle
Japt, 9 Bytes
Druckt
undefinedundefinedundefined
. Online testen!Erläuterung
Dieser Code wird in das folgende JavaScript übersetzt:
O.o
ist eine Funktion, die etwas ohne abschließende Zeilenumbrüche ausgibt. Wenn kein Argument angegeben wird, wird es ausgegebenundefined
, was als Fehler angesehen werden kann, aber hier nützlich ist. Es wird auch zurückgegebenundefined
, sodass alle drei Aufrufe gedruckt werdenundefined
.Ich bin sicher, es gibt viele andere Möglichkeiten, dies zu tun ...
quelle
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.
Alternative Versionen:
[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:
quelle
žv
,žw
oderžx
gelten allerdings , da sie jeweils nur zwei verschiedene Ziffern.at least 3
, war nur PI zuerst, als ich es schrieb. Was meinst du rückwärts Charakterklassen?JJJ
mit???
though.Cubix , 12 Bytes
Eine etwas langweilige Antwort. Gibt drei
10
Sekunden gefolgt von Zeilenumbrüchen ausProbieren Sie es online! Karten zum Würfel
N
Drückt 10 auf den StackOo
x3. Outputs 10 und Newline halten@
das Programm anDie Initiale
N@N@
wird nicht getroffen.quelle
N@N@NOoOoOo@
und enthält keine Leerzeichen.Pepe , 24 Bytes
Probieren Sie es online!
Das Programm enthält 6 Rs, 6 Es und 12 Es.
Erläuterung:
Ausgabe:
quelle
V , 9 Bytes
Probieren Sie es online!
Ausgänge
12i
24 mal:Vim, 12 Bytes
Gibt das Gleiche aus wie die V-Antwort
quelle
gestapelt , 24 Bytes
Probieren Sie es online! Gibt
54
jedes vonp
u
und aust
.quelle
Befunge 93 , 9 Bytes
TIO
Prints
0 0 0
(Trailing Space, gefolgt von 3 Null Bytes)Da Befunges Stapel mit
0
s 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..
prints0
(Leerzeichen am Ende),,
druckt ein Null-Byte und@
beendet das Programmquelle