Buat dan tulis ke file

11

Tantangan

Buat file baru dan tulis stringnya Hello World.

Batasan

  • Tantangan Anda harus menulis ke file di disk, di sistem file.

  • File tersebut mungkin bukan file log yang dihasilkan selama operasi normal penerjemah.

  • File harus hanya berisi string Hello World. Itu diizinkan untuk mengandung baris baru atau spasi kosong minimal. Tidak ada konten lain.

  • Tidak ada bendera / pipa baris perintah (dll) yang diizinkan, kecuali bila perlu untuk menjalankan program. (mis. perl -p)

Catatan

  • Ini adalah , sehingga program terpendek dalam byte menang.

  • Ikuti semangat, bukan surat, aturan.

dkudriavtsev
sumber
Apakah membuntuti baris baru tidak apa-apa?
Winny
@ Winny ya, tidak apa
dkudriavtsev
Apakah nama file bagian dari isi file?
CousinCocaine

Jawaban:

1

Pyth, 14 byte

.w"Hello World

Output ke file yang disebut o.txt.

Gagang pintu
sumber
24

Python 2, 32 byte

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

Ya, ini adalah python yang valid .

xsot
sumber
1
Wow. Penjelasan?
James
1
@DrGreenEggsandIronMan sepertinya trik utama adalah bagaimana *membagi iterable menjadi argumen individual dalam suatu fungsi, jadi open(*"ww")jadilah open("w","w").
Nilai Tinta
7
@ValueInk Sebenarnya trik utama adalah penggunaan pernyataan cetak yang diperluas yang jarang terlihat di alam liar.
xsot
1
Itu memang trik yang keren, tetapi jika bukan karena *"ww"trik Anda, Anda akan terikat dengan jawaban Python lain di sini, yang menggunakan open(...).write(...)sebaliknya untuk jumlah byte yang sama
Nilai Tinta
Ups, saya bahkan tidak menyadarinya.
xsot
8

Haskell, 25 byte

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

zsh, 17 byte

<<<Hello\ World>x

Output ke file yang disebut x.

Gagang pintu
sumber
Bisakah Anda menafsirkannya >sebagai pipa?
CousinCocaine
Bagaimana dengan>Hello\ World
CousinCocaine
5

Ruby, 26 byte

Menulis ke file f.

open(?f,?w)<<"Hello World"
Nilai Tinta
sumber
5

Batch, 18 byte

echo Hello World>f
Shaun Wild
sumber
Saya pikir Anda memerlukan @, atau beri judul ulang ini (konsol).
Erik the Outgolfer
Itu @tidak perlu.
Shaun Wild
Coba simpan dalam file batch dan jalankan seperti itu (tidak langsung ketik perintah). Anda kemudian akan melihat bahwa Anda memerlukan @, karena perintah itu juga dicetak. Itu berarti Anda memiliki dua opsi: 1) Hapus jawaban ini karena akan menjadi dupe 2) Berganti nama sebagai (konsol).
Erik the Outgolfer
5

Vim, 15 + 2 == 17 byte

iHello World<esc>ZZ

+2 byte untuk meluncurkan ini dengan vim falih - alih vim. Selain itu, versi ini berfungsi untuk:

iHello World<C-o>ZZ

Jika meluncurkan vim seperti ini tidak diperbolehkan, ada juga:

Vim, 18 byte

iHello World<esc>:w f<cr>

Catatan: ini adalah polyglot. Hal yang sama berfungsi pada V, kecuali satu byte lebih pendek (karena <cr>pada akhirnya adalah implisit.)

