Erstellen Sie die Ausgabe doppelt so lang wie der Code

85

Die Herausforderung

Schreiben Sie ein vollständiges Programm, das doppelt so viele Bytes in die Standardausgabe schreibt wie das Programm.

Regeln

  • Das Programm muss ASCII-Zeichen in die Standardausgabe schreiben.

  • Der Inhalt der Ausgabe spielt keine Rolle.

  • Die in Bytes gemessene Ausgabe muss genau doppelt so lang sein wie das Programm, auch in Bytes, es sei denn, Sie erfüllen den Bonus.

  • Alle nachfolgenden Zeilenumbrüche sind in der Byteanzahl der Ausgabe enthalten.

Bonus

Ihr Programm kann optional eine Zahl nals Eingabe verwenden. In diesem Fall muss die Ausgabe genau n * program lengthbytes sein. Sie können davon ausgehen, dass n immer eine positive ganze Zahl ist. Wenn keine Eingabe angegeben wird, nmuss der Standardwert 2 sein.

In diesem Fall können Sie 25 Bytes von Ihrer Punktzahl abziehen.

Kürzeste Sendung gewinnt.

Beschränkungen

  • Keine Standardlücken.

  • Das Programm muss mindestens 1 Byte lang sein.

  • Kein unnötiges Leerzeichen zum Quellcode hinzufügen, um dessen Länge zu ändern. Ebenso zählen Kommentare nicht.

  • Sofern Sie den Bonus nicht erfüllen, darf das Programm keine Eingabe akzeptieren. Wenn Sie den Bonus erfüllen, muss die ganze Zahl die einzige Eingabe sein.

Die niedrigste Punktzahl (Programmlänge in Byte - Bonus) gewinnt.

Die kürzeste Antwort für jede Sprache gewinnt für diese Sprache .

Bestenlisten

Hier ist ein Stack-Snippet, um sowohl eine reguläre Rangliste als auch eine Übersicht der Gewinner nach Sprache zu generieren.

Um sicherzustellen, dass Ihre Antwort angezeigt wird, beginnen Sie Ihre Antwort mit einer Überschrift. Verwenden Sie dazu die folgende Markdown-Vorlage:

# Language Name, N bytes

Wo Nist die Größe Ihres Beitrags? Wenn Sie Ihren Score zu verbessern, Sie können alte Rechnungen in der Überschrift halten, indem man sich durch das Anschlagen. Zum Beispiel:

# Ruby, <s>104</s> <s>101</s> 96 bytes

Wenn Sie mehrere Zahlen in Ihre Kopfzeile aufnehmen möchten (z. B. weil Ihre Punktzahl die Summe von zwei Dateien ist oder wenn Sie die Strafen für Interpreter-Flags separat auflisten möchten), stellen Sie sicher, dass die tatsächliche Punktzahl die letzte Zahl in der Kopfzeile ist:

# Perl, 43 + 2 (-p flag) = 45 bytes

Sie können den Namen der Sprache auch als Link festlegen, der dann im Leaderboard-Snippet angezeigt wird:

# [><>](http://esolangs.org/wiki/Fish), 121 bytes

Daniel M.
quelle
1
Muss die Ausgabe für den Bonus genau n * program lengthByte sein oder ist das ein Minimum?
xnor
2
Es muss genau sein
Daniel M.
3
Das Code-Snippet muss anscheinend geändert werden, um negative Ergebnisse verarbeiten zu können.
El'endia Starman
40
Ein Bonus von -25 ist für einige Sprachen grundsätzlich obligatorisch, da sie eine negative Punktzahl erzielen können. In Zukunft würde ich vorschlagen, einen Prozentbonus zu verwenden oder den Bonus einfach zur Frage zu machen, ob Sie wirklich Antworten wollen. Oder haben Sie einfach keinen Bonus.
Xnor
4
Nehmen wir für "keine Eingabe" an, dass die leere Zeichenfolge übergeben wird? Ich kann nicht sehen, wie man mit dem Benutzer umgehen würde, der nie eine Eingabe eingibt und das Programm nur wartet.
xnor

Antworten:

138

HQ9 + , 2 Bytes

QQ

Ausgänge

QQQQ

Ich denke es ist hier nicht verboten.

randomra
quelle
14
Es ist vielleicht nicht verboten, aber es ist nicht sehr inter ... warte, wie hat es acht positive Stimmen bekommen?
John Dvorak
58
@JanDvorak Auch wenn ich HQ9 + nicht mag, ist dies für mich eine kreative Verwendung. Diese Verwendung war höchstwahrscheinlich nicht vorgesehen, als HQ9 + erstellt wurde, was mehr ist als von den meisten anderen Hq9 + -Programmen gesagt werden kann. +1 von mir.
Digital Trauma
13
Ich wusste nicht einmal, dass Q „den Quellcode des Programms“ ausgibt. Ich dachte, es wurde nur ein Q gedruckt. Gut gemacht, um den entscheidenden Unterschied zu erkennen!
Timwi
7
@ LegionMammal978 Technisch ist dies eine Herausforderung für die konstante Ausgabe, was bedeutet, dass Sprachen ohne Programmiersprache zulässig sind.
ein Spaghetto
3
Dies hat 120 Stimmen. 1.200 Mitarbeiter für das Eintippen QQin einen Dolmetscher.
Stan Strum
95

