「BUZZ」を含む日記 RSS

はてなキーワード: BUZZとは

2007-05-11

ループ

http://anond.hatelabo.jp/20070510170511

皆素直に繰り返しの構文で1から100まで回してんのね(違うのがあったら面白いかなと思った)。

そうか、せっかくExcelなんだからループいらないじゃん。

てことでhttp://anond.hatelabo.jp/20070509233601を改造。

Public Sub FizzBuzz2()
        Range("A1:A100").Formula = _
        "=IF(INT(ROW()/3)*3=ROW()*1,IF(INT(ROW()/5)*5=ROW()*1,""FizzBuzz"",""Fizz""),IF(INT(ROW()/5)*5=ROW()*1,""Buzz"",ROW()))"
End Sub

まあ内部的にはループしてるんだろうけど、そこはそれ。

剰余不可より100回ループ不可、てほうが制限としては面白いかもね。

http://anond.hatelabo.jp/20070510174446

public class FizzBuzz {
	private final int start;
	private final int last;
	private final int fizz;
	private final int buzz;

	public FizzBuzz(int start, int last, int fizz, int buzz) {
		this.start = start;
		this.last = last;
		this.fizz = fizz;
		this.buzz = buzz;
	}

	public static void main(String[] args) {
		new FizzBuzz(1, 100, 3, 5).execute();
	}

	private void execute() {
		for (int i = start; i <= last; i++) {
			if(isMultiple(i, fizz)){
				System.out.println("Fizz");	
			}
			if(isMultiple(i, buzz)){
				System.out.println("Buzz");			
			}
			if( !isMultiple(i, fizz) && !isMultiple(i, buzz)){
				System.out.println(i);			
			}
		}
	}

	private boolean isMultiple(int i, int base) {
		if(i/base * base == i){
			return true;
		}
		return false;
	}
}

勝手に修正してみた。

Javaクラスってコンストラクタとデストラクタって必須じゃなかったっけ?

あ、CならisMultipleは#defineするから一行で済むんだが…。

2007-05-10

そうだな

http://anond.hatelabo.jp/20070510221521

じゃあやるわ

オリジナルはこちら→http://anond.hatelabo.jp/20070510220016

#include <stdio.h>

int main() {
  int count = 0;
  do {
    if (count == count / 15 * 15)
      printf("FizzBuzz\n");
    else if (count == count / 3 * 3)
      printf("Fizz\n");
    else if (count == count / 5 * 5)
      printf("Buzz\n");
    else
      printf("%d\n", count);
  } while (count++ < 100);
  return 0;
}

ロジックそのものは元のものをそのまま使った。インデント以外にも改行と変数名とスペースの有無を変更、あとコンパイルが通るように stdio.h を include して main() で包んだ。実際に通るかどうかは試してないので知らん。

http://anond.hatelabo.jp/20070508170219

int aa=0;
do
{
if(aa==aa/15*15)
printf("FizzBuzz\n");
else if(aa==aa/3*3)
printf("Fizz\n");
else if(aa==aa/5*5)
printf("Buzz\n");
else printf("%d\n",aa);
}while(aa++<100);

Re: FizzBuzz問題

ゴルファーじゃないけど短く出来たので

#!/usr/bin/perl
@s[map {$_*3} (1..33)] = map {"Fizz"} (1..33);
@s[map {$_*5} (1..20)] = map {@s[$_*5]."Buzz"} (1..20);
print join "\n", map {$s[$_]||$_} (1..100,"");

こんなんでどうでしょ。mapつかいまくりだけど。

http://anond.hatelabo.jp/20070510174121

正規表現でFizzBuzzに置換するような解法は……

5の倍数は /[05]$/ でいけるけど、3の倍数がわかんない。数字を足し合わせるなんて出来ないよな。

つーことで

