Beefy Boxes and Bandwidth Generously Provided by pair Networks
more useful options
 
PerlMonks  

Re: Find last position of an element in array

by davido (Cardinal)
on Mar 28, 2022 at 21:04 UTC ( [id://11142470]=note: print w/replies, xml ) Need Help??


in reply to Find last position of an element in array

List::Util is a core Perl module (ships with Perl) and provides a subroutine called first. That subroutine returns the actual element. But if you treat indexes as elements and reverse them you can get what you need:

#!/usr/bin/env perl use strict; use warnings; use List::Util qw(first); my @array = (1,1,1,2,2,2,2,2,3,3,3,4,4,4,4,4,4,5,5,6); my $idx = first {$array[$_] == 4} reverse 0..$#array; print "$idx\n";

If non-Core modules are allowed, which they ought to be, you can use List::MoreUtils, which provides lastidx, in which case you could do this:

#!/usr/bin/env perl use strict; use warnings; use List::MoreUtils qw(lastidx); my @array = (1,1,1,2,2,2,2,2,3,3,3,4,4,4,4,4,4,5,5,6); my $idx = lastidx {$_ == 4} @array; print "$idx\n";

If you don't want to use a module, just do this:

#!/usr/bin/env perl use strict; use warnings; my @array = (1,1,1,2,2,2,2,2,3,3,3,4,4,4,4,4,4,5,5,6); my $idx; for (reverse 0..$#array) { if ($array[$_] == 4) { $idx = $_; last; } } print "$idx\n";

And then repent for not being willing to use a module (even though this is quite easy to solve without).


Dave

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://11142470]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others sharing their wisdom with the Monastery: (3)
As of 2024-04-26 02:34 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found