Shakespeare, 768

Ja, Shakespeare ist keine Golfsprache. Gibt 1.536 Leerzeichen aus.

Rosencrantz and Guildenstern: A Series of Tedious Events.

Rosencrantz, a count of extraordinary determination.
Guildenstern, a spacy character.

Act I: The Long Conversation

Scene I: A Tortured Friendship

[Enter Rosencrantz and Guildenstern]

Rosencrantz:
 You are a gentle, noble, valiant, loyal, loving companion.

Guildenstern:
 You are nothing!

Scene II: Asking the Hard Questions

Rosencrantz:
 Speak your mind.

Guildenstern:
 You are as fair as the sum of yourself and a daisy. Are you as
 daring as the sum of a big, bold, fiery, feisty, rough, rowdy,
 ham-fisted, hawk-eyed, broad-shouldered, bright-eyed lad and a
 large, yellow, vicious, hairy, wild, scary, long-tailed,
 sharp-clawed, small-eared lion?

Rosencrantz:
 If not, let us return to scene II.

Bearbeiten: 256

Okay, ich werde es tatsächlich Golf spielen. Beachten Sie, dass das oben Genannte in keiner vorhandenen Shakespeare-Implementierung kompiliert wird, da ich es sorgfältig von Hand geschrieben habe (aber bereit bin, seine Richtigkeit zu verteidigen).

Das Folgende übersetzt in C mit einer Warnung in spl-1.2.1 und gibt 512 Leerzeichen aus:

Ummm.Ajax,1.Puck,2.Act I:I.Scene I:A.[Enter Ajax and Puck]Ajax:You old old old old old cow.Puck:You are zero!Scene II:B.Ajax:Speak thy mind.Puck:You are the sum of you and a red cat.Are you as big as the square of me?Ajax:If not, let us return to scene II.
Luke
quelle
15
Ich werde +1 geben, wenn Sie dies tatsächlich Golf spielen.
Lirtosiast
1
Was für eine Art von Hexerei ist das? Ich wusste nicht einmal, dass so etwas existiert ...
Malavos
10
woah, du hast es geschafft. Heilige Häfen.
Malavos
2
@Malavos Ich war nur ein Scherz über die Art und Weise Sie Hexerei falsch geschrieben, sorry - sowohl was und welche wahrscheinlich ok
cat
2
Nein, ich bitte Sie um Vergebung, wenn ich beleidigend oder defensiv klang. Ich habe gerade Futurama erwähnt! :) Im Ernst, ich bin immer noch überrascht von dieser Antwort. Wir brauchen mehr davon auf der Website.
Malavos
69

Rückruf, 17 Bytes

................!

16 NOOPs. Dann wird der Debugger !aufgerufen und der Speicher auf der Konsole abgelegt. Der Speicher ist leer, aber der Header ist 34 Byte lang:

-- STATE DUMP --
----------------

Probieren Sie es hier aus .

mınxomaτ
quelle
13
Dies ist eine der cooleren Antworten IMO.
Katze
67

Mathematica REPL, 1 Byte

#

Druckt #1.

Alephalpha
quelle
14
Die Frage lautet "ein komplettes Programm schreiben"; Dies ist nur ein REPL-Snippet.
LegionMammal978
60

CJam, -17 Bytes

r2e|i8,*

Der Quellcode ist 8 Bytes lang und qualifiziert sich für den Bonus von -25 Bytes .

Probieren Sie es online im CJam-Interpreter aus .

Wie es funktioniert

r         e# Read a token from STDIN.
 2        e# Push 2.
  e|      e# Logical OR; keep the token if it's not empty, 2 otherwise.
    i     e# Cast to integer.
     8,   e# Push [0 1 2 3 4 5 6 7].
       *  e# Repeat the array the corresponding number of times.
Dennis
quelle
4
Mist. Gut gemacht.
The_Basset_Hound
1
Wie ist es negative Bytes?
Nick T
3
@ NickT 8 Bytes (Quellcode) - 25 Bytes (Bonus).
Dennis
16
Sie können mehrere Millionen Kopien davon speichern, wenn Ihnen der Speicherplatz ausgeht.
Robert Fraser
Nein, ich denke, Metadaten würden es positiv machen
CalculatorFeline
47

Python 2.6, 10

print`-.1`