James
sumber
Untuk apa `f <cr>` di bagian akhir?
Zwei
@Zwei 'f' adalah nama file, dan <cr>(yang merupakan mnemonic untuk "enter", satu byte) diperlukan untuk menjalankan perintah. Perintah yang dimulai dengan titik dua seperti mini shell di dalam vim, dan perintahnya :wadalah perintah untuk menulis ke file.
James
Tidak <esc>boleh dihitung sebagai 5 byte dan <cr>4, karena mereka harus diketik sepenuhnya?
Bart van Nierop
@ BartvanNierop Tidak, <esc>hanya notasi untuk "The escape key", yaitu 0x1B, dan <cr>notasi untuk "The Carriage Return key" yang0x0B
James
1
Baiklah pertama, ada preseden untuk mencetak vim dengan penekanan tombol == byte , tetapi kedua, ada beberapa cara untuk menulis ini dalam "kode" vim tanpa menggunakan notasi vim-key. Misalnya, jika Anda menggunakan <C-v>untuk memasukkan karakter escape literal dan carriage literal return, maka Anda dapat menetapkan semua stroke ini ke makro, dan jalankan dengan cara itu. Anda juga bisa melakukannya dalam vimscript dengan normal 'iHello World^[:w f^Mbagaimana vim menampilkannya , bukan bagaimana Anda memasukkannya. ^[dan ^Mkeduanya satu byte.
James
4

Batch, 19 byte

@echo Hello World>o
Neil
sumber
Tidak yakin apakah itu dianggap salah, tetapi menampilkan "Hello World" dan baris baru ke file, bukan hanya "Hello World"
brianush1
Apa gunanya '@'?
PEAR
@ PEAR Ini mencegah perintah agar tidak di echo ke STDOUT.
Neil
@ brianush1 Sepertinya tidak salah, rupanya.
Erik the Outgolfer
3

C, 44 byte

main(){fputs("Hello World",fopen("o","w"));}
orlp
sumber
1
Ini akan segfault pada beberapa sistem tanpa#include <stdio.h>
Steven Penny
@ Svenvenenny Selama ada sistem / kompiler di mana dijamin tidak akan segfault, itu bagus. Jawaban umumnya tidak harus portabel.
Martin Ender
@ SevenPenny Dan sekarang sudah.
orlp
3

PowerShell, 15 byte

"Hello World">o

>mengalihkan string ke file yang disebut odi direktori saat ini.

Ben Owen
sumber
2

Dyalog APL , 19 bytes

NPUT'Hello World'

Membuat file dengan nama dan konten "Hello World".

Adm
sumber
2

ed, 19 karakter

i
Hello World
.
w o

Contoh dijalankan:

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

bash-4.3$ cat o
Hello World
manatwork
sumber
2

MATL , 15 byte

'Hello World'Z#

Ini menciptakan file yang dipanggil inoutdan menulis string ke sana.

Luis Mendo
sumber
2

K, 20 Bytes

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

Konfirmasi;

    mmm@chromozorz:~/q$ cat f.txt 
    Hello World
Chromozorz
sumber
Karena belum ada yang mengatakannya, selamat datang di Programming Puzzles & Code Golf.
Erik the Outgolfer
Sangat dihargai!
Chromozorz
BAIK. Saya juga berpikir bahwa Anda memiliki ruang kepemimpinan tambahan. Saya akan mengedit spasi jika Anda mau (saya tidak tahu apakah itu sengaja ditempatkan, tapi saya pikir itu tidak disengaja.)
Erik the Outgolfer
2

Clojure, 23 byte

#(spit"x""Hello World")

Fungsi anonim yang membuat file dipanggil xdan ditulis di Hello Worldsana.

cliffroot
sumber
2

Node.js, 42 byte

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

Saya rasa ini tidak perlu penjelasan

Node.js REPL, 31 byte

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

untuk beberapa alasan dalam balasan Anda tidak perlu memasukkan fs

Downgoat
sumber
Saya pikir ini tidak berhasil. Agar itu berfungsi, Anda perlu require("fs").writeFile("o","Hello World"). Kalau tidak, fs tidak termasuk.
Conor O'Brien
@ CᴏɴᴏʀO'Bʀɪᴇɴ ya ok. bekerja di REPL karena beberapa alasan
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");}}

Lihat berfungsi , dengan pengecualian untuk akses file tidak sah.

Changelog

Rev2

  • Namespace yang tidak perlu dihapus
  • Mengubah nama fungsi menjadi Utama (karena jika tidak maka tidak akan terdeteksi sebagai fungsi utama)
  • usingArahan yang dihapus (terima kasih Jean Lourenço )

