Гольф кода: Какова самая короткая программа, которая компилирует и отказывает?

Я предполагаю, что это - потому что Java является "реальным", т.е. языком общего назначения. Для создания апплета необходимо записать код, и нет никаких ярлыков.

Теперь, когда флэш-память и т.д. пришла, Вы можете в значительной степени просто Драп и отбрасывать Ваш путь посредством создания прохладной анимации для Вашего веб-сайта. Это - намного более низкий барьер для записи - Вы не должны знать, как программировать для получения работы анимации флэш-памяти. Таким образом, флэш-память распространяется, и апплеты Java едва больше используются.

41
задан 8 revs, 5 users 77% 1 December 2011 в 20:06
поделиться

34 ответа

В C, 33 символа:

int main(void){return*((int*)0);}
3
ответ дан 27 November 2019 в 00:02
поделиться
int main () { int n = 0; return 1 / n; }
1
ответ дан 27 November 2019 в 00:02
поделиться

Это зависит от допустимого максимального размера стека для потока. Но при компиляции с использованием VC9 происходит сбой:

int main()
{
    int a[10000000];
    return 0;
};
1
ответ дан 27 November 2019 в 00:02
поделиться

В QBasic:

? 1/0

(По крайней мере, я думаю , что он все равно будет компилироваться, а затем выйдет из строя с делением на ноль; это было довольно давно ... )

3
ответ дан 27 November 2019 в 00:02
поделиться

с использованием Python:

1/0
47
ответ дан 27 November 2019 в 00:02
поделиться
$ cat > crash.S
hlt
$ as -o crash.o crash.S
$ ld crash.o
ld: warning: cannot find entry symbol _start; defaulting to 0000000008048054
$ ./a.out
Segmentation fault
24
ответ дан 27 November 2019 в 00:02
поделиться

Интересно, считается ли это ...

a

Это в JavaScript. Это дает ошибку времени выполнения «объект не найден». Поскольку JavaScript - динамический язык, синтаксически это действительно правильно. По-прежнему хочется нарушить правила. : P

49
ответ дан 27 November 2019 в 00:02
поделиться

В C, 20 символов:

void main(){main();}

Обновление: Предложено roe, 15 символов:

main(){main();}

Примечание: Протестировано с VC ++ 2008.

6
ответ дан 27 November 2019 в 00:02
поделиться

Как насчет java Z ? Если файл не существует, произойдет сбой с ошибкой java.lang.NoClassDefFoundError . Так что мой ответ - ноль букв. Если это неверно, то ...

class T{}

"Вылетит" с $ java T Исключение в потоке "main" java.lang.NoSuchMethodError: main

Если вам нужно что-то, что действительно работает, тогда, если вы готовы немного злоупотребить

class T{static {int i =1/0;}}

Else

class T{public static void main(String[]a){main(a);}}
7
ответ дан 27 November 2019 в 00:02
поделиться

Попробуйте это в сборке:

push 0
ret

конечно добавьте весь остальной мусор для компиляции в приложение.

4
ответ дан 27 November 2019 в 00:02
поделиться

в Windows PowerShell:

throw
4
ответ дан 27 November 2019 в 00:02
поделиться

Golfscript - 1 Char

Многие операторы могут это делать, например,