Druckt -0.10000000000000001, was 20 Zeichen entspricht.

Beachten Sie, dass die Zeichenfolgenwiedergabe präziser ist. print-.1gibt gerade -.1und print.1/3gibt 0.0333333333333für nur 13 Stellen Genauigkeit.

xnor
quelle
5
Dies funktioniert in Python 2.7 oder 3.1 nicht mehr .
Anders Kaseorg
@AndersKaseorg Also ist repl.it falsch?
mbomb007
2
@ mbomb007 Anscheinend. Laut GitHub ist dies kaum das Einzige, woran es falsch ist. Ideone stimmt mit CPython überein.
Anders Kaseorg
Gleicher Kommentar wie für Ihre andere Antwort: Gibt dies keine abschließende Zeile mit einer Ausgabe von 21 Byte aus?
Martin Ender
1
Du meinst print`+.1`?
mbomb007
46

Startwert , 10 Bytes

4 56111240

Kompiliert zum Befunge-Programm (gefunden mit Brute Force)

9k.@

Dies erzeugt die folgenden 20 Bytes, wenn es ausgeführt wird (getestet in CCBI, beachte den folgenden Leerraum):

0 0 0 0 0 0 0 0 0 0 

Da ich mit Befunge 98 nicht vertraut war, musste ich die Spezifikation einige Male überprüfen:

  • k scheint mir ziemlich kaputt zu sein, einmal mehr auszuführen als beabsichtigt, da die IP in den wiederholten Befehl übergeht
  • Die Stapel von Befunge 98 haben am unteren Rand unendliche Nullen
  • . Ausgänge als Zahl, gefolgt von einem Leerzeichen
Sp3000
quelle
18
.... ich .... kann einfach .... nicht.
Daniel M.
44

R, 3 2 Bytes

Code

!0           # NOT FALSE

Ausgänge

TRUE

Wow, endlich R, endlich.

Es scheint so, als würde es auch {}funktionierenNULL

Bonus 33 16 Bytes:

Code

rep(1,number*16)

Ausgänge

# if number is not defined
> rep(1,number*16)                     
> Error: object 'number' not found     # output is 32 (or 2*16) bytes long error

# if number is defined
> number = 3                            
> rep(1,number*16)                     # output is 16*number bytes long
> 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
Mutador
quelle
2
Ich hoffe, der Name "number" für die Variable ist nicht gleichbedeutend mit "Hinzufügen von unnötigen Leerzeichen zum Quellcode"
Mutador
26

Matlab, 7 5 Bytes

2 Bytes weniger dank @flawr!

123;3

Ausgabe:

Bildbeschreibung hier eingeben

Die Ausgabe enthält also 10 Bytes.newline ans = newline newline 3 newline

Luis Mendo
quelle
1
Hoffen wir, dass niemand die format compactStandardeinstellung hat :)
Sanchises
2
@sanchises :-) Ja, das hängt davon ab, wie die Einstellungen von Matlab festgelegt wurden. Aber format looseist die Standard - Präferenz
Luis Mendo
2
Wie wäre es 123;4? Ist drei Bytes kürzer =)
Fehler
@flawr Gute Idee! Poste es selbst!
Luis Mendo
Nein, viel zu sehr von Ihrer Antwort inspiriert =)
Fehler
25

JavaScript, 2 Bytes!

Noch kürzer als die 3-Byte-Lösung:

!0

Kehrt truenach dem Laufen zurück.

Eineder
quelle
2
Sie sollten beachten, dass dies nur in einer REPL-Umgebung
funktioniert
21

Python 2, 11

print`id`*1

Drucken Sie die Zeichenfolgendarstellung des integrierten idZeichensatzes aus, dh 22 Zeichen:

<built-in function id>

Das *1ist, um den Code auf 11 Zeichen zu bringen. Das könntest du auch tun print id;00.

Langweiligere Alternative 11 sind:

print'1'*22
print 9**21
xnor
quelle
Ich habe mit komplexen Zahlen print.8/-9j
rumgespielt
Drucken diese nicht eine abschließende neue Zeile, wodurch die Byteanzahl der Ausgabe auf 23 erhöht wird?
Martin Ender
1
@ MartinBüttner Diese Regel wurde später bearbeitet, aber es print id,;1reicht aus, sie zu ändern , um die nachgestellte Zeile zu unterdrücken. Es wird auch kein Leerzeichen hinzugefügt.
Xnor
@xnor print 9**21funktioniert nicht. Es ist 21 Zeichen. print 9**23funktioniert aber
Koishore Roy
18

Gleichstrom, 10-25 = -15

2?A*Ar^1-n

Nimmt eine leere Zeile für "keine Eingabe".

