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

11

Вызов

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

ограничения

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

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

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

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

Заметки

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

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

dkudriavtsev
источник
С трейлингом новой строки все в порядке?
Винни
@ Винни, да, все нормально
дкудрявцев
Является ли имя файла частью содержимого файла?
Кузен Кокаин

Ответы:

1

Pyth, 14 байт

.w"Hello World

Выводит в файл с именем o.txt.

Дверная ручка
источник
24

Python 2, 32 байта

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

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

xsot
источник
1
Ого. Объяснение?
Джеймс
1
@DrGreenEggsandIronMan похоже, что основная хитрость в том, как *разделить итерируемое на отдельные аргументы в функции, так и open(*"ww")становится open("w","w").
Чернила стоимости
7
@ValueInk На самом деле основной трюк - использование расширенного оператора печати, который редко встречается в дикой природе.
xsot
1
Это действительно крутой трюк, но если бы не *"ww"трюк, вы бы связали здесь другой ответ Python, который open(...).write(...)вместо этого использует для того же количества байтов
Value Ink
Ой, я даже не осознавал этого.
xsot
8

Haskell, 25 байт

writeFile"o""Hello World"
Андерс Касеорг
источник
6

зш, 17 байт

<<<Hello\ World>x

Выводит в файл с именем x.

Дверная ручка
источник
Можешь интерпретировать >как трубу?
Кузен Кокаин
Как насчет>Hello\ World
кузен Кокаин
5

Рубин, 26 байт

Пишет в файл f.

open(?f,?w)<<"Hello World"
Значение чернил
источник
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"));}
orlp
источник
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
manatwork
источник
2

MATL , 15 байт

'Hello World'Z#

Это создает файл с именем inoutи записывает в него строку.

Луис Мендо
источник
2

К, 20 байт

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

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

    mmm@chromozorz:~/q$ cat f.txt 
    Hello World
Chromozorz
источник
Пока никто этого не сказал, добро пожаловать в Программирование Пазлов и Код Гольф.
Эрик Outgolfer
Очень признателен!
Chromozorz
ХОРОШО. Я также думаю, что у вас есть дополнительные пробелы. Я отредактирую пробелы, если вы хотите (я не знаю, намеренно ли они размещены, но я думаю, что это было непреднамеренно.)
Эрик Outgolfer
2

Clojure, 23 байта

#(spit"x""Hello World")

Анонимная функция, которая создает вызываемый файл xи записывает Hello Worldтуда.

cliffroot
источник
2

Node.js, 42 байта

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

я не думаю, что это требует объяснения

Node.js REPL, 31 байт

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

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

Downgoat
источник
Я не думаю, что это работает. Для того, чтобы это сработало, вам нужно 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

Python, 34 байта

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

Выводит в файл с именем h.

Дрянная Монахиня
источник
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
manatwork
источник
1

Ракетка, 43 байта

(display"Hello World"(open-output-file"f"))
Winny
источник
1

Юлия, 47 байт

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

Я пытался использовать writedlm, но это не сработало.

Mama Fun Roll
источник
1

C 37 байт

main(){system("echo Hello World>o");}
Гомер Симпсон
источник
1

Perl 6 ,  27  23 байта

'o'.IO.spurt: 'Hello World'
spurt 'o','Hello World'
Брэд Гилберт b2gills
источник
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()
kamoroso94
источник