Ausgabe mit der gleichen Länge wie der Code


97

In dieser Herausforderung sollten Sie ein Programm oder eine Funktion schreiben, die keine Eingabe akzeptiert und eine Zeichenfolge mit der gleichen Anzahl von Bytes wie das Programm selbst ausgibt oder zurückgibt. Es gibt einige Regeln:

  • Sie dürfen nur Bytes im druckbaren ASCII-Bereich (0x20 bis einschließlich 0x7E) oder Newlines (0x0A oder 0x0D) ausgeben.
  • Ihr Code darf kein Quine sein, daher müssen sich der Code und die Ausgabe in mindestens einem Byte unterscheiden.
  • Ihr Code muss mindestens ein Byte lang sein.
  • Wenn Ihre Ausgabe nachgestellte Zeilenumbrüche enthält, sind diese Teil der Bytezahl.
  • Wenn für Ihren Code nicht standardmäßige Befehlszeilenflags erforderlich sind, zählen Sie diese wie gewohnt (dh, indem Sie die Differenz zu einem Standardaufruf der Implementierung Ihrer Sprache zur Byteanzahl hinzufügen), und die Länge der Ausgabe muss mit der Punktzahl Ihrer Lösung übereinstimmen. Wenn Ihr Programm beispielsweise abein nicht standardmäßiges Flag benötigt -n(wir gehen davon aus, dass es nicht mit Standard-Flags kombiniert werden kann, also 3 Byte), sollten Sie insgesamt 5 Byte ausgeben.
  • Die Ausgabe muss nicht immer gleich sein, solange Sie nachweisen können, dass jede mögliche Ausgabe die oben genannten Anforderungen erfüllt.
  • Übliche quine Regeln nicht gelten. Sie können den Quellcode oder seine Größe lesen, aber ich bezweifle, dass dies in den meisten Sprachen kürzer ist als das Hardcodieren.

Sie können ein Programm oder eine Funktion schreiben und eine der Standardmethoden zur Ausgabe verwenden. Beachten Sie, dass Sie beim Drucken des Ergebnisses entweder die Standardausgabe oder den Standardfehlerstrom verwenden können, aber nur einer von ihnen zählt.

Sie können jede Programmiersprache verwenden , beachten Sie jedoch, dass diese Lücken standardmäßig verboten sind.

Das ist , also gewinnt die kürzeste gültige Antwort - gemessen in Bytes .

Bestenliste



18
"Ihr Code darf kein Quine sein", aber ... aber ... er ist mit Quine
Okx

4
@Okx Weil es sich um eine verallgemeinerte Quine handelt, dh die erforderliche Ausgabe hängt vom Quellcode ab.
Martin Ender

4
@MartinEnder Möglicherweise sollten Sie die Ausgabe von Exit-Code nicht zulassen. Dies ist eine Standardeinstellung. Wenn Sie es erlauben, ist fast jedes Ein-Byte-Programm in fast jeder Sprache erlaubt. Ein Benutzer hat dies bereits getan
Weizen-Assistent

2
Die Ausgabe von @WheatWizard durch den Exit-Code ist keine Zeichenfolge, daher gilt sie hier nicht.
Martin Ender

Antworten:


204

C (modernes Linux), 19 Bytes

main(){puts('s');}

Beim Kompilieren und Ausführen wird Folgendes ausgegeben:

Segmentation fault

20
Das ist genial: D
Beta Decay

4
Dies ist eher wie "C + Englisch Unix / Posix OS;)"
Florian Castellane

5
Ich denke, es wäre besser, "C, modernes Linux" als nur "C" zu schreiben: Unter Windows ist die Fehlermeldung anders und in alten Zeiten wurden Linux-Programme sogar so kompiliert, dass die Adresse 0x73 ('s') lesbar war es wurde also keine Ausnahme verursacht.
Martin Rosenau

9
Ich bin der Seite beigetreten, um diese Antwort zu unterstützen.
Nitish

7
So beeindruckend dies auch ist, es ist nicht wirklich das C-Programm, das die Ausgabe druckt, sondern die Shell, in der sie ausgeführt wird.
Dennis

80

Excel, 11 Bytes

Norwegische Sprachversion:

