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.


Apakah membuntuti baris baru tidak apa-apa?
Winny

@ Winny ya, tidak apa
dkudriavtsev

Apakah nama file bagian dari isi file?
CousinCocaine

Jawaban:



24

Python 2, 32 byte

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

Ya, ini adalah python yang valid .


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




5

Batch, 18 byte

echo Hello World>f

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


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


3

C, 44 byte

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

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


3

PowerShell, 15 byte

"Hello World">o

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



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

2

MATL , 15 byte

'Hello World'Z#

Ini menciptakan file yang dipanggil inoutdan menulis string ke sana.


2

K, 20 Bytes

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

Konfirmasi;

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

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.


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


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

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.


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



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

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

1

Racket, 43 byte

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

1

Julia, 47 byte

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

Saya mencoba menggunakan writedlm, tetapi tidak berhasil.




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

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

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.


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()
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.