Створіть і запишіть у файл


11

Виклик

Створіть новий файл і напишіть до нього рядок Hello World.

Обмеження

  • Ваше завдання повинно записати у файл на диску, у файловій системі.

  • Цей файл може бути не файлом журналу, створеним під час нормальної роботи перекладача.

  • Файл повинен містити лише рядок Hello World. Дозволяється містити зворотний новий рядок або мінімальний пробіл. Немає іншого вмісту.

  • Не допускаються жодні прапори / труби командного рядка (тощо), крім випадків, коли це необхідно для запуску програми. (наприклад perl -p)

Примітки

  • Це , тому найкоротша програма в байтах виграє.

  • Дотримуйтесь правил, а не букви, правил.


Чи добре все за останній рядок?
Вінні

@Winny так, все нормально
dkudriavtsev

Чи є ім'я файлу частиною вмісту файлу?
CousinCocaine

Відповіді:



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

Я думаю, вам потрібен @або перейменуйте це як (консоль).
Ерік Аутгольфер

@Не потрібно.
Shaun Wild

Спробуйте зберегти його у пакетному файлі та запустити його як такий (не вводити безпосередньо команду). Потім ви побачите, що вам потрібна @, тому що команда і в іншому випадку надрукована. Це означає, що у вас є два варіанти: 1) Видаліть цю відповідь, тому що це буде обдумка.
Erik the Outgolfer

5

Vim, 15 + 2 == 17 байт

iHello World<esc>ZZ

+2 байти для запуску цього з vim fзамість vim. Крім того, ця версія працює на:

iHello World<C-o>ZZ

Якщо запустити 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>для вставки буквального символу втечі та повернення буквальної каретки, ви можете призначити всі ці обведення макросу та запустити його таким чином. Ви також можете це зробити в 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 Поки є система / компілятор, де гарантовано не сегментувати, це добре. Відповіді, як правило, не повинні бути портативними.
Мартін Ендер

@StevenPenny А тепер є.
orlp

3

PowerShell, 15 байт

"Hello World">o

>перенаправляє рядок до файлу, який називається oу поточному каталозі.





2

К, 20 байт

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

Підтвердження;

    mmm@chromozorz:~/q$ cat f.txt 
    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')

чомусь у repl вам не потрібно включати fs


Я не думаю, що це працює. Для того, щоб він працював, вам знадобиться require("fs").writeFile("o","Hello World"). В іншому випадку fs не входить.
Conor O'Brien

@ CᴏɴᴏʀO'Bʀɪᴇɴ так добре. працює в
REPL

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

  • Видалено зайвий простір імен
  • Ім'я функції змінено на Основне (бо в іншому випадку воно не буде виявлено як основну функцію)
  • Видалену 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");}}

Безголівки:

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 якомога коротше.
Kevin Cruijssen

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

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

@cliffroot Хм, я спробував це спочатку, але, здавалося, нічого не писав на диск. Спробую ще раз завтра, на даний момент у мене немає IDE, і файл вводу / виводу не працює в ideone.
Kevin Cruijssen

1

екал , 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. В інших веб-переглядачах елемент повинен знаходитись у документі для того, щоб працювати метод клацання.

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.