Rev3

  • Ruang kosong yang menyelinap masuk.

C # (tanpa boilerplate), 47 byte

void M(){File.WriteAllText("f","Hello World");}
Bart van Nierop
sumber
Anda dapat menyimpan beberapa byte dengan menghapus penggunaan dan menambahkannya langsung ke metode: System.IO.File.WriteAllText [...]
Jean Lourenço
@ JeanLourenço Terima kasih. Saya memiliki itu awalnya dan kemudian mengubahnya karena alasan yang tidak diketahui.
Bart van Nierop
2

R, 38 36 35 byte

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

Saya suka bagaimana file yang dibuat tidak memiliki nama! Sebenarnya .txtapa saja !

-2 byte terima kasih pada komentar @PEAR!
-1 byte, terima kasih kepada @BartvanNierop!

Kode ini akan menghasilkan file tanpa nama.

Frédéric
sumber
1
Apakah '.txt' benar-benar diperlukan? Ujung file hanya untuk pengguna. Satu karakter mungkin cukup bagi saya.
PEAR
1
Saya tidak tahu R, tetapi bisakah Anda tidak mencukur byte lain, seperti saran @ PEAR, hanya dengan memberi nama file "a"?
Bart van Nierop
2

Bash, 18 byte

echo Hello World>a
vikarjramun
sumber
1

Python, 34 byte

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

Output ke file yang disebut h.

Biarawati Bocor
sumber
1

APLX , 15 byte

'Hello World'1

Membuat file komponen APL yang hanya berisi satu komponen; string yang diinginkan. Itu dapat dibaca kembali dengan:

      'Hello World'1
Hello World
Adm
sumber
1

Gema, 28 karakter

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

Contoh dijalankan:

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

bash-4.3$ cat o
Hello World
manatwork
sumber
1

Racket, 43 byte

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

Julia, 47 byte

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

Saya mencoba menggunakan writedlm, tetapi tidak berhasil.

Mama Fun Roll
sumber
1

C, 37 byte

main(){system("echo Hello World>o");}
Homer Simpson
sumber
1

Perl 6 ,  27  23 byte

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

Java 7, 100 95 byte

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

Atau jika Anda ingin menutup penulis setelah menggunakannya ( 101 byte ):

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

Tidak Disatukan:

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){
    }
  }
}

Pemakaian:

java -jar Main.jar
Kevin Cruijssen
sumber
Jawa adalah bahasa favorit saya tetapi yesus kristus itu kocak betapa buruknya bahasa golf itu haha
Shaun Wild
4
@AlanTuning Memang. xD Saya bekerja dengan Java di tempat kerja, dan menyenangkan untuk bermain golf di Jawa. Anda TIDAK akan pernah bisa memenangkan tantangan kode-golf di sini menggunakan Java, tetapi masih menyenangkan untuk menulis kode Java sesingkat mungkin.
Kevin Cruijssen
2
baik, Anda bisavoid f()throws Exception{new java.io.PrintWriter("x").print("Hello World");}
cliffroot
java.io.Writer p=new java.io.PrintWritermenghemat lebih banyak karakter.
Frozn
@cliffroot Hmm, saya mencobanya pada awalnya, tetapi sepertinya tidak menulis apa pun ke disk. Akan mencoba lagi besok, saat ini saya tidak memiliki IDE dan file I / O tidak berfungsi di ideone.
Kevin Cruijssen
1

eacal , 26 byte

write a string Hello World

Ini writesa string Hello Worldke file a, menciptakan itu jika tidak hadir. Pada dasarnya:

write <fileName> <exec>

dan

string <params to convert to string>

Jalankan program sebagai:

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

J, 21 byte

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

Ini menulis ke file odi direktori saat ini, atau, jika tidak dipanggil dari file, di j64-804file Anda . 1!:3adalah menulis asing, dan <'o'merupakan nama file kotak (nama file harus kotak). LHS adalah string untuk menulis.

Conor O'Brien
sumber
1

JavaScript, 89 byte

Kode ini diuji di Chrome. Di browser lain, elemen harus ada dalam dokumen agar metode klik berfungsi.

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