Utwórz i zapisz do pliku

11

Wyzwanie

Utwórz nowy plik i zapisz Hello Worlddo niego ciąg .

Ograniczenia

  • Wyzwanie musi zostać zapisane w pliku na dysku w systemie plików.

  • Plik ten może nie być plikiem dziennika generowanym podczas normalnej pracy interpretera.

  • Plik musi zawierać tylko ciąg znaków Hello World. Dozwolone jest, aby zawierała końcowy znak nowej linii lub minimalne białe znaki. Brak innych treści.

  • Niedozwolone są flagi / potoki wiersza polecenia (itp.), Chyba że jest to konieczne do uruchomienia programu. (np. perl -p)

Notatki

  • To jest , więc wygrywa najkrótszy program w bajtach.

  • Postępuj zgodnie z duchem, a nie literą zasad.

dkudriavtsev
źródło
Czy trailing newline jest w porządku?
Winny
@Winny tak, jest ok
dkudriavtsev
Czy nazwa pliku jest częścią zawartości pliku?
CousinCocaine,

Odpowiedzi:

1

Pyth, 14 bajtów

.w"Hello World

Dane wyjściowe do pliku o nazwie o.txt.

Klamka
źródło
24

Python 2, 32 bajty

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

Tak, to jest poprawny python .

xsot
źródło
1
Łał Wyjaśnienie?
James
1
@DrGreenEggsandIronMan wygląda na to, że główna sztuczka polega na tym, w jaki sposób *można podzielić iterowalną funkcję na poszczególne argumenty w funkcji, więc open(*"ww")staje się open("w","w").
Wartość tuszu
7
@ValueInk Właściwie główną sztuczką jest użycie instrukcji o rozszerzonym wydruku, która jest rzadko spotykana na wolności.
xsot
1
To jest naprawdę fajna sztuczka, ale gdyby nie twoja *"ww"sztuczka, powiązałbyś z inną odpowiedzią w Pythonie, która używa open(...).write(...)zamiast tego tej samej liczby bajtów
wartość Ink
Ups, nawet nie zdawałem sobie z tego sprawy.
xsot
8

Haskell, 25 bajtów

writeFile"o""Hello World"
Anders Kaseorg
źródło
6

zsh, 17 bajtów

<<<Hello\ World>x

Dane wyjściowe do pliku o nazwie x.

Klamka
źródło
Czy potrafisz interpretować to >jako fajkę?
CousinCocaine,
Co powiesz na>Hello\ World
CousinCocaine,
5

Rubinowy, 26 bajtów

Zapisuje do pliku f.

open(?f,?w)<<"Hello World"
Wartość tuszu
źródło
5

Partia, 18 bajtów

echo Hello World>f
Shaun Wild
źródło
Myślę, że potrzebujesz @lub zmień tytuł tego jako (konsola).
Erik the Outgolfer
To @nie jest konieczne.
Shaun Wild
Spróbuj zapisać go w pliku wsadowym i uruchom jako taki (nie wpisuj bezpośrednio polecenia). Zobaczysz wtedy, że potrzebujesz @, ponieważ polecenie jest również drukowane w inny sposób. Oznacza to, że masz dwie opcje: 1) Usuń tę odpowiedź, ponieważ będzie to dupe 2) Zmień etykietę jako (konsola).
Erik the Outgolfer
5

Vim, 15 + 2 == 17 bajtów

iHello World<esc>ZZ

+2 bajty do uruchomienia tego z vim fzamiast vim. Dodatkowo ta wersja działa na:

iHello World<C-o>ZZ

Jeśli uruchamianie vima w ten sposób jest niedozwolone, dostępne są również:

Vim, 18 bajtów

iHello World<esc>:w f<cr>

Uwaga dodatkowa: jest to poliglot. To samo działa w V, z tym wyjątkiem, że jest o jeden bajt krótszy (ponieważ <cr>koniec jest domyślny).

