• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Warrior

[2] FizzBuzz - Nível de aprendizagem

52 mensagens neste tópico

Título:

FizzBuzz

Objectivo:

Escreva um programa que imprima os números de 1 a 100, mas nos múltiplos de 3 imprima "Fizz" em vez do  número e nos múltiplos de 5 imprima "Buzz". Para os números que são múltiplos de tanto 3 como 5, imprima "FizzBuzz".

Exemplo de input/output

Um excerto do output do programa seria

1

2

Fizz

4

Buzz

Fizz

7

(...)

Material de apoio:

Não aplicável.

Restrições:

Não aplicável.


Discussão do problema em:

http://www.portugal-a-programar.pt/index.php?showtopic=16525


Soluções Enviadas

Skin - PHP

Gooden - VBnet

Skin - JavaScript

Skin - C

Skin - Perl

Betovsky - Haskell

magician - Ruby

magician - Java

vbmaster - Scheme

mogers - Prolog

djthyrax - Python

djthyrax - PHP

djthyrax - C

TheDark - C++

djthyrax - JavaScript

zeroonnet - C++

zeroonnet - C#

TheDark - MatLab

mogers - C

djthyrax - PHP

Hipnoted - Prolog

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
<?
for($i=1; $i<=100; $i++) {
if( $i%3 == 0 ) echo "Fizz";
if( $i%5 == 0 ) echo "Buzz";
if( ($i%3 != 0) and ($i%5 != 0) ) echo $i;
echo "<br />";
}

?>

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

  Dim x As Integer
        For x = 1 To 100
            If x Mod 3 = 0 Then
                ListBox1.Items.Add("Fizz")
            ElseIf x Mod 5 = 0 Then
                ListBox1.Items.Add("Buzz")
            Else
                ListBox1.Items.Add(x)
            End If
        Next x

skin -.-

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

<script type="text/javascript">
var i;
for( i=1; i<=100; i++ ) {
var num3 = 3;
var num5 = 5;

fizz = i%num3
buzz = i%num5;

if(fizz == 0) {
	document.write("Fizz");
}

if(buzz == 0) {
	document.write("Buzz");
}

if( fizz != 0 && buzz != 0 ) {
	document.write(i);
} 

document.write("<br />");

}
</script>

:P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

E para mostrar que ando a investir em C  :P

#include <stdio.h>

int main(void)
{
int I, num3, num5, buzz, fizz;
for(I=1; I<=100; I++) {
	num3 = 3;
	num5 = 5;

	buzz = I%num3;
	fizz = I%num5;
                             if(fizz == 0) printf("Fizz");
	if(buzz == 0) printf("Buzz");
	if((buzz != 0) && (fizz != 0)) printf("%d ", I);

	printf("\n");
}




return 0;
}

Skin power  :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

  Dim x As Integer
        For x = 1 To 100
            If x Mod 3 = 0 Then
                ListBox1.Items.Add("Fizz")
            ElseIf x Mod 5 = 0 Then
                ListBox1.Items.Add("Buzz")
            Else
                ListBox1.Items.Add(x)
            End If
        Next x

skin -.-

Nesse caso os múltiplos de ambos ficam em linhas diferentes e não FizzBuzz certo?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

#!/usr/bin/perl

for($i=1;$i<=100;$i++) {
if($i%3 == 0) { print "Fizz"; }
if($i%5 == 0) { print "Buzz"; }
if(($i%3 != 0) && ($i%5 != 0)) { print $i; }

print "\n";
}

PERL POWER :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
main = mapM_ (putStrLn . fun) [1..100]
   where fun x | x `mod` 15 == 0 = "FizzBuzz"
               | x `mod` 5  == 0 = "Buzz"
               | x `mod` 3  == 0 = "Fizz"
               | otherwise       = show x

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Fica aqui a minha solução em Ruby

1.upto(100) do |i|
  if (i % 3).zero?: printf "Fizz" end
  if (i % 5).zero?: printf "Buzz" end
  if (i % 5).nonzero? && (i % 3).nonzero?: printf("%d",i) end
  printf("\n")
end

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Solução em Java

public class FizzBuzz {
    
