Crea y escribe en un archivo

11

Desafío

Cree un nuevo archivo y escríbale la cadena Hello World.

Restricciones

  • Su desafío debe escribir en un archivo en el disco, en el sistema de archivos.

  • Es posible que el archivo no sea un archivo de registro generado durante el funcionamiento normal del intérprete.

  • El archivo debe contener solo la cadena Hello World. Se permite contener una nueva línea final o un espacio en blanco mínimo. Ningún otro contenido.

  • No se permiten marcas / tuberías de línea de comandos (etc.), excepto cuando sea necesario para ejecutar el programa. (por ejemplo perl -p)

Notas

  • Este es el , por lo que gana el programa más corto en bytes.

  • Sigue el espíritu, no la letra, de las reglas.

dkudriavtsev
fuente
¿Está bien la nueva línea al final?
Winny
@ Winny sí, está bien
dkudriavtsev
¿Es un nombre de archivo parte del contenido de un archivo?
CousinCocaine

Respuestas:

1

Pyth, 14 bytes

.w"Hello World

Salidas a un archivo llamado o.txt.

Pomo de la puerta
fuente
24

Python 2, 32 bytes

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

Sí, esta es una pitón válida .

xsot
fuente
1
Woah ¿Explicación?
James
1
@DrGreenEggsandIronMan parece que el truco principal es cómo *dividir un iterable en argumentos individuales en una función, así se open(*"ww")convierte open("w","w").
Value Ink el
77
@ValueInk En realidad, el truco principal es el uso de la declaración de impresión extendida que rara vez se ve en la naturaleza.
xsot
1
De hecho, es un truco genial, pero si no fuera por tu *"ww"truco, habrías vinculado con la otra respuesta de Python aquí, que usa en su open(...).write(...)lugar para el mismo recuento de bytes
Value Ink el
Vaya, ni siquiera me di cuenta de eso.
xsot
8

Haskell, 25 bytes

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

zsh, 17 bytes

<<<Hello\ World>x

Salidas a un archivo llamado x.

Pomo de la puerta
fuente
¿Se puede interpretar >como una tubería?
CousinCocaine
¿Qué hay de>Hello\ World
CousinCocaine
5

Rubí, 26 bytes

Escribe en el archivo f.

open(?f,?w)<<"Hello World"
Tinta de valor
fuente
5

Lote, 18 bytes.

echo Hello World>f
Shaun Wild
fuente
Creo que necesitas un @, o renombrar esto como (consola).
Erik the Outgolfer
El @no es necesario.
Shaun Wild
Intente guardarlo en un archivo por lotes y ejecútelo como tal (no escriba directamente el comando). Luego verá que necesita el @, porque el comando también se imprime de otra manera. Eso significa que tiene dos opciones: 1) Eliminar esta respuesta porque será un engaño 2) Reetiquetar como (consola).
Erik the Outgolfer
5

Vim, 15 + 2 == 17 bytes

iHello World<esc>ZZ

+2 bytes para iniciar esto con en vim flugar de vim. Además, esta versión funciona para:

iHello World<C-o>ZZ

Si no se permite iniciar vim de esta manera, también existe:

Vim, 18 bytes

iHello World<esc>:w f<cr>

Nota al margen: este es un políglota. Lo mismo funciona en V, excepto que es un byte más corto (ya que <cr>al final está implícito).

James
fuente
¿Para qué sirve la `f <cr>` al final?
Zwei
@Zwei 'f' es el nombre del archivo, y el <cr>(que es un mnemotécnico para "enter", un solo byte) es necesario para ejecutar el comando. Los comandos que comienzan con dos puntos son como un mini shell dentro de vim, y el comando :wes el comando para escribir en un archivo.
James
¿ <esc>No deben contarse como 5 bytes y <cr>como 4, ya que tienen que estar completamente escritos?
Bart van Nierop
@BartvanNierop No, <esc>es solo notación para "La clave de escape", que es 0x1B, y <cr>es notación para "La clave de retorno de carro" que es0x0B
James
1
Bueno, en primer lugar, hay un precedente para puntuar vim con pulsaciones de tecla == bytes , pero en segundo lugar, hay varias formas de escribir esto en vim "código" sin usar la notación vim-key. Por ejemplo, si utiliza <C-v>para insertar un carácter de escape literal y un retorno de carro literal, puede asignar todos estos trazos a una macro y ejecutarlo de esa manera. También puede hacerlo en vimscript, normal 'iHello World^[:w f^Mque es cómo vim lo muestra , no cómo lo ingresa. ^[y ^Mson ambos un byte.
James
4

Lote, 19 bytes

@echo Hello World>o
Neil
fuente
No estoy seguro de si cuenta como incorrecto, pero muestra "Hello World" y una nueva línea en el archivo, en lugar de simplemente "Hello World"
brianush1
¿Para qué sirve la '@'?
PERA
@PEAR Impide que el comando se repita en STDOUT.
Neil
@ brianush1 Aparentemente no cuenta como incorrecto.
Erik the Outgolfer
3

C, 44 bytes

main(){fputs("Hello World",fopen("o","w"));}
orlp
fuente
1
Esto será predeterminado en algunos sistemas sin#include <stdio.h>
Steven Penny
@StevenPenny Siempre que haya un sistema / compilador en el que se garantice que no se desconectará, está bien. Las respuestas generalmente no tienen que ser portátiles.
Martin Ender
@StevenPenny Y ahora sí.
orlp
3

PowerShell, 15 bytes

"Hello World">o

>redirige la cadena a un archivo llamado oen el directorio actual.

Ben Owen
fuente
2