Berechnet 10 ^ (10 * n) - 1, wobei n die Eingabe ist, oder 2, wenn die Eingabe leer ist. Druckt eine Zeichenfolge 9mit der erforderlichen Länge.

  • 2 Drücken Sie 2 auf den Stapel, falls die Eingabe leer ist
  • ? Schieben Sie die Eingabe auf den Stapel
  • ADrücke 10 auf den Stapel (dc hat Abkürzungen A- Ffür 10 - 15)
  • * Pop zweimal und multiplizieren (Eingabe mit 10 multiplizieren)
  • A Drücke 10 auf den Stapel
  • r Reverse Top zwei Stack-Elemente
  • ^ Potenziere 10 ^ (10 * Eingabe)
  • 1- 1 von der Oberseite des Stapels abziehen
  • n Ohne Zeilenvorschub drucken.
Digitales Trauma
quelle
Mist, das ist so schlau. Und zum Glück mit der Codelänge da :) Aber vielleicht solltest du eine kleine Erklärung für den Uneingeweihten hinzufügen. Und ich denke, Newline zählt, also sollten Sie wahrscheinlich nanstelle von verwenden p.
Daniero
17

TI-Basic, 3 Bytes

1ᴇ5

Druckt 100000.

Deusovi
quelle
Eigentlich würde die Newline zählen, also kann man das nur 0für 1 Byte machen.
Lirtosiast
1
Wie wäre es ᴇ3? Und @lirtosiast, da TI-Basic keine Zeilenumbrüche hat, bin ich skeptisch.
Jakob
16

Brainfuck, 14 Bytes

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

Dies ist eine kleine mathematische Übung. Wir bezeichnen die Anzahl der +Zeichen im Code mit aund die Anzahl der .Zeichen mit b.

Der Code gibt a*bBytes mit Werten von abis aus 1(dies sind Nicht-ASCII-Bytes, aber es scheint gemäß der Spezifikation in Ordnung zu sein). Die Länge des Codes ist a+b+3. Also haben wir

a*b = 2 * (a+b+3)

Wenn wir verschiedene Werte für aund versuchen b, sehen wir, dass das Minimum für für a+b+3erreicht wird

a = 4       or       a = 7
b = 7                b = 4
anatolyg
quelle
Ein erfahrener Brainfuck-Programmierer wird die +[[>....]-<<+]Option erkennen.
Orthoplex
@orthoplex Wenn ich Ihren Kommentar lese, habe ich Brainfucking und Programmierer sofort porträtiert: Brainfucker
Poke
15

gs2 , -18 bytes

CP437 :W↕0!↨.2

Hex-Dump: 57 12 30 21 17 2e 32

Wliest Zahlen aus STDIN in eine Liste. ↕0Fügt der Liste eine 2 hinzu und !extrahiert das erste Element. Dann wird ↨.(die Liste ) so oft [0,1,2,3,4,5,6]wiederholt ( 2).

Dies ist sehr ähnlich zu Dennis 'CJam-Antwort - gs2 kombiniert nur rund iin einem Byte.

Hinweis : Ich musste einen Fehler in der gs2Implementierung beheben , damit dies funktionierte: Zuvor hatte jedes Programm eine versteckte Newline an die Ausgabe angehängt, was völlig unbeabsichtigt war. Es ist erst aufgetaucht, nachdem ich versucht habe, dieses Programm zu lösen (die Sprache wurde für Anarchy Golf entwickelt, bei der alle Zeilenumbrüche ignoriert werden) Salz.

Lynn
quelle
1
Die erste GS2-Antwort, die ich gesehen habe, enthält keine Kartenzeichen!
Cyoce
14

Perl 5, 16 Bytes - 25 = -9

$_ =$]x($_*2||4)

Dies ist eine merkwürdige Herangehensweise an das Problem.

Führen Sie mit dem -pBefehlszeilenargument aus.

Ich sah eine Perl-Antwort darunter, die eine spezielle Variable verwendete, um mehr Text zu drucken - und damit ihre Byteanzahl zu verkürzen. Also habe ich eine viel ausführlichere Spezialvariable verwendet. Es werden 8 Zeichen mit einem 2-stelligen Variablennamen ausgegeben. Somit kann mit einer Byte - Anzahl von 16 (aufgefüllt mit einem Leerzeichen zu machen, 16), druckt er 2 * $], wo $]die als gedruckte Perl - Version ist 5.xxxxxx, hängt von Ihrer Perl - Version. Ohne Eingabe wird es viermal ausgegeben, gleich 8*4oder 32, was der doppelten Bytezahl des Codes entspricht.

Ich liebe Perl.

