]]> ]]>

Hello, World! в INTERCAL

Пример для версий C-INTERCAL 28.0, J-INTERCAL 0.11, J-INTERCAL 0.12

INTERCAL — один из тех языков, в которых даже вывод “Hello, World!” — пытка. C-INTERCAL использует метод вывода строк под названием лента Тьюринга. На вход команды READ OUT подается массив чисел (в данном случае ,1), который обрабатывается слева направо, по одному элементу за раз, следующим образом:

  1. 8 бит ASCII-кода предыдущего выведенного символа отображаются зеркально — rev(i). Если выводится первый символ, rev(i) принимается равным 0.
  2. array(i) — i-ый элемент массива.
  3. rev(i) = rev(i-1) -- array(i)
  4. Биты rev(i) снова отображаются зеркально, и получаем ASCII-код следующего символа для вывода.

Также следует отметить использование модификатора PLEASE: в этой программе он должен встретиться 4 или 5 раз, в произвольных местах. 3 и меньше вызовут ошибку “ICL079I PROGRAMMER IS INSUFFICIENTLY POLITE”, 6 и больше — “ICL099I PROGRAMMER IS OVERLY POLITE”.

Остальные команды и выражения сравнительно обычны: # — префикс константы, <- — присвоение, SUB — индекс массива. Первая строка примера создает массив 16-битных целых из 13 элементов.

DO ,1 <- #13
PLEASE DO ,1 SUB #1 <- #238
DO ,1 SUB #2 <- #108
DO ,1 SUB #3 <- #112
DO ,1 SUB #4 <- #0
DO ,1 SUB #5 <- #64
DO ,1 SUB #6 <- #194
PLEASE DO ,1 SUB #7 <- #48
DO ,1 SUB #8 <- #26
DO ,1 SUB #9 <- #244
PLEASE DO ,1 SUB #10 <- #168
DO ,1 SUB #11 <- #24
DO ,1 SUB #12 <- #16
DO ,1 SUB #13 <- #162
PLEASE READ OUT ,1
PLEASE GIVE UP

Комментарии

]]>

blog comments powered by Disqus

]]>

Работа программистам