LINUX.ORG.RU
ФорумTalks

Браинфакалка данных вашего ПеКа

 , , , пора спать,


1

3

Договнокодил очередное ненужно. А именно транслятор произвольных данных в код на brainfuck который будучи исполненным выводит закодированные в нём данные. Текст, картинка, чво угодно.

Типа cat /dev/random | brainfucktor -o bigbrainfuck.b

Или устроить «матрицу» brainfucktor -i /dev/random

Так то это просто ради экспериментов, но может кому надо я фиг знаю, кодировщик в виде модуля Lua конечно же и утилита командной строки покрывающая все его возможности, из возможностей просто игра генерирования разного brainfuck кода из одних и тех же данных. Работает на любой версии Lua от 5.1 до 5.4+

Код тормоз, такой же как и я. Для оптимизации его надо целиком переписывать и на Сях, но в этом нет смысла, это забава для небольших данных, хотя жрать может любые размеры, перегнать 10 мегабайт уже вечность, так что это просто для мелочи, если вдруг надо :D

Описание параметров

Usage:  brainfucktor -i [FILE] -o [FILE]
        brainfucktor -e 'encode this text to brainfuck'
        cat file | brainfucktor - #read from pipe
        brainfuck photo.png -o photo.bf

Encode input data to code in brainfuck language

Arguments:

   -h --help     This help information
   -             Input read from stdin
   -i  [FILE]    Input  filename for read
   -o  [FILE]    Output filename for write
   -e  [TEXT]    Input from command line argument

   -cb [NUMBER]  Cycle body size factor (>=1 default=2 )
   -cs [NUMBER]  Cycle split factor     (>=1 default=16)
   -cd [NUMBER]  Cycle distance factor  (>=1 default=64)
   -vd [NUMBER]  Value distance factor  (>=1 default=8 )
   -ch [NUMBER]  Separate input by chunks size (>=1 default=1024 bytes)
   -ml [NUMBER]  Set max line size for split output ( >=1 default 80 bytes)
   -sl           Create single line output (this disabled -ml option)
   -pc           Print currect configuration for code generation

You can skip -i option and just set filename, but filename expect first

Пример вывода Hello World! с немного разными настройками генерации

brainfucktor -e 'Hello World!'
+++++++++++[>+++++++<-]>-----.>+++++[<++++++>-]<-.+++++++..+++.>+++++++[>+++++<
-]>---.>++++++++++[<++++++>-]<-----.>+++++[<+++++>-]<-.+++.------.--------.>+++
+++[>++++++<-]>---.
brainfucktor -e 'Hello World!' -vd 50
+++++++++++[>+++++++<-]>-----.+++++++++++++++++++++++++++++.+++++++..+++.>+++++
++[>+++++<-]>---.>++++++++++[<++++++>-]<-----.++++++++++++++++++++++++.+++.----
--.--------.>++++++[>++++++<-]>---.
brainfucktor -e 'Hello World!' -cd 4
+++++++++++[>+++++++<-]>-----.>++++++++++++[>+++++++++<-]>-------.+++++++..+++.
>+++++++[>+++++<-]>---.>++++++++++[>+++++++++<-]>---.>+++++++++++++[>+++++++++<
-]>------.+++.------.--------.>++++++[>++++++<-]>---.
brainfucktor -e "Hello World!" -vd 128
+++++++++++[>+++++++<-]>-----.+++++++++++++++++++++++++++++.+++++++..+++.-------
------------------------------------------------------------------------.+++++++
++++++++++++++++++++++++++++++++++++++++++++++++.++++++++++++++++++++++++.+++.--
----.--------.------------------------------------------------------------------
-.
brainfucktor -e "Hello World!" -vd 1 -cs 8
>+++[<++++>-]<-[>+++++++<-]>-----.>+++++[<++++++>-]<-.>+++[<+++>-]<--..>+[<+++>-
]<.>+++++++[>+++++<-]>---.>++++++++++[<++++++>-]<-----.>+++++[<+++++>-]<-.>+[<++
+>-]<.>++[<--->-]<.>+++[<--->-]<+.>++++++[>++++++<-]>---.

Если использовать модуль напрямую, то он гибкий, может жрать таблицу, файл, строку
и выплёвывать возвратом строки от функции или писать в таблицу, файл, функцию. Ввод обрабатывается поблочно, чанками его размер регулируется от 1 до 2^31.

Сгенерированный код при исполнении жрёт ячеек памяти в максимуме N*2 где N количество закодированных байт, в минимуме жрёт всего 2 ячейки памяти, а дальше их переиспользует. Для исполнения больших 50+ мегебайт блоков кода с циклами нужен интерпретатор brainfuck без ограничений на память в 30000 ячеек. :D

Код жирный, прям как я, поэтому сюда не влезет несмотря на то что я влез. Как мы недавно узнали нейроидиоты не могут в браинфук,
а это значит у нас есть средство борьбы со скайнетом, когда терминаторы придут и роботы заполонят эту плонету, мы будем общаться на этом простом и красивом языке :)

- использовать на свой страх и риск

Код и документация тут

Запускать можно прям из каталога, модуль подхватится который рядом лежит.

Локальные установка и удаление в $HOME/.local/

#Установка
make PREFIX=$HOME/.local install install-cli
#Удаление
make PREFIX=$HOME/.local uninstall uninstall-cli

Хоп и твой дистрибутив стал почти как Slackware :D

Изначально было всего 15 строчек. Но я нахлобучил дублирующегося кода и лапши на ifах до ~500 строк :D
Двойные комментарии ваще шедевр, надо было ещё и на китайском написать лол. Вроде всё.

Досвиданья.

★★★★★

Последнее исправление: LINUX-ORG-RU (всего исправлений: 4)
Ответ на: комментарий от praseodim

А зачем? Просто выполняешь программу на brainfuck’е и радуешься

skiminok1986 ★★★★★
()
Ответ на: комментарий от praseodim

Задача этой программы только захреканать,а расхренакать это задача другой программы, она пока ещё не совсем готова :)

LINUX-ORG-RU ★★★★★
() автор топика

Для оптимизации его надо целиком переписывать и на Сях

Для аутентичности надо переписать на brainfuck

Kolins ★★★★
()
Ответ на: комментарий от Werenter

Другого такого нету :) Это защита от скайнета.

LINUX-ORG-RU ★★★★★
() автор топика
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)