Peter’s blog ✴ Week 385 ✴ 3 August 2026
THE WEEKLY CHALLENGE
Lonely words and (outer)
You are given two sentences. Write a script to return list of all uncommon words, order is not important.
Example 1 Input: $sentence1 = 'apple banana apple' $sentence2 = 'banana orange' Output: ('orange') Example 2 Input: $sentence1 = 'cat dog' $sentence2 = 'bird fish' Output: ('cat', 'dog', 'bird', 'fish') Example 3 Input: $sentence1 = 'the quick brown fox' $sentence2 = 'the quick' Output: ('brown', 'fox') Example 4 Input: $sentence1 = 'hello' $sentence2 = 'hello' Output: () Example 5 Input: $sentence1 = 'blue blue red' $sentence2 = 'red green green yellow' Output: ('yellow')
From the examples I deduce 'uncommon' in this challenge means 'appears only once', and that is easily solved by counting the frequency of each word and reporting on those with frequency 1.
One could suggest that the sample size is rather small to deduce that a word is uncommon, and indeed in Example 4 above, 'hello' is classed as uncommon despite being 100% of the studied sample. But let's not quibble.
#!/usr/bin/perl # Blog: http://ccgi.campbellsmiths.force9.co.uk/challenge/385/1 use v5.26; # The Weekly Challenge - 2026-08-03 use utf8; # Week 385 - task 1 - Uncommon words use warnings; # Peter Campbell Smith binmode STDOUT, ':utf8'; use Encode; uncommon_words('the cat sat on the mat', 'the dog sat on the rug'); uncommon_words('house', 'house'); uncommon_words('apple banana apple', 'banana orange'); uncommon_words('blue blue red', 'red green green yellow'); sub uncommon_words { my ($words, %freq, $uncommon); # initialise $words = lc(qq[$_[0] $_[1]]); $uncommon = ''; # count frequencies $freq{$1} ++ while $words =~ m|([a-z]+)|g; # check for frequency 1 $uncommon .= ($freq{$_} == 1 ? qq['$_', ] : '') for keys %freq; $uncommon = 'none ' unless $uncommon; say qq[\nInput: \$sentence1 = '$_[0]',]; say qq[ \$sentence2 = '$_[1]']; say qq[Output: ] . substr($uncommon, 0, -2); }
10 lines of code
Input: $sentence1 = 'the cat sat on the mat', $sentence2 = 'the dog sat on the rug' Output: 'cat', 'mat', 'dog', 'rug' Input: $sentence1 = 'house', $sentence2 = 'house' Output: none Input: $sentence1 = 'apple banana apple', $sentence2 = 'banana orange' Output: 'orange' Input: $sentence1 = 'blue blue red', $sentence2 = 'red green green yellow' Output: 'yellow'
Any content of this website which has been created by Peter Campbell Smith is in the public domain