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.


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:



24

Python 2, 32 octets

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

Oui, c'est du python valide .


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




5

Lot, 18 octets

echo Hello World>f

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


À 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


3

C, 44 octets

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

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


3

PowerShell, 15 octets

"Hello World">o

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



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

2

MATL , 15 octets

'Hello World'Z#

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


2

K, 20 octets

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

Confirmation;

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

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 .


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


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

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.


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


1

Python, 34 octets

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

Sorties vers un fichier appelé h.


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

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

1

Raquette, 43 octets

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

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




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

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

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.


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()
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.