Abstract
The concatenate an array problem from HackerRank.
Concatenate an array to itself#
Problem#
Concatenate an Array with Itself
Given a list of countries, each on a new line, your task is to read them into an array. Then, concatenate the array with itself (twice) - so that you have a total of three repetitions of the original array - and then display the entire concatenated array, with a space between each of the countries’ names.
Recommended References#
Here’s a great tutorial with useful examples related to arrays in Bash.
Input Format#
A list of country names. The only characters present in the country names will be upper or lower case characters and hyphens.
Output Format#
Display the entire concatenated array, with a space between each of them.
Sample Input#
Namibia
Nauru
Nepal
Netherlands
NewZealand
Nicaragua
Niger
Nigeria
NorthKorea
Norway
Sample Output#
Namibia Nauru Nepal Netherlands NewZealand Nicaragua Niger Nigeria NorthKorea Norway Namibia Nauru Nepal Netherlands NewZealand Nicaragua Niger Nigeria NorthKorea Norway Namibia Nauru Nepal Netherlands NewZealand Nicaragua Niger Nigeria NorthKorea Norway
Explanation#
The entire concatenated array has been displayed.
No Newline
The read
command expects input that ends with a newline, which is not provided
in this challenge, so the solution is considerably more complicated
than would otherwise be necessary.
Solution#
#!/usr/bin/env bash
declare -a country_array
# shellcheck disable=SC2162
while IFS= read -r array_line || [[ -n "$array_line" ]]; do
country_array+=("${array_line}")
done
country_array+=("${country_array[@]}" "${country_array[@]}")
printf "%s " "${country_array[@]}"