Crea e scrivi in ​​un file


11

Sfida

Crea un nuovo file e scrivi la stringa Hello Worldsu di esso.

restrizioni

  • La tua sfida deve scrivere su un file su disco, nel file system.

  • Il file potrebbe non essere un file di registro generato durante il normale funzionamento dell'interprete.

  • Il file deve contenere solo la stringa Hello World. È consentito contenere una nuova riga finale o uno spazio minimo. Nessun altro contenuto.

  • Non sono ammessi flag / pipe della riga di comando (ecc.), Tranne quando necessario per eseguire il programma. (ad es. perl -p)

Appunti

  • Questo è , quindi vince il programma più breve in byte.

  • Segui lo spirito, non la lettera, delle regole.


Il trailing newline va bene?
Winny

@Winny sì, è ok
dkudriavtsev

Un nome file fa parte del contenuto di un file?
Cugina Cocaina,

Risposte:


1

Pyth, 14 byte

.w"Hello World

Emette in un file chiamato o.txt.


24

Python 2, 32 byte

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

Sì, questo è pitone valido .


1
Woah. Spiegazione?
James,

1
@DrGreenEggsandIronMan sembra che il trucco principale sia come *dividere un iterabile in singoli argomenti in una funzione, così open(*"ww")diventa open("w","w").
Value Ink

7
@ValueInk In realtà il trucco principale è l'uso della dichiarazione di stampa estesa che raramente si vede in natura.
xsot

1
Questo è davvero un bel trucco, ma se non fosse per il tuo *"ww"trucco avresti legato con l'altra risposta Python qui, che usa open(...).write(...)invece per lo stesso conteggio di byte
Value Ink

Oops, non me ne ero nemmeno reso conto.
xsot



5

Rubino, 26 byte

Scrive su file f.

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

5

Lotto, 18 byte

echo Hello World>f

Penso che tu abbia bisogno di un @, o ribattezzalo come (console).
Erik the Outgolfer,

Non @è necessario.
Shaun Wild,

Prova a salvarlo in un file batch ed eseguilo come tale (non digita direttamente il comando). Vedrai quindi che è necessario il @, perché altrimenti verrà stampato anche il comando. Ciò significa che hai due opzioni: 1) Elimina questa risposta perché sarà un duplicato 2) Etichetta come (console).
Erik the Outgolfer,

5

Vim, 15 + 2 == 17 byte

iHello World<esc>ZZ

+2 byte per l'avvio con vim fanziché anziché vim. Inoltre, questa versione funziona per:

iHello World<C-o>ZZ

Se l'avvio di vim in questo modo non è consentito, esiste anche:

Vim, 18 byte

iHello World<esc>:w f<cr>

Nota a margine: questo è un poliglotta. La stessa cosa funziona in V, tranne per il fatto che è più corta di un byte (poiché <cr>alla fine è implicita).


A cosa serve la `f <cr>` alla fine?
Zwei

@Zwei 'f' è il nome del file e il <cr>(che è un mnemonico per "invio", un singolo byte) è necessario per eseguire il comando. I comandi che iniziano con i due punti sono come una mini shell all'interno di vim e il comando :wè il comando per scrivere su un file.
James,

<esc>Non devono essere conteggiati come 5 byte e <cr>come 4, poiché devono essere completamente digitati?
Bart van Nierop,

@BartvanNierop No, <esc>è solo notazione per "La chiave di escape", che è 0x1B, ed <cr>è notazione per "La chiave di ritorno del carrello" che è0x0B
James