Codefun64
quelle
Ich denke, dass dies für leere Eingabe fehlschlägt. Gemäß den Regeln sollte das Vielfache standardmäßig 2 sein, wenn keine Eingabe erfolgt.
Alex A.
@AlexA. Verdammt, das habe ich verpasst. Neu im Code Golf. Eingehende bearbeiten, aber meine Antwort enthält jetzt viele Zeichen, da ich keine Ahnung habe, wie ich das kreativer in Perl machen kann :(
Codefun64
2
Hey, es gibt noch ein paar Tipps, die Ihnen hier helfen könnten, standardmäßig in einem Programmskript, popund Sie können daran shiftarbeiten @ARGV(in einem, an dem subsie arbeiten @_), so dass Sie so etwas wie $n=pop||2den ersten Codeblock nach unten bekommen und ;}am Ende haben , das kann fast immer nur sein }, um einen anderen zu retten. Etwas, das Ihnen helfen könnte, mehr Zeichen zu sparen, ist der Operator xfür die String-Wiederholung , print 1x20oder etwas in dieser Richtung ... :) Ich hoffe, das hilft!
Dom Hastings
@ DomHastings Mann, danke! Ich habe es wegen Ihrer Hilfe auf 2 Bytes reduziert :) Vielen Dank für Ihre Vorschläge.
Codefun64
1
Ich denke, Sie können es dazu verkürzen print"n"x(21*pop||42). Führen Sie mitperl -e'print"n"x(21*pop||42)' 3 | wc -c
hmatt1
14

Pyth , 10 9 - 25 = -16

-1 von Dennis

**N9?zvz2

Druckt [Eingabe] * 9 Anführungszeichen oder 2 * 9, wenn die Eingabe leer ist.

isaacg hat hier eine kürzere antwort

Pyth , 1 Byte

T

Druckt 10. Es ist eine eingebaute Variable, die auf 10 initialisiert wird.

Lirtosiast
quelle
Es wäre nützlich, wenn .x mit Fehlern arbeiten würde. Gibt es eine Rechtfertigung dafür, warum dies nicht der Fall ist?
Lirtosiast
2
Ich vermute, Qdass Pyth die Eingabe auswertet, bevor der eigentliche Code ausgeführt wird. **N9.xvz2funktioniert wie erwartet, ist aber nicht kürzer als **N9?zvz2.
Dennis
2
Alle nachfolgenden Zeilenumbrüche sind in der Byteanzahl der Ausgabe enthalten. TAusgänge 10und eine Newline. Verwenden Sie d, es ist ein Raum, der eine neue Zeile angehängt wird
Stan Strum
9

Makkaroni 0.0.2 , 23 Zeichen

print tobase pow 32 9 2

Druckt 32 9 in binärer 1000000000000000000000000000000000000000000000Form , was sich in der Regel als 46 Zeichen lang herausstellt , ohne nachfolgende Zeilenumbrüche.

Türknauf
quelle
9

JavaScript, 4 Bytes

~$ cat main.js
+1/0
~$ nodejs main.js
Infinity

Ich denke, das ist die kürzest mögliche JS-Lösung ohne ES6: P

Eineder
quelle
Welche Version von NodeJS hast du? Das funktioniert bei mir nicht.
Dennis
1
Dies funktioniert auch auf der Firefox-Konsole.
n̴̖̋h̴̖̋a̷̭̿h̷̭̿d̸̡̅ẗ̵̨́
1
Die nachfolgende Newline sollte in die Ausgabelänge einbezogen werden.
Lirtosiast
Node.js v0.10.40druckt überhaupt nichts, weil es keinen Druckbefehl gibt. Haben Sie eine andere Version von Node.js oder funktioniert dies nur in einer Shell, die die Auswertung einer Zeile ausgibt? (In diesem Fall glaube ich nicht, dass diese Antwort gültig wäre).
Nateowami
4 Bytes? Bitte machen Sie dies tatsächlich wie die richtige Größe.
Star OS
9

C, 27 25

main(){printf("%50f",0);}

Vielen Dank an @Titus, dass Sie 2 Bytes abgeschlagen haben


Und für meine nicht konkurrierende 16-Byte- Lösung in C gehen Sie hier: https://codegolf.stackexchange.com/a/111330/16513

^ Ich sage nicht konkurrierend, da der Fehlercode möglicherweise von Ihrem Compiler abhängt. Beachten Sie auch, dass ich in dieser Lösung GCC verwende. Ich bin mir auch nicht sicher, ob es gegen Regel 1 verstößt oder nicht. Ich denke, es ist wahrscheinlich so, dass ich es als nicht konkurrierend bezeichnet habe

