Dosya oluşturma ve dosyaya yazma


11

Meydan okuma

Yeni bir dosya oluşturun ve dizeyi Hello Worldona yazın.

Kısıtlamalar

  • Zorluğunuz diskteki, dosya sistemindeki bir dosyaya yazılmalıdır.

  • Dosya, yorumlayıcının normal çalışması sırasında oluşturulan bir günlük dosyası olmayabilir.

  • Dosya yalnızca dizeyi içermelidir Hello World. Sondaki satırsonu veya minimum boşluk içermesine izin verilir. Başka içerik yok.

  • Programı çalıştırmak için gereken durumlar dışında komut satırı işaretlerine / borularına (vb.) İzin verilmez. (ör. perl -p)

notlar

  • Bu , bayt en kısa program kazanır.

  • Kuralların harfine değil ruhuna uyun.


Sondaki satırsonu iyi mi?
Winny

@Winny evet, sorun değil
dkudriavtsev

Dosya adı dosyanın içeriğinin bir parçası mı?
CousinCocaine

Yanıtlar:



24

Python 2, 32 bayt

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

Evet, bu geçerli bir piton .


1
Woah. Açıklama?
James

1
@DrGreenEggsandIronMan ana hile gibi *bir yinelenebilir bir işlevi bir bağımsız değişkenlere nasıl ayrılabilir, öyle open(*"ww")olur open("w","w").
Değer Mürekkep

7
@ValueInk Aslında ana hile, vahşi doğada nadiren görülen genişletilmiş yazdırma ifadesinin kullanılmasıdır.
xsot

1
Bu gerçekten harika bir hile, ancak hile için olmasaydı, *"ww"burada open(...).write(...)aynı bayt sayısı için kullanılan diğer Python cevabı ile bağlanırdınız
Value Ink

Hata! Bunun farkında bile değildim.
xsot




5

Toplu, 18 bayt

echo Hello World>f

Sanırım buna bir @(veya konsol) adı vermelisiniz .
Outgolfer Erik

@Gerekli değildir.
Shaun Wild

Bir toplu iş dosyasına kaydetmeyi deneyin ve bu şekilde çalıştırın (doğrudan komutu yazmayın). Daha sonra ihtiyacınız olduğunu göreceksiniz @, çünkü komut başka şekilde yazdırılır. Bu, iki seçeneğiniz olduğu anlamına gelir: 1) Bu yanıtı silin çünkü bir dupe olacaktır 2) Yeniden etiketle (konsol).
Outgolfer Erik

5

Vim, 15 + 2 == 17 bayt

iHello World<esc>ZZ

vim fBunun yerine bunu başlatmak için +2 bayt vim. Ayrıca, bu sürüm aşağıdakilere çalışır:

iHello World<C-o>ZZ

Vim'in böyle başlatılmasına izin verilmiyorsa, ayrıca:

Vim, 18 bayt

iHello World<esc>:w f<cr>

Yan not: bu bir çok dilli. Aynı şey V'de de çalışır, ancak bir bayt daha kısadır ( <cr>sonunda örtük olduğu için).


Sonunda `` f <cr> '' ne işe yarıyor?
Zwei

@Zwei 'f' dosyanın adıdır <cr>ve komutu çalıştırmak için ("enter" için bir anımsatıcıdır, tek bir bayt) gereklidir. İki nokta üst üste ile başlayan komutlar vim içindeki mini kabuk gibidir ve komut :wbir dosyaya yazma komutudur.
James

Should <esc>5 bayt olarak ve sayılmayacaktır <cr>tam yazılmasını beri, 4 olarak?
Bart van Nierop

@BartvanNierop Hayır, <esc>ise "kaçış tuşu", sadece gösterim olduğunu 0x1Bve <cr>bir "Satır Başı tuşu" için notasyonu olan0x0B
James

1
İlk önce, vim tuş vuruşları == bayt ile skorlamanın bir emsali var , ancak ikincisi, bunu vim-key notasyonu kullanmadan vim "kodunda" yazmanın birkaç yolu var. Örneğin, <C-v>değişmez bir kaçış karakteri ve değişmez bir satır başı eklemek için kullanıyorsanız , bu konturların tümünü bir makroya atayabilir ve bu şekilde çalıştırabilirsiniz. Ayrıca vimscript'te de yapabilirsiniz, bu da vim'in normal 'iHello World^[:w f^Mnasıl görüntülendiği , nasıl girdiğiniz değil. ^[ve ^Mher ikisi de bir bayt.
James


3

C, 44 bayt

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

1
Bu, bazı sistemlerde segmentsiz olacak#include <stdio.h>
Steven Penny

@StevenPenny Segfault'un garanti edilmediği bir sistem / derleyici olduğu sürece sorun değil. Yanıtların genellikle taşınabilir olması gerekmez.
Martin Ender

@StevenPenny Ve şimdi var.
orlp

3

PowerShell, 15 bayt

"Hello World">o

>dizeyi ogeçerli dizinde çağrılan bir dosyaya yeniden yönlendirir .



2

ed, 19 karakter

i
Hello World
.
w o

Örnek çalışma:

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

bash-4.3$ cat o
Hello World

2

MATL , 15 bayt

'Hello World'Z#

Bu, adlı bir dosya oluşturur inoutve dizeyi ona yazar.


2

