開発環境
- 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 コメント:
コメントを投稿