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.

dkudriavtsev
fonte
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:

1

Pitão, 14 bytes

.w"Hello World

Saídas para um arquivo chamado o.txt.

Maçaneta da porta
fonte
24

Python 2, 32 bytes

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

Sim, isso é python válido .

xsot
fonte
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
8

Haskell, 25 bytes

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

zsh, 17 bytes

<<<Hello\ World>x

Saídas para um arquivo chamado x.

Maçaneta da porta
fonte
Você pode interpretar o >como um cachimbo?
CousinCocaine
Que tal>Hello\ World
CousinCocaine
5

Ruby, 26 bytes

Grava no arquivo f.

open(?f,?w)<<"Hello World"
Value Ink
fonte
5

Lote, 18 bytes

echo Hello World>f
Shaun Wild
fonte
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).

James
fonte
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
4

Lote, 19 bytes

@echo Hello World>o
Neil
fonte
Não tenho certeza se isso conta como errado, mas ele gera "Olá Mundo" e uma nova linha para o arquivo, em vez de simplesmente "Olá Mundo"
brianush1
Para que serve o '@'?
PERA
@PEAR Impede que o comando seja repetido em STDOUT.
Neil
@ brianush1 Parece que não está errado.
Erik the Outgolfer
3

C, 44 bytes

main(){fputs("Hello World",fopen("o","w"));}
orlp
fonte
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.

Ben Owen
fonte
2

Dyalog APL , 19 bytes

NPUT'Hello World'

Cria um arquivo com o nome e o conteúdo "Hello World".

Adão
fonte
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
homem a trabalhar
fonte
2

MATL , 15 bytes

'Hello World'Z#

Isso cria um arquivo chamado inoute grava a string nele.

Luis Mendo
fonte
2

K, 20 bytes

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

Confirmação;

    mmm@chromozorz:~/q$ cat f.txt 
    Hello World
Chromozorz
fonte
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á.

cliffroot
fonte
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

Downgoat
fonte
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");}
Bart van Nierop
fonte
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.

Frédéric
fonte
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
2

Bash, 18 bytes

echo Hello World>a
vikarjramun
fonte
1

Python, 34 bytes

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

Saídas para um arquivo chamado h.

Freira Furada
fonte
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
Adão
fonte
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
homem a trabalhar
fonte
1

Raquete, 43 bytes

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

Julia, 47 bytes

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

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

Mama Fun Roll
fonte
1

C, 37 bytes

main(){system("echo Hello World>o");}
homersimpson
fonte
1

Perl 6 ,  27  23 bytes

'o'.IO.spurt: 'Hello World'
spurt 'o','Hello World'
Brad Gilbert b2gills
fonte
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
Kevin Cruijssen
fonte
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
Conor O'Brien
fonte
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.

Conor O'Brien
fonte
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()
kamoroso94
fonte