Dyalog APL , 19 bytes

NPUT'Hello World'

Crea un archivo con el nombre y contenido "Hola mundo".

Adán
fuente
2

ed, 19 caracteres

i
Hello World
.
w o

Ejecución de muestra:

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

bash-4.3$ cat o
Hello World
hombre trabajando
fuente
2

MATL , 15 bytes

'Hello World'Z#

Esto crea un archivo llamado inouty escribe la cadena en él.

Luis Mendo
fuente
2

K, 20 bytes

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

Confirmación;

    mmm@chromozorz:~/q$ cat f.txt 
    Hello World
Chromozorz
fuente
Como nadie lo dijo todavía, bienvenido a Programming Puzzles & Code Golf.
Erik the Outgolfer
¡Muy apreciado!
Chromozorz
OKAY. Sin embargo, también creo que tienes espacios iniciales adicionales. Si lo desea,
editaré
2

Clojure, 23 bytes

#(spit"x""Hello World")

Función anónima que crea el archivo llamado xy escribe Hello Worldallí.

acantilado
fuente
2

Nodo.js, 42 bytes

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

no creo que esto necesite explicación

Node.js REPL, 31 bytes

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

por alguna razón en las respuestas no necesita incluir fs

Downgoat
fuente
No creo que esto funcione. Para que funcione, lo necesitarías require("fs").writeFile("o","Hello World"). De lo contrario, fs no está incluido.
Conor O'Brien el
@ CᴏɴᴏʀO'Bʀɪᴇɴ eh ok. funciona en REPL por alguna razón
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");}}

Véalo funcionar , con la excepción de acceso no autorizado a archivos.

Registro de cambios

Rev2

  • Se eliminó el espacio de nombres innecesario
  • Se cambió el nombre de la función a Principal (porque de lo contrario no se detectará como función principal)
  • usingDirectiva eliminada (gracias Jean Lourenço )

Rev3

  • Se eliminó el espacio que se colaba.

C # (sin repetitivo), 47 bytes

void M(){File.WriteAllText("f","Hello World");}
Bart van Nierop
fuente
Puede guardar algunos bytes eliminando el uso y agregándolo directamente al método: System.IO.File.WriteAllText [...]
Jean Lourenço
@ JeanLourenço Gracias. Tuve eso originalmente y luego lo cambié por razones desconocidas.
Bart van Nierop
2

R, 38 36 35 bytes

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

¡Me gusta cómo el archivo creado no tiene nombre! ¡Es .txtcualquier cosa, de hecho!

-2 bytes gracias al comentario de @PEAR!
-1 bytes gracias a @BartvanNierop!

Este código producirá un archivo sin nombre.

Frédéric
fuente
1
¿Es realmente necesario el '.txt'? Las terminaciones de archivos son solo para el usuario. Un solo personaje podría ser suficiente para mí.
PERA
1
No conozco R, pero ¿no podría eliminar otro byte, como sugiere la @ PEAR, simplemente nombrando el archivo "a"?
Bart van Nierop
2

Bash, 18 bytes

echo Hello World>a
vikarjramun
fuente
1

Python, 34 bytes

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

Salidas a un archivo llamado h.

Monja permeable
fuente
1

APLX , 15 bytes

'Hello World'1

Crea un archivo de componente APL que contiene solo un componente; la cadena deseada Se puede volver a leer con:

      'Hello World'1
Hello World
Adán
fuente
1

Gema, 28 personajes

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

Ejecución de muestra:

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

bash-4.3$ cat o
Hello World
hombre trabajando
fuente
1

Raqueta, 43 bytes

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

Julia, 47 bytes

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

Intenté usarlo writedlm, pero no funcionó.

Mama Fun Roll
fuente
1

C, 37 bytes

main(){system("echo Hello World>o");}
Homero Simpson
fuente
1

Perl 6 ,  27  23 bytes

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

Java 7, 100 95 bytes

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

O si desea cerrar el escritor después de usarlo ( 101 bytes ):

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

Sin golf:

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
Kevin Cruijssen
fuente
Java es mi idioma favorito, pero Jesucristo, es gracioso lo malo que es un lenguaje de golf jaja
Shaun Wild
44
@AlanTuning hecho. xD Trabajo con Java en el trabajo, y es divertido codificar golf en Java. NUNCA podrá ganar un desafío de código de golf aquí usando Java, pero sigue siendo divertido escribir el código de Java lo más corto posible.
Kevin Cruijssen
2
bueno, puedes simplementevoid f()throws Exception{new java.io.PrintWriter("x").print("Hello World");}
cliffroot
java.io.Writer p=new java.io.PrintWriterte ahorra algunos personajes más.
Frozn
@cliffroot Hmm, intenté eso inicialmente, pero no parecía escribir nada en el disco. Lo intentaré de nuevo mañana, actualmente no tengo un IDE y la E / S de archivo no funciona en ideone.
Kevin Cruijssen
1

eacal , 26 bytes

write a string Hello World

Esto writees string Hello Worldpara archivar a, creándolo si no está presente. Básicamente:

write <fileName> <exec>

y

string <params to convert to string>

Ejecute el programa como:

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

J, 21 bytes

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

Esto escribe en un archivo oen el directorio actual o, si no se llama desde un archivo, en su j64-804archivo. 1!:3es la escritura foránea y <'o'es el nombre del archivo en caja (los nombres de archivo deben estar en caja). El LHS es la cadena para escribir.

Conor O'Brien
fuente
1

JavaScript, 89 bytes

Este código fue probado en Chrome. En otros navegadores, el elemento debe estar en el documento para que el método de clic funcione.

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