I’ve been doing the Weekly
Challenges. The
latest
involved searching sequences and parsing strings. (Note that this ends
today.)
But first: many thanks to Mohammad Anwar for keeping this going
(and writing most of the challenges). I've been doing this since
number 16 and I'm still having a good time (even if I'm spreading it
over ten different languages now).
Task 1: Smallest Index
You are given an array of integers, @ints
.
Write a script to find the smallest index i
such that i mod 10 == $ints[i]
otherwise return -1
.
Straightforward if an early return is possible, wihch in most places
it is.
(I seem to have solved a slightly different problem, as I'm testing
for $ints[i] mod 10 == i
. But I'm not sure it works as specified
anyway. Let my carelessness stand as a warning against yours.)
Kotlin:
fun smallestindex(a: List<Int>): Int {
a.forEachIndexed {i, n ->
if (n % 10 == i) {
return i
}
}
return -1
}
Task 2: Alphanumeric String Value
You are given an array of alphanumeric strings.
Write a script to return the maximum value of alphanumeric string in
the given array.
The value of alphanumeric string can be defined as
a) The numeric representation of the string in base 10 if it is made
up of digits only.
b) otherwise the length of the string
In Perl, this is clearly a regexp check.
sub alphanumericstringvalue($a) {
my @l;
foreach my $n (@{$a}) {
if ($n =~ /^[0-9]+$/) {
push @l, 0 + $n;
} else {
push @l, length($n);
}
}
return max(@l);
}
In most other languages, this is a matter of trying to conversion to
integer and catching any error, whether by flagged return value
(JavaScript):
function alphanumericstringvalue(a) {
let l = [];
for (let n of a) {
let p = 1 * n;
if (Number.isNaN(p)) {
p = n.length;
}
l.push(p);
}
return Math.max(...l);
}
or with an actual exception handler (Python):
def alphanumericstringvalue(a):
l = []
for n in a:
p = 0
try:
p = int(n)
except:
p = len(n)
l.append(p)
return max(l)
Full code on
github.
Comments on this post are now closed. If you have particular grounds for adding a late comment, comment on a more recent post quoting the URL of this one.