Snippets

sironekotoro 正弦波っぽい何か

Updated by sironekotoro

File wave_modoki.pl Modified

  • Ignore whitespace
  • Hide word diff
 # http://perldoc.jp/docs/perl/5.20.1/perlvar.pod
 # 出力を溜め込まず、for 文の中で print 行が
 # くる都度表示する特殊変数(特殊変数なので my は不要)
+# この行がない場合、処理が全て終わってから一気に結果が描画される
 $| = 1;
 
 my $count = 0;      # *の数を表示するカウンター用変数
-                    # 最少0, 最大10
+                    # 最少0, 最大20
 
 my $flag  = 'plus'; # 星の数を増減する判断で利用するフラグ
                     # plus か minus の文字列しか入らない
 for ( 1 .. 1000 ) {
     sleep 1;
 
-    # plusであれば*を$countの数だけ表示して改行する
+    # フラグが plus であれば * を $count の数だけ表示して改行する
     if ( $flag eq 'plus' ) {
         print '*' x $count, "\n";
     }
-    # plusでない(つまりminus)であれば*を
-    # 40 - $countの数だけ表示して改行する
+    # フラグが plus でない(つまり minus )であれば * を
+    # 20 - $countの数だけ表示して改行する
     else {
         print '*' x ( 20 - $count ), "\n";
     }
     $count++;
 
     # カウントが20で割り切れる値であり、かつ、
-    # フラグが plus の場合は最大値に達したと
-    # 判断してフラグをplusからminusに変更する
+    # フラグが plus の場合は $count の最大値に達したと
+    # 判断
+    # フラグを plus から minus に変更する
     if ( $count % 10 == 0 && $flag eq 'plus' ) {
         $flag = 'minus';
     }
-
     # カウントが20で割り切れる値であり、かつ、
     # フラグが minus の場合は最小値に達したと
-    # 判断してフラグをplusからminusに変更する
+    # 判断
+    # フラグを minus から plus に変更する
     elsif ( $count % 10 == 0 && $flag eq 'minus' ) {
         $flag = 'plus';
     }
Updated by sironekotoro

File wave_modoki.pl Modified

  • Ignore whitespace
  • Hide word diff
 use strict;
 use warnings;
-use Time::HiRes qw(sleep);  # 1秒以下のsleep(待ち時間)を実現するために利用
 
 # OUTPUT AUTOFLASH
 # http://perldoc.jp/docs/perl/5.20.1/perlvar.pod
-# 出力を溜め込まず、都度表示する
+# 出力を溜め込まず、for 文の中で print 行が
+# くる都度表示する特殊変数(特殊変数なので my は不要)
 $| = 1;
 
 my $count = 0;      # *の数を表示するカウンター用変数
+                    # 最少0, 最大10
+
 my $flag  = 'plus'; # 星の数を増減する判断で利用するフラグ
+                    # plus か minus の文字列しか入らない
+                    # 想定
+
+# 正弦波のロジックを組み立てられなかったので、以下の
+# ように動く変数とフラグ制御を実装
+#  - 0から20まで増えるカウンタを用意
+#  - カウンタが10で割り切れる時に、* の表示の増減を逆転する
+#    フラグ(plus/minus)を用意
+#    - フラグが plus の時はカウンタの数だけ * を表示する
+#    - フラグが minus の時は 20 - カウンタの数だけ * を表示する
+#  - カウンタの数字が20になったら0で上書きする
+
 
-# while(1) で無限ループ
-# 止める場合は Ctrl を押しながら C を押す
-while (1) {
-    sleep 0.5;
+# for文で1000回処理を繰り返す
+for ( 1 .. 1000 ) {
+    sleep 1;
 
     # plusであれば*を$countの数だけ表示して改行する
     if ( $flag eq 'plus' ) {
     # plusでない(つまりminus)であれば*を
     # 40 - $countの数だけ表示して改行する
     else {
-        print '*' x ( 40 - $count ), "\n";
+        print '*' x ( 20 - $count ), "\n";
     }
 
     # カウントを増やす
     # カウントが20で割り切れる値であり、かつ、
     # フラグが plus の場合は最大値に達したと
     # 判断してフラグをplusからminusに変更する
-    if ( $count % 20 == 0 && $flag eq 'plus' ) {
+    if ( $count % 10 == 0 && $flag eq 'plus' ) {
         $flag = 'minus';
     }
 
     # カウントが20で割り切れる値であり、かつ、
     # フラグが minus の場合は最小値に達したと
     # 判断してフラグをplusからminusに変更する
-    elsif ( $count % 20 == 0 && $flag eq 'minus' ) {
+    elsif ( $count % 10 == 0 && $flag eq 'minus' ) {
         $flag = 'plus';
     }
 
-    # カウントが40に達したらカウントを0にする
-    if ( $count == 40 ) {
+    # カウントが20に達したらカウントを0にする
+    if ( $count == 20 ) {
         $count = 0;
     }
 }
Created by sironekotoro

File wave_modoki.pl Added

  • Ignore whitespace
  • Hide word diff
+use strict;
+use warnings;
+use Time::HiRes qw(sleep);  # 1秒以下のsleep(待ち時間)を実現するために利用
+
+# OUTPUT AUTOFLASH
+# http://perldoc.jp/docs/perl/5.20.1/perlvar.pod
+# 出力を溜め込まず、都度表示する
+$| = 1;
+
+my $count = 0;      # *の数を表示するカウンター用変数
+my $flag  = 'plus'; # 星の数を増減する判断で利用するフラグ
+
+# while(1) で無限ループ
+# 止める場合は Ctrl を押しながら C を押す
+while (1) {
+    sleep 0.5;
+
+    # plusであれば*を$countの数だけ表示して改行する
+    if ( $flag eq 'plus' ) {
+        print '*' x $count, "\n";
+    }
+    # plusでない(つまりminus)であれば*を
+    # 40 - $countの数だけ表示して改行する
+    else {
+        print '*' x ( 40 - $count ), "\n";
+    }
+
+    # カウントを増やす
+    $count++;
+
+    # カウントが20で割り切れる値であり、かつ、
+    # フラグが plus の場合は最大値に達したと
+    # 判断してフラグをplusからminusに変更する
+    if ( $count % 20 == 0 && $flag eq 'plus' ) {
+        $flag = 'minus';
+    }
+
+    # カウントが20で割り切れる値であり、かつ、
+    # フラグが minus の場合は最小値に達したと
+    # 判断してフラグをplusからminusに変更する
+    elsif ( $count % 20 == 0 && $flag eq 'minus' ) {
+        $flag = 'plus';
+    }
+
+    # カウントが40に達したらカウントを0にする
+    if ( $count == 40 ) {
+        $count = 0;
+    }
+}
HTTPS SSH

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