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.