    public static void main(String args []){
        for(int i = 1; i <= 100; i++){
            if( (i % 3) == 0 ){
                System.out.print("Fizz");
            }
            else if( (i % 5) == 0 ){
                System.out.print("Buzz");
            }
            else if( (i % 3) != 0 && (i % 5) != 0 ){
                System.out.print(i);
            }
            System.out.println();
        }
    }
    
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

(define (fb start end)
(if (<= start end)
              (begin
                (cond 
                  ((= 0 (remainder start 15))
                   (display "FizzBuzz"))
                  ((= 0 (remainder start 3))
                   (display "Fizz"))
                  ((= 0 (remainder start 5))
                   (display "Buzz"))
                  (else (display start)))
                (newline)
                (fb (+ start 1) end))))

É só chamar com (fb 1 100).

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mais logo mando a posta de python neste post :confused:

for number in range(1,100):
    if number % 15 == 0:
        print 'FizzBuzz'
    elif number % 5 == 0:
        print 'Buzz'
    elif number % 3 == 0:
        print'Fizz'
    else:
        print number

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Em Prolog :confused:

divby(N , D):- 0 is N mod D .
printNum( N ):- (	( divby(N,15) , write('FizzBuzz') ) ; 
		( divby(N,3) , write('Fizz') ) ; 
		( divby(N,5) , write('Buzz') ) ; 
		write(N)
	) , nl .

fizzbuzz( F , F ):- printNum(F).
fizzbuzz( N , F ):-
printNum(N),
Next is N+1 , 
fizzbuzz( Next , F ).

chamar fizzbuzz(1,100).

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
def FizzBuzz(x, y):
    for i in range(x, y+1):
        x = ""
        if i % 3: x += "Fizz"
        if i % 5: x += "Buzz"
        if x != "": print x
        else: print i

FizzBuzz(1, 100)
        

djthyrax - Python

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

<?php
function FizzBuzz($x, $y){
for($x; $x<=$y; $x++) echo ($x % 3 ? ($x % 5 ? $x : "Buzz") : ($x % 5 ? "Fizz" : "FizzBuzz"))."\n";
}

FizzBuzz(1, 100);

djthyrax - PHP

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

#include <stdio.h>

int main() {
int i;
for(i = 1; i <= 100; i++){
	if(i % 3){
		if(i % 5)
			printf("%i\n", i);
		else
			printf("%s\n", "Buzz");
	}else{
		if(i % 5)
			printf("%s\n", "Fizz");
		else
			printf("%s\n", "FizzBuzz");
	}
}

return 0;
}

djthyrax - C

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

C++

#include <iostream>

using namespace std;

int main() {
char num[5];
for (int i=1; i<=100; ++i) {
	_itoa_s(i, num, 5, 10);
	cout << ((i%3 == 0) ? ((i%5 == 0) ? "FizzBuzz" : "Fizz" ) : ((i%5 == 0) ? "Buzz" : num )) << '\n';
}
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
var FizzBuzz = (function(x, y){
	for(x; x<=y; x++) document.write((x % 3 ? (x % 5 ? x : "Buzz") : (x % 5 ? "Fizz" : "FizzBuzz")) + "\n");
});
FizzBuzz(1, 100);

djthyrax - JavaScript

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Em C++ e C# xD

for (int x = 1; x <= 100; x++)
{
if (x % 3 == 0)
	std::cout << "Fizz";
       if (x % 5 == 0)
	std::cout << "Buzz";
if (x % 3 != 0 && x % 5 != 0)
	std::cout << x;
        std::cout << std::endl;
}

for (int x = 1; x <= 100; x++)
{
if (x % 3 == 0)
	Console.Write("Fizz");
if (x % 5 == 0)
	Console.Write("Buzz");
if (x % 3 != 0 && x % 5 != 0)
	Console.Write(x);
Console.WriteLine();
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Uma abordagem um pouco diferente em C:

#include <stdio.h>

unsigned char i , soma[101] , desc[][10] = { "" , "Fizz" , "Buzz" , "FizzBuzz" };

int main() {

for ( i = 3 ; i <= 100 ; i+=3 )	soma[i] |= 1 ;
for ( i = 5 ; i <= 100 ; i+=5 )	soma[i] |= 2 ;
for ( i = 1 ; i <= 100 ; i++  )
	soma[i] == 0 ? printf("%d\n" , i ) : printf("%s\n", desc[ soma[i] ] );
return 0;
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Uma abordagem um pouco diferente em C:

Nice!

Matlab

for n = 1:100
    if (mod(n, 3) == 0) fprintf('Fizz'); end
    if (mod(n, 5) == 0) fprintf('Buzz'); end
    if (mod(n, 3) > 0 && mod(n, 5) > 0) fprintf('%d', n); end
    fprintf('\n');
end

Matlab v2:

for x=1:100
    n(x) = {x};
end
n(3:3:100) = {'Fizz'};
n(5:5:100) = {'Buzz'};
n(15:15:100) = {'FizzBuzz'};
disp(n');

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Uma abordagem um pouco diferente em C:

Também tinha pensado em algo do género, mas não tive tempo para implementar e postar aqui (dei prioridade aos outros, uma vez que este iria constar apenas pela beleza do código e não pela performance).

Mas aqui fica mais a dita cuja em PHP

<?php
function range($from, $to){
    $range = array()
    for($from; $from <= $to; $from++) $range[$from] = "";
    return $range;
}
function FizzBuzz($x, $y){
    $range = range($x, $y);
    for($i=3; $i<=$y; $i+=3) $range[$i] = "Fizz";
    for($i=5; $i<=$y; $i+=5) $range[$i] += "Buzz";
    foreach($range as $k => $v) echo (empty($v) ? $k : $v)."\n";
}

FizzBuzz(1, 100);

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Prolog:

multiplos(N):-N<1;N>100,!.
multiplos(N):-Resto is N mod 3, Resto2 is N mod 5,
	((Resto==0,Resto2\==0,write('Fizz'));
	(Resto\==0,Resto2==0,write('Buzz'));
	(Resto==0,Resto2==0,write('FizzBuzz'));
	(Resto\==0,Resto2\==0,write(N))),nl,N1 is N + 1,multiplos(N1).

Chamada: multiplos(1).

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Uma abordagem um pouco diferente em Haskell.

Brincando um pouco com listas infinitas...

main = mapM_ (putStrLn . converte) lista

lista = zip3 
   (cycle [False, False, True])                -- lista de multiplos 3
   (cycle [False, False, False, False, True])  -- lista de multiplos 5
   [1..100]                                    -- lista dos numeros

converte (False, False, x) = show x
converte (True , False, _) = "Fizz"
converte (False, True , _) = "Buzz"
converte (  _  ,   _  , _) = "FizzBuzz"

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Java

public class Main {

    private static String multiplos(){
        String output="";
        for(int i = 1; i <=100; i++){
            if(i % 3 == 0)
                output += "Fizz";
            if(i % 5 == 0)
                output += "Buzz";
            if(!((i%5==0) || (i%3 == 0)))
                output += i;
            output += "\n";
        }
        return output;
    }
    public static void main(String[] args) {
      
     
       System.out.println(multiplos());
    }

}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora