Фон
Привет гольфисты! Я хотел бы выучить все языки программирования! Но у меня немного внимания ... и копирование всех примеров Hello World становится скучным ... но я люблю огонь! ^ Ш ^
Вызов
Итак, вот план! Я хочу, чтобы вы все написали самый маленький код, который будет компилироваться, печататься Goodbye Cruel World!
, а затем вылетать. Или, в качестве бонуса, распечатайте Hello World!
и разбейте сGoodbye Cruel World!
правила
- Ваш счет будет общим количеством использованных символов. Ответом должна быть целая исполняемая программа.
- Ваша программа должна распечатать
Goodbye Cruel World!
для вывода, а затем сбой (неожиданная ошибка).- Для получения бонуса вы должны
Hello World!
вместо этого распечатать , но сообщение об ошибке также должно содержатьGoodbye Cruel World!
. Если вы выполнили бонусное испытание, вы можете поделить свой счет на 2. (Включите! В конце своего счета, если вы претендуете на бонус!)
- Для получения бонуса вы должны
- Пока стандартный вывод все еще печатает, и стандартная ошибка все еще печатает, порядок не имеет значения. Так же, как ни один из них не может помешать другому.
- Вывод должен содержать содержимое вышеперечисленного;
"
не должен появляться в выводе. - Вывод должен содержать указанную строку и ничего больше.
- Отчет о сбое может содержать что угодно, но для получения бонуса должно соответствовать следующее регулярное выражение
/Goodbye Cruel World!/mi
(иначе, содержит, игнорировать регистр / окружающий текст)) - Строки
Hello World!
иGoodbye Cruel World!
не чувствительны к регистру, но в остальном должны выглядеть точно так же, как указано выше. - Если язык допускает сбой (он не может изменить свой код выхода), он должен потерпеть крах. В противном случае используйте стандартный «отчет об ошибках» (т. Е.
STDERR
) Для языка.
Я могу разбить Python 3, поэтому я включил пример ответа Python 3! Теперь давайте все поджигаем мир! ^ W ^
as a bonus twist challenge, print "Hello World!" and crash with "Goodbye Cruel World!"
?Ответы:
Желе , 12 байт
Попробуйте онлайн!
Объяснение:
Поскольку целочисленное деление является диадой, оно будет неявно принимать текущее значение цепочки в качестве обоих аргументов, а именно строку. Сбои, потому что он ожидает целых чисел.
источник
A base-250 encoded string
Это и здорово, и страшно, что ты можешь это сделать. X3C, 43 байта
Печатает строку, а затем пытается использовать возвращаемое значение в качестве указателя на другую строку для печати, что вызывает ошибку сегментации.
Попробуйте онлайн!
C, 42 байта
Спасибо @Ruslan!
Попробуйте онлайн!
Просто для удовольствия: C (на 64-битном Linux), 149 байт
Модифицировано из этой Hello World -программы здесь .
Попробуйте онлайн!
источник
The answer must be a whole executable program.
main(i){i=puts("Goodbye Cruel World!")/0;}
снимает один байтi
.puts("")/0;
это синтаксически правильное утверждение.SOGL ,
152517 байт / 2 = 8,5!Объяснение:
(Ab) использует тот факт, что SOGL использует STDERR в качестве выходных данных отладки, поэтому в нем много текста, наряду со строкой
Если вы передали STDOUT эскиза Обработка в файл, «До свидания, жестокий мир!» будет там.
источник
Hello World!
иGoodbye Cruel World!
регистр не чувствительны, но в противном случае они должны отображаться точно так же, как указано выше », вы можете изменить свой код, полностью избавившись от функции█
и просто выводя все строчные буквы.> <> , 25 байт
В основном это добавляет строку в стек (Backwards, последним первым обслужен), а затем делает эквивалент:
Когда в стеке не осталось символов (вся строка была напечатана), всплывающее сообщение в стеке выдает ошибку
источник
#o<"Goodbye Cruel World!"
, что в принципе то же самое.sed, 32 байта
i
вставляет строку иw
записывает в файл./dev/full
в этом случае, потому что все записи в него возвращаютENOSPC
(«На устройстве не осталось места»).Тем не менее, для работы все еще нужна одна строка ввода.
источник
Lua,
31, 30 байтсначала распечатывает «Прощай, жестокий мир!» и затем вылетает при попытке добавить нулевое значение и 0.
Выход:
Кредит GalladeGuy на 1 байт меньше
источник
a=-print"Goodbye Cruel World!"
Python 3 | Оценка:
24,5!2322!Выведите «Hello World», чем используйте недопустимый оператор «+» в «Goodbye Cruel World!» к элементу возврата NoneType. (вырезать \ n \ r из предыдущей версии)
Попробуйте онлайн!
Python 3 | Оценка:
3430Распечатать До свидания, чем сделать недопустимую унарную + операцию над результатом печати (NoneType)
Попробуйте онлайн!
источник
+"Goodbye Cruel World!"
короче на 3 байта и выдает ошибку TypeError.print("Goodbye Cruel World!")/0
короче для второго (3 байта?)R,
2220! байты(44/2)(40/2)Попробуйте онлайн!
Выход:
Сохранено две точки благодаря digEmAll
источник
40/2
попробовать онлайн!AWK , 72 байта, оценка 36!
Попробуйте онлайн!
AWK
не любит делить на 0.источник
CJam , 34 байта, оценка 17!
Попробуйте онлайн!(Смотрите панель отладки для STDERR)
объяснение
На TIO он генерирует это сообщение об ошибке:
источник
C препроцессор, 27 байтов
Выход:
источник
#Goodbye Cruel World!
APL (Дьялог) , 17,5 байт
Без бонуса, 20 байт
Попробуйте онлайн!
Обратите внимание, что код не заключен в кавычки, поэтому APL пытается выполнить его, но
World
не определен, что приводит к сбою VALUE ERROR с ошибочной строкой кода, включенной в сообщение об ошибке.С бонусом 35 ÷ 2 = 17,5 байт
Попробуйте онлайн!
Сначала печатает требуемую строку, а затем вылетает, как описано выше.
Более изощренная бонусная версия, 35 ÷ 2 = 17,5 байт
Попробуйте онлайн!
Печатает первую строку, затем удаляет первые пять символов из this (
5↓
), затем объединяет that (,
) с новым префиксом и затем пытается выполнить execute (⍎
), вызывая ту же ошибку, что и выше.источник
Баш
20,5!18,5!Я не собираюсь разбивать желе, но я немного застенчивый из-за того, что ударил быстрый скрипт. 18,5 не так уж плохо для языка без игры в гольф. (Обратите внимание, что это должен быть скрипт, интерактивный bash будет пытаться интерпретировать
!
как поиск по истории)Возвращает с кодом ошибки 127 и:
Как и просили нет
"
... нигде:)
. Как и предполагалось,apricot boy
теперь я ищу последний аргумент предыдущей команды, чтобы сохранить 4 байта.источник
W=\ World\!;echo Hello$W;"Goodbye Cruel$W"
Goodbye\ Cruel\ !$
не 100%, но вполне уверены, что!$
это «последнее слово последней команды»TeX, 19!
Чтобы заставить TeX фактически создать файл DVI / PDF без ручного вмешательства, скомпилируйте
-interaction=nonstopmode
.Он печатает
Hello World!
, выдает ошибку для использования,#
когда вы не должны, а затем останавливает компиляцию с\bye
. Тем не менее, все, что после\bye
, все еще выводится в сообщении об ошибке, поэтому оно применяется для бонуса.источник
WinDBG (локальная отладка ядра Windows XP / Vista), 33 байта
Предупреждение: это приведет к сбою всей машины, а не только программы.
Отладка локального ядра разрешена только в Windows XP и Vista (но не включена по умолчанию в Vista). В диалоге WinDBG по отладке локального ядра не упоминается ни одна другая ОС Windows, поэтому я предполагаю, что она даже не может быть включена для них. Предположительно для других ОС Windows вы можете подключиться к удаленной машине для отладки ядра, но это будет сбой удаленной машины, поэтому я не думаю, что это решение имеет значение.
источник
JS (ES5), 46/2 = 23 байта!
Оповещения
Hello, World!
, а затем ошибки сUncaught TypeError: Cannot read property 'Goodbye Cruel World!' of undefined
источник
PowerShell, 26 байт
Я думаю, что деление на 0 - это самый простой способ вызвать ошибку.
PowerShell, 35/2 = 17,5 байт
по TessellatingHeckler , выдает ошибку примерно так:
источник
$w='World!'
(с!
)?"Hello World!";Goodbye Cruel World!
17.5 байт, выдает исключение, потому что Goodbye не распознается как команда, а сообщение об исключении содержит строку полностью, поэтому оно соответствует регулярному выражению.'Goodbye Cruel World!';x
было бы сэкономить два байта в течение 24Язык сценариев работы Flashpoint , 45/2 = 22,5 байта
Звоните с:
Выход:
источник
Фортран (GFortran) , 58/2 = 29 байт!
Попробуйте онлайн!
источник
Node.js, Оценка:
25,524,5!Сохранено 1 балл благодаря ETHproductions
Синтаксически правильная полная программа, которая вылетает во время выполнения, потому что
console.log()
не возвращает функцию.Попробуйте онлайн!
источник
25.5
...: ((Gamma(26.5)
, как в определении Mathematica.X
(и, возможно, даже перевод строки)?Ацето , оценка: 21,5!
Печатает
Hello World!
, а затем вылетает систочник
Pyth,
2824 байтаПечатает строку, затем пытается получить первый элемент пустого списка.
Попробуй это!
источник
АХК, 50/2 = 25! (Не конкурирующий)
Не конкурирует, потому что добавленное требование сделало ответ недействительным. Я не могу найти способ заставить его скомпилировать, вывести текст и вылетать. Все, что я пытаюсь сделать, не соответствует ни одному из этих требований.
Это самое скучное решение, которое я мог придумать. Это на самом деле не терпит крах, но это технически не является обязательным требованием. Все, что нужно сделать, это вывести сообщение в окно отладки. Это происходит потому, что я говорю это сделать.
источник
Japt , 22 байта
Попробуйте онлайн!
Сохранено 3 байта благодаря obarakon и ETHproductions
источник
Oc"<string>"
а затем заменить текущую строку сжатой версией, заключив ее в черты.C #, 116/2 = 58 байт!
Обычная версия для
9487 байтов:Сохранено 7 байтов благодаря @KevinCruijssen.
источник
int n=0;n/=n;
короче для вашего первого ответа.int n=1/0;
, но, очевидно, это невозможно в C # (что на самом деле хорошо для языка, но плохо для игры в код). Кстати, почему бонус не на вершине? Этот короче.Желе 10,5! байтов
Попробуйте онлайн!
Это использует неопределенное поведение, используя строки Python (строки) вместо строк Jelly (список строк из 1 символа). Преобразование выполняется путем уменьшения строки Jelly путем добавления, и Python
+
объединяет две строки, поэтому две строки, добавленные вместе, объединяются в Python. Затем он использует соответствующую монаду (диапазон), чтобы Pythonint
вызывал строку, что приводило к ошибке, которая всегда содержала быGoodbye Cruel World!
.Объяснение:
источник
Ruby,
4342 байта / 2 = 21!Сохранено полбайта с помощью Алексис Андерсен, заменив
"String"/0
на-"String"
. Это работает только с версиями Ruby ниже 2.3, в которых унарный минус метод был фактически добавлен в класс String!С рубином <2.3:
С рубином> = 2.3:
источник
-
строку вместо/
ie-"Goodbye crueld World!"
Двоичный код x86-64 (с системными вызовами Linux), 43 байта
Разборка:
Эта программа объединяет необходимые данные (строку
"Goodbye Cruel World!\n"
) в свой собственный код. Он загружает указатель на эту строку, используяrip
относительную адресацию, и вызываетwrite
системный вызов напрямую, а не через оболочку glibc, поэтому он полностью независим от позиции, и мы можем легко проверить его, внедрив код вconst
строку и приведя эту строку к функции указатель. Чтобы завершить работу программы, я заканчиваю ееhlt
инструкцией, которая с привилегиями кольца 0 заставит процессор замолчать навсегда (или, по крайней мере, до следующего прерывания), но с привилегиями кольца 3 (типично для пользовательских программ) мы получим гораздо меньше. драматичноSegmentation Fault
.Тестовая программа:
Выход:
Обратите внимание, что 43-байтовый код является полной программой, как указано в запросе, а не просто функцией. Это не зависит от
main
функции тестовой программы для правильного функционирования; он по-прежнему печатает строку и вылетает, если загружается и переходит непосредственно к загрузчику.источник
push
/pop
для загрузки регистров. Например, первые две инструкции могут бытьpush 1
+pop rax
, что на 1 байт короче. Затем можно заменить следующие две инструкцииmov edi, eax
, что на 2 байта короче. То же самоеpush
/pop
трюк может быть применен к инструкциям 6 и 7:push 0x15
+pop rdx
.ЛОКОЛД , МОГУТ ИМЕТЬ 21 БАЙТ
Просто помещает недопустимый оператор перед строкой. Вы можете попробовать онлайн здесь.
источник
Pyth , 38/2
= 19 байт!36/2 = 18 байт!Проверьте это онлайн!
Пояснения
Он печатает
Hello World!
, затем попытайтесь оценитьGoodbye Cruel World!
. Это не удается, потому что эта строка не является допустимым кодом.Результат:
источник