K, 20 Bayt

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

Onayla;

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

Henüz kimse söylemediğinden Programming Puzzles & Code Golf'a hoş geldiniz.
Outgolfer Erik

Çok takdir!
Chromozorz

TAMAM. Yine de ekstra önde gelen alanlarınız olduğunu düşünüyorum. İsterseniz boşlukları düzenleyeceğim (kasıtlı olarak yerleştirilip yerleştirilmediklerini bilmiyorum, ama kasıtsız olduğunu düşünüyorum.)
Outgolfer Erik

2

Clojure, 23 bayt

#(spit"x""Hello World")

Anonim işlev çağrılır xve Hello Worldorada dosya oluşturur .


2

Node.js, 42 bayt

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

bunun açıklanması gerektiğini düşünmüyorum

Node.js REPL, 31 bayt

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

bazı nedenlerden dolayı repl eklemek gerekmez fs


Bunun işe yaradığını sanmıyorum. Çalışması için ihtiyacınız olacak require("fs").writeFile("o","Hello World"). Aksi takdirde, fs dahil değildir.
Conor O'Brien

@ CᴏɴᴏʀO'Bʀɪᴇɴ huh tamam. bir nedenden dolayı
REPL'de

2

C #, 93 77 76 bayt

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

Yetkisiz dosya erişimi hariç, çalıştığını görün .

Değişiklikler

Rev2

  • Gereksiz ad alanı kaldırıldı
  • İşlev adı Main olarak değiştirildi (aksi takdirde ana işlev olarak algılanmayacak)
  • usingYönerge kaldırıldı (teşekkürler Jean Lourenço )

3 Rev

  • Gizlice giren alan kaldırıldı.

C # (kaynatma plakası olmadan), 47 bayt

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

Bazı baytları kullanarak kaldırarak ve doğrudan yönteme ekleyerek kaydedebilirsiniz: System.IO.File.WriteAllText [...]
Jean Lourenço

@ JeanLourenço Teşekkürler. İlk başta bunu yaptım ve sonra bilinmeyen nedenlerle değiştirdim.
Bart van Nierop

2

R, 38 36 35 bayt

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

Oluşturulan dosyanın nasıl bir ismi olmadığını seviyorum! Aslında sadece .txther şey!

@PEAR notu sayesinde -2 bayt! @BartvanNierop sayesinde
-1 bayt!

Bu kod, adı olmayan bir dosya oluşturur.


1
'.Txt' gerçekten gerekli mi? Dosya sonları yalnızca kullanıcı içindir. Tek bir karakter yeterli olabilir.
PEAR

1
R'yi bilmiyorum, ama sadece PEAR'ın önerisiyle olduğu gibi başka bir baytı tıraş edemez misiniz, sadece dosyayı adlandırarak "a"?
Bart van Nierop



1

APLX , 15 bayt

'Hello World'1

Yalnızca bir bileşen içeren bir APL bileşen dosyası oluşturur; istenen dize. Aşağıdakilerle okunabilir:

      'Hello World'1
Hello World

1

Gema, 28 karakter

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

Örnek çalışma:

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

bash-4.3$ cat o
Hello World

1

Raket, 43 bayt

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

1

Julia, 47 bayt

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

Kullanmayı denedim writedlm, ama işe yaramadı.




1

Java 7, 100 95 bayt

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

Veya yazarı kullandıktan sonra kapatmak isterseniz ( 101 bayt ):

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

Kullanımı:

java -jar Main.jar

Java benim en sevdiğim dildir ama İsa Mesih bir golf dilinin ne kadar kötü olduğunu haha
Shaun Wild

4
@AlanTuning Gerçekten. xD İş yerinde Java ile çalışıyorum ve Java'da kod golf oynamak çok eğlenceli. Java'yı kullanarak ASLA burada bir kod-golf mücadelesi kazanamayacaksınız, ancak Java kodunu olabildiğince kısa yazmak hala eğlenceli.
Kevin Cruijssen

2
iyi, sadecevoid f()throws Exception{new java.io.PrintWriter("x").print("Hello World");}
cliffroot

java.io.Writer p=new java.io.PrintWritersize daha fazla karakter kazandırır.
Frozn

@cliffroot Hmm, başlangıçta bunu denedim, ama diske bir şey yazmıyor gibiydi. Yarın tekrar deneyeceğim, şu anda IDE'm yok ve dosya G / Ç ideone'de çalışmıyor.
Kevin Cruijssen

1

eacal , 26 bayt

write a string Hello World

Bu writesa string Hello Worlddosyaya a, yoksa oluşturma. Temelde:

write <fileName> <exec>

ve

string <params to convert to string>

Programı şu şekilde çalıştırın:

λ node eacal.js writeFile

1

J, 21 bayt

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

Bu o, geçerli dizindeki bir dosyaya veya bir dosyadan çağrılmazsa dosyanızdaki bir j64-804dosyaya yazar. 1!:3yabancı yazma ve <'o'kutulu dosya adıdır (dosya adlarının kutulanması gerekir). LHS yazılacak dizedir.


1

JavaScript, 89 bayt

Bu kod Chrome'da test edildi. Diğer tarayıcılarda, tıklama yönteminin çalışması için öğenin belgede olması gerekir.

a=document.createElement("a");a.href="data:text/plain,Hello World";a.download=1;a.click()
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.