Créer et écrire dans un fichier

11

Défi

Créez un nouveau fichier et écrivez-y la chaîne Hello World.

Restrictions

  • Votre défi doit écrire dans un fichier sur le disque, dans le système de fichiers.

  • Le fichier peut ne pas être un fichier journal généré pendant le fonctionnement normal de l'interpréteur.

  • Le fichier ne doit contenir que la chaîne Hello World. Il est autorisé de contenir une nouvelle ligne de fin ou un espace minimal. Aucun autre contenu.

  • Aucun indicateur / canal de ligne de commande (etc.) n'est autorisé, sauf lorsque cela est nécessaire pour exécuter le programme. (par exemple perl -p)

Remarques

  • Il s'agit de , donc le programme le plus court en octets gagne.

  • Suivez l'esprit, pas la lettre, des règles.

dkudriavtsev
la source
La fin de la nouvelle ligne est-elle correcte?
Winny
@ Winin oui, c'est ok
dkudriavtsev
Un nom de fichier fait-il partie du contenu d'un fichier?
CousinCocaine

Réponses:

1

Pyth, 14 octets

.w"Hello World

Sorties vers un fichier appelé o.txt.

Poignée de porte
la source
24

Python 2, 32 octets

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

Oui, c'est du python valide .

xsot
la source
1
Woah. Explication?
James
1
@DrGreenEggsandIronMan il semble que l'astuce principale est de savoir comment *diviser un itérable en arguments individuels dans une fonction, open(*"ww")devient ainsi open("w","w").
Value Ink
7
@ValueInk En fait, l'astuce principale est l'utilisation de l'instruction d'impression étendue qui est rarement vue dans la nature.
xsot
1
C'est en effet une astuce sympa, mais sans votre *"ww"astuce, vous auriez lié avec l'autre réponse Python ici, qui utilise à la open(...).write(...)place pour le même nombre d'octets
Value Ink
Oups, je ne m'en suis même pas rendu compte.
xsot
8

Haskell, 25 octets

writeFile"o""Hello World"
Anders Kaseorg
la source
6

zsh, 17 octets

<<<Hello\ World>x

Sorties vers un fichier appelé x.

Poignée de porte
la source
Pouvez-vous interprété le >comme une pipe?
CousinCocaine
Qu'en est-il>Hello\ World
CousinCocaine
5

Rubis, 26 octets

Écrit dans le fichier f.

open(?f,?w)<<"Hello World"
Encre de valeur
la source
5

Lot, 18 octets

echo Hello World>f
Shaun Wild
la source
Je pense que vous avez besoin d'un @, ou renommer cela en (console).
Erik the Outgolfer
Ce @n'est pas nécessaire.
Shaun Wild du
Essayez de l'enregistrer dans un fichier de commandes et exécutez-le en tant que tel (ne saisissez pas directement la commande). Vous verrez alors que vous avez besoin de la @, car la commande est également imprimée. Cela signifie que vous avez deux options: 1) Supprimez cette réponse car ce sera une dupe 2) Relabel as (console).
Erik the Outgolfer
5

Vim, 15 + 2 == 17 octets

iHello World<esc>ZZ

+2 octets pour lancer ceci avec vim fau lieu de vim. De plus, cette version fonctionne pour:

iHello World<C-o>ZZ

Si le lancement de vim comme celui-ci n'est pas autorisé, il y a aussi:

Vim, 18 octets

iHello World<esc>:w f<cr>

Note latérale: c'est un polyglotte. La même chose fonctionne en V, sauf qu'il est un octet plus court (puisque le <cr>à la fin est implicite.)

James
la source
À quoi sert le «f <cr>» à la fin?
Zwei
@Zwei 'f' est le nom du fichier, et le <cr>(qui est un mnémonique pour "enter", un seul octet) est nécessaire pour exécuter la commande. Les commandes commençant par deux points sont comme un mini shell à l'intérieur de vim, et la commande :west la commande pour écrire dans un fichier.
James
Ne doivent <esc>pas être comptés comme 5 octets et <cr>comme 4, car ils doivent être entièrement saisis?
Bart van Nierop
@BartvanNierop Non, <esc>est juste une notation pour "La touche d'échappement", qui est 0x1B, et <cr>est une notation pour "La clé de retour du chariot" qui est0x0B
James
1
Eh bien tout d'abord, il existe un précédent pour marquer vim avec des frappes == octets , mais ensuite, il existe plusieurs façons d'écrire cela dans le "code" de vim sans utiliser la notation de clé vim. Par exemple, si vous utilisez <C-v>pour insérer un caractère d'échappement littéral et un retour chariot littéral, vous pouvez affecter tous ces traits à une macro et l'exécuter de cette façon. Vous pouvez également le faire dans vimscript, normal 'iHello World^[:w f^Mce qui est la façon dont vim l' affiche , pas comment vous l'entrez. ^[et ^Msont tous les deux d'un octet.
James
4

Lot, 19 octets

@echo Hello World>o
Neil
la source
Je ne sais pas si cela compte comme faux, mais il génère "Hello World" et une nouvelle ligne dans le fichier, plutôt que simplement "Hello World"
brianush1
À quoi sert le «@»?
PEAR
@PEAR Il empêche l'écho de la commande dans STDOUT.
Neil
@ brianush1 Cela ne compte pas comme faux, apparemment.
Erik the Outgolfer
3

C, 44 octets

main(){fputs("Hello World",fopen("o","w"));}
orlp
la source
1
Cela entraînera une défaillance sur certains systèmes sans#include <stdio.h>
Steven Penny
@StevenPenny Tant qu'il y a un système / compilateur où il est garanti de ne pas se tromper, c'est bien. Les réponses ne doivent généralement pas être portables.
Martin Ender
@StevenPenny Et maintenant c'est le cas.
orlp
3

PowerShell, 15 octets

"Hello World">o

>redirige la chaîne vers un fichier appelé odans le répertoire courant.

Ben Owen
la source
2

ed, 19 caractères

i
Hello World
.
w o

Exemple d'exécution:

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

bash-4.3$ cat o
Hello World
homme au travail
la source
2

MATL , 15 octets

'Hello World'Z#

Cela crée un fichier appelé inoutet y écrit la chaîne.

Luis Mendo
la source
2

K, 20 octets

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

Confirmation;

    mmm@chromozorz:~/q$ cat f.txt 
    Hello World
Chromozorz
la source
Puisque personne ne l'a encore dit, bienvenue dans Programming Puzzles & Code Golf.
Erik the Outgolfer
Très appréciée!
Chromozorz
D'ACCORD. Je pense également que vous avez des espaces de tête supplémentaires. Je modifierai les espaces si vous le souhaitez (je ne sais pas s'ils sont intentionnellement placés, mais je pense que ce n'était pas intentionnel.)
Erik the Outgolfer
2

Clojure, 23 octets

#(spit"x""Hello World")

Fonction anonyme qui crée un fichier appelé xet Hello Worldy écrit .

cliffroot
la source
2

Node.js, 42 octets

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

je ne pense pas que cela nécessite une explication

Node.js REPL, 31 octets

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

pour une raison quelconque, vous n'avez pas besoin d'inclure fs

Downgoat
la source
Je ne pense pas que cela fonctionne. Pour que cela fonctionne, vous en auriez besoin require("fs").writeFile("o","Hello World"). Sinon, fs n'est pas inclus.
Conor O'Brien
@ CᴏɴᴏʀO'Bʀɪᴇɴ hein ok. fonctionne dans REPL pour une raison quelconque
Downgoat
2

C #, 93 77 76 octets

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

Voyez-le fonctionner , à l'exception d'un accès non autorisé aux fichiers.

Changelog

Rev2

  • Espace de noms inutile supprimé
  • Changé le nom de la fonction en Main (sinon il ne sera pas détecté comme fonction principale)
  • usingDirective supprimée (merci Jean Lourenço )