James
źródło
Po co jest `f <cr>` na końcu?
Zwei
@Zwei 'f' to nazwa pliku, a <cr>(który jest mnemonikiem dla „enter”, jeden bajt) jest niezbędny do uruchomienia polecenia. Polecenia rozpoczynające się dwukropkiem są jak mini-skorupa w vimie, a polecenie :wto polecenie zapisu do pliku.
James
Czy <esc>nie należy ich liczyć jako 5 bajtów i <cr>jako 4, ponieważ należy je w pełni wpisać?
Bart van Nierop
@BartvanNierop Nie, <esc>jest po prostu notacją dla „klawisza ucieczki”, która jest 0x1Bi <cr>jest notacją dla „Klucz powrotu karetki”, którym jest0x0B
James
1
Cóż, po pierwsze, istnieje precedens, aby oceniać vima za pomocą naciśnięcia klawisza == bajtów , ale po drugie, istnieje kilka sposobów, aby napisać to w „kodzie” vima bez użycia notacji klucza vim. Na przykład, jeśli <C-v>wstawisz dosłowny znak zmiany znaczenia i dosłowny znak powrotu karetki, możesz przypisać wszystkie te obrysy do makra i uruchomić go w ten sposób. Możesz to również zrobić w vimscript, za pomocą normal 'iHello World^[:w f^Mktórego vim wyświetla go , a nie jak go wpisać. ^[i ^Moba są jednym bajtem.
James
4

Partia, 19 bajtów

@echo Hello World>o
Neil
źródło
Nie jestem pewien, czy jest to błędne, ale wyświetla „Hello World” i nową linię do pliku, a nie po prostu „Hello World”
brianush1,
Do czego służy „@”?
PEAR,
@PEAR Zapobiega echem polecenia do STDOUT.
Neil
@ brianush1 Najwyraźniej nie liczy się to jako błąd.
Erik the Outgolfer
3

C, 44 bajty

main(){fputs("Hello World",fopen("o","w"));}
orlp
źródło
1
Spowoduje to segfault w niektórych systemach bez#include <stdio.h>
Steven Penny
@StevenPenny Dopóki istnieje system / kompilator, w którym gwarantuje się, że nie ulegnie awarii, to w porządku. Odpowiedzi na ogół nie muszą być przenośne.
Martin Ender
@StevenPenny A teraz ma.
orlp
3

PowerShell, 15 bajtów

"Hello World">o

>przekierowuje ciąg do pliku wywołanego ow bieżącym katalogu.

Ben Owen
źródło
2

ed, 19 znaków

i
Hello World
.
w o

Przykładowy przebieg:

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

bash-4.3$ cat o
Hello World
człowiek w pracy
źródło
2

MATL , 15 bajtów

'Hello World'Z#

Spowoduje to utworzenie pliku o nazwie inouti zapisanie do niego ciągu.

Luis Mendo
źródło
2

K, 20 bajtów

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

Potwierdzenie;

    mmm@chromozorz:~/q$ cat f.txt 
    Hello World
Chromozorz
źródło
Ponieważ nikt tego jeszcze nie powiedział, zapraszamy do programowania puzzli i golfa kodowego.
Erik the Outgolfer
Bardzo mile widziane!
Chromozorz
DOBRZE. Myślę też, że masz dodatkowe wiodące miejsca.
Wyedytuję
2

Clojure, 23 bajty

#(spit"x""Hello World")

Anonimowa funkcja, która tworzy wywołany plik xi Hello Worldtam zapisuje .

Cliffroot
źródło
2

Node.js, 42 bajty

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

nie sądzę, że to wymaga wyjaśnienia

Node.js REPL, 31 bajtów

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

z jakiegoś powodu w replice nie musisz dołączać fs

Downgoat
źródło
Nie sądzę, że to działa. Aby to zadziałało, potrzebujesz require("fs").writeFile("o","Hello World"). W przeciwnym razie fs nie jest uwzględniony.
Conor O'Brien
@ CᴏɴᴏʀO'Bʀɪᴇɴ huh ok. z jakiegoś powodu działa w REPL
Downgoat
2

DO#, 93 77 76 bajtów

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

Zobacz, jak działa , z wyjątkiem nieautoryzowanego dostępu do plików.

Dziennik zmian

Rev2

  • Usunięto niepotrzebną przestrzeń nazw
  • Zmieniono nazwę funkcji na główną (ponieważ w przeciwnym razie nie zostanie rozpoznana jako funkcja główna)
  • Usunięto usingdyrektywę (dzięki Jean Lourenço )

Rev3

  • Usunięto miejsce, które się zakradło.

C # (bez płyty grzewczej), 47 bajtów

