Criar e gravar em um arquivo


11

Desafio

Crie um novo arquivo e escreva a string Hello Worldnele.

Restrições

  • Seu desafio deve gravar em um arquivo em disco, no sistema de arquivos.

  • O arquivo pode não ser um arquivo de log gerado durante a operação normal do intérprete.

  • O arquivo deve conter apenas a sequência Hello World. É permitido conter uma nova linha à direita ou um espaço em branco mínimo. Nenhum outro conteúdo.

  • Nenhum sinalizador / linha de linha de comando (etc) é permitido, exceto quando necessário para executar o programa. (por exemplo perl -p)

Notas

  • Isso é , e o programa mais curto em bytes vence.

  • Siga o espírito, não a letra, das regras.


A nova linha à direita está boa?
Winny

@Winny sim, é ok
dkudriavtsev

Um nome de arquivo faz parte do conteúdo de um arquivo?
CousinCocaine

Respostas:



24

Python 2, 32 bytes

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

Sim, isso é python válido .


1
Woah. Explicação?
James

1
@DrGreenEggsandIronMan parece que o principal truque é como *dividir um iterável em argumentos individuais em uma função, e assim open(*"ww")se torna open("w","w").
Value Ink

7
@ValueInk Na verdade, o principal truque é o uso da declaração de impressão estendida, que raramente é vista na natureza.
Xsot #

1
Isso é realmente um truque legal, mas se não fosse para o seu *"ww"Você teria truque amarrado com a outra resposta Python aqui, que utiliza open(...).write(...)vez para a mesma contagem de bytes
Valor Ink

Opa, eu nem percebi isso.
xsot



5

Ruby, 26 bytes

Grava no arquivo f.

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

5

Lote, 18 bytes

echo Hello World>f

Eu acho que você precisa de @, ou renomeie isso como (console).
Erik the Outgolfer

O @não é necessário.
Shaun Wild

Tente salvá-lo em um arquivo em lotes e execute-o como tal (não digite o comando diretamente). Você verá que precisa do @, porque o comando também é impresso. Isso significa que você tem duas opções: 1) Exclua esta resposta, pois será um dupe 2) Altere novamente como (console).
Erik the Outgolfer

5

Vim, 15 + 2 == 17 bytes

iHello World<esc>ZZ

+2 bytes para iniciar isso com, em vim fvez de vim. Além disso, esta versão funciona para:

iHello World<C-o>ZZ

Se o lançamento do vim como este não for permitido, também haverá:

Vim, 18 bytes

iHello World<esc>:w f<cr>

Nota lateral: este é um poliglota. O mesmo funciona em V, exceto que é um byte mais curto (pois <cr>o final está implícito).


Para que serve o `f <cr>` no final?
Zwei

@Zwei 'f' é o nome do arquivo e o <cr>(que é um mnemônico para "enter", um único byte) é necessário para executar o comando. Comandos que começam com dois pontos são como um mini shell dentro do vim, e o comando :wé o comando para gravar em um arquivo.
James

<esc>Não deve ser contado como 5 bytes e <cr>como 4, pois eles precisam ser totalmente digitados?
Bart van Nierop

@BartvanNierop Não, <esc>é apenas a notação de "A chave de escape", que é 0x1B, e <cr>é notação para "A chave Carriage Return" que é0x0B
James

1
Bem, primeiro, existe um precedente para marcar o vim com pressionamentos de tecla == bytes , mas, segundo, existem várias maneiras de escrever isso no "código" do vim sem usar a notação de chave do vim. Por exemplo, se você <C-v>inserir um caractere de escape literal e um retorno de carro literal, poderá atribuir todos esses traços a uma macro e executá-lo dessa maneira. Você também pode fazer isso no vimscript, com o normal 'iHello World^[:w f^Mqual o vim o exibe , não como você o insere. ^[e ^Msão ambos um byte.
James


3

C, 44 bytes

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

1
Isso irá falhar em alguns sistemas sem#include <stdio.h>
Steven Penny

@StevenPenny Desde que exista um sistema / compilador em que seja garantido que não será falhado, tudo bem. As respostas geralmente não precisam ser portáteis.
Martin Ender

@StevenPenny E agora tem.
Orlp

3

PowerShell, 15 bytes

"Hello World">o

>redireciona a string para um arquivo chamado ono diretório atual.



2

ed, 19 caracteres

i
Hello World
.
w o

Exemplo de execução:

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#

Isso cria um arquivo chamado inoute grava a string nele.


2

K, 20 bytes

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

Confirmação;

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

Como ninguém disse isso ainda, seja bem-vindo ao Programming Puzzles & Code Golf.
Erik the Outgolfer

