aboutsummaryrefslogtreecommitdiff
path: root/challenge-102/e-choroba/perl/ch-2.pl
blob: de6ca371049249c7964c59ac388f31450b45cefb (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
#!/usr/bin/perl
use warnings;
use strict;
use feature qw{ say };

sub hash_counting_string {
    my ($length) = @_;
    my $s = '#' x $length;
    while (-1 != (my $pos = rindex $s, '##')) {
        my $n = $pos + 2;
        substr $s, $pos + 1 - length $n, length $n, $n;
    }
    return $s
}

use Test::More;

is hash_counting_string(1), '#', '(a)';
is hash_counting_string(2), '2#', '(b)';
is hash_counting_string(3), '#3#', '(c)';
is hash_counting_string(10), '#3#5#7#10#', '(d)';
is hash_counting_string(14), '2#4#6#8#11#14#', '(e)';

is hash_counting_string(200), '#3#5#7#9#12#15#18#21#24#27#30#33#36#39#42#45#'
                            . '48#51#54#57#60#63#66#69#72#75#78#81#84#87#90#'
                            . '93#96#100#104#108#112#116#120#124#128#132#136#'
                            . '140#144#148#152#156#160#164#168#172#176#180#'
                            . '184#188#192#196#200#', 'long string';

is hash_counting_string(201), '#3#5#7#10#13#16#19#22#25#28#31#34#37#40#43#'
                            . '46#49#52#55#58#61#64#67#70#73#76#79#82#85#88#'
                            . '91#94#97#101#105#109#113#117#121#125#129#133'
                            . '#137#141#145#149#153#157#161#165#169#173#177'
                            . '#181#185#189#193#197#201#', 'even longer';

done_testing();