Один из моих любимых типов задач на этом сайте - это проблемы с ограниченным источником . Эти проблемы налагают компьютерное ограничение, которое должны пройти источники потенциальных ответов. Мне так нравятся эти испытания, что я работаю над языком игры в гольф, предназначенным для победы в этих соревнованиях в течение некоторого времени. Теперь я хочу бросить вам вызов. Ваша задача - разработать язык для решения множества ограниченных исходных задач. У вас будет время разработать и внедрить язык, после чего изменения и новые дополнения станут неконкурентоспособными, и все заявки будут встречаться лицом к лицу в борьбе с проблемами с ограниченными источниками .
счет
Перед публикацией задачи я составлю список простых задач, которые нужно решить, и список ограничений источника, которым необходимо следовать. За каждое совпадение с заданием и исходными ограничениями ваш язык может заработать от 0 до 2 баллов. (будет 10 испытаний и 10 ограничений, что приведет к 100 комбинациям) Оценка по языку
- 1 балл, если он может выполнить задачу с ограничением до 150 байт
- 2 балла, если решение является самым коротким решением из всех конкурирующих языков (оба языка получат 2 балла в случае ничьей)
- 0 баллов, если они не могут создать программу, которая выполняет задачу с ограничением менее чем в 150 байтов.
Ваш счет будет суммой всех очков, заработанных в каждом возможном матче. Цель состоит в том, чтобы получить самый высокий балл. Другие люди могут помочь вам найти решение для каждой задачи и улучшить ваш счет.
Я покажу 4 пункта каждого списка во время публикации и еще 8 пунктов через неделю после второго ответа. Вам будет разрешено набрать только 1 балл (самое короткое представление не учитывается) в любом совпадении, в котором обе части были обнаружены до первой недели. Таким образом, вы можете получить представление о том, насколько хорошо ваш язык складывается во время работы над ним, но вы не можете создать свой язык просто для того, чтобы учесть все проблемы и ограничения.
Я включу в вопрос хэш предполагаемых категорий, чтобы вы могли быть уверены, что я не буду менять их в течение недели, чтобы дать преимущество любой стороне. Кроме того, я не буду никому рассказывать о скрытых параметрах, пока не закончится неделя, и не буду участвовать в соревнованиях самостоятельно.
Существующие языки
Эта задача открыта для всех ранее существовавших языков, однако, если вы не являетесь автором языка, сделайте ответ в вики сообщества, чтобы другие участники нашего сообщества могли внести непосредственный вклад в оценку. Флаги командной строки не должны подчиняться каким-либо ограничениям, однако каждая программа должна запускаться с одинаковыми аргументами командной строки (т.е. вы должны выбрать один и придерживаться его). Они не добавляют к вашему количеству байтов.
Проблемы и ограничения
Ограничения применяются к кодировке ASCII ваших двоичных файлов независимо от используемой вами кодовой страницы. Некоторые из них ссылаются на существующий на сайте вопрос, от которого они наследуют свои требования к задачам и ограничения источника. Вы можете игнорировать все, что «запрещает встроенные функции» или игнорирует существующие мета-консенсусы по любым из связанных задач.
Как предостережение: не пытайтесь править адвокатом; Я знаю, что это соревнование, но потому что есть по существу 100 различных проблем, и я просто не могу гарантировать, что все они будут полностью беспроблемными. Просто попробуйте повеселиться.
проблемы
ограничения
Байты в порядке возрастания (каждый байт больше, чем последний)
Исходный код - палиндром
Остальные критерии имеют хэш sha512:
4de5eca33c6270798606cf1412820c4ce112d8b927ef02877f36795b2b15ffacca51ea598fa89b8d6bc9f4cde53810e0e7ade30e536e52e28f40a6a13841dfc5 -
источник
Ответы:
ширина
Переводчик все еще находится в стадии разработки (у меня все еще есть несколько неиспользуемых слотов для команд). Репо с дополнительной документацией можно найти здесь .
Деннис добавил ширину в TIO менее минуты назад: попробуйте онлайн!
Width - это эзотерический язык, основанный на стеке, который я недавно разработал на основе идей, которые я впервые бросил в этом вопросе . Он полностью основан на том, насколько широко, более или менее, буква написана «обычным» шрифтом. Единственные символы, которые делают что-либо, это буквы, прописные и строчные. Все остальные символы игнорируются. Я разбил буквы на 10 категорий ширины, которые образуют 10 различных действий, возможных в ширине:
2
,5
И6
обеспечивает доступ к командам, большинство из которых взаимодействуют со стеком. Более подробную информацию можно найти наinfo.txt
странице репозитория Github.Это код Python интерпретатора. У меня еще есть несколько команд для добавления, и я думаю, как работать с обработкой ошибок, но в остальном это должно быть завершено. (Я также собираюсь добавить флаг в какой-то момент, чтобы позволить тестирование с более абстрактным синтаксисом, потому что в противном случае этот язык - гигантская боль для работы)
источник