Periodic table: Difference between revisions

m
no edit summary
(Created Nim solution.)
mNo edit summary
Line 1,394:
{{output}}
[[File:Periodic Table FutureBasic.png]]
 
 
=={{header|Go}}==
Line 2,025 ⟶ 2,024:
72 -> 6 4
89 -> 9 4</pre>
 
=={{header|V (Vlang)}}==
{{trans|Wren}}
<syntaxhighlight lang="Zig">
import log
 
const limits = [[3, 10], [11, 18], [19, 36], [37, 54], [55, 86], [87, 118]]
 
fn main() {
for n in [1, 2, 29, 42, 57, 58, 59, 71, 72, 89, 90, 103, 113] {
row, col := periodic_table(n)
println("Atomic number ${n} -> ${row}, ${col}")
}
}
 
fn periodic_table(n int) (int, int) {
mut logged := log.Log{}
mut row, mut start, mut end := 0, 0, 0
if n < 1 || n > 118 {logged.fatal("Atomic number is out of range.")}
if n == 1 {return 1, 1}
if n == 2 {return 1, 18}
if n >= 57 && n <= 71 {return 8, n - 53}
if n >= 89 && n <= 103 {return 9, n - 85}
for i := 0; i < limits.len; i++ {
limit := limits[i]
if n >= limit[0] && n <= limit[1] {
row, start, end = i+2, limit[0], limit[1]
break
}
}
if n < start+2 || row == 4 || row == 5 {return row, n - start + 1}
return row, n - end + 18
}
</syntaxhighlight>
 
{{out}}
<pre>
Atomic number 1 -> 1, 1
Atomic number 2 -> 1, 18
Atomic number 29 -> 4, 11
Atomic number 42 -> 5, 6
Atomic number 57 -> 8, 4
Atomic number 58 -> 8, 5
Atomic number 59 -> 8, 6
Atomic number 71 -> 8, 18
Atomic number 72 -> 6, 4
Atomic number 89 -> 9, 4
Atomic number 90 -> 9, 5
Atomic number 103 -> 9, 18
Atomic number 113 -> 7, 13
</pre>
 
=={{header|Wren}}==
291

edits