Skip to content

Instantly share code, notes, and snippets.

@jbarrett
Last active March 30, 2019 21:39
Show Gist options
  • Save jbarrett/6dfa1c7b250e5f7e28ef18ff63110048 to your computer and use it in GitHub Desktop.
Save jbarrett/6dfa1c7b250e5f7e28ef18ff63110048 to your computer and use it in GitHub Desktop.
Perl weekly challenge 1

As published on https://perlweeklychallenge.org/blog/a-new-week-a-new-challenge/
Submissions demonstrated here using Reply.

Write a script to replace the character ‘e’ with ‘E’ in the string ‘Perl Weekly Challenge’. Also print the number of times the character ‘e’ is found in the string.

I didn't write a script so I fail this challenge already.

0> my $foo = 'Perl Weekly Challenge'
$res[0] = "Perl Weekly Challenge"
1> $foo =~ s/e/E/g;
$res[1] = 5
2> $foo
$res[2] = "PErl WEEkly ChallEngE"
3> 

Write a one-liner to solve the FizzBuzz problem and print the numbers 1 through 20. However, any number divisible by 3 should be replaced by the word ‘fizz’ and any divisible by 5 by the word ‘buzz’. Those numbers that are both divisible by 3 and 5 become ‘fizzbuzz’.

I don't remember where I saw this, but it is my favourite Perl5 FizzBuzz:

4> { no strict; no warnings; map { (fizz)[$_%3].(buzz)[$_%5]||$_ } 1..20 }
$res[4] = [
    [0]  1,
    [1]  2,
    [2]  "fizz",
    [3]  4,
    [4]  "buzz",
    [5]  "fizz",
    [6]  7,
    [7]  8,
    [8]  "fizz",
    [9]  "buzz",
    [10] 11,
    [11] "fizz",
    [12] 13,
    [13] 14,
    [14] "fizzbuzz",
    [15] 16,
    [16] 17,
    [17] "fizz",
    [18] 19,
    [19] "buzz"
]

Since I didn't write that myself I also fail the second part of the challenge. Not going well. Let's see...

$ perl -MAcme::FizzBuzz -e '1' | head -n 20 | tr '[:upper:]' '[:lower:]'
1
2
fizz
4
buzz
fizz
7
8
fizz
buzz
11
fizz
13
14
fizzbuzz
16
17
fizz
19
buzz

There!

@jbarrett
Copy link
Author

spong bob

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment