创建并写入文件


11

挑战

创建一个新文件并将字符串写入Hello World其中。

限制条件

  • 您的挑战必须写入文件系统中磁盘上的文件。

  • 该文件可能不是在解释器正常运行期间生成的日志文件。

  • 该文件只能包含字符串Hello World。允许包含尾随换行符或最小空格。没有其他内容。

  • 除非需要运行程序,否则不允许命令行标志/管道(等)。(例如perl -p

笔记

  • 这是,因此最短的程序以字节为单位。

  • 遵循规则的精神而不是文字。


尾随换行符可以吗?
Winny

@Winny是的,没关系
dkudriavtsev

文件名是文件内容的一部分吗?
CousinCocaine

Answers:


1

Pyth,14个字节

.w"Hello World

输出到名为的文件o.txt


24

Python 2,32字节

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

是的,这是有效的python


1
哇。说明?
詹姆斯

1
@DrGreenEg​​gsandIronMan看来,主要技巧是如何*将一个可迭代的对象拆分为一个函数中的各个参数,从而open(*"ww")成为open("w","w")
价值墨水

7
@ValueInk实际上,主要技巧是使用扩展打印语句,这在野外很少见。
xsot

1
这确实是一个很酷的技巧,但是如果不是您的*"ww"把戏,您将在这里与其他Python答案绑定,该答案使用open(...).write(...)相同的字节数
Value Ink

糟糕,我什至没有意识到。
xsot




5

批处理,18个字节

echo Hello World>f

我认为您需要一个@或将其重新命名为(控制台)。
暴民埃里克

@是没有必要的。
肖恩·

尝试将其保存在批处理文件中并以这种方式运行(不要直接键入命令)。然后,您将看到需要@,因为该命令也会另外打印出来。这意味着您有两个选择:1)删除此答案,因为它将是重复的。2)重新标记为(控制台)。
暴民埃里克(Erik the Outgolfer)

5

Vim,15 + 2 == 17个字节

iHello World<esc>ZZ

+2个字节用于使用vim f而不是来启动它vim。此外,此版本还可以:

iHello World<C-o>ZZ

如果不允许这样启动vim,则还有:

Vim,18个字节

iHello World<esc>:w f<cr>

旁注:这是一个多语言的。在V中也起作用,除了它短了一个字节(因为<cr>末尾的是隐式的)。


最后的f <cr>是什么?
Zwei

@Zwei'f'是文件的名称,<cr>运行命令必须使用(这是“ enter”的助记符,一个字节)。以冒号开头的命令就像vim中的迷你shell,该命令:w是用于写入文件的命令。
詹姆斯

由于必须完全键入,因此不应<esc>将其计为5个字节和<cr>4 个字节?
巴特·范·尼罗普

@BartvanNierop不,<esc>它只是“转义键”的符号0x1B,也<cr>就是“回车键”的符号,这是0x0B
James

1
首先,有一个通过击键==字节vim评分的先例,但是第二,有几种方法可以在不使用vim-key表示法的情况下用vim“代码”编写此代码。例如,如果您用于<C-v>插入文字转义字符和文字回车符,则可以将所有这些笔划分配给宏,然后以这种方式运行它。您也可以在vimscript中执行此操作,normal 'iHello World^[:w f^M这是vim 显示它的方式,而不是输入方式。^[^M都是一个字节。
詹姆斯,



3

PowerShell,15个字节

"Hello World">o

>将字符串重定向到o当前目录中名为的文件。



2

ed,19个字符

i
Hello World
.
w o

样品运行:

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

bash-4.3$ cat o
Hello World



2

Clojure,23个字节

#(spit"x""Hello World")

匿名函数,用于创建被调用x并在其中写入文件Hello World


2

Node.js,42个字节

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

我认为这不需要解释

Node.js REPL,31个字节

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

由于某种原因,您不需要包括 fs


我认为这行不通。为了使其正常工作,您需要require("fs").writeFile("o","Hello World")。否则,不包括fs。
科纳·奥布赖恩

@CᴏɴᴏʀO'Bʀɪᴇɴ嗯,好的。由于某种原因在REPL中工作
Downgoat '16

2

C#, 93 77 76字节

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

看到它正常工作,但未经授权的文件访问除外。

变更日志

版本2

  • 删除了不必要的名称空间
  • 将功能名称更改为Main(因为否则它将不会被检测为主要功能)
  • 已删除using指令(感谢JeanLourenço

版本3

  • 移除潜入的空间。

C#(无样板),47字节

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

您可以通过删除使用并将其直接附加到方法中来节省一些字节:System.IO.File.WriteAllText [...]
JeanLourenço16年

@JeanLourenço谢谢。我本来有,然后由于未知原因更改了它。
巴特·范·尼罗普

2

R,38 36 35字节

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

我喜欢创建的文件没有名字!.txt实际上,这就是任何东西!

-2个字节,感谢@PEAR!
-1个字节感谢@BartvanNierop!

此代码将产生一个没有名称的文件。


1
“ .txt”真的必要吗?文件结尾仅供用户使用。一个字符可能够我了。
PEAR

1
我不知道R,但是您不能像@PEAR的建议那样通过简单地命名文件来剃掉另一个字节"a"吗?
巴特·范·尼罗普


1

Python,34个字节

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

输出到名为的文件h


1

APLX,15 个字节

'Hello World'1

创建一个仅包含一个组件的APL组件文件;所需的字符串。可以通过以下方式读取:

      'Hello World'1
Hello World

1

Gema,28个字符

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

样品运行:

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

bash-4.3$ cat o
Hello World

1

球拍,43个字节

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

1

朱莉娅,47字节

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

我尝试使用writedlm,但没有成功。




1

Java 7,100 95字节

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

或者,如果您要在使用写入器后关闭它(101个字节):

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

取消高尔夫:

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

用法:

java -jar Main.jar

Java是我最喜欢的语言,但是耶稣基督说这是一种有趣的高尔夫语言,哈哈笑得很开心
Shaun Wild

4
@AlanTuning确实。xD我在工作中使用Java,在Java中使用代码高尔夫很有趣。您将永远无法使用Java在这里赢得代码高尔夫球挑战,但是编写Java代码越短越好,这仍然很有趣。
凯文·克鲁伊森

2
好吧,你可以void f()throws Exception{new java.io.PrintWriter("x").print("Hello World");}
悬崖根

java.io.Writer p=new java.io.PrintWriter为您节省更多字符。
Frozn

@cliffroot嗯,我最初尝试过,但是似乎没有向磁盘写任何东西。明天再试一次,目前我没有IDE,并且文件I / O在ideone中不起作用。
凯文·克鲁伊森

1

eacal,26个字节

write a string Hello World

writestring Hello World文件a,如果不存在则创建它。基本上:

write <fileName> <exec>

string <params to convert to string>

运行程序为:

λ node eacal.js writeFile

1

J,21个字节

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

这将写入o当前目录中的文件,或者写入文件中(如果未从文件中调用)j64-8041!:3是写外来文件,<'o'是装箱的文件名(文件名需要装箱)。LHS是要写入的字符串。


1

JavaScript,89个字节

此代码已在Chrome中进行了测试。在其他浏览器中,该元素必须在文档中才能使click方法起作用。

a=document.createElement("a");a.href="data:text/plain,Hello World";a.download=1;a.click()
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.