Mayan numerals: Difference between revisions

Content added Content deleted
(Add Factor example)
(→‎{{header|rust}}: Rust version.)
Line 2,256: Line 2,256:
</pre>
</pre>


=={{header|Rust}}==
<lang rust>const ONE: &str = "●";
const FIVE: &str = "——";
const ZERO: &str = "Θ";

fn main() {
println!("{}", mayan(4005));
println!("{}", mayan(8017));
println!("{}", mayan(326205));
println!("{}", mayan(886205));
println!("{}", mayan(69));
println!("{}", mayan(420));
println!("{}", mayan(1063715456));
}

fn mayan(dec: i64) -> String {
let mut digits = vec![];
let mut num = dec;
while num > 0 {
digits.push(num % 20);
num = num / 20;
}
digits = digits.into_iter().rev().collect();
let mut boxes = vec!["".to_string(); 6];
let n = digits.len();
for i in 0..n {
if i == 0 {
boxes[0] = "┏━━━━".to_string();
if i == n - 1 {
boxes[0] += "┓";
}
} else if i == n - 1 {
boxes[0] += "┳━━━━┓";
} else {
boxes[0] += "┳━━━━";
}
for j in 1..5 {
boxes[j] += "┃";
let elem = 0.max(digits[i] - (4 - j as i64) * 5);
if elem >= 5 {
boxes[j] += &format!("{: ^4}", FIVE);
} else if elem > 0 {
boxes[j] += &format!("{: ^4}", ONE.repeat(elem as usize % 15));
} else if j == 4 {
boxes[j] += &format!("{: ^4}", ZERO);
} else {
boxes[j] += &" ";
}
if i == n - 1 {
boxes[j] += "┃";
}
}
if i == 0 {
boxes[5] = "┗━━━━".to_string();
if i == n - 1 {
boxes[5] += "┛";
}
} else if i == n - 1 {
boxes[5] += "┻━━━━┛";
} else {
boxes[5] += "┻━━━━";
}
}

let mut mayan = format!("Mayan {}:\n", dec);
for b in boxes {
mayan += &(b + "\n");
}
mayan
}</lang>
{{out}}
<pre>
Mayan 4005:
┏━━━━┳━━━━┳━━━━┓
┃ ┃ ┃ ┃
┃ ┃ ┃ ┃
┃ —— ┃ ┃ ┃
┃ —— ┃ Θ ┃ —— ┃
┗━━━━┻━━━━┻━━━━┛

Mayan 8017:
┏━━━━┳━━━━┳━━━━┳━━━━┓
┃ ┃ ┃ ┃ ●● ┃
┃ ┃ ┃ ┃ —— ┃
┃ ┃ ┃ ┃ —— ┃
┃ ● ┃ Θ ┃ Θ ┃ —— ┃
┗━━━━┻━━━━┻━━━━┻━━━━┛

Mayan 326205:
┏━━━━┳━━━━┳━━━━┳━━━━┳━━━━┓
┃ ┃ ┃ ┃ ┃ ┃
┃ ┃ ┃ —— ┃ ┃ ┃
┃ ┃ ┃ —— ┃ —— ┃ ┃
┃ ●● ┃ Θ ┃ —— ┃ —— ┃ —— ┃
┗━━━━┻━━━━┻━━━━┻━━━━┻━━━━┛

Mayan 886205:
┏━━━━┳━━━━┳━━━━┳━━━━┳━━━━┓
┃ ┃ ┃ ┃ ┃ ┃
┃ ┃ ┃ —— ┃ ┃ ┃
┃ ┃ —— ┃ —— ┃ —— ┃ ┃
┃ —— ┃ —— ┃ —— ┃ —— ┃ —— ┃
┗━━━━┻━━━━┻━━━━┻━━━━┻━━━━┛

Mayan 69:
┏━━━━┳━━━━┓
┃ ┃ ┃
┃ ┃ ┃
┃ ┃●●●●┃
┃●●● ┃ —— ┃
┗━━━━┻━━━━┛

Mayan 420:
┏━━━━┳━━━━┳━━━━┓
┃ ┃ ┃ ┃
┃ ┃ ┃ ┃
┃ ┃ ┃ ┃
┃ ● ┃ ● ┃ Θ ┃
┗━━━━┻━━━━┻━━━━┛

Mayan 1063715456:
┏━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┓
┃ ● ┃ ┃ ┃ ┃ ┃ ┃ ● ┃
┃ —— ┃ ●● ┃ ┃ ┃ ┃ ●● ┃ —— ┃
┃ —— ┃ —— ┃●●● ┃ ┃●●● ┃ —— ┃ —— ┃
┃ —— ┃ —— ┃ —— ┃●●●●┃ —— ┃ —— ┃ —— ┃
┗━━━━┻━━━━┻━━━━┻━━━━┻━━━━┻━━━━┻━━━━┛
</pre>
=={{header|zkl}}==
=={{header|zkl}}==
<lang zkl>var zero=" \u0398 ",one="\u2219", five=String("\u2500"*4,"\n"), fill=" \n";
<lang zkl>var zero=" \u0398 ",one="\u2219", five=String("\u2500"*4,"\n"), fill=" \n";