FizzBuzz(完成)
J言語でFizzBuzz - recompile.net
http://recompile.net/2007/05/jfizzbuzz.html
どうやら数値や文字列をボックス化すると同じベクトルの中で共存出来るらしい
nに1〜15を代入 n =. 1 + i. 15 n 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 数値ベクトルをボックスベクトルに変換 ;/n +-+-+-+-+-+-+-+-+-+--+--+--+--+--+--+ |1|2|3|4|5|6|7|8|9|10|11|12|13|14|15| +-+-+-+-+-+-+-+-+-+--+--+--+--+--+--+ ボックスならば数値と文字列が共存出来る (<'Fizz') (_1+ n #~ 0= 3| n) } ;/n +-+-+----+-+-+----+-+-+----+--+--+----+--+--+----+ |1|2|Fizz|4|5|Fizz|7|8|Fizz|10|11|Fizz|13|14|Fizz| +-+-+----+-+-+----+-+-+----+--+--+----+--+--+----+ 置換処理を演算子化する(中置演算子のタイプは4) foo =. 4 : '(1{ x.) (_1+ n #~ 0= n |~ > 0{ x.) } y.' fooがちゃんと動くかテスト (3;'Fizz') foo ;/n +-+-+----+-+-+----+-+-+----+--+--+----+--+--+----+ |1|2|Fizz|4|5|Fizz|7|8|Fizz|10|11|Fizz|13|14|Fizz| +-+-+----+-+-+----+-+-+----+--+--+----+--+--+----+ BuzzとFizzBuzzも処理させる (15;'FizzBuzz') foo (5;'Buzz') foo (3;'Fizz') foo ;/n +-+-+----+-+----+----+-+-+----+----+--+----+--+--+--------+ |1|2|Fizz|4|Buzz|Fizz|7|8|Fizz|Buzz|11|Fizz|13|14|FizzBuzz| +-+-+----+-+----+----+-+-+----+----+--+----+--+--+--------+ 単純にボックスをはずす(>)のは結局数値と文字が混ざってしまうので出来ない > (15;'FizzBuzz') foo (5;'Buzz') foo (3;'Fizz') foo ;/n |domain error | >(15;'FizzBuzz')foo(5;'Buzz')foo(3;'Fizz')foo;/n なので数値の部分もあらかじめ文字化(":)しておく > (15;'FizzBuzz') foo (5;'Buzz') foo (3;'Fizz') foo ": L:0 ;/n 1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 11 Fizz 13 14 FizzBuzz
できた!