*
(eval):1:in `initialize': undefined method `class_id' for nil:NilClass (NoMethodError)
from ../golfscript.rb:285:in `call'
from ../golfscript.rb:285:in `go'
from (eval):1:in `initialize'
from ../golfscript.rb:285:in `call'
from ../golfscript.rb:285:in `go'
from ../golfscript.rb:477
3
ответ дан 27 November 2019 в 00:02
поделиться

Lua, 3 символа

Деление на ноль не вызывает проблем в Lua, но здесь нечто столь же короткое:

a()

дает:

lua: isort.lua:1: attempt to call global 'a' (a nil value)
stack traceback:
    a.lua:1: in main chunk
    [C]: ?
2
ответ дан 27 November 2019 в 00:02
поделиться

F #, 11 символов

box 0 :?> unit

Компилируется без предупреждения. Вылетает с: System.InvalidCastException: невозможно преобразовать объект типа «System.Int32» к типу «Microsoft.FSharp.Core.Unit».

2
ответ дан 27 November 2019 в 00:02
поделиться

Символы F # 3

1/0

Компилируется, но выдает предупреждение.

2
ответ дан 27 November 2019 в 00:02
поделиться
main = undefined

В Haskell.

3
ответ дан 27 November 2019 в 00:02
поделиться

Perl

3 символа

1/0

Производит:

Illegal division by zero at crash.pl line 1.

(все еще ищу что-то, что сделает это за два ..)

1
ответ дан 27 November 2019 в 00:02
поделиться

Схема:

(1)

Текст-заполнитель для увеличения длины.

4
ответ дан 27 November 2019 в 00:02
поделиться

Если вы вы находитесь в компьютерном магазине, в котором есть TI-89, вы можете вывести его из строя, набрав это:

Exec "00000000"

(это 8 нулей)

Это приведет к "Illegal Instruction". Нажмите 2nd + Left + Right + ON, чтобы сбросить вычисление.

Если вы хотите повеселиться, сделайте следующее:

Exec "4E4A4E750000"

Это запускает скрытое меню тестирования оборудования, включая тесты памяти, тесты LCD (рисует шахматную доску и др. ) и более. К сожалению, строка состояния стирается, и ничто в ОС calc не возвращает ее обратно, поэтому, чтобы очистить себя, выполните сброс в соответствии с приведенными выше инструкциями или выполните следующие действия:

Exec "307C56E670FF20C020C020C020C020C04E750000"
11
ответ дан 27 November 2019 в 00:02
поделиться

Машинный код X86 : 1 байт

Из командной строки в Windows создайте файл a.com, содержащий байт F4, инструкцию остановки x86:

F:\>debug
-a 100
0BFD:0100 hlt
0BFD:0101
-r cx
CX 0000
:1
-n a.com
-w
Writing 00001 bytes
-q

F:\>a.com

ЦП NTVDM обнаружил недопустимую инструкцию

33
ответ дан 27 November 2019 в 00:02
поделиться

Perl

die
Died at test line 1.

die

выводит значение LIST в STDERR и завершает работу с текущим значением $! (errno).

23
ответ дан 27 November 2019 в 00:02
поделиться

Commodore 64 BASIC:

poke 2,2:sys2

или короче (с использованием ярлыков с графическими символами PETSCII):

pO2,2:sY2

(сбой: недопустимый код операции $ 02 на MOS / CSG6510). На самом деле это можно сделать в 7 байтах (3 инструкции):

lda #$02
sta $02
jmp $0002
11
ответ дан 27 November 2019 в 00:02
поделиться

процитировать этот ответ :

Все эти ответы и никакого Befunge? Я бы ставить справедливую сумму, это самый короткий решение их всех:

 1

Не шучу. Попробуй сам: http://www.quirkster.com/js/befunge.html

РЕДАКТИРОВАТЬ: Думаю, мне нужно это объяснить один. Операнд 1 помещает 1 в Внутренний стек Befunge и отсутствие чего-либо еще помещает это в цикл в соответствии с правилами языка.

Используя предоставленного переводчика, вы в конце концов - и я имею в виду в конце концов - попал в точку, где Массив Javascript, представляющий Стек Befunge становится слишком большим для браузер, который нужно перераспределить. Если у тебя есть простой интерпретатор Befunge с меньший и ограниченный стек - как и случай с большинством языков ниже - эта программа вызовет больше заметное переполнение быстрее.

7
ответ дан 27 November 2019 в 00:02
поделиться

Late, but whatever. PHP, 32 characters.

$r=function($z){$z($z);};$r($r);

gives Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 261900 bytes) in ...

Technically, I could also do it in 29 with

$r=function($z){$z();};$r(0);

But that isn't as much fun as infinite recursion. That, and I don't think "undefined function" errors should count as "compiling" in a scripting language, otherwise:

Z();

would be the smallest solution.

Also, instead of crashing, how about (as a script) surpassing max execution time? 8 chars:

for(;;);

My original take on that had a $i++ in the third expression of the for loop, but because PHP treats all integers as signed, instead of overflowing, it just goes negative.

5
ответ дан 27 November 2019 в 00:02
поделиться

Фактор (или Форт)

.

«Незаполнение стека данных»

8
ответ дан 27 November 2019 в 00:02
поделиться

Сбой с 0 символами:

$ > golf.c
$ gcc -Wl,--defsym=main=0 golf.c
$ ./a.out
Segmentation fault
67
ответ дан 27 November 2019 в 00:02
поделиться

Ба - Я могу разбить C с помощью 5 символов:

main;

Это объявляет неявную int переменную, называемую 'main'. Он глобальный, поэтому переменная имеет начальное значение 0 . Это C, имена не декорированы - поэтому компоновщик не понимает, что это var, а не функция.

GCC предупредил меня, но это все.

$ gcc crash.c 
crash.c:1: warning: data definition has no type or storage class
$ ./a.exe
Segmentation fault (core dumped)
$
128
ответ дан 27 November 2019 в 00:02
поделиться

Perl всего 2 символа.

&a
Undefined subroutine &main::a called at test.pl line 1.
4
ответ дан 27 November 2019 в 00:02
поделиться

Brainf * ck

5 символов

+[>+]

Это займет некоторое время, но в конечном итоге программе не хватит памяти и неизбежно произойдет сбой.

10
ответ дан 27 November 2019 в 00:02
поделиться

PostScript, 1 символ

Подобно GolfScript:

*

Синтаксически допустимо, но вылетает во время выполнения, потому что маркер * не определен (другая причина, чем причина сбоя GolfScript ).

2
ответ дан 27 November 2019 в 00:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: