]]> ]]>

Nimrod 0.8.8

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

Версия компилятора, выпущенная 14 марта 2010 года.

Примеры:

Hello, World! - Nimrod (492):

echo "Hello, World!"

Факториал - Nimrod (493):

Используется рекурсивное вычисление факториала.

proc factorial(n: int): int64 =
  if n == 0:
    result = 1
  else:
    result = n * factorial(n - 1)

for i in countup(0,16):
  echo i, "! = ", factorial(i)

Факториал - Nimrod (494):

Факториал вычисляется итеративно. Отметим, что тип int64 в определении переменной факториала пропустить нельзя, иначе ее тип будет выведен как int, и переменная переполнится на 13!.

var f: int64 = 1
for i in countup(0,16):
  echo i, "! = ", f
  f = f * (i + 1)

Числа Фибоначчи - Nimrod (495):

Используется итеративное вычисление чисел Фибоначчи. Одним ключевым словом var можно объявить сразу несколько переменных, если эти объявления отформатированы отступами как блок. Тип переменной в объявлении можно не указывать только в том случае, если она инициализируется немедленно; Nimrod использует только локальный вывод типов, не глобальный.

for i in 1..16 — альтернативная форма записи цикла countup. & — оператор конкатенации строк, $ — преобразование числа в строку.

var
  f1 = 1
  f2 = 1
  f3: int
  res = ""
for i in 1..16:
  res = res & $f1 & ", "
  f3 = f1 + f2
  f1 = f2
  f2 = f3
echo res & "..."

Числа Фибоначчи - Nimrod (496):

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

from math import sqrt, pow, round

proc fibonacci(n: int): int =
  var phi: float64 = (1.0 + sqrt(5.0)) / 2.0
  return round((pow(phi, float64(n)) - pow(-phi, -float64(n))) / sqrt(5.0) + 0.0001)

var res = ""
for i in 1..16:
  res = res & $fibonacci(i) & ", "
echo res & "..."

Квадратное уравнение - Nimrod (497):

from math import sqrt
from strutils import parseFloat

var A = parseFloat(readLine(stdin))
if A == 0.0:
  echo "Not a quadratic equation."
else:
  var B = parseFloat(readLine(stdin))
  var C = parseFloat(readLine(stdin))
  var D = B * B - 4.0 * A * C
  if D == 0.0:
    echo "x = ", -0.5 * B / A
  elif D > 0.0:
    echo "x1 = ", -0.5 * (B - sqrt(D)) / A
    echo "x2 = ", -0.5 * (B + sqrt(D)) / A
  else:
    echo "x1 = (", -0.5 * B / A, ", ",  0.5 * sqrt(-D) / A, ")"
    echo "x2 = (", -0.5 * B / A, ", ", -0.5 * sqrt(-D) / A, ")"

CamelCase - Nimrod (498):

Эта программа использует регулярные выражения. В Nimrod они реализованы при помощи библиотеки PRCE (Perl-Compatible Regular Expressions), написанной на C.

from strutils import toLower, capitalize, join
import re

var text = toLower(readLine(stdin))
var words = split(text, re"[^a-z]+")
echo join(words.each(capitalize))

Комментарии

]]>

blog comments powered by Disqus

]]>

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