MATLABでFizzBuzzを書いてみた
TwitterでFizzBuzzが少し話題にあがっていたので,
MATLABで書いてみました.
何も考えず書いてみた
とりあえず,普通に書くとこんな感じ.
for i = 1:15 if mod(i,15) == 0 fprintf('FizzBuzz,'); elseif mod(i,3) == 0 fprintf('Fizz,'); elseif mod(i,5) == 0 fprintf('Buzz,'); else fprintf('%d,',i); end end fprintf('\n');
出力
1,2,Fizz,4,Buzz,Fizz,7,8,Fizz,Buzz,11,Fizz,13,14,FizzBuzz,
MATLABらしいコード
forを使っててMATLABらしさが全く出ていないので,
MATLABらしいコードを書いて見ました.
n = 15; flag = [mod(1:n,3)==0; mod(1:n,5)==0; mod(1:n,3)+mod(1:n,5)~=0]; str(1,flag(1,:)) = {'Fizz'}; str(2,flag(2,:)) = {'Buzz'}; str(3,flag(3,:)) = arrayfun(@num2str, find(flag(3,:)), 'UniformOutput', false); str(4,:) = {','}; disp(strcat(str{:}));
出力
1,2,Fizz,4,Buzz,Fizz,7,8,Fizz,Buzz,11,Fizz,13,14,FizzBuzz,
これでこそMATLABらしいよね.
もう少しスマートに書ける気がするけど難しいなー.