=SMÅ(13^9)

Englische Sprachversion (12 Bytes):

=LOWER(17^9)

Erzeugt eine n-stellige Zahl und konvertiert sie in Text, indem sie in Kleinbuchstaben konvertiert.


106
Dies gibt dem "Auswählen der richtigen Sprache für den Job" eine ganz neue Bedeutung.
Martin Ender

4
Das ist eine großartige Idee. Es wäre kürzer zu tun, =9^7&""was eine 7-stellige Zahl in jeder Sprache erzeugt und nur 7 Bytes beträgt.
OpiesDad

@OpiesDad Schöne Lösung, ich denke du solltest es als Antwort posten, damit ich dich unterstützen kann.
Pajonk

4
@MartinEnder Es amüsiert mich, wie Ihre Spekulation / Ihr potenzieller Witz mehr aufgewertet wird als diese Antwort (obwohl sie nah ist).
HyperNeutrino

55

Labyrinth , 4 Bytes

!!>@

Probieren Sie es online!

Druckt 0000

Erläuterung

!   Print an implicit 0 from the stack.
!   Print an implicit 0 from the stack.
>   Rotate the source code right by one cell, so the code now becomes

    @!!>

    The IP is moved along, so it's now at the end of the line, which is 
    a dead end. So the IP turns around and starts moving left.
!   Print an implicit 0 from the stack.
!   Print an implicit 0 from the stack.
@   Terminate the program.

6
Das ist zu schlau. Habe eine +1 auf das Haus!
Caird Coinheringaahing


40

Netzhaut , 2 Bytes

no

Probieren Sie es online!

Ausdrucke 0und ein Zeilenvorschub.

Es gibt viele 2-Byte-Lösungen, aber ich halte dies für optimal. Standardmäßig druckt die Netzhaut immer eine nachgestellte neue Zeile, und es dauert zu viele Bytes, bis sie entfernt ist. Wir müssten also ein 1-Byte-Programm finden, das die leere Eingabe unverändert lässt. Ich glaube, das einzige Programm, das dies tut, ist das Programm, das einen einzelnen Zeilenvorschub enthält, der daher der Ausgabe entspricht und daher von der Herausforderung nicht zugelassen wird.

Am einfachsten ist es, mit Retina zu leben, die eine einzelne Ziffer ausgibt (die Anzahl der Übereinstimmungen einiger regulärer Ausdrücke mit der leeren Eingabe), und dies können wir mit vielen fehlgeschlagenen (oder übereinstimmenden) 2-Byte-Mustern tun.


27
+1 Für Code, der mir sagt, dass ich ihn nicht ausführen soll: P
Christopher

33

Mathematica, 2 Bytes

4!

Fakultät

24


1
Gah! zu schlau.
Tuskiomi

2
schlagen Sie mich dazu! +1. ( Ich denke, Sie sollten erwähnen, dass dies in der REPL-Version von Mathematica ist.)
Greg Martin

Wenn dies eine vernünftige Antwort ist, wäre die Antwort "1" dann auch eine vernünftige Antwort? (Das Setzen von '1' in Mathematicas REPL würde auch '1' zurückgeben ...)
Mark Segal

3
@MarkSegal Das würde gegen die No-Quine-Regel verstoßen.
AlexR

6
Regeln: ... "... der Code und die Ausgabe müssen sich in mindestens einem Byte unterscheiden"
J42161217

29

C 20 Bytes

f(){printf("%20d");}

Gibt eine Zahl aus, die mit Leerzeichen bis zu einer Länge von 20 aufgefüllt ist. (Welche Zahl? Was auch immer als Nächstes im Speicher vorkommt.)

Einige Beispiele laufen auf meinem System:

llama@llama:...code/c/ppcg121056samelen$ ./a.out 
           -666605944
llama@llama:...code/c/ppcg121056samelen$ ./a.out 
          -1391039592
llama@llama:...code/c/ppcg121056samelen$ ./a.out 
           1727404696
llama@llama:...code/c/ppcg121056samelen$ ./a.out 
             10717352
llama@llama:...code/c/ppcg121056samelen$ ./a.out 
           1485936232

