Цель состоит в том, чтобы написать программу, которая кодирует другую программу (ввод) с минимально возможным количеством символов.
счет
- Оценка равна разному количеству символов, необходимых для вывода.
- Чем ниже балл, тем лучше.
правила
- Нет целевых языков с ограниченным набором команд. (Без Brainf ** k, пробелов и т. Д.)
Редактировать : я имею в виду, по крайней мере, 26 значащих символов,A
это не меняет способ работы программы brainf ** k, поэтому вы не можете считать этот символ. То же относится и к пробелам. - Целевой язык должен существовать во время написания этого вопроса.
- Вы должны включить небольшое объяснение, как вы архивируете свой счет.
- Программа ввода действительна.
- Закодированная программа должна быть действительной программой на том же языке, что и ввод.
- Закодированная программа должна выполнять ту же работу, что и исходная программа.
- Ваш кодировщик должен работать для каждой действующей программы на этом языке.
- Включите некоторые примеры ввода и вывода.
Примечания
- Кодировщик может быть написан на любом языке, а не только на том языке, на который он нацелен.
- Это не код-гольф , читаемые программы приветствуются.
- Великая цель - увидеть, сколько разных символов необходимо, чтобы написать что-нибудь на этом языке. Я запретил BF и т. Д., Потому что не будет никаких проблем.
- Это было вдохновлено печатью строки, состоящей из как можно меньшего числа различных символов , вы можете использовать ее как метагольф для этого вопроса.
пример
В Java вы можете использовать \uXXXX
вместо других символов. Действительная запись кодирует каждый символ ввода таким образом. Это будет иметь оценку 18. ( \ 0-9a-f
)
Код в Tcl, кодирует программу Java:
set res {}
foreach char [split [read stdin] {}] {
append res [format \\u%04x [scan $char %c]]
}
puts $res
gets
читаю только одну строку ввода? И вы пропустили u
кодировщик (но, с другой стороны, вам не нужно пространство, и, таким образом, счет остается прежним).