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.


¿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:



24

Python 2, 32 bytes

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

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


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




5

Lote, 18 bytes.

echo Hello World>f

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


¿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


3

C, 44 bytes

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

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.



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

2

MATL , 15 bytes

'Hello World'Z#

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


2

K, 20 bytes

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

Confirmación;

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

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


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


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

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.


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



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

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

1

Raqueta, 43 bytes

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

1

Julia, 47 bytes

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

Intenté usarlo writedlm, pero no funcionó.




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

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

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.


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()
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.