print join "\n",map {(eval(join("+",split//,eval(join("+",split//))))=~/[369]/)?(/[05]$/?"FizzBuzz":"Fizz"):/[05]$/?"Buzz":$_} (1..100),""

配列を合計する方法がわかんなかった。けど一行に収まって満足。

偽FizzBuzz問題

http://anond.hatelabo.jp/20070508170219

「%(剰余演算子)使用禁止」みたいな話があったので、逆に無駄馬鹿っぽいプログラムが出てくると、どれくらい間抜けな「剰余を求める関数」になるか見てみたい。

……いざ間抜けに作ろうとすると、それはそれで難しい。

#!ruby -Ks

# 3で割り切れるなら0を返す
# 割り切れないときは各桁の数を足した数字が返ってくるけど、再帰用だから気にしないでね><
def mod3_equal_zero(i)
  s = i.to_s
  num = 0
  s.split('').each {|c|
    num += c.to_i
  }
  if (num > 9) then
    num = mod3_equal_zero(num)
  end
  num=0 if num == 3 || num == 6 || num == 9
  num
end

# 5で割り切れるなら0を返す
def mod5_equal_zero(i)
  s =i.to_s
  i=0 if s[-1,1] == "0"
  i=0 if s[-1,1] == "5"
  i
end

# メイン
(1..100).each{|i|
  str =""
  str += "Fizz" if mod3_equal_zero(i) == 0
  str += "Buzz" if mod5_equal_zero(i) == 0
  str = i.to_s if (str == "") 
  print str,"\n"
}

[]問題←出遅れ

http://anond.hatelabo.jp/20070508170219

自分のソースの汚さに焼身自殺したい

#include <stdio.h>
int main(void);
int main(void)
{ 
  int cn,nf,nb,nfb;
  cn=nf=nb=nfb=0;
  for(cn=1;cn<=100;cn++){
    while(cn>nf) nf+=3;
    while(cn>nb) nb+=5;
    while(cn>nfb) nfb+=15;

    if(cn==nfb){
      printf("FizzBuzz\n");
    }else if(cn==nf){
      printf("Fizz\n");
    }else if(cn==nb){
      printf("Buzz\n");
    }else{
      printf("%d\n",cn);
    }
  }
  return(0);
}

COBOL DE 回答

リンクつけわすれごめんなさい

http://anond.hatelabo.jp/20070508170219

こうですか?よくわかりません(><)

COBOLなんて需要無いか…

(目に見えてアレミスをこっそり修正、ああ、どじっ子さ…)

 IDENTIFICATION  DIVISION.
 PROGRAM-ID.     FizzBuzz.
 ENVIROMENT      DIVISION.
 DATA            DIVISION.
 WORKING-STORAGE SECTION.
 01  W-添字I          PIC S9(09) COMP VALUE ZERO.
 01  W-添字J          PIC S9(09) COMP VALUE ZERO.
 01  W-出力エリア      PIC  X(08).
 PROCEDURE    DIVISION.
 FIZZBUZZ-MAIN.
  PERFORM VARYING W-添字I  FROM 1 BY 1
    UNTIL  W-添字I > 100
    MOVE  SPACE  TO  W-出力エリア
    PERFORM VARYING W-添字J FROM 3 BY 3
      UNTIL  W-添字J > 100
        IF  W-添字I = W-添字J
          THEN
            MOVE  100    TO  W-添字J
            MOVE  'Fizz' TO  W-出力エリア
          ELSE
            CONTINUE
        END-IF
     END-PERFORM
     PERFORM VARYING W-添字J  FROM 5 BY 5
       UNTIL  W-添字J  >  100
         IF  W-添字I =  W-添字J
           THEN
              IF  W-出力エリア = SPACE
                THEN
                  MOVE 'Buzz'  TO  W-出力エリア
                ELSE
                  MOVE 'Buzz'  TO  W-出力エリア(5:4)
              END-IF
              MOVE  100  TO  W-添字J
           ELSE
              CONTINUE
         END-IF
     END-PERFORM
     IF  W-出力エリア = SPACE
       THEN
         MOVE W-添字I  TO  W-出力エリア
       ELSE
         CONTINUE
     END-IF
     DISPLAY W-出力エリア
  END-PERFORM.
 FIZZBUZZ-END.
 GOBACK.

こないだマシン語ーとか言ってた人ですが。

皆素直に繰り返しの構文で1から100まで回してんのね(違うのがあったら面白いかなと思った)。

さて、古臭いCPUを考慮してこんな感じのロジックを考えた。

これをニモニック言語に置き換えていくのは簡単だと思う。言語適当だけど読めるでしょ。

$c=1;
$c3=3;
$c5=5;
{
    $c3--;
    $c5--;
    if (($c3 && $c5)==0) {
        if ($c3 == 0) { print "Fizz"; $c3=3; }
        if ($c5 == 0) { print "Buzz"; $c5=5; }
        }
    else { print $c; }
    if (($c-100) == 0) { exit; }
    $c++;
} while(1)

何度も直していたら自分の能力に対する自信をなくしてきたorz 本職じゃなくてよかったぜ。

0判定にこだわっているのは、フラグが立つから(分かる人には分かる)。

どうでもいいけど、PHPperlを使っていると、どっちがelsifでどっちがelseifか忘れません?

http://anond.hatelabo.jp/20070508170219トラバ

FizzBuzz問題

10 FOR I%=1 TO 100
20  OUT$ = ""
30  IF (I% MOD 3) = 0 THEN OUT$ = "Fizz"
40  IF (I% MOD 5) = 0 THEN OUT$ = OUT$ + "Buzz"
50  IF OUT$ = "" THEN PRINT I% ELSE PRINT OUT$
60 NEXT I%
70 END

こんなんだっけ

FizzBuzzって

こんなんでいいの?

for $i(1 .. 100) {
    $th = $i % 3;
    $ff = $i % 5;
    $p  = $i;
    if ($th == 0) {
        $p = "Fizz";
        if ($ff == 0) {
            $p = "FizzBuzz";
        }
    }
    elsif ($ff == 0) {
        $p = "Buzz";
    }
    print "$p\n";
}

5分もかかっちゃいました

2007-05-09

[]無理矢理ExcelVBAで参戦

http://anond.hatelabo.jp/20070508170219

Public Sub FizzBuzz()
    Dim i As Integer
    Dim cc As Range
    For i = 1 To 100
        Set cc = Cells(i, 1)
        cc.FormulaR1C1 = _
        "=IF(INT(ROW()/3)*3=ROW()*1,IF(INT(ROW()/5)*5=ROW()*1,""FizzBuzz"",""Fizz""),IF(INT(ROW()/5)*5=ROW()*1,""Buzz"",ROW()))"
    Next i
    Set cc = Nothing
End Sub

printはワークシート上に。

個人的にはもっと変わり種が見てみたい。冴子先生にFizzBuzzしゃべらせてみるとか。

http://anond.hatelabo.jp/20070509154649

mySQL迷子

なんだこれ難しいな…。

100までの整数がなんらかの状態でレコードにあって後はSQLひとつ流せばおわりなんだけど

select 
	if (tf.fizzbuzz = '',tf.num,tf.fizzbuzz) fizzbuzz
from (
	select 
		num,
		concat(
		if (mod(num,3)=0,'fizz',''),
		if (mod(num,5)=0,'buzz','')
		) fizzbuzz
	from tmp_fizzbuzz 
) tf
;

うえのSQLphpMyAdminで流しても反応がない。。。。

mySQLコマンドラインで流せば帰ってくるんだけど。

いまいちどころか、なかなかピンとこないなぁ。

慣れてきたつもりだったんだけど。。

_ノ乙(、ン、)_

http://anond.hatelabo.jp/20070508170219

FizzBuzz・・・。


DROP TABLE IF EXISTS `tmp_fizzbuzz`;
CREATE TABLE `tmp_fizzbuzz` (
`num` int( 4 ) NOT NULL default 0,
`fizz` VARCHAR( 4 ) NOT NULL default '',
`buzz` VARCHAR( 4 ) NOT NULL default '',
PRIMARY KEY  (`num`)
)
;

delimiter //
DROP PROCEDURE IF EXISTS fizzbuzz//
CREATE PROCEDURE  fizzbuzz()
BEGIN

	DECLARE bufnum INT DEFAULT 1;
	delete from `tmp_fizzbuzz`;
	WHILE bufnum <= 15 DO
	    insert into tmp_fizzbuzz (num) value (bufnum);
	    set bufnum = bufnum + 1;
	END WHILE;

END
//
delimiter ;
call fizzbuzz();

update tmp_fizzbuzz set fizz = 'Fizz' where mod(num,3) = 0;
update tmp_fizzbuzz set buzz = 'Buzz' where mod(num,5) = 0;

select 
if (concat( fizz ,buzz) = '' ,
	num,
	concat( fizz ,buzz)
) FizzBuzz
from tmp_fizzbuzz;


mySQLでつくってみた。

文字列の連結ができないで死にそうになった。。+とか&でやっても0で帰ってきやがるのさ。

そしてそもそもストアドを使わない仮想レコードの作り方ができないで死にそうになった。

なんか、こんなのに時間かけるつもりなかったんだけどなー・・・。

だめっぽ。

modとか使っちゃだめなんだっけ? 知るかヽ(`д´* )ノプンピー

[]http://anond.hatelabo.jp/20070508170219

ついでに作ってみた。Javaだお。

public class FizzBuzz {
	private final int start;

	private final int last;

	private final int fizz;

	private final int buzz;

	public FizzBuzz(int start, int last, int fizz, int buzz) {
		this.start = start;
		this.last = last;
		this.fizz = fizz;
		this.buzz = buzz;
	}

	public static void main(String[] args) {
		new FizzBuzz(1, 100, 3, 5).execute();
	}

	private void execute() {
		for (int i = 1; i <= last; i++) {
			System.out.println((i) + (isMultiple(i, fizz) ? "Fizz" : "")
					+ (isMultiple(i, buzz) ? "Buzz" : ""));
		}
	}

	private boolean isMultiple(int i, int base) {
		for (int j = base; j <= last; j += base) {
			if (i == j) {
				return true;
			}
		}
		return false;
	}
}

自称上級プログラマーならこれぐらい書けないといかん。てかテストコードも書け。

2007-05-08

みんなアタマやわいね

想定していた回答はこんなの

def setr(a,k,str)
	a[k-1] = str if a[k-1]==nil && k<=100
end

res = Array.new(100)
(1..100).each{|i|
	setr(res,i   ,i.to_s)
	setr(res,i*3 ,"Fizz")
	setr(res,i*5 ,"Buzz")
	setr(res,i*15,"FizzBuzz")
}

print res.join("\n")

http://anond.hatelabo.jp/20070508173455 が気に入ったのでこなたあげます っ(=ω=.)

http://anond.hatelabo.jp/20070508170219

#include <stdio.h>

main()
{
    int i;
    int fizz;
    int buzz;
    
    fizz = 3;
    buzz = 5;
    for (i = 1; i <= 100; i++) {
        if (fizz != i &amp;&amp; buzz != i)
            printf("%d\n", i);
        else {
            if (fizz == i) {
                printf("Fizz");
                fizz += 3;
            }
            if (buzz == i) {
                printf("Buzz");
                buzz += 5;
            }
            putchar('\n');
        }
    }
}

http://anond.hatelabo.jp/20070508170219

1.upto(100){|i|
  case i
  when 1..2
    p i
  when 3
    p 'Fizz'
  when 4
    p i
  when 5
    p 'Buzz'
  (中略)
  end
}

(追記)もちろんネタだよ?

真面目に書くならこんな感じ?

1.upto(100){|i|
  if i==i/15*15
    p 'FizzBuzz'
  elsif i==i/3*3
    p 'Fizz'
  elsif i==i/5*5
    p 'Buzz'
  else
    p i
  end
}

FizzBuzz問題

1から100までの整数プリントするプログラムを書け。ただし3の倍数のときは数の代わりに「Fizz」と、5の倍数のときは「Buzz」とプリントし、3と5両方の倍数の場合には「FizzBuzz」とプリントすること。

ただし、剰余(Rubyでいう % 演算子や modulo)を使うな。

ログイン ユーザー登録
ようこそ ゲスト さん