Es ist eine Schande, dass die Ausgabe keine willkürlichen Bytes sein kann, denn das hätte diese 19-Byte-Lösung ermöglicht:

f(){write(1,f,19);}

Die Ausgabe von 19 Byte Junk beginnt bei fder Adresse.


Ich freue mich über eine Antwort, die die Regel der variierenden Ausgabe verwendet. :)
Martin Ender

Könnte das nicht segfault?
Daniel

Wo sind die TIO-Links?
CalculatorFeline

@ Daniel Nein, die gedruckte Nummer stammt aus dem vorherigen Inhalt des %esiRegisters.
Türklinke

8
@Doorknob, aber es ist immer noch undefiniertes Verhalten, daher könnte ein sadistischerer Compiler hier etwas ganz anderes machen
Sarge Borsch

29

Bash unter Linux, 6

uname

(gefolgt von einer neuen Zeile)

Ausgaben Linuxgefolgt von einem Zeilenumbruch.


2
Technisch gesehen unameist es keine Bash-Version - es ist eine separate ausführbare Datei
Jason Musgrove,


@ GammaFunction Wo siehst du unameals Bash Builtin? Jede Distribution, die ich gerade in die Hand nehmen kann, ist eine separate Binärdatei, einschließlich TIO . Umgekehrt ist, wie Ihre verknüpfte Antwort zeigt, umaskein Bestandteil der meisten / aller Shells.
Digitales Trauma

Ich nicht sehen unameals builtin. Als ich "-1 und tatsächlich ein eingebautes" sagte, meinte ich "Diese Antwort verwendet umask-1 Bytes und umaskist tatsächlich ein eingebautes".
GammaFunction

@ GammaFunction Entschuldigung - Ich habe die Bedeutung des "-1" in Ihrem Kommentar falsch verstanden.
Digitales Trauma

27

Javascript ES6, 9 Bytes

Verwenden von Vorlagenzeichenfolgen

_=>`${_}`

f=

_=>`${_}`

console.log(f());
console.log(typeof f());


Wird undefinedals Zeichenfolge angesehen?
Shaggy

3
@ Shaggy Siehe die Bearbeitung. Ich benutze String-Interpolation
Weedoze

Wow, das ist mein zweiter Post auf PPCG und 14 Upvotes! Danke
Weedoze

1
Warum einfache Molke kann man es schwer haben? (_=>_+'').
GOTO 0

1
@ GOTO0 Oh ok du behältst die Klammer. Dies ist eine weitere Option. Ich persönlich bevorzuge meine hehe
Weedoze

24

Pyramidenschema , 74 43 42 Bytes

Dank Khuldraeseth na'Barya 31 Bytes gespart! Dank der überarbeiteten JoKing-Lösung 1 Byte gespart!

  ^
 /^\
^---^
-^ ^-
 -^-
 /2\
/ 8 \
-----

Probieren Sie es online! Gibt die 41-stellige Nummer aus 28^28 = 33145523113253374862572728253364605812736, gefolgt von einer nachgestellten Zeile.


Alte Version

  ^
 / \
/out\
-----^
    /^\
   ^---^
  /1\ /9\
 /606\---
/51015\
-------

Probieren Sie es online!

Ausgänge 71277303925397560663333806233294794013421332605135474842607729452115234375= 160651015 ** 9oder ungefähr 10 74 .


6
Hey, versuchst du deine Sprache zu verkaufen? Wenn ja, sind Sie verhaftet. - Die Bullen
NoOneIsHere

2
@NoOneIsHere Entschuldigung?
Conor O'Brien

3
Sorry, es heißt Pyramid Scheme, was auch der Name einer Art von Betrug ist.
NoOneIsHere

1
ohhhhhhhhhhh rofl
Conor O'Brien

1
Durch die implizite Ausgabe werden Sie auf 43 Byte reduziert .
Khuldraeseth na'Barya


23

Python 2 , 9 Bytes

print 1e5

Die angezeigte Ausgabe enthält eine nachgestellte Newline.

Probieren Sie es online!


Zählen abschließende Zeilenumbrüche als Zeichen für die Ausgabe? Andernfalls werden acht Bytes gedruckt.
OldBunny2800

@ OldBunny2800 Ja, die Abfrage lautet: Wenn Ihre Ausgabe nachgestellte Zeilenumbrüche enthält, sind diese Teil der Byteanzahl . Wie auch immer, ich werde das in meiner Antwort klarstellen
Luis Mendo

18

Brainfuck , 25 Bytes

--[-->+<]+++++[->-.....<]

Probieren Sie es online! Anmerkung: Erfordert eine Implementierung mit 8-Bit-Zellen ohne Vorzeichen

Ausgabe:

~~~~~}}}}}|||||{{{{{zzzzz

Erläuterung

--[         254
 -->+<]      /2 = 127 into the second cell
+++++[      Five times
 ->-.....<]  Print the second cell - 1 five times

4
Es gibt viele BF-Variationen wie ein 8-Bit-Zellen-Infite-Tape. oder ein begrenztes Band und unendliche Zellen. Ich bin mir ziemlich sicher, dass es sich bei Ihrem Modell um ein nicht signiertes 8-Bit-Zellenmodell handelt, aber ich denke, es wäre gut, wenn Sie dies in Ihre Antwort aufnehmen.
Roman Gräf

@ RomanGräf Guter Punkt! Normalerweise gebe ich diese Informationen ein, wenn eine nicht standardmäßige Implementierung erforderlich ist. Diese Antwort sollte auf jeder Standardimplementierung funktionieren (8-Bit-Zellen ohne Vorzeichen, jedes Band), aber ich werde einen Hinweis hinzufügen, um dies zu verdeutlichen.
Zack C.

Könnten Sie kein 1-Byte-Programm haben, .das das nicht druckbare NULLZeichen druckt ?
Graviton

@Graviton Das würde die erste Regel dieser Herausforderung verletzen. Dies ist jedoch eine gültige Lösung in einem BF-Derivat, das standardmäßig einen druckbaren Wert enthält (siehe: meine brainbool-Antwort ).
Zack C.


16

C (Ideone), 14 Bytes

f(){warn(0);}

Auf Ideone , das seine ausführbare Datei benennt prog, wird das Folgende mit einem nachgestellten Zeilenumbruch ausgegeben.

prog: Success

C (GCC), 15 Bytes

f(){warn(00);}

Da GCC a.outstandardmäßig eine ausführbare Datei mit dem Namen schreibt (da keine zusätzlichen Flags vorhanden sind, die Byte kosten würden), wird die folgende Zeile mit einem nachgestellten Zeilenumbruch ausgegeben.

a.out: Success

7
@MDXF Die Spezifikation sagt Programm oder Funktion, so dass eine Funktionsübermittlung vollkommen gültig ist. Da der Dateiname hier nicht vom Benutzer gewählt wird (sowohl Ideone als auch gcc haben Standardeinstellungen), denke ich, dass dies in Ordnung ist (persönliche Meinung).
Dennis

15

C (gcc) , 18 bis 17 Bytes

f(){puts('@C');}

Beachten Sie, dass sich zwischen und ein STX-Byte ( 0x02 ) befindet .@C

Probieren Sie es online!

Portabilität

Dies wurde mit gcc 6.3.1 und clang 3.9.1 unter Fedora 25, gcc 4.8.4 unter Ubuntu 14.04.4 und gcc 4.8.3 unter openSUSE 13.2 getestet und gibt die folgende Ausgabe aus.

inux-x86-64.so.2

Ich gehe davon aus, dass dies mit allen gcc-Versionen die gleiche Ausgabe liefert, sofern es zu einer ausführbaren Datei des folgenden Typs kompiliert wird.

ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2

Unterschiedliche Plattformen erfordern eine unterschiedliche Speicheradresse und möglicherweise eine unterschiedliche Reihenfolge für die Bytes in der aus mehreren Zeichen bestehenden Zeichenkonstante.

Zum Beispiel ersetzt @\2Cmit @\2\4druckt exec/ld-elf.so.1und eine neue Zeile auf FreeBSD 11 mit Klirren 3.8.0.

Offline-Überprüfung

$ printf "%b\n" "f(){puts('@\2C');}main(){f();}" > quine.c
$ gcc -w -o quine quine.c
$ ./quine
inux-x86-64.so.2
$ ./quine | wc -c
17

Wie es funktioniert

Standardmäßig verwendet ld 0x400000 als Basisadresse des Textsegments, was bedeutet, dass der Inhalt des ELF ab der Speicheradresse 0x400000 gefunden wird .

Die ersten 640 Bytes des ELF sind weitgehend unabhängig vom eigentlichen Quellcode. Wenn beispielsweise die Erklärung von f durch folgt main(){f();}und nichts anderes, sie sehen aus wie folgt.

00000000: 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00  .ELF............
00000010: 02 00 3e 00 01 00 00 00 00 04 40 00 00 00 00 00  ..>.......@.....
00000020: 40 00 00 00 00 00 00 00 e8 19 00 00 00 00 00 00  @...............
00000030: 00 00 00 00 40 00 38 00 09 00 40 00 1e 00 1b 00  ....@.8...@.....
00000040: 06 00 00 00 05 00 00 00 40 00 00 00 00 00 00 00  ........@.......
00000050: 40 00 40 00 00 00 00 00 40 00 40 00 00 00 00 00  @.@.....@.@.....
00000060: f8 01 00 00 00 00 00 00 f8 01 00 00 00 00 00 00  ................
00000070: 08 00 00 00 00 00 00 00 03 00 00 00 04 00 00 00  ................
00000080: 38 02 00 00 00 00 00 00 38 02 40 00 00 00 00 00  8.......8.@.....
00000090: 38 02 40 00 00 00 00 00 1c 00 00 00 00 00 00 00  8.@.............
000000a0: 1c 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00  ................
000000b0: 01 00 00 00 05 00 00 00 00 00 00 00 00 00 00 00  ................
000000c0: 00 00 40 00 00 00 00 00 00 00 40 00 00 00 00 00  ..@.......@.....
000000d0: 04 07 00 00 00 00 00 00 04 07 00 00 00 00 00 00  ................
000000e0: 00 00 20 00 00 00 00 00 01 00 00 00 06 00 00 00  .. .............
000000f0: 08 0e 00 00 00 00 00 00 08 0e 60 00 00 00 00 00  ..........`.....
00000100: 08 0e 60 00 00 00 00 00 1c 02 00 00 00 00 00 00  ..`.............
00000110: 20 02 00 00 00 00 00 00 00 00 20 00 00 00 00 00   ......... .....
00000120: 02 00 00 00 06 00 00 00 20 0e 00 00 00 00 00 00  ........ .......
00000130: 20 0e 60 00 00 00 00 00 20 0e 60 00 00 00 00 00   .`..... .`.....
00000140: d0 01 00 00 00 00 00 00 d0 01 00 00 00 00 00 00  ................
00000150: 08 00 00 00 00 00 00 00 04 00 00 00 04 00 00 00  ................
00000160: 54 02 00 00 00 00 00 00 54 02 40 00 00 00 00 00  T.......T.@.....
00000170: 54 02 40 00 00 00 00 00 44 00 00 00 00 00 00 00  T.@.....D.......
00000180: 44 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00  D...............
00000190: 50 e5 74 64 04 00 00 00 b0 05 00 00 00 00 00 00  P.td............
000001a0: b0 05 40 00 00 00 00 00 b0 05 40 00 00 00 00 00  ..@.......@.....
000001b0: 3c 00 00 00 00 00 00 00 3c 00 00 00 00 00 00 00  <.......<.......
000001c0: 04 00 00 00 00 00 00 00 51 e5 74 64 06 00 00 00  ........Q.td....
000001d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
000001e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
000001f0: 00 00 00 00 00 00 00 00 10 00 00 00 00 00 00 00  ................
00000200: 52 e5 74 64 04 00 00 00 08 0e 00 00 00 00 00 00  R.td............
00000210: 08 0e 60 00 00 00 00 00 08 0e 60 00 00 00 00 00  ..`.......`.....
00000220: f8 01 00 00 00 00 00 00 f8 01 00 00 00 00 00 00  ................
00000230: 01 00 00 00 00 00 00 00 2f 6c 69 62 36 34 2f 6c  ......../lib64/l
00000240: 64 2d 6c 69 6e 75 78 2d 78 38 36 2d 36 34 2e 73  d-linux-x86-64.s
00000250: 6f 2e 32 00 04 00 00 00 10 00 00 00 01 00 00 00  o.2.............
00000260: 47 4e 55 00 00 00 00 00 02 00 00 00 06 00 00 00  GNU.............
00000270: 20 00 00 00 04 00 00 00 14 00 00 00 03 00 00 00   ...............

Die Verwendung von beispielsweise main(int c, char**v){f();}ändert stattdessen einige Bytes, jedoch nicht den Versatz der Zeichenfolge /lib64/ld-linux-x86-64.so.2, mit dem die Ausgabe erfolgt.

Der Offset dieser Zeichenfolge beträgt 0x238 und ist 27 Byte lang. Wir wollen nur 17 Bytes ausgeben (und das letzte wird eine neue Zeile sein, wenn wir verwenden puts), also addieren wir 11 zum Offset, um 0x243 , den Offset von, zu erhalten inux-x86-64.so.2. Das Hinzufügen von 0x400000 und 0x243 ergibt 0x400243 , den Speicherort von inux-x86-64.so.2.

Um diese Speicheradresse zu erhalten, können wir aus mehreren Zeichen bestehende Zeichenkonstanten verwenden, die ein implementierungsdefiniertes Verhalten aufweisen. 0x400243 ist (64) (2) (67) in der Basis 256, und die aus mehreren Zeichen bestehenden Zeichenkonstanten von gcc verwenden die Big-Endian-Bytereihenfolge, sodass '@\2C'die Speicheradresse der gewünschten Zeichenfolge ermittelt wird.

Zum Schluss wird putsder (nullterminierte) String an diesem Speicherort und in einer nachgestellten Zeile ausgegeben, wodurch 17 Byte Ausgabe erstellt werden.


Das ist Zauberei ... nimmt das die Bytereihenfolge der kompilierten Assembly an oder so?
Patrick Roberts

Ausgabe auf meinem System (Linux mit GCC 6.3.1): Ubeim Kompilieren mit -Df=main. Ubeim kompilieren mit main(){f();}.
MD XF

@PatrickRoberts An diesem Punkt bin ich nicht wirklich sicher, was die Annahmen sind. Da es in der zusammengestellten ELF-Datei herumspielt, hängt es ziemlich stark von allem ab, was der Compiler vor dem eigentlichen Code schreibt.
Dennis

@MDXF Es wurde ein kürzerer Weg gefunden, um eine geeignete Speicheradresse zu erhalten. Es funktioniert jetzt auf meinem Ubuntu 14.04 VPS, aber ymmv.
Dennis

@ Tennis Funktioniert jetzt gut (verdammt). Kopfgeld liegt bei Ihnen, wenn bis zum Ende der Woche niemand eine kürzere Lösung findet.
MD XF

13

Selbstmodifizierender Brainfuck , 5 Bytes

<[.<]

Probieren Sie es online!

Ausgabe:

]<.[<

Erläuterung:

Ganz einfach, druckt die Quelle in umgekehrter Reihenfolge. In SMBF wird der Inhalt des Programms links von der Anfangsposition des Zeigers auf dem Band gespeichert. Wenn Sie nach links gleiten und drucken, wird der Quellcode rückwärts ausgegeben.

Da das Lesen von Quellen in dieser Challenge erlaubt ist, sollte dies definitiv innerhalb der Regeln liegen.


13

Grundrechenart , 2 Bytes

1=

Drucke 1.oder:

    |
    |
    |  .

auf diesen albernen Siebensegmentanzeigen.

Um zu reproduzieren, nimm einen beliebigen Taschenrechner. Alle haben diese Programmiersprache irgendwie installiert.


1
Gilt das für alle Taschenrechner? Ich bin sicher, dass sie ständig den Dezimalpunkt anzeigen
Beta-Zerfall

Ist es nicht 1.statt 1x? Auch dies ist eine Quine, die von den Regeln nicht zugelassen ist.
Erik der Outgolfer

Nein, 1=ich hab 's versaut. Ich meinte, 1xals implizit gleich, aber ich habe vergessen, dass =das ein Knopf ist.
OldBunny2800

Es wird nur 1auf meinem TI-36 und TI-84 CE ausgegeben. Zählen diese nicht zu den "Grundrechnern"?
Benjamin Urquhart

Nein, ein TI 84 ist kein arithmetischer Taschenrechner, sondern ein grafischer Taschenrechner. Ich weiß nichts über die 36, aber ich bin mir ziemlich sicher, dass es sich um einen wissenschaftlichen Taschenrechner handelt. Diese Antwort gilt für Taschenrechner mit vier Funktionen.
OldBunny2800

13

Fourier, 26 22 20 Bytes

5^(`na`&i)` Batman!`

Probieren Sie es auf FourIDE!

Ausgänge:

nananananana Batman!

Für eine korrekte Großschreibung sind es 4 zusätzliche Bytes:

`N`7^(`an`i^~i)`a Batman!`

Probieren Sie es auf FourIDE!

Nanananananananana Batman!

RIP Adam West


1
Sie müssen NC nicht einbeziehen (nur wenn Sie für diese Herausforderung das Drucken von Zeichenfolgen erstellt haben (und das wäre albern)
Christopher

@Christopher Huh, das wusste ich nicht
Beta Decay

12

Brachylog , 1 Byte

w

Probieren Sie es online!

Erläuterung

wist das eingebaute "schreiben". Hier wird der Eingang geschrieben. Da die Eingabe eine freie Variable ist, wwird sie vor dem Drucken als Ganzzahl gekennzeichnet. Die erste Ganzzahl, die es versucht, ist 0.


Here, it will write the Input.Ist 'the Input' das Programm selbst? Gilt das nicht als Lesen der Quelle, die standardmäßig in einem Quine betrügt?
MD XF

4
@MDXF "Übliche Quine-Regeln gelten nicht"
Rob Watts

3
@MDXF Die Eingabe ist eine spezielle Brachylog-Variable, die Sie beim Aufrufen eines Brachylog-Programms festlegen können. Es geht in den Input-Teil von TryItOnline. Hier legen wir nichts für den Eingang fest, es handelt sich also tatsächlich um eine Variable. Es ist nicht das Programm.
Fatalize

10

Java (OpenJDK 8) , 11 Byte

o->1e8-1+""

Probieren Sie es online!

Ausgabe:

9.9999999E7

Nur ein bisschen ausgefeilter als die offensichtliche Antwort ()->"".format("%23s",0).

Speichert

  • 18 -> 16 Bytes: Vorteilhaftere Kombination aus Rundung und Potenz von 10 dank PunPun1000
  • 16 -> 13 Bytes: Bessere Formel dank JollyJoker
  • 13 -> 11 Bytes: Verbesserte Formel dank Kevin Cruijssen

2
()->1E10-1+"", "9.999999999E9" (13)spart drei weitere Bytes
JollyJoker

1
Sie können 1 Byte durch Ändern 1e10in 1e9oder 2 Byte durch Verwenden eines leeren Eingangs statt() wie o->1e8-1+""folgt 9.9999999E7speichern : (Ausgänge ; Länge & Byteanzahl 11 ).
Kevin Cruijssen

9

05AB1E , 1 Byte

õ

Gibt einen einzelnen Zeilenumbruch aus. õdrückt eine leere Zeichenkette und wird implizit mit einem Zeilenumbruch ausgegeben.

Probieren Sie es online!

Einige andere 2-Byte-Lösungen für Ihr Sehvergnügen (die Ausgabe befindet sich in den Klammern und alle Ausgaben haben eine nachgestellte Zeile):

X, (1)
Y, (2)
¾, (0)
¼, (1)
¶, (newline)
ð, (space)
Î, (0)

Es gibt jedoch viel mehr 2-Byte-Lösungen.


"Dies ist eine akzeptierte Ausgabemethode" nur für Funktionslösungen, nicht für vollständige Programme.
Martin Ender

@MartinEnder Würden diese Lösungen dann als Funktionen gelten? Ich bin mir nicht sicher, da ich hier nicht oft Funktionen verwende.
Ok

Ich weiß nicht genug über 05AB1E, aber sie werden nur dann als Funktionen betrachtet, wenn sie tatsächlich Ausdrücke sind, die zu einem Funktionsobjekt ausgewertet werden (was ich bezweifle, dass sie dies tun, da bei ihrer Verwendung der Befehl sofort ausgeführt wird).
Martin Ender

9

V / Vim, 1 Byte

o

Dies gibt eine einzelne neue Zeile aus.

Probieren Sie es online!

Es gibt eine Reihe von Varianten, die auch funktionieren würden. Zum Beispiel,

O

in vim und

Ä
ä
ï
Ï

in V.

Es gibt auch viele, viele Drei-Byte-Lösungen. Zum Beispiel:

3ii
i³i
¬ac

Diese sind alle spezifisch für V.


3ii wird erst dann erweitert, wenn Sie die Escape-Taste drücken. Sollten das drei oder vier Bytes sein (oder eher Tastenanschläge)?
Algmyr

@algmyr In vim bist du richtig. Es müsste 4ii<ESC>jedoch V sein, das die Flucht am Ende des Programms implizit ausfüllt.
DJMcMayhem

8

Batch, 12 Bytes

@echo %OS%

Die Byteanzahl umfasst den Zeilenumbruch sowohl für das Skript als auch für die Ausgabe

Windows_NT

Es scheint, dass es 11 Bytes nicht 12 sind.
Erik der Outgolfer

@EriktheOutgolfer cmd.exegibt natürlich eine CRLF nach Windows_NT, also 12 Bytes.
Neil

Dann solltest du klären?
Erik der Outgolfer

8

Hexagony , 3 Bytes

o!@

Probieren Sie es online!

Druckt 111.

Entfaltet:

 o !
@ . .
 . .

Aber der Code wird wirklich nur in der Reihenfolge ausgeführt o!@.

o   Set the memory edge to 111, the code point of 'o'.
!   Print this value as a decimal integer.
@   Terminate the program.



7

MATL , 2 Bytes

H

Es gibt einen nachgestellten Zeilenumbruch.

Probieren Sie es online!

Erläuterung

Die Zwischenablage H enthält 2standardmäßig eine Zahl . Hschiebt diesen Inhalt auf den Stapel, der implizit mit einer nachgestellten Newline angezeigt wird.



7

Gelee , 1 Byte

V

Nicht wenige Jelly one-Bytes - dies ist eins - wertet das linke Argument aus, das, wenn nichts als Eingabe bereitgestellt wird, standardmäßig null ergibt, was wiederum null ergibt und das Ergebnis implizit gedruckt wird 0. A.

Probieren Sie es online!

In der Tat, der 256 Bytes im Code-Seite gibt es nur 95 , die noch nicht zur Zeit einen anderen Byteausgabe innerhalb des angegebenen Bereichs erzeugen , wenn sie als vollwertiges Programm ausführen; Dies sind (als Codepage-Zeichen in Byte-Reihenfolge):

¡¢£¦©½¿€ÇÑÞßçıȷñ÷þ"#&',-./0123456789:;?@IMRTVZ\`dmpstxyz{}~°³⁴⁵⁹ƓƈɠḶỌṬḊĖİĿṄȮṖṘẆẊṃọṣṭḃḟḣŀṁṗṡẋż’“

Anmerkungen:

  • Die meisten 1-Byte-Programme drucken ein 0(no-ops / Ergebnis einer Liste mit einer einzelnen Null in, die ein druckt 0), die meisten anderen drucken ein 1( 0=0und dergleichen)

  • das ein Programm ist , das tut ein anderes Byte ergeben, aber eine , die außerhalb des Bereichs gemäß der Spezifikation ist - es erzeugt den Null-Byte (wirft die 0auf Rolle)

  • erzeugt ein Leerzeichen (ein Literal)

  • Erzeugt einen Zeilenvorschub (ein Literal)

  • Einige Bytes, die jetzt funktionieren, könnten dies in Zukunft nicht tun - es gibt ein paar Bytes, die (glaube ich) für niladische Werte reserviert sind, die, wenn sie zugewiesen werden, mit ziemlicher Sicherheit keine 1-Byte-Ausgabe erzeugen.


1
byte
Deadlink

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.