Albert Renshaw
quelle
1
Ich denke nicht, dass das als gültiges C-Programm gilt, aber main(){printf("%0.XXf",0);}funktioniert.
Wefwefa3
2
@Zereges Nein, C hat die "implizite Deklaration" -Regel, mit der Sie normalerweise Dinge ohne die richtige verwenden können #include. Der Compiler gibt eine Warnung aus, die manchmal abstürzt, in der Regel jedoch funktioniert sie .
Anatolyg
1
@ AlbertRenshaw Auch ich glaube nicht, dass es hier funktioniert .
Zereges
1
Beachten Sie, dass 27 * 2! = 38.
mbomb007
1
@Zereges. Dieser Code zeigt kein undefiniertes Verhalten. Die Funktionen "Implizite Deklaration" und "Impliziter Rückgabetyp" sind in neueren Standards veraltet, ihre Verwendung ist jedoch weiterhin zulässig und die Ergebnisse sind klar definiert. Es gibt Umstände, unter denen die Verwendung solcher Funktionen undefiniertes Verhalten verursacht, aber dieser Code bezieht diese nicht ein.
Peter
7

V , 2 Bytes

Dies gibt aus

ÿÿÿÿ

Probieren Sie es online!

Erläuterung

Dies ist eine wirklich knifflige Antwort, die durch Missbrauch der Interna von V funktioniert. Im Grunde genommen ÿist dies ein Befehl in V, der signalisiert, dass das Programm beendet ist und alle ausstehenden Befehle ausgeführt werden müssen. Andernfalls würden einige implizite Endungen nicht funktionieren und die Interpretation würde häufiger hängen bleiben. Dieser Befehl wird am Ende des Programms automatisch mehrmals gesendet und hat die meiste Zeit keine Auswirkung auf die Ausgabe.

éist ein Befehl, der ein einzelnes Zeichen einfügt. Dies geschieht jedoch, indem ein unformatiertes Byte abgerufen wird, sodass es nicht ÿals "Ende" interpretiert wird, sondern als "Dies ist das Zeichen, das Sie einfügen müssen". Lässt es dieses Zeichen viermal anstelle von einem einfügen.

DJMcMayhem
quelle
7

Bash, 11 Bytes

Hier ist eine erfreulich ironische Verwendung eines Datenkomprimierungstools :) ...

gzip -f<<<2

Hier ist ein Hex-Dump der Ausgabe (22 Bytes) ...

0000000: 1f 8b 08 00 e3 ce 32 59 00 03 33 e2 02 00 90 af  ......2Y..3.....
0000010: 7c 4c 02 00 00 00                                |L....
Wossname
quelle
Dies gibt 22 Bytes "erweitertes ASCII" aus (z. B. 8 Bits pro Zeichen). Dies scheint der Definition des OP von ASCII zu entsprechen, wenn Sie die Kommentare zum Fragenbeitrag lesen.
Wossname
Auf TIO bekam ich 16, aber auf meinem Linux-Rechner bekam ich 34
Stan Strum
@StanStrum, ich weiß nicht, was TIO ist, aber das 34 unter Linux ist seltsam. Vielleicht haben Sie gzip-Alias, um andere Schalter als normal zu verwenden?
Wossname
Ich weiß nicht, ob das der Fall ist, aber das scheint merkwürdig. Ich werde es auf einigen Live-CDs versuchen, um zu sehen, ob ich es mit einem meiner Programme @Wossname
Stan Strum,
1
Ich bin nicht dieser Typ, und ich werde meinen neu verdienten 129-stelligen Vertreter nicht ausnutzen. Ich werde sehen, ob ich eine Version
erstellen
6

DC, 19-25 = -6

2?19*[1n1-d0<l]dslx

Nimmt eine Zahl (2 wird als Backup auf den Stapel gelegt) und multipliziert sie mit 19. 1Druckt eine (keine neue Zeile) und dekrementiert die Zahl. Schleifen, während die Zahl größer als 0 ist.

daniero
quelle
6

C ++, 80 Bytes

#include<iostream>
int main(){int i=0;while(i<20){std::cout<<&i;i++;}return 0;}

Beachten Sie, dass das Zeilenumbruchzeichen zwei Zeichen umfasst. (Wenn Sie dies nicht möchten, ändern Sie i <20 in i <= 19, um zur gleichen Byteanzahl zurückzukehren.)

Beispielausgabe (ändert sich jedes Mal)

0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C

gleiche 8-stellige Speicheradresse 20 mal.

Liam
quelle
Einige Tipps zum Golfen: Eine forSchlaufe ist kürzer als eine whileSchlaufe und ermöglicht das Ablegen der Hosenträger. Sie ist etwas billiger zu verwenden cstdiound benötigt nur printfeine Schnur. Sie müssen nichts zurückgeben.
Luke
Sie können Ihren Ansatz auf 63 Bytes beschränken: #include<iostream> int main(){for(int i=10;--i;)std::cout<<&i;}Es gibt jedoch bereits eine kürzere Antwort mit einem etwas anderen Ansatz.
Movatica
6

CJam, -9

q_,{i}{;2}?G*'X*

Erläuterung

  • q_,

Liest die gesamte Eingabe und drückt sie und drückt dann die Länge.

  • {i}{;2}?

Wenn die Länge der Eingabe über Null liegt, konvertieren Sie sie in eine Ganzzahl. Andernfalls öffnen Sie den Eingang und drücken Sie 2.

  • G*

