UP / HOME

Challenge 135

Task 1 - Middle 3-digits

You are given an integer.

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

Input: $n = 1234567
Output: 345

Input: $n = -123
Output: 123

Input: $n = 1
Output: too short

Input: $n = 10
Output: even number of digits

Raku

Input's absolute value is taken because the sign is meaningless here. To get middle 3-digits we take 3 digits from $n.chars div 2 - 1 position, -1 because Arrays are 0-indexed. It's guaranteed that we have odd number of digits so div 2 will land us on left of middle digit, we just take 3 digits from there.

$n = abs $n;
die "too short" if $n.chars < 3;
die "even number of digits" if $n.chars %% 2;
put $n.substr($n.chars div 2 - 1, 3);

Andinus / 2021-10-22 / Modified: 2022-10-04 Tue 21:36 Emacs 27.2 (Org mode 9.4.4)