Erstellen und schreiben Sie in eine Datei

11

Herausforderung

Erstellen Sie eine neue Datei und schreiben Sie die Zeichenfolge hinein Hello World.

Beschränkungen

  • Ihre Herausforderung muss in eine Datei auf der Festplatte im Dateisystem geschrieben werden.

  • Die Datei ist möglicherweise keine Protokolldatei, die während des normalen Betriebs des Interpreters generiert wird.

  • Die Datei darf nur die Zeichenfolge enthalten Hello World. Es darf einen nachgestellten Zeilenumbruch oder ein minimales Leerzeichen enthalten. Kein anderer Inhalt.

  • Keine Befehlszeilen-Flags / Pipes (usw.) zulässig, außer wenn dies zum Ausführen des Programms erforderlich ist. (zB perl -p)

Anmerkungen

  • Dies ist , also gewinnt das kürzeste Programm in Bytes.

  • Folgen Sie dem Geist, nicht dem Buchstaben, der Regeln.

dkudriavtsev
quelle
Ist die nachfolgende Newline in Ordnung?
Winny
@Winny ja, es ist in
Ordnung
Ist ein Dateiname Teil des Inhalts einer Datei?
CousinCocaine

Antworten:

1

Pyth, 14 Bytes

.w"Hello World

Ausgaben in eine aufgerufene Datei o.txt.

Türknauf
quelle
24

Python 2, 32 Bytes

print>>open(*"ww"),"Hello World"

Ja, dies ist eine gültige Python .

xsot
quelle
1
Woah. Erläuterung?
James
1
@DrGreenEggsandIronMan es sieht aus wie der wichtigste Trick ist , wie *ein iterable in einzelne Argumente in einer Funktion aufspalten, so open(*"ww")wird open("w","w").
Wert Tinte
7
@ValueInk Eigentlich ist der Haupttrick die Verwendung der erweiterten print-Anweisung, die in freier Wildbahn selten zu sehen ist.
Xsot
1
Das ist in der Tat ein cooler Trick, aber wenn es Ihren *"ww"Trick nicht gegeben hätte, hätten Sie ihn mit der anderen Python-Antwort hier verknüpft, die open(...).write(...)stattdessen für dieselbe Byteanzahl verwendet wird
Value Ink
Ups, das habe ich gar nicht gemerkt.
Xsot
8

Haskell, 25 Bytes

writeFile"o""Hello World"
Anders Kaseorg
quelle
6

zsh, 17 Bytes

<<<Hello\ World>x

Ausgaben in eine aufgerufene Datei x.

Türknauf
quelle
Kannst du das >als Pfeife interpretieren ?
CousinCocaine
Was ist mit>Hello\ World
CousinCocaine
5

Ruby, 26 Bytes

Schreibt in eine Datei f.

open(?f,?w)<<"Hello World"
Wert Tinte
quelle
5

Stapel, 18 Bytes

echo Hello World>f
Shaun Wild
quelle
Ich denke, Sie brauchen eine @, oder benennen Sie diese als (Konsole) um.
Erik der Outgolfer
Das @ist nicht nötig.
Shaun Wild
Versuchen Sie, es in einer Batch-Datei zu speichern und als solches auszuführen (geben Sie den Befehl nicht direkt ein). Sie werden dann sehen, dass Sie das benötigen @, da der Befehl auch sonst gedruckt wird. Das bedeutet, dass Sie zwei Möglichkeiten haben: 1) Löschen Sie diese Antwort, da es sich um eine Betrogene handelt. 2) Neu kennzeichnen als (Konsole).
Erik der Outgolfer
5

Vim, 15 + 2 == 17 Bytes

iHello World<esc>ZZ

+2 Bytes zum Starten mit vim fstatt vim. Darüber hinaus funktioniert diese Version für:

iHello World<C-o>ZZ

Wenn das Starten von vim wie diesem nicht zulässig ist, gibt es auch:

Vim, 18 Bytes

iHello World<esc>:w f<cr>

Randnotiz: Dies ist ein Polyglot. Das gleiche funktioniert in V, außer dass es ein Byte kürzer ist (da das <cr>am Ende implizit ist.)

James
quelle
Wofür steht das `f <cr>` am Ende?
Zwei
@Zwei 'f' ist der Name der Datei, und das <cr>(eine Mnemonik für "enter", ein einzelnes Byte) ist erforderlich, um den Befehl auszuführen. Befehle, die mit einem Doppelpunkt beginnen, ähneln einer Mini-Shell in vim, und der Befehl :wist der Befehl zum Schreiben in eine Datei.
James
Sollte <esc>nicht als 5 Bytes und <cr>als 4 gezählt werden, da sie vollständig eingegeben werden müssen?
Bart van Nierop
@ BartvanNierop Nein, <esc>ist nur eine Notation für "The Escape Key", was ist 0x1B, und <cr>ist eine Notation für "The Carriage Return Key", die ist0x0B
James
1
Zunächst einmal gibt es einen Präzedenzfall, um vim mit Tastenanschlägen == Bytes zu bewerten , aber zweitens gibt es verschiedene Möglichkeiten, dies in vim "Code" zu schreiben, ohne die vim-Schlüssel-Notation zu verwenden. Wenn Sie beispielsweise <C-v>ein Literal-Escape-Zeichen und einen Literal-Wagenrücklauf einfügen, können Sie alle diese Striche einem Makro zuweisen und auf diese Weise ausführen. Sie können dies auch in Vimscript tun, mit normal 'iHello World^[:w f^Mdem Vim es anzeigt und nicht wie Sie es eingeben. ^[und ^Msind beide ein Byte.
James
4

