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"; |