Snippets

sironekotoro 正弦波を表示する

Updated by sironekotoro

File wave.pl Modified

  • Ignore whitespace
  • Hide word diff
     # $degに30度加える
     $deg = $deg + 30;
 }
-
-print sin(1) . "\n"    # -0.54402111088937
Created by sironekotoro

File wave.pl Added

  • Ignore whitespace
  • Hide word diff
+#!/usr/bin env perl
+use strict;
+use warnings;
+use Math::Trig 'deg2rad';   # 角度をラジアンにする
+use Time::HiRes qw(sleep);  # 高精度sleep関数
+
+$| = 1; # 出力を溜め込まず、print 文の実行の都度出力する
+
+my $deg = 0;    # 角度の初期値
+
+for ( 1 .. 1000 ) {
+    sleep(0.5); # この行で0.5秒待つ
+
+    # 角度をラジアンに変換
+    my $rad = deg2rad($deg);
+
+    # ラジアンからサインに変換
+    my $sin = sin($rad);
+
+    # sin + 1 を加えた正の値を
+    # グラフを構成する * の数とする
+    my $star = $sin + 1;
+
+    # 最大値2,最小値0ではグラフに華がないので、
+    # 10倍の値にする
+    $star *= 10;
+
+    # 小数点は邪魔なので、int関数で小数点を切り捨てた
+    # 値に丸める
+    $star = int($star);
+
+    # * を $star の数だけ表示する
+    print '*' x $star . "\n";
+
+    # $degに30度加える
+    $deg = $deg + 30;
+}
+
+print sin(1) . "\n"    # -0.54402111088937
HTTPS SSH

You can clone a snippet to your computer for local editing. Learn more.