2012年12月21日金曜日

開発環境

『初めてのPerl 第6版』(Randal L. Schwartz, Tom Phoenix, brian d foy 共著、近藤 嘉雪 訳、オライリー・ジャパン、2012年、ISBN978-4-87311-567-2) の10章(さまざまな制御構造)、10.11(練習問題)2を解いてみる。

その他参考書籍

2.

コード(BBEdit)

sample.pl

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

my $Debug = $ENV{DEBUG} // 1;
my $secret_num = int(1+rand 100);
print "($secret_num)\n" if $Debug;

print "秘密の数当てゲーム\n";

while(1){
  chomp(my $n = <STDIN>);
  last if $n =~ /^\s*$/;
  if($n =~ /^\D*$/){
    print "数値を入力してください\n";
  } elsif ($n > $secret_num){
    print "Too high\n";
  } elsif($n < $secret_num) {
    print "Too low\n";
  } else {
    print "正解!\n";
    last;
  }
}

入出力結果(Terminal)

$ ./sample.pl
(28)
秘密の数当てゲーム
28
正解!
$ export DEBUG=0
$ ./sample.pl
秘密の数当てゲーム
50
Too high
25
Too low
37
Too low
43
Too low
46
Too low
48
正解!
$ echo $DEBUG
0
$ unset DEBUG
$

ちなみにJavaScriptの場合。

コード(BBEdit)

<script>
var secret_num = Math.floor(Math.random() * 100) + 1;
function clicked(){
  var n = $('#t0').val();
  if(n === ""){
    $('#label0').remove();
    $('#btn0').remove();
    $('#debug_p').remove();
    return;
  }
  n = parseInt(n);
  if(/\D/.test(n)){
    $('#pre0').append("数値を入力してください\n");
  } else if( n > secret_num){
    $('#pre0').append("Too high\n");  
  } else if(n < secret_num){
    $('#pre0').append("Too low\n");
  } else {
    $('#pre0').append(secret_num + ": 正解!");
    $('#label0').remove();
    $('#btn0').remove();
    $('#debug_p').remove();
  }
}
function f(nsEvent){
  var event = nsEvent ? nsEvent : window.event;
  if(event.keyCode === 13) clicked();
}
function on_off(){
  var a = $('#btn1').val();
  if( a === "on"){
    $('#btn1').val("off");
    $('#snum').text("秘密の数: " + secret_num);
  } else {
    $('#btn1').val("on");
    $('#snum').text("");
  }
}
</script>
<p id="debug_p">デバック情報: <input id="btn1" type="button" value="on"  onclick="on_off()"/><span id="snum"></span></p>
<label id="label0">秘密の数当てゲーム(1から100): <input id="t0" type="text" value="" onkeydown="f()" /></label>
<input id="btn0" type="button" value="当たり/外れ?" onclick="clicked()" />



デバック情報:

pythonの場合。

sample.py

コード(BBEdit)

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

import random
import re
import os

if 'DEBUG' in os.environ.keys():
    debug = int(os.environ['DEBUG'])
else:
    debug = 1

secret_num = random.randint(1,100)

if debug:
    print("({0})".format(secret_num))

while True:
    n = input()
    if re.match(r"^\s*$", n): break
    if re.match(r"\D", n):
        print("数値を入力してください")
        continue
    n = int(n)
    if n > secret_num:
        print("Too high")
    elif n < secret_num:
        print("Too low")
    else:
        print("正解!")
        break

入出力結果(Terminal)

$ ./sample.py
(17)
17
正解!
$ export DEBUG=0
$ ./sample.py
50
Too high
25 
Too high
12
Too low
18
Too low
21
Too low
23
Too low
24
正解!
$ echo $DEBUG
0
$ export DEBUG=1
$ ./sample.py
(10)
10
正解!
$ unset DEBUG
$ ./sample.py
(60)
60
正解!
$ echo $DEBUG

$

0 コメント:

コメントを投稿