Rev3

  • Suppression de l'espace qui s'est infiltré.

C # (sans passe-partout), 47 octets

void M(){File.WriteAllText("f","Hello World");}
Bart van Nierop
la source
Vous pouvez enregistrer quelques octets en supprimant l'utilisation et en l'ajoutant directement à la méthode: System.IO.File.WriteAllText [...]
Jean Lourenço
@ JeanLourenço Merci. Je l'avais à l'origine et l'ai ensuite changé pour des raisons inconnues.
Bart van Nierop
2

R, 38 36 35 octets

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

J'aime la façon dont le fichier créé n'a pas de nom! C'est juste .txtn'importe quoi, en fait!

-2 octets grâce à la remarque @PEAR!
-1 octets grâce à @BartvanNierop!

Ce code produira un fichier sans nom.

Frédéric
la source
1
Le '.txt' est-il vraiment nécessaire? Les fins de fichier sont réservées à l'utilisateur. Un seul personnage pourrait me suffire.
PEAR
1
Je ne connais pas R, mais ne pourriez-vous pas raser un autre octet, comme par la suggestion de @ PEAR, en nommant simplement le fichier "a"?
Bart van Nierop
2

Bash, 18 octets

echo Hello World>a
vikarjramun
la source
1

Python, 34 octets

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

Sorties vers un fichier appelé h.

Leaky Nun
la source
1

APLX , 15 octets

'Hello World'1

Crée un fichier de composant APL contenant un seul composant; la chaîne souhaitée. Il peut être relu avec:

      'Hello World'1
Hello World
Adam
la source
1

Gema, 28 caractères

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

Exemple d'exécution:

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

bash-4.3$ cat o
Hello World
homme au travail
la source
1

Raquette, 43 octets

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

Julia, 47 octets

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

J'ai essayé d'utiliser writedlm, mais cela n'a pas fonctionné.

Mama Fun Roll
la source
1

C, 37 octets

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

Perl 6 ,  27  23 octets

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

Java 7, 100 95 octets

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

Ou si vous souhaitez fermer le rédacteur après l'avoir utilisé ( 101 octets ):

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

Non golfé:

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

Usage:

java -jar Main.jar
Kevin Cruijssen
la source
Java est ma langue préférée mais Jésus-Christ, c'est hilarant à quel point une langue de golf est mauvaise haha
Shaun Wild
4
@AlanTuning Effectivement. xD Je travaille avec Java au travail, et c'est amusant de coder du golf en Java. Vous ne pourrez JAMAIS gagner un défi de golf de code ici en utilisant Java, mais c'est toujours amusant d'écrire le code Java aussi court que possible.
Kevin Cruijssen
2
eh bien, vous pouvez justevoid f()throws Exception{new java.io.PrintWriter("x").print("Hello World");}
cliffroot
java.io.Writer p=new java.io.PrintWritervous permet d'économiser encore plus de personnages.
Frozn
@cliffroot Hmm, j'ai essayé au début, mais il ne semblait rien écrire sur le disque. J'essaierai à nouveau demain, actuellement je n'ai pas d'IDE et les E / S de fichiers ne fonctionnent pas dans ideone.
Kevin Cruijssen
1

eacal , 26 octets

write a string Hello World

Ce writesa string Hello Worlddans le fichier a, la création si pas présent. Fondamentalement:

write <fileName> <exec>

et

string <params to convert to string>

Exécutez le programme en tant que:

λ node eacal.js writeFile
Conor O'Brien
la source
1

J, 21 octets

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

Cela écrit dans un fichier odu répertoire en cours ou, s'il n'est pas appelé à partir d'un fichier, dans votre j64-804fichier. 1!:3est l'écriture étrangère et <'o'est le nom de fichier encadré (les noms de fichiers doivent être encadrés). Le LHS est la chaîne à écrire.

Conor O'Brien
la source
1

JavaScript, 89 octets

Ce code a été testé dans Chrome. Dans les autres navigateurs, l'élément doit être dans le document pour que la méthode click fonctionne.

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