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.


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.


24

Python 2, 32 Bytes

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

Ja, dies ist eine gültige Python .


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



5

Ruby, 26 Bytes

Schreibt in eine Datei f.

open(?f,?w)<<"Hello World"

5

Stapel, 18 Bytes

echo Hello World>f

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.)


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


3

C, 44 Bytes

main(){fputs("Hello World",fopen("o","w"));}

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 .



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

2

MATL , 15 Bytes

'Hello World'Z#

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


2

K, 20 Bytes

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

Bestätigung;

    mmm@chromozorz:~/q$ cat f.txt 
    Hello World

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.


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


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");}

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.


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


1

Python, 34 Bytes

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

Ausgaben in eine aufgerufene Datei h.


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

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

1

Schläger, 43 Bytes

(display"Hello World"(open-output-file"f"))

1

Julia, 47 Bytes

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

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




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

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

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.


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()
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.