aboutsummaryrefslogtreecommitdiff
path: root/challenge-001/john-barrett/perl5/README.md
blob: 65a2fb6106a9337d163f9a2a759eb3f00820ec90 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
As published on https://perlweeklychallenge.org/blog/a-new-week-a-new-challenge/ <br/>
Submissions demonstrated here using [Reply](https://metacpan.org/pod/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!