arrays: use for/in instead of unsafe [direct_array_access] (#8857)

This commit is contained in:
Nick Treleaven 2021-02-20 13:27:36 +00:00 committed by GitHub
parent 38d1eac7f5
commit 2be852e461
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 36 additions and 41 deletions

View file

@ -6,46 +6,43 @@ module arrays
// - merge - combine two sorted arrays and maintain sorted order
// min returns the minimum
[direct_array_access]
pub fn min<T>(a []T) T {
if a.len == 0 {
panic('.min called on an empty array')
}
mut val := a[0]
for i in 0 .. a.len {
if a[i] < val {
val = a[i]
for e in a {
if e < val {
val = e
}
}
return val
}
// max returns the maximum
[direct_array_access]
pub fn max<T>(a []T) T {
if a.len == 0 {
panic('.max called on an empty array')
}
mut val := a[0]
for i in 0 .. a.len {
if a[i] > val {
val = a[i]
for e in a {
if e > val {
val = e
}
}
return val
}
// idx_min returns the index of the first minimum
[direct_array_access]
pub fn idx_min<T>(a []T) int {
if a.len == 0 {
panic('.idxmin called on an empty array')
panic('.idx_min called on an empty array')
}
mut idx := 0
mut val := a[0]
for i in 0 .. a.len {
if a[i] < val {
val = a[i]
for i, e in a {
if e < val {
val = e
idx = i
}
}
@ -53,16 +50,15 @@ pub fn idx_min<T>(a []T) int {
}
// idx_max returns the index of the first maximum
[direct_array_access]
pub fn idx_max<T>(a []T) int {
if a.len == 0 {
panic('.idxmax called on an empty array')
panic('.idx_max called on an empty array')
}
mut idx := 0
mut val := a[0]
for i in 0 .. a.len {
if a[i] > val {
val = a[i]
for i, e in a {
if e > val {
val = e
idx = i
}
}