Stapel, 19 Bytes

@echo Hello World>o
Neil
quelle
Ich bin mir nicht sicher, ob es als falsch gilt, aber es gibt "Hello World" und einen Zeilenumbruch in die Datei aus und nicht einfach "Hello World"
brianush1
Wofür ist das '@' gut?
PEAR
@PEAR Verhindert, dass der Befehl an STDOUT zurückgegeben wird.
Neil
@ brianush1 Es zählt anscheinend nicht als falsch.
Erik der Outgolfer
3

C, 44 Bytes

main(){fputs("Hello World",fopen("o","w"));}
orlp
quelle
1
Dies wird auf einigen Systemen ohne#include <stdio.h>
Steven Penny
@StevenPenny Solange es ein System / einen Compiler gibt, bei dem garantiert kein Fehler auftritt, ist das in Ordnung. Antworten müssen im Allgemeinen nicht tragbar sein.
Martin Ender
@StevenPenny Und jetzt hat es.
Orlp
3

PowerShell, 15 Bytes

"Hello World">o

>Leitet die Zeichenfolge in eine Datei um, die oim aktuellen Verzeichnis aufgerufen wird .

Ben Owen
quelle
2

Dyalog APL , 19 Bytes

NPUT'Hello World'

Erstellt eine Datei mit dem Namen und Inhalt "Hello World".

Adam
quelle
2

ed, 19 Zeichen

i
Hello World
.
w o

Probelauf:

bash-4.3$ ed <<< $'i\nHello World\n.\nw o'
12

bash-4.3$ cat o
Hello World
Mann bei der Arbeit
quelle
2

MATL , 15 Bytes

'Hello World'Z#

Dadurch wird eine Datei mit dem Namen erstellt inoutund die Zeichenfolge in diese Datei geschrieben .

Luis Mendo
quelle
2

K, 20 Bytes

    `:f 0:,"Hello World"
    `:f

Bestätigung;

    mmm@chromozorz:~/q$ cat f.txt 
    Hello World
Chromozorz
quelle
Willkommen bei Programming Puzzles & Code Golf, da es noch niemand gesagt hat.
Erik der Outgolfer
Sehr geschätzt!
Chromozorz
IN ORDNUNG. Ich denke auch, dass Sie zusätzliche führende Räume haben. Ich werde die Leerzeichen herausarbeiten, wenn Sie wollen (ich weiß nicht, ob sie absichtlich platziert wurden, aber ich denke, es war unbeabsichtigt.)
Erik der Outgolfer
2

Clojure, 23 Bytes

#(spit"x""Hello World")

Anonyme Funktion, die eine aufgerufene Datei erstellt xund dort schreibt Hello World.

Klippenwurzel
quelle
2

Node.js, 42 Bytes

require("fs").writeFile('o','Hello World')

Ich denke nicht, dass dies einer Erklärung bedarf

Node.js REPL, 31 Bytes

fs.writeFile('o','Hello World')

Aus irgendeinem Grund müssen Sie in repl nicht angeben fs

Downgoat
quelle
Ich denke nicht, dass das funktioniert. Damit es funktioniert, müssten Sie require("fs").writeFile("o","Hello World"). Andernfalls ist fs nicht enthalten.
Conor O'Brien
@ CᴏɴᴏʀO'Bʀɪᴇɴ huh ok. arbeitet in REPL aus irgendeinem Grund
Downgoat
2

C #, 93 77 76 Bytes

using System.IO;namespace N{class C{static void M(){File.WriteAllText("f", "Hello World");}}}

class C{static void Main(){System.IO.File.WriteAllText("f", "Hello World");}}

class C{static void Main(){System.IO.File.WriteAllText("f","Hello World");}}

Sehen Sie , wie es funktioniert , mit Ausnahme des nicht autorisierten Dateizugriffs.

Änderungsprotokoll

Rev2

  • Unnötiger Namespace entfernt
  • Der Funktionsname wurde in Main geändert (da er sonst nicht als Hauptfunktion erkannt wird).
  • Entfernte usingRichtlinie (dank Jean Lourenço )

Rev3

  • Platz entfernt, der sich eingeschlichen hat.

C # (ohne Boilerplate), 47 Bytes

void M(){File.WriteAllText("f","Hello World");}
Bart van Nierop
quelle
Sie können einige Bytes speichern, indem Sie die Verwendung entfernen und direkt an die Methode anhängen: System.IO.File.WriteAllText [...]
Jean Lourenço
@ JeanLourenço Danke. Ich hatte das ursprünglich und änderte es dann aus unbekannten Gründen.
Bart van Nierop
2