Drückt 16 (die Programmlänge) und multipliziert sie dann mit 2, wenn keine Eingabe vorhanden ist, oder mit der Eingabe.

  • 'X*

Drückt X und multipliziert es mit der Oberseite des Stapels.

The_Basset_Hound
quelle
@ ThomasKwa Hoppla. Aktualisierung in einer Sekunde.
The_Basset_Hound
Das Komma ist nicht notwendig, vermeiden Sie können jedoch die „if“ völlig , wenn Sie tun eine logische „oder“: q2e|igeben Sie die Nummer , die Sie wollen
aditsu
Sie können auch S anstelle von 'X' verwenden. Das einzige Problem ist, dass die Ausgabe erst sichtbar wird, wenn Sie sie auswählen (wenn Sie sie offline ausführen und in eine Datei umleiten, ist dies kein Problem)
aditsu
Ähm, egal, ich habe gerade Dennis 'Antwort gesehen: p
aditsu
Auch mit der Bedingung können Sie dies verkürzen. Sie müssen die Länge nicht berechnen, da eine leere Zeichenfolge bereits falsch ist. Sie müssen den leeren String auch nicht vom Stapel nehmen, da er nicht zur Ausgabe beiträgt. Dadurch können Sie auch die geschweiften Klammern für den else-Zweig umgehen. Ich kam mit dieser , bevor ich an eine der Antworten sah: r_{i}2?SB**.
Reto Koradi
6

> <> , 19 + 2 (-v Flag) - 25 = -4 Bytes

l?!2f4+*v
-1o;!?::<

Teste es hier!

Danke Cole und Sp3000

Überprüft zuerst die Stapellänge, ob es 0 ist, und legt 2 auf den Stapel. Multipliziert es mit 21 (Codelänge), gibt dann die Unicode-Darstellung dieser Zahl aus und dekrementiert es um 1. Schleifen bis 0. (Sie müssen die Ausgabe überprüfen, um die Zeichen zu sehen, da der Browser sie nicht anzeigt.)

