開発環境
- 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)のPart 1(Starting with the basics)、Chapter 5(Fruitful subroutines)の Exercise 5-3.を取り組んでみる。
Exercise 5-3.
コード(Emacs)
#!/usr/bin/env perl6
# -*- coding: utf-8 -*-
sub first_l(Str $word) {
    substr $word, 0, 1;
}
sub last_l(Str $word) {
    substr $word, *-1, 1;
}
sub middle_l(Str $word) {
    return False if $word.chars <= 1;
    substr $word, 1, *-1;
}
say '1.';
say middle_l('ab');
say middle_l('');
say middle_l('"');
say '2.';
sub is-palindrome(Str $word) {
    return True if $word.chars <= 1;
    first_l($word) eq last_l($word) and is-palindrome(middle_l($word));
}
say is-palindrome(''), ' ', True;
say is-palindrome('a'), ' ', True;
say is-palindrome('aa'), ' ', True;
say is-palindrome('ab'), ' ', False;
say is-palindrome('abc'), ' ', False;
say is-palindrome('aba'), ' ', True;
say is-palindrome('abcdedcba'), ' ', True;
say is-palindrome('abcdeedcba'), ' ', True;
入出力結果(Terminal, REPL)
$ ./palindrome.pl 1. False False 2. True True True True True True False False False False True True True True True True $
0 コメント:
コメントを投稿