2017年4月3日月曜日

開発環境

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 コメント:

コメントを投稿