Вдохновленный этим вопросом , ваша цель сегодня состоит в том, чтобы закодировать URL-адрес в brainfuck.
Мой браузер был взломан! Адресная строка была превращена в интерпретатора мозгового удара. Мне нужна программа, которая превращает URL-адрес в программу для ума. Мой компьютер тоже очень медленный, поэтому, если программа «Brainfuck» мала, лучше.
О, и у меня только одна открытая рабочая вкладка, мой твиттер. Так что вы можете отправить мне программу только в твиттере.
Напишите программу, которая вписывает твит (140 символов) на любом языке, который принимает строку в качестве входных данных и выводит программу «мозгового удара».
Эта программа для брейкфука будет работать без ввода и генерировать вывод.
Этот вывод будет вставлен в адресную строку Google Chrome и выполнен.
Если поведение Google Chrome идентично поведению, которое вы получите, введя строку ввода из # 1, тогда решение является действительным. Перенаправление с помощью сокращателей URL считается другим поведением - оставайтесь хотя бы на одном домене.
Вы можете предположить, что интерпретатор brainfuck имеет бесконечную точность целых чисел со знаком в каждой ячейке и неограниченное количество ячеек.
Ваша оценка определяется суммой длин программ, созданных с помощью функции brainfuck для кодирования следующего набора URL:
https://www.google.com/
/codegolf/47895/
http://www.golfscript.com/golfscript/examples.html
http://en.wikipedia.org/wiki/Percent-encoding
ftp://ftp.freebsd.org/pub/FreeBSD/
https://github.com/isaacg1/pyth/blob/master/doc.txt#L92
http://ftp.gnu.org/non-gnu/nethack/nethack-3.4.0.tar.gz.back-RSN.README
Наименьший счет выигрывает.
http://www.google.com/
или это будет простоgoogle.com
? (Оба действительны в том, что касается Google Chrome, но ваш список содержит только полные формы) PS У меня почти есть желание написать расширение для Chrome, которое делает это ...http://www.google.com/
программы Brainfuck она производит может выводитьgoogle.com
,www.google.com
и т.д., так как они все результат в одной и той же странице. Но напримерftp://ftp.freebsd.org/pub/FreeBSD/
это не то же самое, чтоftp.freebsd.org/pub/FreeBSD/
.ftp://ftp.freebsd.org/pub/FreeBSD/
действительно так же, какftp.freebsd.org/pub/FreeBSD/
в Google Chrome. Это делает задачу немного легче, чем я предполагал, но такова жизнь. Я не буду менять требования, поэтому можно просто ничего скинуть раньше://
.Ответы:
Pyth - 118 байт, оценка: 154 + 567 + 597 + 620 + 530 + 875 + 1092 =
6630662346534435Теперь используя коэффициент умножения алгоритма!
Это довольно простой алгоритм, хотя и немного лучше, чем приведенные выше.
Я планировал использовать Pyth, но с текущим алгоритмом Python умещается <140 байт.Сначала он разбирает это
http://
с помощьюsplit("//")
иwww.
и/
в конце. Затем он использует функцию min, чтобы проверить, какой из трех рассмотренных вариантов является лучшим:+
или-
для обновления текущего значения ячейки до желаемого значения ячейки+
-хЗатем я всегда вставляю
.
вывод каждого символа.Подробное объяснение нового кода в ближайшее время. Я как бы недоделал игру в гольф, особенно зачистку
www.
и/
в конце, но меня это не беспокоит, так как я ограничен 20 байтами.Это удивительно работает на
ftp://
URL, так как это хром, и хром автоматически превращаетсяftp.freebsd.org/pub/FreeBSD/
вftp://ftp.freebsd.org/pub/FreeBSD/
Я планирую затем использовать словарь для хранения значений в ячейке и посмотреть, был ли символ уже внесен в ячейку.
Brainfuck Omnibox Extension
Это правильно! После того как я увидел комментарий @ BrainSteel, я понял, что должен это сделать. Это не берет на себя весь омнибокс, только тогда , когда вы делаете bf, tab. Кроме того, API-интерфейс омнибокса странный, он не позволяет мне пересылать код в омнибокс, я должен сам с ним справиться. Поэтому я делаю свою собственную
http://
проверку и затем устанавливаю URL вкладки.Поскольку мне не хотелось платить 5 долларов, необходимых для размещения вашего расширения в интернет-магазине, вам, ребята, придется установить его вручную. Просто загрузите zip-файл отсюда: https://drive.google.com/file/d/0B0qkKIzGc0QiNzBzVUJjZkRIZ0k/view?usp=sharing , распакуйте архив, перейдите на страницу расширений в Chrome, нажмите на опцию режима dev в правом верхнем углу и загрузить распакованное расширение.
Надеюсь, вам, ребята, понравится! :)
источник
ftp://
URL.ftp://
. Ну что ж.C
140134132138128139 байт263 + 816 + 911 + 955 + 827 + 1355 + 1779 =
72696906 байтОбновление: 6 байтов меньше, благодаря Nutki!
Обновите снова, 128 байтов. Код значительно менее читабелен. Теперь он также пытается удалить URL-адрес
ftp://
.Обновление третье, на 139 байт. Код немного более читабелен и избавлен от некоторого неприятного неопределенного поведения. Теперь, если имени сайта предшествует
www.
, оно удаляется. Я получил под 7k, но я думаю, что я должен уступить Maltysen с Pyth. Отлично сработано.Разгадал немного:
Этот код берет URL в командной строке, и преобразует его в доменную печь , используя только
.
,-
и+
. Код делает попытку раздеть строкуftp://
,http://
,https://
иwww.
перед преобразованием в BF. Вот список выходов выходов:источник
for(;c-a;a+=c>a,a-=c<a)p(c>a?43:45)
должно работать.Brainfuck, 77 байт, оценка = 31647
Оценка - это сумма
codepoint+4
для каждого персонажа.(Использует реализацию BF с EOF = 0.)
Пример:
источник
JavaScript (ES6) - 137 байт, оценка - 7413
Это использует только ., +и -. Вы можете проверить это в консоли Firefox.
Это мой счетчик очков:
источник