Архив рубрики: Исполнимое

Ограниченный оператор amb на Ceylon

Не то чтобы это было что-то новое или сложное — сложен как раз неограниченный amb, он требует от языка возможности работы с продолжениями (continuations). Но вот. (По ссылке — код, который можно запустить в браузере.)

Кто такой этот amb, можете почитать тут и тут.

Mathematica для порчи изображений

Как ярко светит после бури солнце

из песенки

Знаю, вы уже давно интересуетесь, как сделать из неинтересной картинки странную. Вот один из способов, для которого понадобится Wolfram Mathematica версии, если прикинуть, не ниже 7. Восьмая подойдёт точно. Откроем её.

Читать далее Mathematica для порчи изображений

Превратите свои рисунки, сканы, рентгенограммы, фотографии и космические таблички в звуки с помощью программы AudioPaint! Конечно, она не единственная в своём роде, читающая картинку как спектрограмму, но перечислять здесь остальные неразумно.

Кўайн на хаскеле

Как правило, я не умею писать их. И не считается, что Haskell — это какой-то тяжёлый язык для написания на нём кўайна. Но всё же приведу его:

module Main where magic s = s ++ show s main = putStrLn s s = magic "module Main where\nmagic s = s ++ show s\nmain = putStrLn s\ns = magic "

Для точности и красоты вывода в консоль файл должен заканчиваться пустой строкой.

Комментарии: сначала я думал написать magic так, чтобы она заменяла, скажем, '#' в своём аргументе s на show s, но в лени найти, где же такую замену недорого купить, решил, что пускай сама строка будет последней в файле. Это даже имеет какую-то неуловимую приятность.

Разумеется, вместо s ++ show s можно было бы написать какой-нибудь concatMap escape, убив сразу и зайца '#', но… (Заметьте, краткости я тоже не преследовал, иначе бы постарался сделать что-то типа такого: module Main where;m s=s++show s;main=putStrLn s;s=m"module Main where;m s=s++show s;main=putStrLn s;s=m".)

Пролог как бесперспективное заблуждение

Быть может, я недостаточно известен своей нелюбовью к прологу, нечёткой логике в двух ипостасях и ещё чему-то. Надо это подправить.

Читать далее Пролог как бесперспективное заблуждение

Фибоначчи, Haskell, O(log n)

(Внимание: дальше не написано ничего нового, но если вы не знаете о возведении в степень за \(O(\log n)\), можете чуть-чуть почитать.)

Не секрет, что числа Фибоначчи можно вычислить за экспоненциальное время, используя наивную рекурсию; за линейное время, используя более аккуратный способ; и даже за константное время, используя округление \(\frac{\phi^n}{\sqrt5}\) до ближайшего целого и скрещивая пальцы, что знаков хватит.

Так же не секрет, что, не используя floating point, можно обойтись и \(O(\log n)\) с помощью вычисления степени за \(O(\log n)\). Но всё равно опишу это.

Читать далее Фибоначчи, Haskell, O(log n)