Создать и записать в файл


11

Вызов

Создайте новый файл и запишите в него строку Hello World.

ограничения

  • Ваша задача должна записать в файл на диске, в файловой системе.

  • Файл не может быть файлом журнала, сгенерированным во время нормальной работы интерпретатора.

  • Файл должен содержать только строку Hello World. Разрешено содержать завершающий символ новой строки или минимальный пробел. Нет другого контента.

  • Не допускаются флаги / каналы командной строки (и т. Д.), Кроме случаев, когда это необходимо для запуска программы. (например perl -p)

Заметки

  • Это , поэтому выигрывает самая короткая программа в байтах.

  • Следуйте духу, а не букве правил.


С трейлингом новой строки все в порядке?
Винни

@ Винни, да, все нормально
дкудрявцев

Является ли имя файла частью содержимого файла?
Кузен Кокаин

Ответы:



24

Python 2, 32 байта

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

Да, это действительный питон .


1
Ого. Объяснение?
Джеймс

1
@DrGreenEggsandIronMan похоже, что основная хитрость в том, как *разделить итерируемое на отдельные аргументы в функции, так и open(*"ww")становится open("w","w").
Чернила стоимости

7
@ValueInk На самом деле основной трюк - использование расширенного оператора печати, который редко встречается в дикой природе.
xsot

1
Это действительно крутой трюк, но если бы не *"ww"трюк, вы бы связали здесь другой ответ Python, который open(...).write(...)вместо этого использует для того же количества байтов
Value Ink

Ой, я даже не осознавал этого.
xsot




5

Пакет, 18 байт

echo Hello World>f

Я думаю, что вам нужно @, или переименуйте это как (консоль).
Эрик Outgolfer

Это @не обязательно.
Шон Уайлд,

Попробуйте сохранить его в командном файле и запустить его как таковой (не вводите команду напрямую). Затем вы увидите, что вам нужно @, потому что команда печатается в противном случае тоже. Это означает, что у вас есть два варианта: 1) удалить этот ответ, потому что это будет обман 2) пометить как (консоль).
Эрик 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 'f' - это имя файла, и для выполнения команды необходим <cr>(который является мнемоникой для "enter", один байт). Команды, начинающиеся с двоеточия, похожи на мини-оболочку внутри vim, а команда :w- это команда для записи в файл.
Джеймс

Не <esc>должны учитываться как 5 байтов и <cr>как 4, так как они должны быть введены полностью?
Барт ван Ниероп

@BartvanNierop Нет, <esc>это просто обозначение «побег ключ», который 0x1Bи <cr>является обозначением для «возврата каретки ключа» , который0x0B
Джеймс

1
Ну, во-первых, есть прецедент для вычисления vim с помощью нажатия клавиш == байтов , но во-вторых, есть несколько способов записать это в «код» vim без использования нотации vim-key. Например, если вы используете <C-v>для вставки буквенный escape-символ и буквальный возврат каретки, то вы можете назначить все эти штрихи макросу и выполнить его таким образом. Вы также можете сделать это в vimscript, с помощью normal 'iHello World^[:w f^Mкоторого vim отображает его , а не как вы его вводите. ^[и ^Mоба по одному байту.
Джеймс

4

Пакетный, 19 байтов

@echo Hello World>o

Не уверен, что считается неправильным, но выводит «Hello World» и новую строку в файл, а не просто «Hello World»
brianush1

Для чего же «@»?
Груша

@PEAR Запрещает вывод команды на STDOUT.
Нейл


3

C, 44 байта

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

1
В некоторых системах это может привести к сбою#include <stdio.h>
Стивен Пенни

@StevenPenny Пока есть система / компилятор, где гарантированно нет segfault, это нормально. Ответы обычно не должны быть переносимыми.
Мартин Эндер


3

PowerShell, 15 байт

"Hello World">o

>перенаправляет строку в файл, вызываемый oв текущем каталоге.



2

ред, 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

К, 20 байт

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

Подтверждение;

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

Пока никто этого не сказал, добро пожаловать в Программирование Пазлов и Код Гольф.
Эрик Outgolfer

Очень признателен!
Chromozorz

ХОРОШО. Я также думаю, что у вас есть дополнительные пробелы. Я отредактирую пробелы, если вы хотите (я не знаю, намеренно ли они размещены, но я думаю, что это было непреднамеренно.)
Эрик Outgolfer

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

по какой-то причине в Repl вам не нужно включать fs


Я не думаю, что это работает. Для того, чтобы это сработало, вам нужно require("fs").writeFile("o","Hello World"). В противном случае, fs не включен.
Конор О'Брайен

@ C'O'Bʀɪᴇɴ да ладно. почему-то работает в REPL
Downgoat

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

Посмотрите, как это работает , за исключением несанкционированного доступа к файлам.

Изменения

Rev2

  • Удалено ненужное пространство имен
  • Изменено имя функции на Main (потому что иначе оно не будет обнаружено как основная функция)
  • Удалена usingдиректива (спасибо Жану Лоренсу )

Rev3

  • Убрано пространство, в которое проникло

C # (без шаблона), 47 байтов

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

Вы можете сохранить несколько байтов, удалив использование и добавив его непосредственно к методу: System.IO.File.WriteAllText [...]
Жан Лоуренсо

@ JeanLourenço Спасибо. У меня было это первоначально и затем изменило это по неизвестным причинам.
Барт ван Ниероп

2

R, 38 36 35 байт

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

Мне нравится, как созданный файл не имеет имени! На самом деле это .txtвсе что угодно!

-2 байта благодаря замечанию @PEAR!
-1 байт благодаря @BartvanNierop!

Этот код создаст файл без имени.


1
«.Txt» действительно необходим? Окончания файлов только для пользователя. Мне достаточно одного персонажа.
Груша

1
Я не знаю R, но не могли бы вы сбрить еще один байт, как по предложению @ PEAR, просто назвав файл "a"?
Барт ван Ниероп



1

APLX , 15 байт

'Hello World'1

Создает файл компонента APL, содержащий только один компонент; желаемая строка. Это можно прочитать с помощью:

      'Hello World'1
Hello World

1

Гема, 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

Юлия, 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");}}

Ungolfed:

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

Я - мой любимый язык, но Иисус Христос, это забавно, как плохо язык игры в гольф, ха-ха
Shaun Wild

4
@AlanTuning Действительно. xD Я работаю с Java на работе, и интересно играть в гольф на Java. Вы НИКОГДА не сможете выиграть соревнование по коду для игры в гольф, используя Java, но по-прежнему интересно писать код Java как можно короче.
Кевин Круйссен

2
ну, вы можете простоvoid f()throws Exception{new java.io.PrintWriter("x").print("Hello World");}
Cliffroot

java.io.Writer p=new java.io.PrintWriterспасает вас еще несколько персонажей.
Frozn

@cliffroot Хмм, я попробовал это изначально, но, похоже, ничего не записывалось на диск. Попробуем еще раз завтра, в настоящее время у меня нет IDE, и файловый ввод / вывод не работает в ideone.
Кевин Круйссен

1

eacal , 26 байтов

write a string Hello World

Это writeса string 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-804файл. 1!:3внешняя запись, и <'o'это имя файла в штучной упаковке (имена файлов должны быть в штучной упаковке). LHS - это строка для записи.


1

JavaScript, 89 байт

Этот код был протестирован в Chrome. В других браузерах элемент должен находиться в документе, чтобы метод click работал.

a=document.createElement("a");a.href="data:text/plain,Hello World";a.download=1;a.click()
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.