Ihre Aufgabe ist einfach. Veröffentlichen Sie ein Snippet in einer beliebigen Sprache, die bei n-maliger Wiederholung des Snippets n in der angegebenen Reihenfolge in Dezimal-, Oktal- und Hexadezimalzeichen und in Leerzeichen getrennt ausgibt. n ist eine ganze Zahl größer als Null. Es gibt keine führenden Nullen. Kürzeste Antwort gewinnt
Beispiel
Wenn das Snippet ist, ABC
ist der Testfall
ABC
1 1 1
ABCABC
2 2 2
ABCABCABCABCABCABCABCABCABC
9 11 9
ABCABCABCABCABCABCABCABCABCABCABCABC
12 14 C
ABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABC
18 22 12
1 01 0x1
? (Beinhaltet Präfixe)Antworten:
Japt, 12 Bytes
Vielen Dank an @ETHproductions für das Speichern von 2 Bytes!
Gleich wie meine Antwort.
quelle
[°TTs8 TsG]¸
Perl, 30 Bytes
Zurück zum Zeilenanfang, Zähler erhöhen und Zähler drucken überschreiben die alte Ausgabe.
quelle
JavaScript,
54 53 5147 Bytes4 Bytes dank @ user81655 gespeichert
Ich bin eigentlich ein bisschen überrascht, dass dies funktioniert.
Erläuterung
Probieren Sie es online aus
quelle
ReferenceError: Can't find variable: d
auch im losen Modus D:d=d?d+1:1
Arbeit?C ++
205179 Bytes(Keine nachgestellte neue Zeile - beim Kopieren sollten die erste Zeile der Kopie und die letzte Zeile des Originals übereinstimmen.)
Grundsätzlich funktioniert dies, indem eine Folge von statischen Variablen erstellt wird, die beim Aufbau einen globalen Variablenzähler inkrementieren. Wenn der Zähler bei der Zerstörung nicht 0 ist, wird die gesamte Ausgabe ausgeführt und der Zähler auf Null gesetzt.
Um eine Folge von Variablen ohne Namenskonflikte zu definieren, verwenden wir das Makro, das wie folgt erklärt wird:
was etwas von den Macken des String-Prozessors abhängt. Wir verwenden
z
viele Male, um Klassen / Variablen zu definieren, die nicht miteinander in Konflikt stehen, wenn sie in separate Zeilen kopiert werden. Außerdem werden die Definitionen, die nur einmal vorkommen müssen, in die erste Zeile gestellt, die in Kopien des Codes auskommentiert ist. Die#define
und#include
-Anweisungen kümmern sich nicht darum, dass sie wiederholt werden, daher ist keine besondere Behandlung erforderlich.Dieser Code zeigt auch undefiniertes Verhalten in der Anweisung:
da es keine Sequenzpunkte gibt, aber c geändert wird und zugegriffen wird. LLVM 6.0 gibt eine Warnung aus, kompiliert sie jedoch wie gewünscht -
--c
die zuvor ausgewertet wurdec
. Man könnte auf Kosten von zwei Bytes, fügen Sie die Anweisung--c;
vor den Ausgängen und Änderung--c
inprintf
anc
, die der Warnung loswerden würde.Ersetzt
std::cout
durchprintf
Speichern von 26 Bytes dank eines Vorschlags meines Bruders.quelle
CJam,
201918 BytesDanke an @ MartinBüttner für das Golfen ab 1 Byte!
Probieren Sie es online!
Wie es funktioniert
quelle
𝔼𝕊𝕄𝕚𝕟 14 Zeichen / 28 Byte
Try it here (Firefox only).
Erste Antwort! Obwohl es wahrscheinlich bessere Möglichkeiten gibt, damit umzugehen.
Erläuterung
quelle
MATL , 26 Bytes
Verwendet die aktuelle Version (6.0.0) . Funktioniert auf Oktave.
Beispiele
Einmal:
Zweimal:
16 mal:
Erläuterung
Die Anzahl der Elemente im Stapel gibt an, wie oft das Snippet ausgeführt wurde
quelle
OCaml, 198 Bytes
Enthält eine abschließende Newline und erfordert, dass der Dateiname mit einer Tilde beginnt (ich habe sie verwendet
~.ml
; Sie können sie damit ausführenocaml \~.ml
), da es sich um das druckbare Standard-ASCII-Zeichen mit dem höchsten Wert handelt. Missbraucht die Tatsache, dass alle Zeichen in einer Zeichenfolge veränderlich sind undSys.argv.(0).[0]
das erste Zeichen im Dateinamen sind.Es sollte nur für n = 1 bis 126 funktionieren, da der ASCII-Code für
~
126 lautet und ich einen zur Ausgabe hinzufüge. Es könnte zwei Bytes kürzer gemacht werden, wenn wir nur n = 1 bis 125 wollen. Nachdem es 126 Mal wiederholt wurde, wird zurück zu n = 1 gewechselt.Dies ist mein allererster Golf, daher sind Kommentare oder Verbesserungen sehr willkommen.
Ungolfed-Version:
quelle
Sys.argv.(0).[0]
. Ich weiß allerdings nicht viel über OCaml.TeaScript ,
21 bis20 BytesIch sollte es automatisch schließen lassen
;
Probieren Sie es online aus
Erläuterung
┼
wird++
quelle
Perl, 40 Bytes
Es gibt eine letzte Zeile hinter dem Doppelpunkt.
Behandelt alles nach der ersten Zeile als Here-Dokument und zählt das
z
darin. Für jede weitere Kopie des Codes wird einez
hinzugefügt. Wir müssen1
die Anzahl erhöhen, da es für das erste Snippet (das, das ausgeführt wird) kein Snippet gibt.Wenn eine zusätzliche Ausgabe nach stderr erlaubt ist, können wir die 2 einfachen Anführungszeichen weglassen
''
und auf 38 Bytes reduzieren. Ohne''
Perl wird eine Warnung über ein veraltetes Feature ausgegeben.quelle
Mathematica, 76 Bytes
Beachten Sie, dass
n
zuvor keine Definitionen vorhanden sein sollten.Hier wird das Verhalten von
;
verwendet. Das obige Snippet ist ein einzelnesCompoundExpression
. Wenn jedoch ein paar Snippets zusammengefügt werden, gibt es immer noch eines,CompoundExpression
wie unten gezeigt. (Einige unnötige Umlagerungen werden vorgenommen.)So kann man ein solches Snippet nicht zum Laufen bringen, wenn man es explizit schreibt
CompoundExpression
. Außerdem kann fast alles, was Sie möchten, vor dem ersten;
wieE
,Pi
oderMandelbrotSetPlot[]
, gesetzt werden.quelle
Bash, 49 Bytes
Datei
count.bash
:... kein nachlaufender Zeilenumbruch.
Lauf:
quelle
Python 2, 54 Bytes
Keine nachgestellte Newline. Ausgaben im Formular
1 01 0x1
.Wenn das nicht in Ordnung ist, 56 Bytes
Beim Einfügen voreinander wird die Länge der Datei mit jedem Einfügen um eine Zeile länger. Der Basisfall beginnt mit 2 Zeilen, sodass Sie 1 von der Zeilenlänge abziehen müssen. Die Berechnung wird durch den Kommentar unterdrückt.
quelle
"%d %o %x"%(n,n,n)
das ist ziemlich cool Ich hatte keine Ahnung, dass Sie das tun könnten. Wenn sich herausstellt, dass das Verlassen von Präfixen nicht in Ordnung ist, muss ich mir das ausleihen.Python 2.x 140 Bytes
Dies sollte keine übermäßig wettbewerbsfähige Lösung sein, sondern eine Methode, die ich als amüsant empfand, zum einen als Versuch, einen Multithread- Code-Golf zu spielen.
Behält einen Zähler bei, erzeugt einen Thread für jede Zählung und wenn sich der Zähler nicht geändert hat, wenn der Zähler-Timer nach Abschluss eines teuren mathematischen Problems abläuft (anstelle eines Timers zum Speichern von Bytes), wird die formatierte Zeichenfolge gedruckt.
Einige Beispielkonfigurationen und ihre Ausgaben:
und fünfzehn Kopierpasten:
quelle
thread.start_new_thread
Konnte sich Python einen schlechteren Methodennamen für das Code-Golfen vorstellen?Perl 5 , 31 Bytes
Verwendet den gleichen Ansatz wie meine Antwort für "Ich verdopple die Quelle, du verdoppelst die Ausgabe!" .
Probieren Sie es online!
quelle
Ruby, 35 Bytes
Jedes Snippet wird inkrementiert
$.
(was mit 0 beginnt, wenn keine Dateien gelesen wurden), aber nur das letzte gibt etwas aus.*-~-0
ergibt*1
, was bedeutet, dass die Zeichenfolge einmal gedruckt wird, bei Verkettung jedoch*-~-01
ein oktaler Ausdruck, der zu 0 ausgewertet wird. Da$><<
keine abschließende Newline enthalten ist, bedeutet das Drucken der leeren Zeichenfolge, dass nichts gedruckt wird.quelle