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.


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.


24

Python 2, 32 bajty

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

Tak, to jest poprawny python .


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




5

Partia, 18 bajtów

echo Hello World>f

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


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


3

C, 44 bajty

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

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.



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

2

MATL , 15 bajtów

'Hello World'Z#

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


2

K, 20 bajtów

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

Potwierdzenie;

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

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 .


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


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

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.


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


1

Python, 34 bajty

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

Dane wyjściowe do pliku o nazwie h.


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

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

1

Rakieta, 43 bajty

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

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.




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

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

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.


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()
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.