開発環境
- 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 4(Conditionals and Recursion)のExercises 4-1、2、3.を取り組んでみる。
Exercises 4-1、2、3.
コード(Emacs)
#!/usr/bin/env perl6 # -*- coding: utf-8 -*- say '1-1.'; sub days-hours-minutes-seconds($seconds is copy) { my $days = $seconds div (24 * 60 * 60); $seconds %= (24 * 60 * 60); my $hours = $seconds div (60 * 60); $seconds %= (60 * 60); my $minutes = $seconds div 60; $seconds %= 60; say "days: $days, hours: $hours, minutes: $minutes, seconds: $seconds"; } say '1-2.'; days-hours-minutes-seconds(240000); say '1-3.'; my $seconds = (prompt "seconds: ").Int; days-hours-minutes-seconds($seconds); say '2-1.'; sub check-fermat($a, $b, $c, $n) { if (($a ** $n + $b ** $n) == $c ** $n) and $n > 2 { say 'Holy smokes, Fermat was wrong!'; } else { say "No, that doesn't work."; } } say '2-2.'; sub check-fermat-prompt { my $a = get().Int; my $b = Int($*IN.get); my $c = (prompt '').Int; my $n = Int(get); check-fermat($a, $b, $c, $n); } check-fermat-prompt; say '3-1.'; sub is-triangle($a, $b, $c) { if $a >= $b + $c or $b >= $c + $a or $c >= $a + $b { say 'No'; } else { say 'Yes'; } } say '3-2.'; sub is-triangle-prompt { my $a = get().Int; my $b = Int($*IN.get); my $c = (prompt '').Int; is-triangle($a, $b, $c); } is-triangle-prompt; is-triangle-prompt;
入出力結果(Terminal, REPL)
$ cat sample1.txt 240000 2 3 4 5 1 2 2 1 2 3 $ ./sample1.pl < sample1.txt 1-1. 1-2. days: 2, hours: 18, minutes: 40, seconds: 0 1-3. seconds: days: 2, hours: 18, minutes: 40, seconds: 0 2-1. 2-2. No, that doesn't work. 3-1. 3-2. Yes No $
0 コメント:
コメントを投稿