素人がプログラミングを勉強していたブログ

プログラミング、セキュリティ、英語、Webなどのブログ since 2008

連絡先: すかいぷ:javascripter_  か javascripter あっと tsukkun.net skypeのほうがいいです

forも明示的な加算も使わずに「1から100まで出力する」

1から100までforを使わずに、さらに明示的な加算も使わずに表示するもの、自分で思いついたバージョンを書いておく。非同期である。

var INTERVAL = 1000;
var d = Date.now();
var tid = setInterval(function () {
  var n = (Date.now() - d) / INTERVAL | 0;
  console.log(n);
  if (n == 100) clearInterval(tid);
}, INTERVAL);

自分の環境ではINTERVALは700まで安定的に動作した。テストを書いたので、自分の環境で正常に動作する範囲をテストしたい場合、下記のコードを使うと良い。node hundred.js>output.txtなどのようにしておいてcat output.txt|./test.zshとしてSuccessが表示されれば動いている。

#!/bin/zsh

I=1
while read -r LINE
do
  if [ $LINE -ne $I ]
  then
    echo "Failed: $LINE should be $I"
    exit 1
  fi
  I=$(($I + 1))
  if [ $LINE -eq "100" ]
  then
    break
  fi
done;

read -r LINE

if [ $LINE ]
then
  echo "Failed: Too many lines"
  exit 1
fi

echo "Success"

参考: