UWSCでFizzBuzz
次の記号禁止+ - * /mod演算子禁止=は代入のみ(比較での使用禁止)if文禁止while~endwhile禁止repeat~until禁止ってルールで書いてみました。UWSCだからできるので、他言語への移植はほぼ不可能。Windows10非対応です。めちゃくちゃ遅いです。※関数電卓モードにするため1行追加public calcid =-1keystr="001021001201003"powershell("ps calc|kill")calcid =exec("calc.exe")CLKITEM(calcid, "関数電卓", CLK_MENU, False)for i=1 to 100 r=getR( i, 15 ) r=Zero2Fifteen(r) q=copy( keystr, r, 1 ) select q case "3" out="FizzBuzz" case "2" out="Buzz" case "1" out="Fizz" case "0" out=i selend print outnextsleep(10)function getR( x, y ) clkitem(calcid,"クリア",CLK_ACC) for j= 1 to length(x) fig=(copy(x,j,1)) clkitem(calcid,fig,CLK_ACC) next clkitem(calcid,"剰余",CLK_ACC) for j= 1 to length(y) fig=(copy(y,j,1)) clkitem(calcid,fig,CLK_ACC) next clkitem(calcid,"等号",CLK_ACC) kbd(vk_ctrl,down) kbd(vk_c) kbd(vk_ctrl,up) result=getstr(0)fendfunction plus( x, y ) clkitem(calcid,"クリア",CLK_ACC) for j= 1 to length(x) fig=(copy(x,j,1)) clkitem(calcid,fig,CLK_ACC) next clkitem(calcid,"加算",CLK_ACC) for j= 1 to length(y) fig=(copy(y,j,1)) clkitem(calcid,fig,CLK_ACC) next clkitem(calcid,"等号",CLK_ACC) kbd(vk_ctrl,down) kbd(vk_c) kbd(vk_ctrl,up) result=getstr(0)fendfunction mult( x, y ) clkitem(calcid,"クリア",CLK_ACC) for j= 1 to length(x) fig=(copy(x,j,1)) clkitem(calcid,fig,CLK_ACC) next clkitem(calcid,"乗算",CLK_ACC) for j= 1 to length(y) fig=(copy(y,j,1)) clkitem(calcid,fig,CLK_ACC) next clkitem(calcid,"等号",CLK_ACC) kbd(vk_ctrl,down) kbd(vk_c) kbd(vk_ctrl,up) result=getstr(0)fendfunction isZero( x ) clkitem(calcid,"クリア",CLK_ACC) clkitem(calcid,"1",CLK_ACC) clkitem(calcid,"除算",CLK_ACC) for j= 1 to length(x) fig=(copy(x,j,1)) clkitem(calcid,fig,CLK_ACC) next clkitem(calcid,"等号",CLK_ACC) kbd(vk_ctrl,down) kbd(vk_c) kbd(vk_ctrl,up) result=pos("0 で割ることはできません",getstr(0))fendfunction Zero2Fifteen(r) result =plus(r,mult( isZero(r), 15 ))fend