Muito apreciado!
Chromozorz 05/10

ESTÁ BEM. Eu também acho que você tem espaços extras de liderança. Vou editar os espaços fora se você quiser (eu não sei se eles são colocados intencionalmente, mas eu acho que não foi intencional.)
Erik o Outgolfer

2

Clojure, 23 bytes

#(spit"x""Hello World")

Função anônima que cria um arquivo chamado xe escreve Hello Worldlá.


2

Node.js, 42 bytes

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

eu não acho que isso precise de explicação

Node.js REPL, 31 bytes

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

por algum motivo em repl você não precisa incluir fs


Eu não acho que isso funciona. Para que funcione, você precisa require("fs").writeFile("o","Hello World"). Caso contrário, fs não será incluído.
Conor O'Brien

@ CᴏɴᴏʀO'Bʀɪᴇɴ hein ok. trabalha em REPL por algum motivo
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");}}

Veja como funciona , com uma exceção para acesso não autorizado a arquivos.

Changelog

Rev2

  • Removido espaço para nome desnecessário
  • Nome da função alterado para Main (porque, caso contrário, não será detectado como função principal)
  • usingDiretiva removida (obrigado Jean Lourenço )

Rev3

  • Removido o espaço que entrou furtivamente.

C # (sem clichê), 47 bytes

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

Você pode salvar alguns bytes removendo o uso e anexando-o diretamente ao método: System.IO.File.WriteAllText [...]
Jean Lourenço

@ JeanLourenço Obrigado. Eu tinha isso originalmente e depois mudei por motivos desconhecidos.
Bart van Nierop

2

R, 38 36 35 bytes

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

Eu gosto de como o arquivo criado não tem nome! É apenas .txtqualquer coisa, de fato!

-2 bytes graças à observação @PEAR!
-1 bytes graças a @BartvanNierop!

Este código produzirá um arquivo sem nome.


1
O '.txt' é realmente necessário? As terminações de arquivos são apenas para o usuário. Um único personagem pode me bastar.
PERA

1
Não conheço R, mas você não poderia cortar outro byte, como sugeriu a @ PEAR, simplesmente nomeando o arquivo "a"?
Bart van Nierop


1

Python, 34 bytes

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

Saídas para um arquivo chamado h.


1

APLX , 15 bytes

'Hello World'1

Cria um arquivo de componente APL contendo apenas um componente; a string desejada. Pode ser lido de volta com:

      'Hello World'1
Hello World

1

Gema, 28 caracteres

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

Exemplo de execução:

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

bash-4.3$ cat o
Hello World

1

Raquete, 43 bytes

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

1

Julia, 47 bytes

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

Eu tentei usar writedlm, mas não deu certo.




1

Java 7, 100 95 bytes

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

Ou se você deseja fechar o gravador depois de usá-lo ( 101 bytes ):

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 é a minha linguagem favorita, mas Jesus Cristo é hilário quão ruim uma golfe linguagem é haha
Shaun selvagem

4
@AlanTuning Indeed. xD Trabalho com Java no trabalho e é divertido codificar golfe em Java. NUNCA será capaz de vencer um desafio de código-golfe aqui usando Java, mas ainda é divertido escrever o código Java o mais curto possível.
Kevin Cruijssen

2
bem, você pode apenasvoid f()throws Exception{new java.io.PrintWriter("x").print("Hello World");}
cliffroot 01/08/16

java.io.Writer p=new java.io.PrintWritereconomiza mais alguns personagens.
Frozn 01/08/19

@cliffroot Hmm, eu tentei isso inicialmente, mas não parecia gravar nada no disco. Tentarei novamente amanhã, atualmente não tenho um IDE e a E / S de arquivo não funciona em ideone.
Kevin Cruijssen

1

eacal , 26 bytes

write a string Hello World

Isso é writeum string Hello Worldarquivo a, criando-o se não estiver presente. Basicamente:

write <fileName> <exec>

e

string <params to convert to string>

Execute o programa como:

λ node eacal.js writeFile

1

J, 21 bytes

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

Isso grava em um arquivo ono diretório atual ou, se não for chamado de um arquivo, no seu j64-804arquivo. 1!:3é a gravação estrangeira e <'o'é o nome do arquivo em caixa (os nomes dos arquivos precisam ser em caixa). O LHS é a string a ser escrita.


1

JavaScript, 89 bytes

Este código foi testado no Chrome. Em outros navegadores, o elemento deve estar no documento para que o método click funcione.

a=document.createElement("a");a.href="data:text/plain,Hello World";a.download=1;a.click()
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.