Torcado
quelle
1
Ja, tut mir leid, dass ich deine Antwort ruiniert habe (aber es ist kürzer als meine, wenn du dich dadurch besser fühlst). Bearbeiten: Hoppla, drücke zu früh die Eingabetaste. Deine Eingabe in der jetzigen Form ist nach der Regel ungültig. Ich denke auch, dass es ein zu viele Zeichen drucken könnte (es geht von 14 auf 0, was 15 Zeichen nach meiner Zählung ist, nicht 14). Wenn ich richtig liege, sollte l0=?2f6+*vdie erste Zeile und 1-::0=?;o>die zweite es richtig machen.
Cole
Hm, ich bin mir nicht sicher, was du meinst. Es sollte auf keinen Fall 0 ausgeben. Setzen einer 2 als anfängliche Stack-Ausgaben (EDIT: Sachen, die ich nicht einfügen kann), die, zumindest unter Verwendung dieses Zeichenzählers , 28 Zeichen betragen.
Torcado
Ich verstehe, was du jetzt sagst. Ich interpretierte "Ihr Programm kann optional eine Zahl n als Eingabe verwenden", was bedeutet, dass wenn die Eingabe 2 wäre. Ich bearbeite die Antwort, danke! (auch ich kann einige durch die Verwendung einer Zeichenfolge anstelle von Zahlen
speichern
Ich helfe gerne, besonders wenn es> <> ist.
Cole
2
?!ist in der Regel besser als0=?
Sp3000
6

JavaScript (ES5), 68 Byte - 25 Bonus = 43

alert(Array(1+(+prompt()||2)).join(document.scripts[0].textContent))

(Falls Ihr Browser aus Sicherheitsgründen nicht zulässt, dass das Snippet ausgeführt wird, versuchen Sie es unter http://jsfiddle.net/thePivottt/c3v20c9g/. )

Dieses Skript funktioniert nur in einem Browser, der mindestens DOM3 (mit Node.textContent) und ECMAScript 5 (oder möglicherweise eine ältere Version) unterstützt. Ich habe versucht, es so standardkonform und kompatibel wie möglich zu machen. Es wird außerdem davon ausgegangen, dass sich das Skript im ersten scriptElement des Dokuments befindet.

Tatsächlich werden mehrere Kopien des Skripts selbst verkettet, was ziemlich beeindruckend ist . Beachten Sie, dass das Snippet-Tool in SE dem Skript zusätzliche Leerzeichen hinzufügt. Wir könnten dieses Leerzeichen ignorieren, .trim()aber ich halte es nicht für notwendig, da das Programm perfekt ist, ohne dass sich SE einmischt. Speichern Sie einfach diese HTML5-Datei, wenn Sie möchten, dass sie einwandfrei funktioniert.

<!DOCTYPE html>
<html>
  <head>
    <title>Minimalist HTML5 page</title>
    <script>alert(Array(1+(+prompt()||2)).join(document.scripts[0].textContent))</script>
  </head>
</html>

Dieses Skript verwendet promptund alertweil console.loges nicht Teil eines Standards ist, auch wenn die meisten modernen Browser es verwenden. Wenn die Anzahl der übergebenen Wiederholungen nicht gültig oder leer ist, wird standardmäßig 2 verwendet. Wenn die Eingabe eine Dezimalzahl ist, stürzt das Programm aufgrund der ungültigen Arraylänge ab.

Der Code verwendet einige interessante Funktionen von JavaScript:

  • Array(1+(+prompt()||2))

    • Array(INT) Erstellt ein Array von INT-Zellen.

    • +prompt()Nimmt eine Eingabe und verwandelt sie in eine Zahl. Wenn wir die Eingabe als Zeichenfolge übergeben würden, würde die ArrayFunktion sie einfach in ein Array mit einem Element einschließen.

    • +prompt()||2Gibt die Eingabe zurück, wenn sie wahr ist , andernfalls wird 2 zurückgegeben.

    • Dieser gesamte Code erzeugt ein Array von N leeren Elementen, wobei N um eins größer ist als die Anzahl der angeforderten Wiederholungen.

  • .join(document.scripts[0].textContent)

    • Die join(STRING)Methode des Arrays erstellt eine Zeichenfolge, indem alle Zellen verkettet werden und die bereitgestellte Zeichenfolge zwischen Werte gesetzt wird. In diesem Programm befinden sich N + 1 leere Elemente im Array oder genau N zwischen den Punkten. Das Ergebnis ist eine Zeichenfolge, die das N-fache der angegebenen Zeichenfolge enthält.

    • document.scripts[o]ist das erste <script>Element des Dokuments.

    • Die textContentof Node-Instanzen geben den gesamten darin enthaltenen Text und die zugehörigen untergeordneten Knoten einschließlich der Skripte zurück.

Domino
quelle
Wenn Sie ES6 verwenden str.repeatund trotzdem den Code selbst ausgeben, verringert sich die Punktzahl auf 26, aber es ist etwas zu langweilig: P
Domino
Ähm, ich weiß nicht wo die 26 herkommen, jetzt bekomme ich 33. Ich sollte wahrscheinlich etwas schlafen.
Domino
Beachten Sie, dass einige Browsereinstellungen möglicherweise die Verwendung der Eingabeaufforderung in einem Snippet verhindern. Möglicherweise müssen Sie es speichern, um es auszuführen.
Domino
6

JavaScript ES6, 33 - 25 = 8

(a=2)=>Array(a*33).fill(0).join``

Probieren Sie es online!

DankMemes
quelle
Ich kann diesen Code scheinbar nicht auf der Konsole ausführen. Ist es richtig? "Nicht erfasster Syntaxfehler: Unerwartetes Token =>"
Malavos
@Malavos Sie benötigen einen ES6-kompatiblen Browser wie den neuesten Firefox. Chrome unterstützt keine Standardargumente afaik
DankMemes
Ich benutze UCBrowser, aber das stimmt! Es basiert sowieso auf Chrom und Gecko. Versuchte es am Abend, bekam "000000000000000000000000000000000000000000000000000000000000000000". Nett! Können Sie mir Ihren Code erklären? Ich bin ein Neuling.
Malavos
2
@Malavos Der Hardcode 33ist eigentlich die Länge des Codes. Es erstellt ein neues Array mit der Länge, 33*awobei ader Eingabeparameter gemäß OP standardmäßig 2 ist, füllt es und gibt eine verknüpfte Zeichenfolge zurück.
DankMemes
2
Indem Sie Ihr Array mit einem zusätzlichen Element erstellen, können Sie es mit dem Join Arrary(1+a*<length>)undjoin`0`
Shaun H
5

Julia, 42 Bytes - 25 = 17

print("@"^42((r=readline())>""?int(r):2))

Dies liest eine Zeile aus STDIN mit readline(). Wenn es leer ist, dh keine Eingabe bereitgestellt wurde, wird n als die Eingabe definiert, die in eine Ganzzahl konvertiert wurde. Ansonsten n ist 2. Wir haben dann 42 drucken n @ s zu STDOUT.

Alex A.
quelle
5

Perl, 18-25 = -7

print$=x(<>*9||18)

Die spezielle Variable $=, auch bekannt als $FORMAT_LINES_PER_PAGE, beginnt ihre Lebensdauer mit 60und muss daher nur halb so oft dupliziert werden, wie die Byte-Ausgabe erfordert.

primo
quelle
1
Ich hatte eine sehr ähnliche Antwort von: print$=x9x(pop||2)nett!
Dom Hastings