P20 - Remove the K'th element from a list.

AUTHOR

Philip Potter

Specification

P20 (*) Remove the K'th element from a list.
You may choose to mutate the array in-place or create a new sequence and
    return it.

Examples

Example 1 (mutating in-place):

> my @l = <a b c d>;
    > remove-at(@l,2);
    > say ~@l;
    a c d

Example 2 (returning a copy):

> say ~remove-at-copy(<a b c d>, 2);
    a c d
use v6;



# a. Simple version, in place
#       @array  - your "@array" must always use "@" - even for a single element
#       .splice - Your array is also an object, you can call the method .splice
#               - offset - where to remove (starting 0)
#               - length - how many to remove
#               - What to add in its place (nothing in this case, see P21-scottp.pl
#                                           for an example of adding)
my @array = <a b c d>;
@array.splice(1, 1);
say ~@array;

# b. Using a sub in-place
#       @arr is declared with "is rw", so if you splice on the actual array, not a
#       copy of it, you will mutate the caller's copy.
sub remove-at (@arr, Int $pos) {
    @arr.splice($pos - 1, 1);
    return;
}

my @array2 = <a b c d>;

remove-at(@array2, 2);
say ~@array2;

# Alternatively, call using pseudomethod syntax:

@array2.&remove-at(2);
say ~@array2;

# c. Using a sub, returning a copy
#    This time we must copy the sequence and mutate that
#     -- easy-peasy with the "is copy" declaration
sub remove-at-copy(@list is copy, $pos) {
    @list.splice($pos-1, 1);
    return @list;
}

say ~remove-at-copy(<a b c d>, 2);

# and again pseudomethod syntax
say ~<a b c d>.&remove-at-copy(2);

# vim: expandtab shiftwidth=4 ft=perl6

See Also

P01-scottp.pl

P01 - Find the last box of a list.

P01-topo.pl

P01 - Find the last element of a list.

P02-scottp.pl

P02 - Find the last but one box of a list.

P02-topo.pl

P02 - Find the last two elements of a list.

P03-scottp.pl

P03 - Find the K'th element of a list.

P03-topo.pl

P03 - Find the kth element of a list.

P04-scottp.pl

P04 - Find the number of elements of a list

P04-topo.pl

P04 - Find the number of elements in a list.

P05-scottp.pl

P05 - Reverse a list

P05-topo.pl

P05 - Reverse a list.

P06-ajs.pl

P06 - Find out whether a list is a palindrome.

P06-scottp.pl

P06 - Find out whether a list is a palindrome.

P06-topo.pl

P06 - Find out whether a list is a palindrome.

P07-eric256.pl

P07 - Flatten a nested array structure.

P07-topo.pl

P07 - Flatten a nested array structure.

P07-viklund.pl

P07 - Flatten a nested array structure.

P08-eric256.pl

P08 - Eliminate consecutive duplicates of list elements.

P08-topo.pl

P08 - Eliminate consecutive duplicates of list elements.

P08-viklund.pl

P08 - Eliminate consecutive duplicates of list elements.

P09-rje.pl

P09 - Pack consecutive duplicates of list elements into sublists.

P09-scottp.pl

P09 - Pack consecutive duplicates of list elements into sublists.

P09-topo.pl

P09 - Pack consecutive duplicate elements of a list into sublists.

P09-unobe.pl

P09 - Pack consecutive duplicates of list elements into sublists.

P10-scottp.pl

P10 - Run-length encoding of a list.

P10-topo.pl

P10 - Run-length encoding of a list.

P10-unobe.pl

P10 - Run-length encoding of a list.

P11-topo.pl

P11 - Modified run-length encoding.

P11-unobe.pl

P11 - Modified run-length encoding.

P12-rhebus.pl

P12 - Decode a run-length encoded list.

P12-topo.pl

P12 - Decode modified run-length encoding.

P12-unobe.pl

P12 - Decode a run-length encoded list.

P13-rhebus.pl

P13 - Run-length encoding of a list (direct solution).

P13-topo.pl

P13 - Direct run-length encoding.

P13-viklund.pl

P13 - Run-length encoding of a list (direct solution).

P14-scottp.pl

P14 - Duplicate the elements of a list.

P14-topo.pl

P14 - Duplicate the elements in a list.

P14-viklund.pl

P14 - Duplicate the elements of a list.

P15-rhebus.pl

P15 - Replicate the elements of a list a given number of times.

P15-topo.pl

P15 - Replicate the elements of a list a given number of times.

P15-unobe.pl

P15 - Replicate the elements of a list a given number of times.

P16-edpratomo.pl

P16 (**) Drop every N'th element from a list.

P16-topo.pl

P16 - Drop every nth element from a list.

P17-topo.pl

P17 - Split a list into two parts; the length of the first part is given.

P17-unobe.pl

P17 - Split a list into two parts; the length of the first part is given.

P18-topo.pl

P18 - Extract a slice from a list. Indices start at 1.

P19-topo.pl

P19 - Rotate a list n places to the left.

P20-topo.pl

P20 - Remove the kth element of a list.

P21-scottp.pl

P21 - Insert an element at a given position into an array.

P21-topo.pl

P21 - Insert an element at a given position into a list.

P22-scottp.pl

P22 - Create a list containing all integers within a given range.

P22-topo.pl

P22 - Create a list containing all integers within a given range.

P23-topo.pl

P23 - Extract a given number of randomly selected elements from a list.

P24-topo.pl

P24 - Draw N different random numbers from the set 1..M.

P25-topo.pl

P25 - Generate a random permutation of the elements of a list.

P26-topo.pl

P26 - Generate the combinations of k distinct objects chosen from the n elements of a list.

P31-rhebus.pl

P31 - Determine whether a given integer number is prime.

P32-rhebus.pl

P32 - Determine the greatest common divisor of two positive integer

P33-rhebus.pl

P33 - Determine whether two positive integer numbers are coprime.

P34-rhebus.pl

P34 - Calculate Euler's totient function phi(m).

P35-rhebus.pl

P35 - Determine the prime factors of a given positive integer.

P36-ovid.pl

P36 - Determine the prime factors of a given positive integer (2).

P36-rhebus.pl

P36 - Determine the prime factors of a given positive integer (2).

P37-rhebus.pl

P37 - Calculate Euler's totient function phi(m) (improved).

P39-rhebus.pl

P39 - A list of prime numbers.

P40-rhebus.pl

P40 - Goldbach's conjecture.

P41-rhebus.pl

P41 - A list of Goldbach compositions.

P91-edpratomo.pl

P91 - Knight's tour.

README.md

The Camelia image is copyright 2009 by Larry Wall. "Raku" is trademark of the Yet Another Society. All rights reserved.