Создайте программу, которая выводит строку hello world («Hello world», «Hello, World» и т. Д.) И исходный код. Вывод записывается в стандартный вывод или эквивалентный. Строка Hello World встроена в исходный код.
Например, вывод для может быть
(some source code here)hello world(some source code here)
Когда выходные данные компилируются или интерпретируются снова, они должны создавать аналогичные выходные данные, но строка hello world должна иметь другую пунктуацию или заглавные буквы. Например, предыдущий пример может создать следующий вывод
(some source code here)hello, wORld(some source code here)
Каждое «(некоторый исходный код здесь)» в этих примерах может меняться после каждого выполнения или может быть одинаковым.
Ваш вывод должен содержать правильную строку hello world ровно один раз. Может содержать любое количество недопустимых строк hello world. Исходный код может содержать любое количество комментариев, а строка hello world может быть встроена в комментарии. Первая программа может иметь либо ноль, либо одну допустимую строку hello world, но не более.
Действительна следующая пунктуация:
hello, world
hello world
helloworld
Любая капитализация приемлема. Например, это допустимые строки hello world:
Hello, world
hellO WORld
HELLoworlD
Эти строки не действительны:
Hello world
Hello(newline)world
Hello,world
Hello, Steve
Ваша программа завершается ошибкой, как только выполняется одно из следующих условий:
- Он выводит строку приветствия, которая была выведена во время более раннего выполнения,
- вывод больше не является допустимым исходным кодом на том же языке, или
- вывод не содержит ровно одну действительную строку hello world.
Ваша программа не подходит для этого конкурса, если по крайней мере два первых исполнения не будут успешными. Это означает, что третий вывод может быть недействительным. Вывод вашей программы может быть не случайным. Первое выполнение всегда должно создавать один и тот же второй вывод, второе выполнение всегда должно создавать один и тот же третий вывод и т. Д.
Оценка рассчитывается как количество байтов в исходном коде исходной программы. Самый низкий балл побеждает.
Применяются следующие бонусы (до -60%):
- -5% * (N - 2), где N - индекс выполнения, после которого ваша программа выдает неверный вывод. Этот бонус ограничен на -50%. Если ваша программа будет выполнена 12 или более раз, вы получите максимальный бонус.
- -10%, если ваши выходные данные (включая первый исходный код) включают все три допустимых варианта пунктуации.
Ваша заявка должна содержать первый исходный код, и он также должен содержать результаты успешных выполнений. Если ваша программа выполняется более 12 раз, добавьте вывод для 12 выполнений.
пример
Следующая строка - первый исходный код. Когда мы выполняем это, это первое исполнение.
hello world(some source code here)
Следующая строка - это вывод из первого исходного кода. Это первый выход.
hello, world(some source code here)
Следующая строка - это выход из второго выполнения. Это второй выход.
helloworld(some source code here)
Когда мы выполнили первый вывод, эта программа получила право на бонус -10%. Это означает, что у нас есть два выхода и один оригинальный код, каждый из которых имеет различную пунктуацию. Более того, поскольку второй вывод был действительным, эта программа подходит для этого конкурса.
Следующая строка - вывод из третьего исполнения. Это третий выход.
Helloworld(some source code here)
Следующая строка - результат четвертого выполнения. Это четвертый выход.
hellworld(some source code here)
Этот вывод был недействительным. Индекс последнего действительного выполнения был 4. Эта программа имеет право на бонус -5% * (4 - 2) и бонус -10% от пунктуации. Это составляет всего -20%. Длина первого исходного кода («Привет, мир (здесь немного исходного кода)») составляла 34 байта, поэтому итоговая оценка составляет 27,2.
hello world
?Ответы:
Pyth, 17 байт
Другое решение Pyth:
Выход:
Второй выход:
источник
Mathematica, 214 - 50% = 107 байт
Я решил оптимизировать количество строк здесь. Это работает для 1024 программ без остановки, проходя все комбинации прописных и строчных букв. Казнь можно увидеть здесь .
источник
s
и оцениваете его с помощьюToExpression
.)Витси, 33 - 33 * 0,05 * (11-2) = 18,15 байт
Хех! Бить это! Вы, вероятно, будете. : с
Первый вывод:
Второй выход:
Третий выход:
Четвертый вывод:
Пятый выход:
Шестой вывод:
Седьмой выход:
Восьмой выход:
Девятый вывод:
Десятый выход:
Одиннадцатый вывод:
Это последний вывод, так как это приведет к ошибке.
источник
CJam, N =
34, 28 байт - 10% - 10% = 22,4это запускает следующую цепочку:
где последний больше не содержит действительный «Hello, World».
Проверьте это здесь.
объяснение
Обратите внимание, что исходная программа не содержит допустимого «Hello, World», но это позволяет нам продвинуться еще на одну итерацию.
источник
CJam
6960 - 50% = 30Я все еще новичок, пожалуйста, скажите мне, как играть в гольф в CJam.
Распечатывать каждую итерацию утомительно, так как она будет действительна в течение 99 итераций.
Он работает путем перечисления заглавных букв привет слова. Скука состоит в том, чтобы разбить строки на части, так как «привет мир» и счетчик должны быть обновлены.
объяснение
ПРИМЕЧАНИЕ: я не читаю ответ Mathematica, извините, я думаю, что он был оригинальным
При переупорядочении и различной капитализации я теряю 9 байт.
CJam 73 - 60% = 29,2
На этот раз также перечислю пунктуацию.
источник
GolfScript, 35 байт - 50% = 17,5
Я решил пойти на излишнее количество казней, прежде чем повторить. Эта программа с выводом обратно в интерпретатор GolfScript произведет перед первым повторением 890 различных строк Hello World. В качестве краткого примера, вот первые 15 итераций:
Это работает путем итерации по строке, переворачивая заглавные буквы каждой буквы (путем XORing ASCII-кода с 32), если предыдущая буква (после возможного переворачивания регистра) строчная. Первая буква будет перевернута в случае, если число в начальной программе равно 32, а не 0 - и число, выведенное для следующей итерации, будет равно 32, когда последняя буква строки будет строчной, что приведет к любым изменениям в конце строка для распространения обратно в начало на следующей итерации.
(Этот конкретный процесс обратной связи был получен совершенно нерегулярным способом. Первоначально я хотел просто запустить простой двоичный счетчик, используя прописные и строчные буквы в качестве битов, но для его реализации потребовалось слишком много байтов, поэтому я начал настраивать его, чтобы найти что-то более короткое это все равно дало бы довольно большую длину цикла. Так как теоретический максимум, использующий только переключение регистра, равен 2 10 = 1024, получение цикла с 890 итерациями довольно неплохо.)
Увы, бонус за дополнительные итерации ограничен −50%; без кепки эта программа имела бы колоссальный бонус -4440%. ;-)
источник
Pyth, 18 байт
Который возвращает:
Который в свою очередь печатает:
У меня было решение, которое выполнило все три написания, но оно дольше даже с бонусом.
источник
Симплекс , 21 байт.
Для этого и родился Симплекс . Я определенно могу пойти дальше с этим.
(Продолжаю нажимать Ctrl + Enter, извините! Я виню в этом клавиатуру планшета)
Попытка 3, v.0.8 +, 31 -5% = 29,45 байта (метки UTF-8)
Эта эмоция в середине выражает себя. Вроде. Почему я сделал это снова? ._.
2-й выход:
3-й выход:
Окончательный вывод:
Попытка 2, v.0.8 +, 21 байт (UTF-8, я думаю)
Выход:
Окончательный вывод:
Попытка 1, v.0.7 +
2826 байтЯ не уверен, имеет ли это право на первый бонус ...
Первый вывод:
Внешняя программа оценивается в конце выполнения (она делает это для y; вот как выглядит внешняя программа:
Окончательный вывод:
источник
Рубин, 81 - 50% = 40,5
Оригинальный код:
Последовательные результаты:
Я думаю, что это считается полными 50%? Может быть, один. Кроме того, в Ruby, вероятно, есть лучшее решение для получения бонусов.
Исходный код не содержит «helloworld», но он создает квин, который заменяет первую заглавную букву в исходном коде на строчную версию. Таким образом, каждый последующий цикл quine выводит на одну букву меньше заглавной буквы.
Хитрость здесь в том, чтобы использовать строку формата для интерполяции как самой строки, для квинтинга, так и строки Hello World, чтобы она появлялась только один раз.
источник
PHP, 297 - 40% = 178,2 байта
Не очень конкурентоспособно, но было весело писать
Это вариация этой квинны:
но он также добавляет «helloworld» к выводу и заменяет его
0
на0+1
(в следующей итерации1
с1+1
и так далее). Использованиеsubstr
любого существующего вывода "helloworld" удаляется до добавления нового "helloworld".Чтобы получить различный вывод, одна буква «helloworld» становится заглавной (определяется возрастающим числом). Это соответствующий код:
Задача состояла в том, чтобы не использовать какие-либо номера, кроме как здесь, и для замены номера
Там вы уже видите, что
+1
реализовано как+(int)true
.Для аргументов подстроки мне понадобилось
0, 146
:Непустая строка «i» приводится к значению
true
и отменяется.false
является допустимым целочисленным аргументом и рассматривается как0
.ord(I)
значение ASCII для «I»: 73Выход (1-я итерация):
Выход (2-я итерация):
Выход (10-я итерация):
Это последний действительный вывод, но больше не действительная программа
источник
(int)true
на `` !! i` и сохранить 12 байтов. ПопробуюПип, 48 - 50% = 24
который развивается следующим образом:
с последним выводом, являющимся недействительным, потому что
HELLOWORLD
не изменился. (Поправьте меня, если я не сделал бонус правильно.)Благодаря этому вопросу, я только что открыл новую технику квина! Базовая квиния
V Y"`V Y`.RPy"
:Наш дополнительный код изменяет строку
y
перед ее повторением следующим образом:0
символы находятся в верхнем регистре;0
сo+0
(гдеo
встроенная переменная, равная 1).В следующий раз
1
вместо числа в коде вместо0
, и так далее.источник
Javascript, 52 байта
Тестовое задание
=>
<='("hello world").replace(" ","")'
=> eval('("hello world").replace(" ","")')
<= 'helloworld'
источник
///, 23 байта - 10% = 20,7?
Попробуйте онлайн!
Первый вывод:
Второй выход:
источник
BBC BASIC, 56 байт
У меня была трещина в этом, прежде чем я понял, как поздно я до игры. Для чего это стоит, вот моя версия и моя первая попытка игры в гольф StackExchange.
Здесь V. выводит символы, заданные кодами ASCII в следующем списке, разделенном запятыми, а P. - сокращение для печати. Я использую символ Backspace, чтобы перезаписать существующую строку 'helloworld'.
Введите код:
Первый вывод:
Второй вывод:
Его можно протестировать онлайн на https://bbc.godbolt.org/
источник