]]> ]]>

npiet 1.2

Версия реализации npiet языка программирования Piet

Последняя (на март 2011) версия интерпретатора npiet.

Примеры:

Hello, World! - Piet (308):

В этом примере используются только две команды — push и out(char). Для того, чтобы вывести на печать один символ, нужно сначала создать блок произвольного цвета из количества пикселей, равного ASCII-коду символа, затем справа от него создать блок цвета, на один темнее, из произвольного количества пикселей (команда push), и наконец, справа от него создать блок цвета, на один левее исходного, из произвольного количества символов (команда out(char)). После этого цикл повторяется.

Для того, чтобы закончить работу программы, используется петля — блок одного цвета, окруженный черными пикселями. Когда указатель инструкций попадает в этот блок, он не может его покинуть ни в каком направлении.

Декоративная версия примера демонстрирует, что форма блоков может быть любой, даже с пикселями других цветов внутри.

Hello, World! на Piet (базовый вариант)
Hello, World! на Piet (базовый вариант)

Hello, World! на Piet (базовый вариант, увеличение 5x)
Hello, World! на Piet (базовый вариант, увеличение 5x)

Hello, World! на Piet (декоративный вариант)
Hello, World! на Piet (декоративный вариант)

Hello, World! на Piet (декоративный вариант, увеличение 5x)
Hello, World! на Piet (декоративный вариант, увеличение 5x)

Hello, World! - Piet (406):

Этот пример сгенерирован автоматически, при помощи транслятора, написанного Сергеем Льюисом (Sergei Lewis). В комплект входят транслятор с C-подобного языка на ассемблер и с ассемблера — в изображение Piet. Так, в данном случае исходная программа выглядела следующим образом:

main()
{
asm{ @"Hello, World!\r\n" }
}

Hello, World! на Piet, сгенерированный автоматически
Hello, World! на Piet, сгенерированный автоматически

Hello, World! на Piet, сгенерированный автоматически (увеличение 5x)
Hello, World! на Piet, сгенерированный автоматически (увеличение 5x)

Факториал - Piet (407):

Этот пример сгенерирован автоматически. Ниже приведена исходная программа, из которой он был получен. Используется итеративное вычисление факториала. Значения 13! и больше вычисляются неправильно из-за переполнения.

main()
{
  f = 1;
  for ( i = 0; i <= 16; i++ )
  {
    __outn(i);
    asm{ @"! = " }
    __outn(f);
    __out(10);
    f = f * (i+1);
  }
}

Факториал на Piet
Факториал на Piet

Факториал на Piet (увеличение 4x)
Факториал на Piet (увеличение 4x)

Числа Фибоначчи - Piet (408):

Этот пример сгенерирован автоматически. Ниже приведена исходная программа, из которой он был получен. Используется итеративное вычисление чисел Фибоначчи.

main()
{
  f1 = 0;
  f2 = 1;
  for ( i = 1; i <= 16; i++ )
  {
    __outn(f2);
    __out(44);
    __out(32);
    f2 = f1 + f2;
    f1 = f2 - f1;
  }
  __out(46);
  __out(46);
  __out(46);
  __out(10);
}

Числа Фибоначчи на Piet
Числа Фибоначчи на Piet

Числа Фибоначчи на Piet (увеличение 4x)
Числа Фибоначчи на Piet (увеличение 4x)


Комментарии

]]>

blog comments powered by Disqus

]]>

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