Написать пост

Подборка неожиданного, странного, местами безумного кода: самые необычные программы из когда-либо написанных

Аватар Иван Бирюков

Сегодня мы поговорим о самых странных программах, какие вы когда-либо видели. И настолько непонятных, что даже прошаренные кодеры возьмутся за учебники.

Обложка поста Подборка неожиданного, странного, местами безумного кода: самые необычные программы из когда-либо написанных

Сегодня мы поговорим о самых странных программах, какие вы когда-либо видели. Настолько странных, что они сломают ваш мозг. Настолько маленьких, что не верится, что они работают. И настолько непонятных, что даже прошаренные кодеры начнут неистово гуглить.

Примечание Никогда не используйте такой код в реальных проектах — читаемость и поддерживаемость превыше всего.

Уровень 0. Вступление

Взгляните на этот милый код:

			(1x$a)!~/^1?$|^(11+?)\1+$/
		

Это регулярное выражение написано на Perl и проверяет, является ли число простым. Вот полный код программы для запуска. А вот наше руководство по Perl, чтобы вы могли начать его изучать.

А это выражение выдаст день недели для заданной даты:

			((y-=m<3)+y/4-y/100+y/400+" bed=pen+mad."[m]+d)%7;
		

А как вам этот код на Java?

			int i = (byte) + (char) - (int) + (long) - 1;
		

Чему будет равно i? Он вообще скомпилируется? Да уж…

А программа на гифке ниже — это куайн по имени qlobe, написанный на Ruby. Ну разве это не изумительно?

А эта — ну просто шедевр! Анимированный 3D-пончик, какая вкуснятина!

Вставьте этот код в адресную строку:

			data:text/html,<body%20style=margin:0><canvas%20id=q%20/><script>var%20q=document.getElementById('q'),s=window.screen,w=q.width=s.width,h=q.height=s.height,p=Array(256).join(1).split(''),c=q.getContext('2d'),m=Math;setInterval(function(){c.fillStyle='rgba(0,0,0,0.05)';c.fillRect(0,0,w,h);c.fillStyle='rgba(0,255,0,1)';p=p.map(function(v,i){r=m.random();c.fillText(String.fromCharCode(m.floor(2720+r*33)),i*10,v);v+=10;%20return%20v>768+r*1e4?0:v})},33)</script>
		

и оцените всю магию самостоятельно!

А вообще лучше ничего не копипастьте, особенно код для командной строки, последствия могут быть неприятными.

Большую часть программ, приведённых ниже, вы вряд ли поймёте. Но описания по ссылкам помогут прояснить ситуацию. Для запуска этих программ вам может понадобится один из онлайн-компиляторов, о которых мы рассказывали в одной из наших статей, например, ресурсы TutorialsPoint-CodingGround и repl.it — там есть онлайн-редакторы кода и компиляторы.

Уровень 1. Начинающий

pyjava.java – Java-код, написанный, как на Python. Вычисляет факториалы больших чисел.
one_line_swap.c – Странные однострочники, меняющие местами значения двух переменных.
hello_world.java – Магическим образом выводит в консоли «hello world».
obfuscated.java – Выводит в консоли «Hi!», но выглядит как большой бессмысленный комментарий.

Уровень 2. Типичный

Исходник – Описание

bitwise_arithmetic.c – Складывает и перемножает числа при помощи битовых операций.
prefix2postfix.c – Преобразует префиксную нотацию в постфиксную.
sapin.c – Выводит движущуюся новогоднюю ёлку.
crazy_jvm.java – Похоже, что JVM сошла с ума и выводит случайные числа.
confusion.java – Удивительно, но этот код компилируется и выводит 1.
not_so_random.java – Выведет (случайным образом!) 1 1 1 1 1 1 1 1 1 1.
bangladesh.c – Выводит карту Бангладеша.
signature_prime.c – Бесконечно (теоретически) выводит простые числа.
day_of_week.c – Вычисляет день недели для заданной даты.
polyglot_so404.py.pl.rb.c.bf – Выводит 404 на Python, Perl, Ruby, C и Brainfuck.
polyglot_quine.c.py.pl.rb – Куайн, который работает в C, Python, Perl и Ruby.

Уровень 3. Продвинутый

Исходник – Описание

compound_eye.rb – Выводит анимированный узор.
best_short_program.c – Считывает число, записанное словами, и выводит его в десятичном виде.
check_prime.pl – Проверяет, является ли число простым, при помощи регулярного выражения.
quine_signature.c – Самый короткий код на Си, который печатает сам себя.
clock_in1line.c – Выводит текущее время в виде ASCII-арта.
japh.pl – Выводит «just another perl hacker».
matrix_effect.html – Выводит экран Матрицы.
pi_signature.c – Вычисляет первые 15 тысяч знаков числа пи после запятой.

Уровень 4. Просветлённый

Исходник – Описание

mandelbrot_imager.py – Создаёт множество Мандельброта (может работать до 20 минут!).
shortest_tetris.html – Очень простой вариант Тетриса.
qlobe.rb – Выводит вращающийся глобус.
animated_3d_doughnut.c – Показывает трёхмерный анимированный ASCII-пончик.
mandelbrot_flythrough.pl – Позволяет вращать, приближать, отдалять и прокручивать множество Мандельброта.

Программы для ценителей

Исходник – Описание

octaglot.cob.pas.f77.c.ps.sh.pl.com – Полиглот, выводит «hello polyglots» на 8 языках.
esoteric_polyglot.mal.bf.ws.asdf.​123.spoon.excon – Полиглот, написанный на 7 эзотерических языках.
palindrome_polyglot_quine.cs.java – Код-палиндром, компилируется в C# и Java и выводит сам себя.
quine_relay.rb – Программа-уроборос, написанная на 100 различных языках.

У многих программ есть обсуждения на сайтах StackOverflow, Quora, Programming Puzzles & Code Golf и Hacker News.

Если вам понравилась эта подборка, то обязательно понравится ещё одна: CuteVirusCollection. Будьте осторожны! Все программы оттуда немедленно перехватят контроль над системой, какой бы мощной она не была. Но поверьте, вирусы ещё никогда не были такими милыми.

Вам не хватило странного кода? Вот ещё несколько подборок:

Следите за новыми постами
Следите за новыми постами по любимым темам
39К открытий39К показов