R, 38 36 35 Bytes

sink(" ");cat("Hello World");sink()

Mir gefällt, wie die erstellte Datei keinen Namen hat! Es ist eigentlich .txtalles!

-2 Bytes dank @PEAR Bemerkung!
-1 Bytes dank @BartvanNierop!

Dieser Code erzeugt eine Datei ohne Namen.

Frédéric
quelle
1
Ist die '.txt' wirklich notwendig? Dateiendungen sind nur für den Benutzer. Ein einziger Charakter könnte mir genug sein.
PEAR
1
Ich kenne R nicht, aber könnten Sie nicht ein weiteres Byte, wie auf Vorschlag von @ PEAR, durch einfaches Benennen der Datei abschneiden "a"?
Bart van Nierop
2

Bash, 18 Bytes

echo Hello World>a
Vikarjramun
quelle
1

Python, 34 Bytes

open("h","w").write("Hello World")

Ausgaben in eine aufgerufene Datei h.

Undichte Nonne
quelle
1

APLX , 15 Bytes

'Hello World'1

Erstellt eine APL-Komponentendatei, die nur eine Komponente enthält. die gewünschte Zeichenfolge. Es kann zurückgelesen werden mit:

      'Hello World'1
Hello World
Adam
quelle
1

Gema, 28 Zeichen

\A=@write{o;Hello World}@end

Probelauf:

bash-4.3$ gema '\A=@write{o;Hello World}@end'

bash-4.3$ cat o
Hello World
Mann bei der Arbeit
quelle
1

Schläger, 43 Bytes

(display"Hello World"(open-output-file"f"))
Winny
quelle
1

Julia, 47 Bytes

f=open("o","w");write(f,"Hello World");close(f)

Ich habe es versucht writedlm, aber es hat nicht geklappt.

Mama Fun Roll
quelle
1

C 37 Bytes

main(){system("echo Hello World>o");}
Homer Simpson
quelle
1

Perl 6 ,  27  23 Bytes

'o'.IO.spurt: 'Hello World'
spurt 'o','Hello World'
Brad Gilbert b2gills
quelle
1

Java 7, 100 95 Bytes

void f()throws Exception{java.io.Writer p=new java.io.PrintWriter("x");p.print("Hello World");}

Oder wenn Sie den Writer nach seiner Verwendung schließen möchten ( 101 Byte ):

void f()throws Exception{try(java.io.Writer p=new java.io.PrintWriter("x")){p.print("Hello World");}}

Ungolfed:

class Main{
  static void f() throws Exception{
    try(java.io.Writer p = new java.io.PrintWriter("x")){
      p.print("Hello World");
    }
  }

  public static void main(String[] a){
    try{
      f();
    } catch(Exception ex){
    }
  }
}

Verwendung:

java -jar Main.jar
Kevin Cruijssen
quelle
Java ist meine Lieblingssprache, aber Jesus Christus, es ist komisch, wie schlecht eine Golfsprache ist, haha
Shaun Wild
4
@ AlanTuning In der Tat. xD Ich arbeite bei der Arbeit mit Java und es macht Spaß, in Java Code-Golf zu spielen. Sie werden hier NIEMALS eine Code-Golf-Herausforderung mit Java gewinnen können, aber es macht trotzdem Spaß, den Java-Code so kurz wie möglich zu schreiben.
Kevin Cruijssen
2
void f()throws Exception{new java.io.PrintWriter("x").print("Hello World");}
Nun
java.io.Writer p=new java.io.PrintWriterspart Ihnen einige weitere Zeichen.
Frozn
@cliffroot Hmm, das habe ich anfangs versucht, aber es schien nichts auf die Festplatte zu schreiben. Ich werde es morgen erneut versuchen. Derzeit habe ich keine IDE und die Datei-E / A funktioniert nicht in ideone.
Kevin Cruijssen
1

eacal , 26 Bytes

write a string Hello World

Dieser writesa string Hello Worldzu Datei a, es falls nicht vorhanden zu schaffen. Grundsätzlich:

write <fileName> <exec>

und

string <params to convert to string>

Führen Sie das Programm aus als:

λ node eacal.js writeFile
Conor O'Brien
quelle
1

J, 21 Bytes

'Hello World'1!:3<'o'

Dies schreibt in eine Datei oim aktuellen Verzeichnis oder, falls nicht aus einer Datei aufgerufen, in Ihre j64-804Datei. 1!:3ist der Schreibfremd und <'o'ist der umrahmte Dateiname (Dateinamen müssen eingerahmt sein). Die LHS ist die zu schreibende Zeichenfolge.

Conor O'Brien
quelle
1

JavaScript, 89 Bytes

Dieser Code wurde in Chrome getestet. In anderen Browsern muss sich das Element im Dokument befinden, damit die Klickmethode funktioniert.

a=document.createElement("a");a.href="data:text/plain,Hello World";a.download=1;a.click()
kamoroso94
quelle