From 11dbedfaad4a9a9521ece2198a8dc491678b1902 Mon Sep 17 00:00:00 2001 From: shyouhei Date: Wed, 29 Aug 2007 04:06:12 +0000 Subject: add tag v1_8_6_5001 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/tags/v1_8_6_5001@13304 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ruby_1_8_6/sample/biorhythm.rb | 160 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 160 insertions(+) create mode 100644 ruby_1_8_6/sample/biorhythm.rb (limited to 'ruby_1_8_6/sample/biorhythm.rb') diff --git a/ruby_1_8_6/sample/biorhythm.rb b/ruby_1_8_6/sample/biorhythm.rb new file mode 100644 index 0000000000..c7e26c4fff --- /dev/null +++ b/ruby_1_8_6/sample/biorhythm.rb @@ -0,0 +1,160 @@ +#!/usr/local/bin/ruby +# +# biorhythm.rb - +# $Release Version: $ +# $Revision$ +# $Date$ +# by Yasuo OHBA(STAFS Development Room) +# +# -- +# +# +# + +# probably based on: +# +# Newsgroups: comp.sources.misc,de.comp.sources.os9 +# From: fkk@stasys.sta.sub.org (Frank Kaefer) +# Subject: v41i126: br - Biorhythm v3.0, Part01/01 +# Message-ID: <1994Feb1.070616.15982@sparky.sterling.com> +# Sender: kent@sparky.sterling.com (Kent Landfield) +# Organization: Sterling Software +# Date: Tue, 1 Feb 1994 07:06:16 GMT +# +# Posting-number: Volume 41, Issue 126 +# Archive-name: br/part01 +# Environment: basic, dos, os9 + +include Math +require "date.rb" +require "parsearg.rb" +require "parsedate.rb" + +def usage() + print "Usage:\n" + print "biorhythm.rb [options]\n" + print " options...\n" + print " -D YYYYMMDD(birthday) : use default values.\n" + print " --sdate | --date YYYYMMDD : use system date; use specified date.\n" + print " --birthday YYYYMMDD : specifies your birthday.\n" + print " -v | -g : show values or graph.\n" + print " --days DAYS : graph range (only in effect for graphs).\n" + print " --help : help\n" +end +$USAGE = 'usage' + +def printHeader(y, m, d, p, w) + print "\n>>> Biorhythm <<<\n" + printf "The birthday %04d.%02d.%02d is a %s\n", y, m, d, w + printf "Age in days: [%d]\n\n", p +end + +def getPosition(z) + pi = Math::PI + z = Integer(z) + phys = (50.0 * (1.0 + sin((z / 23.0 - (z / 23)) * 360.0 * pi / 180.0))).to_i + emot = (50.0 * (1.0 + sin((z / 28.0 - (z / 28)) * 360.0 * pi / 180.0))).to_i + geist =(50.0 * (1.0 + sin((z / 33.0 - (z / 33)) * 360.0 * pi / 180.0))).to_i + return phys, emot, geist +end + +def parsedate(s) + ParseDate::parsedate(s).values_at(0, 1, 2) +end + +def name_of_week(date) + Date::DAYNAMES[date.wday] +end + +# +# main program +# +parseArgs(0, nil, "vg", "D:", "sdate", "date:", "birthday:", "days:") + +if $OPT_D + dd = Date.today + bd = Date.new(*parsedate($OPT_D)) + ausgabeart = "g" +else + if $OPT_birthday + bd = Date.new(*parsedate($OPT_birthday)) + else + STDERR.print("Birthday (YYYYMMDD) : ") + unless (si = STDIN.gets.chop).empty? + bd = Date.new(*parsedate(si)) + end + end + if !bd + STDERR.print "BAD Input Birthday!!\n" + exit() + end + + if $OPT_sdate + dd = Date.today + elsif $OPT_date + dd = Date.new(*parsedate($OPT_date)) + else + STDERR.print("Date [ for Systemdate] (YYYYMMDD) : ") + unless (si = STDIN.gets.chop).empty? + dd = Date.new(*parsedate(si)) + end + end + dd ||= Date.today + + if $OPT_v + ausgabeart = "v" + elsif $OPT_g + ausgabeart = "g" + else + STDERR.print("Values for today or Graph (v/g) [default g] : ") + ausgabeart = STDIN.gets.chop + end +end +if ausgabeart == "v" + printHeader(bd.year, bd.month, bd.day, dd - bd, name_of_week(bd)) + print "\n" + + phys, emot, geist = getPosition(dd - bd) + printf "Biorhythm: %04d.%02d.%02d\n", dd.year, dd.month, dd.day + printf "Physical: %d%%\n", phys + printf "Emotional: %d%%\n", emot + printf "Mental: %d%%\n", geist + print "\n" +else + if $OPT_days + display_period = $OPT_days.to_i + elsif $OPT_D + display_period = 9 + else + STDERR.printf("Graph for how many days [default 10] : ") + display_period = STDIN.gets.chop + if display_period.empty? + display_period = 9 + else + display_period = display_period.to_i - 1 + end + end + + printHeader(bd.year, bd.month, bd.day, dd - bd, name_of_week(bd)) + print " P=physical, E=emotional, M=mental\n" + print " -------------------------+-------------------------\n" + print " Bad Condition | Good Condition\n" + print " -------------------------+-------------------------\n" + + (dd - bd).step(dd - bd + display_period) do |z| + phys, emot, geist = getPosition(z) + + printf "%04d.%02d.%02d : ", dd.year, dd.month, dd.day + p = (phys / 2.0 + 0.5).to_i + e = (emot / 2.0 + 0.5).to_i + g = (geist / 2.0 + 0.5).to_i + graph = "." * 51 + graph[25] = ?| + graph[p] = ?P + graph[e] = ?E + graph[g] = ?M + print graph, "\n" + dd = dd + 1 + end + print " -------------------------+-------------------------\n\n" +end -- cgit v1.2.3