## TASK #1 › Middle 3-digits

### Task

You are given an integer.

Write a script find out the middle 3-digits of the given integer, if possible otherwise throw sensible error.

### My solution

This task was pretty straight forward.

- Check the an integer was provided.
- If it is negative, make it positive with the
`abs`

function. - Display an error if it contains an even number of digits, or one digit
- The first character we want to show can be calculated by
`(length - 3) ÷ 2`

. Use this value with`substr`

to display the middle three digit

### Examples

```
$ ./ch-1.pl 1234567
345
$ ./ch-1.pl -123
123
$ ./ch-1.pl 1
too short
$ ./ch-1.pl 10
even numbers of digits
```

## TASK #2 › Validate SEDOL

### Task

You are given 7-characters alphanumeric SEDOL.

Write a script to validate the given SEDOL. Print 1 if it is a valid SEDOL otherwise 0.

### My solution

The first thing that I need to do is check if the input is valid. I use the regular expression `^[B-DF-HJ-NP-TV-Z0-9]{6}[0-9]$`

to perform this. According to the specification, vowels are not valid. Did anyone else sing the alphabet song when generating the regular expression? :)

I set the value of `$sum`

to the last digit. I then go through the other digits. I work out the value of the digit in the position (0-9 if it is is a number, 10-35 if it is a letter) and multiple the weight.

If the resulting sum is divisible by 10, I return 1 (a valid SEDOL value), otherwise I return 0.

### Examples

```
$ ./ch-2.pl 2936921
1
$ ./ch-2.pl 1234567
0
$ ./ch-2.pl B0YBKL9
1
```

## Top comments (0)