1
Prima di tutto, c'è un precedente per segnare vim con i tasti premuti == byte , ma in secondo luogo, ci sono diversi modi per scrivere questo in "codice" vim senza usare la notazione vim-key. Ad esempio, se si utilizza <C-v>per inserire un carattere di escape letterale e un ritorno a capo letterale, è possibile assegnare tutti questi tratti a una macro ed eseguirlo in quel modo. Puoi anche farlo in vimscript con il modo in normal 'iHello World^[:w f^Mcui vim lo visualizza , non come lo inserisci. ^[e ^Msono entrambi un byte.
James


3

C, 44 byte

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

1
Questo segfault su alcuni sistemi senza#include <stdio.h>
Steven Penny

@StevenPenny Finché c'è un sistema / compilatore in cui è garantito il non segfault, va bene. Le risposte generalmente non devono essere portatili.
Martin Ender,

@StevenPenny E ora ha.
orlp,

3

PowerShell, 15 byte

"Hello World">o

>reindirizza la stringa a un file chiamato onella directory corrente.



2

ndr, 19 caratteri

i
Hello World
.
w o

Esecuzione di esempio:

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

bash-4.3$ cat o
Hello World

2

MATL , 15 byte

'Hello World'Z#

Questo crea un file chiamato inoute scrive la stringa su di esso.


2

K, 20 byte

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

Conferma;

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

Dato che nessuno lo ha ancora detto, benvenuti a Programming Puzzles & Code Golf.
Erik the Outgolfer,

Molto apprezzato!
Chromozorz,

OK. Penso anche che tu abbia degli spazi iniziali extra. Modificherò gli spazi se vuoi (non so se sono stati posizionati intenzionalmente, ma penso che non siano stati intenzionali.)
Erik the Outgolfer

2

Clojure, 23 byte

#(spit"x""Hello World")

Funzione anonima che crea il file chiamato xe scrive Hello Worldlì.


2

Node.js, 42 byte

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

non penso che questo abbia bisogno di spiegazioni

Node.js REPL, 31 byte

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

per qualche motivo in sostituzione non è necessario includere fs


Non penso che funzioni. Affinché funzioni, è necessario require("fs").writeFile("o","Hello World"). Altrimenti, fs non è incluso.
Conor O'Brien,

@ CᴏɴᴏʀO'Bʀɪᴇɴ eh ok. funziona in REPL per qualche motivo
Downgoat

2

C #, 93 77 76 byte

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

Vedilo funzionare , con un'eccezione per l'accesso ai file non autorizzato.

changelog

rev2

  • Spazio dei nomi non necessario rimosso
  • Nome della funzione modificato in Principale (perché altrimenti non verrà rilevato come funzione principale)
  • usingDirettiva rimossa (grazie Jean Lourenço )

Rev3

  • Spazio rimosso che si intrufolava.

C # (senza boilerplate), 47 byte

void M(){File.WriteAllText("f","Hello World");}

È possibile salvare alcuni byte rimuovendo l'utilizzo e aggiungendolo direttamente al metodo: System.IO.File.WriteAllText [...]
Jean Lourenço

@ JeanLourenço Grazie. L'avevo originariamente e poi l'ho cambiato per ragioni sconosciute.
Bart van Nierop,

2

R, 38 36 35 byte

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

Mi piace come il file creato non abbia un nome! È praticamente .txtqualsiasi cosa, in effetti!

-2 byte grazie all'osservazione @PEAR!
-1 byte grazie a @BartvanNierop!

Questo codice produrrà un file senza nome.


1
Il '.txt' è davvero necessario? Le terminazioni dei file sono solo per l'utente. Un singolo personaggio potrebbe bastare a me.
PEAR

1
Non conosco R, ma non potresti radere via un altro byte, come suggerito da @ PEAR, semplicemente nominando il file "a"?
Bart van Nierop,


1

Python, 34 byte

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

Emette in un file chiamato h.


1

APLX , 15 byte

'Hello World'1

Crea un file componente APL contenente un solo componente; la stringa desiderata. Può essere riletto con:

      'Hello World'1
Hello World

1

Gema, 28 personaggi

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

Esecuzione di esempio:

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

bash-4.3$ cat o
Hello World

1

Racchetta, 43 byte

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

1

Julia, 47 byte

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

Ho provato a usare writedlm, ma non ha funzionato.




1

Java 7, 100 95 byte

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

O se vuoi chiudere lo scrittore dopo averlo usato ( 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){
    }
  }
}

Uso:

java -jar Main.jar

Java è la mia lingua preferita ma Gesù Cristo è esilarante quanto è brutta una lingua da golf ahah
Shaun Wild

4
@AlanTuning Infatti. xD Lavoro con Java al lavoro ed è divertente giocare a golf in Java. Non potrai MAI vincere una sfida di code-golf usando Java, ma è comunque divertente scrivere il codice Java il più breve possibile.
Kevin Cruijssen,

2
bene, puoi solovoid f()throws Exception{new java.io.PrintWriter("x").print("Hello World");}
cliffroot

java.io.Writer p=new java.io.PrintWriterti salva qualche altro personaggio.
Frozn,

@cliffroot Hmm, inizialmente l'ho provato, ma non sembrava scrivere nulla sul disco. Ci riproverò domani, al momento non ho un IDE e l'I / O dei file non funziona in ideone.
Kevin Cruijssen,

1

eacal , 26 byte

write a string Hello World

Questo è writeun string Hello Worldfile a, creandolo se non presente. Fondamentalmente:

write <fileName> <exec>

e

string <params to convert to string>

Esegui il programma come:

λ node eacal.js writeFile

1

J, 21 byte

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

Questo scrive su un file onella directory corrente o, se non chiamato da un file, nel tuo j64-804file. 1!:3è la scrittura straniera ed <'o'è il nome del file in box (i nomi dei file devono essere in box). LHS è la stringa da scrivere.


1

JavaScript, 89 byte

Questo codice è stato testato in Chrome. In altri browser, l'elemento deve trovarsi nel documento affinché il metodo click funzioni.

a=document.createElement("a");a.href="data:text/plain,Hello World";a.download=1;a.click()
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.