2013年1月7日月曜日

開発環境

『初めてのPerl 第6版』(Randal L. Schwartz, Tom Phoenix, brian d foy 共著、近藤 嘉雪 訳、オライリー・ジャパン、2012年、ISBN978-4-87311-567-2) の15章(スマートマッチとgiven-when)、15.6(練習問題)1を解いてみる。

その他参考書籍

1.

コード(BBEdit)

sample.pl

#!/usr/bin/env perl
use strict;
use warnings;
use utf8;
use 5.016;
binmode STDIN, ':utf8';
binmode STDOUT, ':utf8';

my $secret_num = int(1 + rand 100);

while(1){
  print "秘密の数(1から100までの整数)を入力: ";
  chomp(my $num = <STDIN>);
  last if $num =~/^\s*$/;
  given($secret_num){
    when($num =~ /\D/){ print "数値を入力してください\n";}
    when($num > $_){ print "Too high\n";}
    when($num < $_){ print "Too low\n";}
    when($num == $_){ print "当たり!\n";
                      last;}
  }
}

入出力結果(Terminal)

$ ./sample.pl
秘密の数(1から100までの整数)を入力: perl
数値を入力してください
秘密の数(1から100までの整数)を入力: 50
Too low
秘密の数(1から100までの整数)を入力: 75
Too high
秘密の数(1から100までの整数)を入力: 62
Too low
秘密の数(1から100までの整数)を入力: 68
当たり!
$

ちなみにJavaScriptの場合。

コード(BBEdit)

var secret_num = Math.floor(Math.random() * 100) + 1;
function clicked(){
  var num = parseInt($('#t_num').val());
  if(/\D/.test(num)){
    $('#pre0').append("数値を入力してください\n");
  } else if(num > secret_num){
    $('#pre0').append("Too high\n");
  } else if(num < secret_num){
    $('#pre0').append("Too low\n");
  } else if(num === secret_num){
    $('#pre0').append("正解!\n");
    $('#l0').remove();
    $('#btn0').remove();
    return;
  } else {
    $('#pre0').append("?\n");
  }
  $('#t_num').val("");
}
function f(e){
  var e = e ? e : window.e;
  if(e.keyCode === 13) clicked();
}
$('#btn0').click(clicked);
$('#t_num').keydown(f);
$('#pre0').append("秘密の数当てゲームスタート!\n");






pythonの場合。

sample.py

コード(BBEdit)

#!/usr/bin/env python3.3
#-*- coding: utf-8 -*-

import random, re

secret_number = random.randint(1,100)
while True:
    num = input("数値(1から100まで)を入力: ")
    if re.search(r"^\s*$", num): break
    if re.search(r"\D", num):
        print("数値を入力してください")
        continue
    num = int(num)
    if num > secret_number:
        print("Too high")
    elif num < secret_number:
        print("Too low")
    elif num == secret_number:
        print("正解!")
        break

入出力結果(Terminal)

$ ./sample.py
数値(1から100まで)を入力: python
数値を入力してください
数値(1から100まで)を入力: 
$ ./sample.py
数値(1から100まで)を入力: 50
Too high
数値(1から100まで)を入力: 25
Too high
数値(1から100まで)を入力: 12
Too high
数値(1から100まで)を入力: 6
Too low
数値(1から100まで)を入力: 9
Too high
数値(1から100まで)を入力: 7
Too low
数値(1から100まで)を入力: 8
正解!
$

0 コメント:

コメントを投稿