Если у вас есть целые числа, вы можете кодировать или декодировать строки (достаточно простых схем, таких как A = 1, B = 2 и т. Д.). Вам нужно только уметь сравнивать константы или сравнивать int. Следовательно, кажется, нет фундаментальной проблемы.
Вы работаете с числами и пишете такие вещи, как
if (n == 1) print "A"
if (n == 2) print "B"
...
Могут быть некоторые практические трудности. Проблема со строками не в том, что в них есть символы, а в том, что они эквивалентны очень большим числам. Здесь вам нужно либо иметь доступ к числам с неограниченной точностью, либо к какому-либо массиву чисел с фиксированным размером, либо к другой большой структуре данных. Массив чисел сделает для вас то, что может сделать строка. Но если ваш язык завершен по Тьюрингу, у него должен быть способ легко получить доступ к некоторому большому фрагменту памяти
Жаль, что полный язык Тьюринга, ограниченный 32-битной лентой (или где вы должны дать новое имя каждому другому пространству памяти из 32 бит), был бы жаль, не уверен, что вы могли бы написать квинну с таким ограничением. Кстати, было бы интересно узнать, как вы доказали, что ваш язык завершен по Тьюрингу, если у вас нет массивов или подобной структуры. Обычный метод, который я обычно использую, - это реализация машины Тьюринга с использованием моего языка. Но для этого мне нужен какой-то массив для имитации полосы.
Этот вид кодирования - это, в основном, то, что Гедель сделал в своей теореме о незавершенности, найти способ кодировать логические выражения в виде целых чисел и затем обосновать это.
Если вы дадите еще несколько элементов синтаксиса, мы могли бы даже попытаться это сделать (если у вас нет функций, а есть только gotos, это также будет проблемой, но вы также можете смоделировать это). Основная проблема заключается в том, что вы должны найти способ «сжать» ваш кодированный исходный код. Если у вас есть длинная строковая константа, это может помочь.