mirror of
https://github.com/Noratrieb/riverdelta.git
synced 2026-01-14 16:35:03 +01:00
69 lines
1.1 KiB
Text
69 lines
1.1 KiB
Text
mod owo ();
|
|
|
|
function main() = (
|
|
prIntln(0);
|
|
prIntln(1);
|
|
prIntln(9);
|
|
prIntln(2352353);
|
|
prIntln(100);
|
|
);
|
|
|
|
function prIntln(x: Int) = (
|
|
prInt(x);
|
|
print("\n");
|
|
);
|
|
|
|
function stringForDigit(x: Int): String =
|
|
if x == 0 then "0"
|
|
else if x == 1 then "1"
|
|
else if x == 2 then "2"
|
|
else if x == 3 then "3"
|
|
else if x == 4 then "4"
|
|
else if x == 5 then "5"
|
|
else if x == 6 then "6"
|
|
else if x == 7 then "7"
|
|
else if x == 8 then "8"
|
|
else if x == 9 then "9"
|
|
else trap();
|
|
|
|
function log10(x: Int): Int = (
|
|
let i = 0;
|
|
loop (
|
|
if x < 10 then break;
|
|
i = i + 1;
|
|
x = x / 10;
|
|
);
|
|
i
|
|
);
|
|
|
|
function pow(base: Int, exp: Int): Int = (
|
|
let acc = 1;
|
|
loop (
|
|
if exp == 0 then break;
|
|
acc = acc * base;
|
|
exp = exp - 1;
|
|
);
|
|
acc
|
|
);
|
|
|
|
function prInt(x: Int) = (
|
|
let mag = log10(x);
|
|
|
|
loop (
|
|
if mag == 0 then break;
|
|
let base = pow(10, mag);
|
|
|
|
let digit = x / base;
|
|
print(stringForDigit(digit));
|
|
|
|
x = x % base;
|
|
mag = mag - 1;
|
|
);
|
|
|
|
print(stringForDigit(x % 10));
|
|
);
|
|
|
|
function println(s: String) = (
|
|
print(s);
|
|
print("\n");
|
|
);
|