Camel
Peter
Peter Campbell Smith

Weird encodings

Weekly challenge 364 — 9 March 2026

Week 364: 9 Mar 2026

Task 2

Task — Goal parser

You are given a string, $str. Write a script to interpret the given string using Goal Parser. The Goal Parser interprets “G” as the string “G”, “()” as the string “o”, and “(al)” as the string “al”. The interpreted strings are then concatenated in the original order.

Examples


Example 1
Input: $str = "G()(al)"
Output: "Goal"
G    -> "G"
()   -> "o"
(al) -> "al"

Example 2
Input: $str = "G()()()()(al)"
Output: "Gooooal"
G       -> "G"
four () -> "oooo"
(al)    -> "al"

Example 3
Input: $str = "(al)G(al)()()"
Output: "alGaloo"
(al) -> "al"
G    -> "G"
(al) -> "al"
()   -> "o"
()   -> "o"

Example 4
Input: $str = "()G()G"
Output: "oGoG"
() -> "o"
G  -> "G"
() -> "o"
G  -> "G"

Example 5
Input: $str = "(al)(al)G()()"
Output: "alalGoo"
(al) -> "al"
(al) -> "al"
G    -> "G"
()   -> "o"
()   -> "o"

Analysis

This is even simpler than task 1 in that no executed s||| is required.

I'm struggling to think of a use case for this!

Try it 

Try running the script with any input:



example: G()(al)G()(al)G()(al)

Script


#!/usr/bin/perl

# Blog: http://ccgi.campbellsmiths.force9.co.uk/challenge

use v5.26;    # The Weekly Challenge - 2026-03-09
use utf8;     # Week 364 - task 2 - Goal parser
use warnings; # Peter Campbell Smith
binmode STDOUT, ':utf8';
use Encode;

goal_parser('G()(al)');
goal_parser('G()()()()(al)');
goal_parser('(al)G(al)()()');
goal_parser('()G()G');
goal_parser('al)(al)G()()');

sub goal_parser {
    
    my ($string, $base);
    
    # initialise
    $string = $_[0];
    say qq[\nInput:  '$string'];
    $base = ord('a') - 1;
    
    # apply rules
    $string =~ s|\(\)|o|g;
    $string =~ s|[\(\)]||g;
    
    say qq[Output: '$string'];
}

last updated 2026-03-09 — 8 lines of code

Output


Input:  'G()(al)'
Output: 'Goal'

Input:  'G()()()()(al)'
Output: 'Gooooal'

Input:  '(al)G(al)()()'
Output: 'alGaloo'

Input:  '()G()G'
Output: 'oGoG'

Input:  'al)(al)G()()'
Output: 'alalGoo'

 

Any content of this website which has been created by Peter Campbell Smith is in the public domain