2011年11月21日月曜日

8n+x?

こんなスクリプト(HSP)書いたんですけど
どう書けばスマートなのかがわからないw

while 1
if i<=9{ int1=i-1: int2=0:_break }
if i<=17{ int1=i-9: int2=1:_break }
if i<=25{ int1=i-17: int2=2:_break }
if i<=33{ int1=i-25: int2=3:_break }
if i<=41{ int1=i-33: int2=4:_break }
if i<=49{ int1=i-41: int2=5:_break }
if i<=57{ int1=i-49: int2=6:_break }
if i<=65{ int1=i-57: int2=7:_break }
if i<=73{ int1=i-65: int2=8:_break }
if i<=81{ int1=i-73: int2=9:_break }
if i<=89{ int1=i-81: int2=10:_break }
if i<=97{ int1=i-89: int2=11:_break }
if i<=99{ int1=i-97: int2=12:_break }
await 1
wend

自費出版に使う言語はPerlと決めているのでPerlに翻訳してみました


use strict;
use warnings;

for my $i (0..99){
my $int1=0;
my $int2=0;

while (1){
if ($i<=9) { $int1=$i-1; $int2=0; last; }
if ($i<=17){ $int1=$i-9; $int2=1; last; }
if ($i<=25){ $int1=$i-17; $int2=2; last; }
if ($i<=33){ $int1=$i-25; $int2=3; last; }
if ($i<=41){ $int1=$i-33; $int2=4; last; }
if ($i<=49){ $int1=$i-41; $int2=5; last; }
if ($i<=57){ $int1=$i-49; $int2=6; last; }
if ($i<=65){ $int1=$i-57; $int2=7; last; }
if ($i<=73){ $int1=$i-65; $int2=8; last; }
if ($i<=81){ $int1=$i-73; $int2=9; last; }
if ($i<=89){ $int1=$i-81; $int2=10; last; }
if ($i<=97){ $int1=$i-89; $int2=11; last; }
if ($i<=99){ $int1=$i-97; $int2=12; last; }
last;
}
print "\$i:$i \$int1:$int1 \$int2:$int2\n";
}

#ここ色変わらないw変だw

1+8進数みたいなかんじですけど
プログラム的には8*n+1+nみたいなかんじですけど
数学的にはどう表現するんだろうか?
8n 8n+1 8n+2みたいには表現できないint1が-(1+8n)みたいなかんじなので
8n+xみたいに表現するにはどうすべきなのだろうか?w

0 件のコメント:

コメントを投稿