]]> ]]>

Unary

Диалект языка программирования Brainfuck

Unary — диалект языка Brainfuck, в котором код программы записывается с использованием только одного символа. Unary был придуман в 2005 году Lode Vandevenne как язык, требующий даже меньше токенов, чем Spoon, использующий два токена.

Программа на Unary генерируется из программы на Brainfuck следующим образом. Прежде всего, каждая команда Brainfuck заменяется на двоичный код из 4 символов по следующей таблице:

  • > -> 1000
  • < -> 1001
  • + -> 1010
  • - -> 1011
  • . -> 1100
  • , -> 1101
  • [ -> 1110
  • ] -> 1111

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

Для выполнения программы на Unary выполняется ее обратное преобразование в код на Brainfuck.

К сожалению, коды для решения даже небольших заданий имеют неестественно большой размер, и даже “родной” интерпретатор Unary с ними не справляется.

Примеры:

Hello, World!:

Пример для версий Müller's Brainfuck 2.0

Этот пример является переводом на Unary этого примера. Сам код слишком обширен, чтобы приводить его полностью, поэтому указана только его длина.

A string of 
708184005756841022918598670049178934705323143517361395031673227349803938380
119378597780037353721967636097362645175347036417214959141923667629285233360
306016978751166690464736541968556 zeroes (approximately 7*10^182).

Числа Фибоначчи:

Пример для версий Müller's Brainfuck 2.0

Этот пример является переводом на Unary этого примера. Сам код слишком обширен, чтобы приводить его полностью, поэтому указана только его длина.

A string of 
146778148267671308907956810331954494567788969820594569869966345643952713144
716974835554679004232198811425384864927587749892052914319949694507679080918
662111668706252645905597146857061868763596677983948203224834326028677131466
814323099384842068831692029352209655371798175735992788874417787727414767365
600708388513171998134124513036377960362194431944262896105838957344640161915
106378867996851411865254464299481964724009334722033995112813417289458551426
925973669722270280516592327343992579166227546099835941334220 zeros (approximately 1.5*10^509)

Комментарии

]]>

blog comments powered by Disqus

]]>

Работа программистам