開発環境
- macOS Sierra - Apple (OS)
- Emacs (Text Editor)
- Perl 6 (プログラミング言語)
- Rakudo(コンパイラ、実装)
Think Perl 6: How to Think Like a Computer Scientist (Laurent Rosenfeld(著)、Allen B. Downey(著)、Oreilly & Associates Inc)のChapter 7(Strings)のExercises 7-1、2、3.を取り組んでみる。
Exercises 7-1、2、3.
コード(Emacs)
#!/usr/bin/env perl6
say '7-1.';
sub count($letter, $word) {
my $count = 0;
my $i = 0;
while $i < $word.chars {
$i = $word.index($letter, $i);
last unless $i;
$count++;
$i++;
}
$count;
}
say count('a', 'banana') == 3;
say count('a', 'bnn') == 0;
sub count1($letter, $word) {
my $count = 0;
for 0..$word.chars - 1 -> $i {
$count++ if $word.substr($i, 1) eq $letter;
}
$count;
}
say count1('a', 'banana') == 3;
say count1('a', 'bnn') == 0;
say '7-2.';
sub is-lower (Str $char) {
so $char ~~ /^<[a..z]>$/;
}
say not is-lower('');
say is-lower('a');
say not is-lower('ab');
say not is-lower('A');
say not is-lower('aB');
sub any-lowercase-unless(Str $string) {
for $string.comb -> $char {
return False unless is-lower $char;
}
True;
}
say 'any-lowercase-unless';
say any-lowercase-unless('');
say any-lowercase-unless('a');
say any-lowercase-unless('ab');
say not any-lowercase-unless('A');
say not any-lowercase-unless('AB');
say not any-lowercase-unless('aB');
say not any-lowercase-unless('Ab');
sub any-lowercase-flag(Str $string) {
my $flag = True;
for $string.comb -> $char {
$flag &&= is-lower $char;
}
$flag;
}
say 'any-lowercase-flag';
say any-lowercase-flag('');
say any-lowercase-flag('a');
say any-lowercase-flag('ab');
say not any-lowercase-flag('A');
say not any-lowercase-flag('AB');
say not any-lowercase-flag('aB');
say not any-lowercase-flag('Ab');
say '7-3.';
sub rotate-word($string, $n) {
my $result = '';
for $string.comb {
my $m = $_.ord + $n;
$m -= 26 if $m > 'z'.ord;
$result ~= $m.chr;
}
$result;
}
say 'rotate-word';
my $s1 = 'perl';
my $s2 = 'xyz';
say $s1;
say rotate-word $s1, 13;
say rotate-word rotate-word($s1, 13), 13;
say $s2;
say rotate-word $s2, 13;
say rotate-word rotate-word($s2, 13), 13;
入出力結果(Terminal)
$ ./sample1.pl 7-1. True True True True 7-2. True True True True True any-lowercase-unless True True True True True True True any-lowercase-flag True True True True True True True 7-3. rotate-word perl crey perl xyz klm xyz $
0 コメント:
コメントを投稿