void M(){File.WriteAllText("f","Hello World");}
Bart van Nierop
źródło
Możesz zapisać niektóre bajty, usuwając użycie i dołączając go bezpośrednio do metody: System.IO.File.WriteAllText [...]
Jean Lourenço
@ JeanLourenço Dzięki. Miałem to pierwotnie, a następnie zmieniłem z nieznanych przyczyn.
Bart van Nierop
2

R, 38 36 35 bajtów

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

Podoba mi się, jak utworzony plik nie ma nazwy! Tak naprawdę to .txtwszystko!

-2 bajty dzięki uwadze @PEAR!
-1 bajtów dzięki @BartvanNierop!

Ten kod utworzy plik bez nazwy.

Frédéric
źródło
1
Czy plik „.txt” jest naprawdę potrzebny? Zakończenia plików są tylko dla użytkownika. Wystarczy jedna postać.
PEAR
1
Nie znam R, ale czy nie możesz golić innego bajtu, jak sugeruje @ PEAR, po prostu nazywając plik "a"?
Bart van Nierop
2

Bash, 18 bajtów

echo Hello World>a
vikarjramun
źródło
1

Python, 34 bajty

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

Dane wyjściowe do pliku o nazwie h.

Leaky Nun
źródło
1

APLX , 15 bajtów

'Hello World'1

Tworzy plik komponentu APL zawierający tylko jeden komponent; pożądany ciąg. Można go odczytać za pomocą:

      'Hello World'1
Hello World
Adám
źródło
1

Gema, 28 znaków

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

Przykładowy przebieg:

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

bash-4.3$ cat o
Hello World
człowiek w pracy
źródło
1

Rakieta, 43 bajty

(display"Hello World"(open-output-file"f"))
Winny
źródło
1

Julia, 47 bajtów

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

Próbowałem użyć writedlm, ale to nie wyszło.

Mama Fun Roll
źródło
1

C, 37 bajtów

main(){system("echo Hello World>o");}
Homer Simpson
źródło
1

Perl 6 ,  27  23 bajtów

'o'.IO.spurt: 'Hello World'
spurt 'o','Hello World'
Brad Gilbert b2gills
źródło
1

Java 7, 100 95 bajtów

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

Lub jeśli chcesz zamknąć program piszący po jego użyciu ( 101 bajtów ):

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

Nie golfowany:

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

Stosowanie:

java -jar Main.jar
Kevin Cruijssen
źródło
Jawa jest moim ulubionym językiem, ale jezus chrystus to zabawne, jak kiepski jest język golfa, haha
Shaun Wild
4
@AlanTuning Rzeczywiście. xD Pracuję z Javą w pracy i fajnie jest grać w golfa w Javie. NIGDY nie będziesz w stanie wygrać tutaj golfowego wyzwania przy użyciu Javy, ale nadal fajnie jest napisać kod Java tak krótki, jak to możliwe.
Kevin Cruijssen
2
Cóż, możesz po prostuvoid f()throws Exception{new java.io.PrintWriter("x").print("Hello World");}
Cliffroot
java.io.Writer p=new java.io.PrintWriteroszczędza ci więcej postaci.
Frozn
@cliffroot Hmm, próbowałem to początkowo, ale wydawało się, że nic nie zapisywało na dysk. Spróbuję ponownie jutro, obecnie nie mam IDE, a plik I / O nie działa w ideone.
Kevin Cruijssen
1

eacal , 26 bajtów

write a string Hello World

To writesa string Hello Worlddo pliku a, tworząc go, jeśli nie występuje. Gruntownie:

write <fileName> <exec>

i

string <params to convert to string>

Uruchom program jako:

λ node eacal.js writeFile
Conor O'Brien
źródło
1

J, 21 bajtów

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

Spowoduje to zapisanie pliku ow bieżącym katalogu lub, jeśli nie zostanie wywołany z pliku, w j64-804pliku. 1!:3to obcy zapis i <'o'nazwa pliku w ramce (nazwy plików muszą być w ramce). LHS jest ciągiem do napisania.

Conor O'Brien
źródło
1

JavaScript, 89 bajtów

Ten kod został przetestowany w Chrome. W innych przeglądarkach element musi znajdować się w dokumencie, aby metoda kliknięcia działała.

a=document.createElement("a");a.href="data:text/plain,Hello World";a.download=1;a.click()
kamoroso94
źródło