Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  42 13182
Det er lenge siden det har vært noe gøy i programmeringsforumet. Så her kommer en aldri så liten utfordring, inspirert av den gode, gamle "Hello World"-tråden

Oppgaven er velkjent, en variant av den er oppgave nr 1 i http://www.projecteuler.net, og går som følger:
  1. gå gjennom tallene fra 1 til og med 100
  2. dersom tallet er delelig på 3, print "fizz" istedet
  3. dersom tallet er delelig på 5, print "buzz" istedet
  4. dersom tallet er delelig på 3 og 5, print "fizzbuzz" istedet



Den mest åpenbare løsningen er kjedelig og kan implementeres slik i Python:

Kode

for i in xrange(1,101):
    if (i%3 == 0 and i%5 == 0):
        print "fizzbuzz"
    elif (i% 3 == 0):
        print "fizz"
    elif (i%5 == 0):
        print "buzz"
    else:
        print i
Men, dette er jo ikke noe gøy? Og langt ifra obskurt eller kreativt nok. Hvordan kan man løse denne raskere? eller veldig mye tregere? Hva med "fizzbang as a service" ?

ps: dette er tross alt et programmeringsforum, så å skrive ned hele greia på et ark og ta bilde av det vil bare medføre at du vil bli ledd av og hånet. Dessuten er det allerede gjort tidligere: http://picz.no/2578

pps: den mest imponerende løsningen får en premie, hva denne premien vil være er foreløpig hemmelig

START YOUR EDITORS, GET SET, CODE!
Sist endret av liasis; 18. januar 2014 kl. 17:23.
Da starter vi med litt ternary-festligheter og aritmetikk i C++

Kode

/*/../usr/bin/env echo compiling...;T=$(/usr/bin/env mktemp);/usr/bin/env g++ "$0" -o "$T" && ("$T";rm "$T");exit;*/

#include <iostream>
typedef unsigned char uc;
using namespace std;

int main(int argc, char **argv)
{
    uc b[2] = { '0','z' };
    uc c[3] = { 'f','i','G' };
    uc d[3] = { 'b','u','P' };
    uc e[4] = { c[0], c[1], d[0], d[1] };
    for (int n=1; n<101; n++)
    {
        b[1]=n;
        int a=0;
        if (!(n%2)) a+=1;
        if (!(n%3)) a+=2;
        uc *v=a==0?b:a==1?c:a==2?d:e;
        for (a=0;a<2;a++)
        {
            if (v[0]<'a')
            {
                std::cout << (int)v[1];
            }
            else
            {
                std::cout << v[a*2] << v[a*2+1];
                std::cout << (uc)(c[0]+5*4);
                std::cout << (uc)(d[1]+5);
            }
            if (v[0]<'a' || v[2]<'a') break;
        }
        cout << endl;
    }
}
Som bonus kan koden startes som et shellscript, saa lenge man husker chmod +x:
./fizzbuzz.cpp
Sist endret av tripflag; 18. januar 2014 kl. 19:15.

Kode

#include <iostream>
#include <string>
using namespace std;

int main()
{
string output[100] = {"1","2","fizz","4","buzz","fizz","7","8","fizz","buzz","11","fizz","13","14","fizzbuzz","16","17","fizz","19","buzz","fizz","22","23","fizz","buzz","26","fizz","28","29","fizzbuzz","31","32","fizz","34","buzz","fizz","37","38","fizz","buzz","41","fizz","43","44","fizzbuzz","46","47","fizz","49","buzz","fizz","52","53","fizz","buzz","56","fizz","58","59","fizzbuzz","61","62","fizz","64","buzz","fizz","67","68","fizz","buzz","71","fizz","73","74","fizzbuzz","76","77","fizz","79","buzz","fizz","82","83","fizz","buzz","86","fizz","88","89","fizzbuzz","91","92","fizz","94","buzz","fizz","97","98","fizz","buzz"};
for (int i = 1;i > 100;i++)
    {
    cout << output[i] << endl;
    }

return 0;
}
Sist endret av Grix; 18. januar 2014 kl. 19:25.
Queen of Blades
Jonta's Avatar
DonorCrew
tripflag: Du har en off-by-one et sted.

Grix: Endre linje 8 til "for (int i = 0;i < 100;i++)"

Hilsen Goophy og Jonta =)
Laget en fizzbuzz-sak med C og NVIDIA CUDA, hvor utregningen skjer på GPU. Fizzbuzz er her parallellisert over 10 blokker og 10 tråder, og med en GPU som har Compute Level på 2.0 eller høyere går det faktisk an å bruke printf direkte (tidligere ville man lagret resultatet i en array på GPU og kopiert den til CPU for utskrift). Begrensningen med å printe direkte er at trådene fullfører i litt vilkårlig rekkefølge, derfor har jeg slengt på tallet foran i output for hver linje. fizz og buzz instansieres først på CPU og kopieres over til GPU. Kunne helt fint bare skrevet "fizz" og "buzz" inn i kernelen, men ville vise hvordan man går frem for å få data over fra CPU til GPU med cudaMemcpy og cudaMalloc (om du selv skal drive med CUDA anbefaler jeg Thrust-biblioteket, som gjør slik minnehåndtering mye simplere).

Kode

#include "cuda_runtime.h"
#include "device_launch_parameters.h"
#include <stdio.h>

__global__ void fizzbuzzKernel(char*, char*);

void main()
{
	// Allokerer fizz og buzz på CPU
	char *fizz = "fizz\0";
	char *buzz = "buzz\0";

	// Device-pointere for fizz og buzz
	char *dev_fizz = 0;
	char *dev_buzz = 0;

	// Allokerer plass til fizz og buzz på GPU
	cudaMalloc((void**)&dev_fizz, 5 * sizeof(char));
	cudaMalloc((void**)&dev_buzz, 5 * sizeof(char));

	// Kopierer fizz og buzz fra CPU til GPU
	cudaMemcpy(dev_fizz, fizz, 5 * sizeof(char), cudaMemcpyHostToDevice);
	cudaMemcpy(dev_buzz, buzz, 5 * sizeof(char), cudaMemcpyHostToDevice);

	// Kjører kernel med 10 blokker, som hver har 10 threads
	fizzbuzzKernel<<<10, 10>>>(dev_fizz, dev_buzz);

	// Synkronisering
	cudaDeviceSynchronize();

	// ???
	// Profit!
}

__global__ void fizzbuzzKernel(char *fizz, char *buzz)
{
	int number = threadIdx.x * blockDim.x + blockIdx.x + 1;
	if(number % 3 == 0 && number % 5 == 0)
	{
		printf("%i:\t%s%s\n", number, fizz, buzz);
	}
	else if(number % 3 == 0)
	{
		printf("%i:\t%s\n", number, fizz);
	}
	else if(number % 5 == 0)
	{
		printf("%i:\t%s\n", number, buzz);
	}
	else
	{
		printf("%i:\t%i\n", number, number);
	}
}
http://pastebin.com/SNADa3mM
Får bli med jeg og da.
Java, det liker alle XD.
Her lager jeg to arrays, en med tall som er delelige med 3 og en med tall som er delelige med 5. Rett og slett bare gangetabellen opp til sluttverdien. Så looper jeg gjennom disse og sorterer ut i en ny array som så blir printet ut. Dritt enkelt sånn egentlig med veldig spesiell måte å gjøre det på mtp denne type oppgave. Jeg har ihverfall ikke sett noen andre på nettet gjøre det på denne måten tidligere.
Det hele er inspirert av Eratosthenes/Atkins' sil. De som liker matematisk historikk og primtall har sikkert vært borti logotytmen tidligere, og om du ikke har peiling på hva dette er; wikipedia it

Kode

import java.util.Arrays;
public class why_the_hell_not{
	public static void main(String[] args) {
		int[] trees = findNumbers3(100);
		int[] fives = findNumbers5(100);
        String[] buzzCut = season(trees,fives,100);
        display(buzzCut);
    }
	public static int[] findNumbers3(int end){
        int root = (int) Math.ceil(Math.sqrt(end));
        int[] trees = new int[end / 3];
        for(int i = 0; i <= root;)
        	for(int k = 3; k < end+1; k += 3){
        		trees[i] = k;
        		i++;
        	}
        return trees;
    }
    public static int[] findNumbers5(int end){
        int root = (int) Math.ceil(Math.sqrt(end));
        int[] fives = new int[end / 5];
        for (int i = 0; i <= root;){
            for (int j = 5; j < end+1; j += 5){
                fives[i] = j;
                i++;
            }
        }
        return fives;
    }
    public static String[] season(int[] trees,int[] fives, int end){
        String[] shitPommesFrites = new String[58];
        int i = 0;
        int j = 0;
        int k = 0;
        while (i < trees.length && j < fives.length) {
            if (trees[i] == fives[j]) {
                  shitPommesFrites[k] = "buzzfizz";
                  k++;
            }
            if (trees[i] <= fives[j]) {
                  shitPommesFrites[k] = "fizz";
                  i++;
            }
             else {
                  shitPommesFrites[k] = "buzz";
                  j++;
            }
            k++;
        }       
        return shitPommesFrites;
    }
    public static void display(String[] values){
       System.out.println(Arrays.toString(values));
    }
}

(Vil på forhånd beklage idiotiske variabelnavn og litt "ummoden" kode, som min gamle AlgDat-lærer beskrev mine innleveringer som. Den er sikkert også ganske så rotete, men orker ikke gjøre noe med det nå. Jeg er ganske full[typ sjangledritings] og har luktet litt på jazztobakken...)

Edit: Så nå at jeg sikkert burde skrevet ut alle tallene opp til hundre også, ikke bare de som er delelige med 3, 5 eller begge. Men, det for bli en annen gang. lol
Sist endret av moret; 19. januar 2014 kl. 01:40.
Jeg laget akkurat min egen fizzbuzz, men i et stackbasert språk som tormaroe har laget for en stund tilbake. Språket heter ropy og kan finnes på github. Siden språket ikke hadde støtte for alle featuren jeg trengte (som f.eks. en print-kommando) har jeg forket og utvidet språket med disse featurene. Før dere ser på selve koden jeg ender opp med anbefaler jeg dere å lese readme-filen, slik at dere forstår hvordan språket egentlig funker.

Du kan finne koden min her på github om dere synes det er litt vanskelig å lese den i kodeboksen under her.

Kode

|
|       FIZZBUZZ!!                     
|     JUST LIKE EULER 1             
|     FOR FREAK.NO COMPO               
|                            Z   Z   I   F         Z   Z   U   B         \n
|                                    
|_CREATE_STRINGS_FOR_PRINT__09&_09&_37&_07&_"1<[__09&_09&_58&_66&_"2<[__01&"_3<[__
                                                                                  |
 ______________________________________11_________________________________________|
|
|  CHECK IF 101        BELOW 101         MOD 3          NOT DIVISABLE BY 3
|
|                   __?__40[____________>3<%____ __?______________________________
 _?__>_01&>*1+</!__|                            |                                 |
|                  |                            ?                                 |
0                  |                            |                                 |
+ ADD 1            |                            |         DIVISABLE BY 3          |
1                                               |                                 1
|                 END                           |_________41[_____1]#__________0__|
#                                                                                 |
] NEWLINE                                                                         ?
3                                                                                 >
|                                                                         MOD 5   5
?                                                                                 <
|                                                                                 %
|_0___________#>___________                     __________#]2____[14______________|
|                          |                   |                                  |
1    PRINT NUMBER          |                   |          DIVISABLE BY 5          |
|   IF NOT % 3 OR % 5      ?                   |                                  |
|                          |                   0                                  |
|_______________________?__|_____]4_________??_|_1________________________________|

                                                         NOT DIVISABLE BY 5
Mye bra som er postet her!

Min løsning er skrevet i Python, og bruker Google sin innebygde kalkulator til å løse oppgaven. Til å parse HTML har jeg brukt BeautifulSoup.

Kode

from urllib2 import urlopen, Request
from bs4 import BeautifulSoup
from time import sleep


def is_multiple_of_x(n, x):
    req = Request('http://www.google.com/search?q={}+%25+{}'.format(n, x))
    req.add_header('User-agent', 'Mozilla/5.0')
    soup = BeautifulSoup(urlopen(req))
    element = soup.find('div', {'id': 'topstuff'}).find('span', {'class': 'nobr'}).text
    res = int(element.split('=')[-1].strip())
    return not res


def fizzbuzz():
    for i in range(1, 101):
        if is_multiple_of_x(i, 3):
            if is_multiple_of_x(i, 5):
                print 'fizzbuzz'
            else:
                print 'fizz'
        elif is_multiple_of_x(i, 5):
            print 'buzz'

        else:
            print i
    sleep(3)


fizzbuzz()
(pastebin-lenke her)

Jeg hadde egentlig tenkt å
  • åpne nettsiden med ghost.py
  • ta screenshot vha. Ghost.capture_to
  • croppe bildet
  • bruke OCR for å finne svaret
  • lage en gif av alle screenshottene

Desverre endte det (selvfølgelig) opp med captcha sjekk hos Google.
Sist endret av steili; 19. januar 2014 kl. 05:09.
Sitat av Jonta Vis innlegg
i < 100
Vis hele sitatet...
Whoops

Sitat av Jonta Vis innlegg
int i = 0
Vis hele sitatet...
Fizzbuzz skal da starte på 1, skal den ikke?
Sitat av Grix Vis innlegg
Whoops



Fizzbuzz skal da starte på 1, skal den ikke?
Vis hele sitatet...
Første element i arrays har stort sett alltid id 0, ikke 1.
I dette tilfellet vil ikke elementet "1" bli skrevet.
La til noen endringer på koden og den ser litt bedre ut - men fortsatt ikke helt fornøyd med resultatet. Inspirasjonen er hentet fra flagget vårt.

https://github.com/etse/ropy/blob/ma.../fizzbuzz.ropy

Kode

|
|       FIZZBUZZ!!                     
|     JUST LIKE EULER 1             
|     FOR FREAK.NO COMPO               
|                  Z   Z   I   F         Z   Z   U   B         \n
|                                    
|_CREATE_STRINGS__09&_09&_37&_07&_"1<[__09&_09&_58&_66&_"2<[__01&"_3<[__
                                                                        |
 ______________________________________11_______________________________|
|
|  CHECK IF 101               MOD 3       
|
|                  __?__40[__>3<%__ __?__NOT_DIVISABLE____________
 _?__>_01&>*1+</!_|                |                              |
|                 |     |    |     ?                              |
0                 |     |    |     4                              |
+ ADD 1                 |    |     1                              |
1                END    |    |     [                              1
| ________________|     |    |     |__1]#_DIVISABLE____________0__|
#                       |    |                                    |
]                       |    |                                    ?
3 ______________________|    |___________________________________ >
|                                                                 5
| ______________________      ___________________________________ |
?                       |    |                                    <
|                       |    |                                    %
|_0_PRINT_NUM_#>__      |    |      __#]2_DIVISABLE_[14___________|
|                 |     |    |     |                              |
1                 |     |    |     |                              |
|                 ?     |    |     |                              |
|                 |                0                              |
|_____________?___|_]4____??_______|_1__NOT_DIVISABLE_____________|
Sist endret av etse; 19. januar 2014 kl. 13:23.
NOOOOOOOOOOOOOOOOOO-
robhol's Avatar
Løsning i Haskell, som jeg (sammen med alle andre funksjonelle språk) omtrent aldri har rørt før... noe jeg regner med er tydelig.

Kode

fizzbuzz :: Int -> String
fizzbuzz n
    | 5 `divs` n && 3 `divs` n = "FIZZBUZZ"
    | 5 `divs` n = "buzz"
    | 3 `divs` n = "fizz"
    | otherwise  = show n
    where x `divs` n = n `mod` x == 0
    
--resultat gis ved:
map fizzbuzz [1..100]
Sist endret av robhol; 19. januar 2014 kl. 15:40.
Haha, greide å lese oppgaveteksten feil... Tar modulus 2 og 3 istedenfor 3 og 5

Kode

/*/../usr/bin/env echo compiling...;T=$(/usr/bin/env mktemp);/usr/bin/env g++ "$0" -o "$T" && ("$T";rm "$T");exit;*/

#include <iostream>
typedef unsigned char uc;
using namespace std;

int main(int argc, char **argv)
{
    uc b[2] = { '0','z' };
    uc c[3] = { 'f','i','G' };
    uc d[3] = { 'b','u','K' };
    uc e[4] = { c[0], c[1], d[0], d[1] };
    for (int n=1; n<101; n++)
    {
        b[1]=n;
        int a=0;
        if (!(n%3)) a+=1;
        if (!(n%5)) a+=2;
        uc *v=a==0?b:a==1?c:a==2?d:e;
        for (a=0;a<2;a++)
        {
            if (v[0]<'a')
            {
                std::cout << (int)v[1];
            }
            else
            {
                std::cout << v[a*2] << v[a*2+1];
                std::cout << (uc)(c[0]+5*4);
                std::cout << (uc)(d[1]+5);
            }
            if (v[0]<'a' || v[2]<'a') break;
        }
        cout << endl;
    }
}
Digger forresten løsningen til Nichotin, grommeste overkill noensinne!
En linje som snakker med Python,bruker pyttsx for "text-to-speech".

Kode

_=__import__('pyttsx').init();_.say('\n'.join("Fizz"*(not i%3)+"Buzz"*(not i%5) or str(i) for i in range(1,101)));_.runAndWait()
For og høre på uten og installere noe en "exe" versjon Fixxbuzz.zip
Prøvde å løse denne oppgaven på lignende måte som jeg prøvde i "Hello World"-tråden. Har brukt PHP, siden det er det språket jeg har arbeidet mest med (kun på amatørplan).

http://freak.no/forum/attachment.php?attachmentid=10994&stc=1&d=1390233659

Har her laget et bilde på 500 x 500 piksler, som består av 10 x 10 kvadrater. Disse kvadratene representerer tallene fra 1 til 100, henholdvis fra venstre mot høyre, og fra topp til bunn.

Fargene betyr:
gul: et "vanlig" tall, skal vises som seg selv
svart: er delelig på 3, skal vises som "fizz"
grønn: er delelig på 5, skal vises som "buzz"
blå: er delelig både på 3 og 5, skal vises som "fizzbuzz"

Koden nedenfor finner fargene på kvadratene, og gjør dette om til enten fizz, buzz, fizzbuzz eller lar tallet stå. Funker fint hos meg, men kan sikkert bli skrevet på en penere måte.

Har lagt inn kommentarer underveis i koden.

Kode

<?php
//husker ikke helt hvor jeg opprinneling fant denne funksjonen, men har i hvert fall ikke skrevet den selv
function rgb2hex($r, $g, $b){
    $r=dechex($r);
    if (strlen($r)<2)
    $r='0'.$r;

    $g=dechex($g);
    if (strlen($g)<2)
    $G='0'.$g;

    $b=dechex($b);
    if (strlen($b)<2)
    $b='0'.$b;

    return $r . $g . $b;
}


// henter inn bildefilen og finner dimensjonene. 
$image = 'image.png';
list($width, $height) = getimagesize($image);


// sjekker om bildet er kvadratisk - hvis ja: går ut fra at bildet er delt opp i 10 like deler per lengde, og finner hvor mange pixler man må flytte seg for å komme til neste del
if ($width == $height) {
	$step = $width / 10;
	}
else {
	die("Bildet er ikke kvadratisk.");
	}


// $xcor og $yxor = koordinatene på bildefila
// $x teller antall ganger loopen kjøres
// $y teller hvor mange ganger $xcor har oversteget bildets bredde
$image = imagecreatefrompng($image);
$xcor = $step - 1;
$ycor = 0;
$x = 1; 
$y = 1; 



while($x<=100)
    {
    
    // sjekker om X-koordinatet er større en bildets bredde, og øker Y-koordinatet hvis det er tilfelle
    if ($xcor >= $width) {
	    $xcor = $step - 1;
	    $ycor = $step * $y;
	    $y++;
	    }
    
    
	// array med hexadesimaler og tilhørende navn
    $hex = array("00000", "008040", "000ff");
    $txt = array("fizz", "buzz", "fizzbuzz");
    
    
    // finner RGB-verdien utifra koordinatene, gjør om til hexadesimaler og endrer til navnene i arrayet overfor
    $rgb = imagecolorat($image, $xcor, $ycor);
    $output = str_replace($hex, $txt, (rgb2hex(($rgb >> 16) & 0xFF, ($rgb >> 8) & 0xFF, $rgb & 0xFF)));
    
    
    // echoer $x (antall ganger loopen har kjørt) hvis feltet er gult. Ellers echoes navnet som er funnet overfor
    if ($output != "ffff00") {
	    echo $output;
	    }
    else {
	    echo $x;
	    }
    
    echo '<br />';
    
    
    // finner nytt X-koordinatet og looper koden
    $xcor = $xcor + $step;
    $x++;
    } 

?>
Burde lest/studert, men endte i stedet opp med å lese om LOLCODE.

Kode

HAI
CAN HAS STDIO?

I HAS A NUMBER ITZ 1

IM IN YR LOOP
BOTH SAEM MOD OF NUMBER 15 AN 0, O RLY?
  YA RLY
    VISIBLE "fizzbuzz"
  MEBBE BOTH SAEM MOD OF NUMBER 3 AN 0
    VISIBLE "fizz"
  MEBBE BOTH SAEM MOD OF NUMBER 5 AN 0
    VISIBLE "buzz"
  NO WAI
    VISIBLE NUMBER
OIC
IZ NUMBER BIGR THAN 99?, GTFO, KTHX
  UPZ NUMBER!!1
IM OUTTA YR LOOP

KTHXBYE
LOLCODE: http://wiki.lolcode.org/doku.php?id=1.2_spec
Sist endret av s1gh; 20. januar 2014 kl. 20:01.
To løsninger, den minimale versjonen bruker i snitt dobbelt så lang tid som den litt mer komplekse

Kode

	private static void icanhazbuzz(int range){


		String[] fizz = new String[range+1];


		int range_3 = range/3;

		for(int i = 1; i < range_3; i++){
			fizz[i*3] = "fizz";			
		}

		int range_5 = range/5;

		for(int i = 1; i < range_5; i++){

			int index = i*5;
			fizz[index] = (fizz[index] == null ? "" : fizz[index])+"buzz";
		}


		for(String s : fizz){

			if(s==null){
				continue;
			}

			System.out.println(s);
		}

	}


Kode

	
	private static void minimal(int range){

		for(int i = 1; i <= range; i++){

			System.out.println((i%3 == 0 ? "fizz":"") + (i%5 == 0 ? "buzz":""));			
		}		
	}

Bra initiativ btw, håper på flere utfordringer snart!
m0b
m0b's Avatar
DonorAdministrator
Ross: Utfordringen har du allerede fått. Du gjør den så komples som du vil, og det er kun din egen kreativitet som setter grensen for hva du gjør ut av den. Gjør noe skikkelig oppfinnsomt med oppgaven! De linjene du har levert inn her er ikke i nærheten av å verken imponere eller sette standard.

Heck, jeg skreiv en "AI" i forrige gang, og det var jo kun for å skrive "Hello world!". Her er det virkelig mye potensiale for faenivoldsk kul kode.
Hiver med min one-liner i Python mens jeg skal prøve å komme opp med noe mer orginalt.

Kode

import sys
f = lambda x: map(lambda i: sys.stdout.write(([str(i)+'\n',"Fizz\n"],["Buzz\n","FizzBuzz\n"])[i % 3 == 0][i % 5 == 0]), range(0,x)) and None
Sist endret av Foxboron; 21. januar 2014 kl. 00:03.
Allrighty then, andre forsøk:

Skrev et biblotek for å kjapt kunne konstruere samt trene neural networks forrige helg. Får endelig bruk for det!



Kode

		NeuralNetwork buzznet = new NeuralNetwork();
		try {


			buzznet.buildNetwork(2, new int[]{3}, 1, ActivatorFactory.LINEAR_ACTIVATOR, ActivatorFactory.SIGMOID_ACTIVATOR, ActivatorFactory.SIGMOID_ACTIVATOR);

			ValueSet[] inputs = new ValueSet[]{
					new ValueSet(0f,0f), // ""
					new ValueSet(1f,0f), // "fizz"
					new ValueSet(0f,1f), // "buzz"
					new ValueSet(1f,1f) // "fizzbuzz"
			};


			ValueSet[] desired = new ValueSet[]{
					new ValueSet(0.0f),
					new ValueSet(0.25f),
					new ValueSet(0.75f),
					new ValueSet(1f)
			};

			buzznet.scrambleWeights();


			Trainer trainer = new BackpropagationTrainer(buzznet);

			for(int x = 0; x < 1000; x++){

				float sum = 0;

				for(int i = 0; i < 4; i++){	
					float val = trainer.train(inputs[i], desired[i], 0.25f);
					sum += val;
				}

				if(sum <= 0.128f){
					System.out.println(sum);
					break;
				}
			}


			// test training
			for(int i = 0; i < 4; i++){				
				buzznet.run(inputs[i]);	
				System.out.println(buzznet.toString());
			}


			//network is trained, get fizzbuzz
			String[] outputs = new String[]{"","fizz", "buzz", "fizzbuzz"};

			ValueSet input = new ValueSet(1,1);

			for(int i = 1; i <= 100; i++){



				if(i % 3 == 0){
					input.setValue(0, 1);
				}else{
					input.setValue(0, 0);
				}


				if(i % 5 == 0){
					input.setValue(1, 1);
				}else{
					input.setValue(1, 0);
				}


				buzznet.run(input);

				float value = buzznet.getOutputValueSet().getValue(0);
				int selectedIndex = 0;

				if(value > 0.8f){
					selectedIndex = 3;
				}else if(value > 0.5f){
					selectedIndex = 2;
				}else if(value > 0.2f){
					selectedIndex = 1;
				}				

				System.out.println(i+") "+outputs[selectedIndex]);			
			}





		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
Må vel legge til en løsning i python også.

Kode

import random

for x in range(10):
    random.seed([50239, 153198, 985410][x%3])
    for y in range(10):
        r = random.randrange(100)
        if r <= 40:
            print x*10+y+1
        elif r <= 60:
            print "Buzz"
        elif r <= 80:
            print "Fuzz"
        elif r <= 100:
            print "FuzzBuzz"
Sist endret av etse; 21. januar 2014 kl. 14:54.
Begrenset bruker
uaexed's Avatar
Hvis jeg mekker en fancy greie i Actionscript 3 med en form for gui o.l. så kan jeg vel poste .swf'en her?
//Regnes dette som kreativt?
(I tillegg til koden i [code])

Det er faktisk rimelig interessant fordi det er et såpass hatet og lite brukt (eheh) språk, i hvertfall her på freak hvor man ikke kan bruker et slikt ghettospråk.
Queen of Blades
Jonta's Avatar
DonorCrew
Ja as. On the streets in the ghetto. I Hello World-tråden var det også noen som postet swf, så du er ~5 år for sen til å være nyskapende med akkurat dét.

Men om det er fancy: Kjør på =)

Forøvrig gir [code] bedre syntax-highlighting.
ps: dette er tross alt et programmeringsforum, så å skrive ned hele greia på et ark og ta bilde av det vil bare medføre at du vil bli ledd av og hånet. Dessuten er det allerede gjort tidligere: http://picz.no/2578
Vis hele sitatet...
Etter å ha lest dette så begynte jeg å tenke litt; hva om jeg skriver en kodesnutt som henter ned bilder av bokstaver og tall fra Google, og som deretter setter sammen disse til ordene "Buzz", "Fizz" og "FizzBuzz"?

Resultat:
http://bildr.no/thumb/VjZuVHNo.jpeg

Kode

<?php
$time_start = microtime(true);

for ($i = 1; $i <= 100; $i++)
{
	if ($i % 3 == 0 && $i % 5 == 0)
		echo $Image->FizzBuzz() . "\n";

	else if ($i % 3 == 0)
		echo $Image->Fizz() . "\n";

	else if ($i % 5 == 0)
		echo $Image->Buzz() . "\n";

	else
		echo $Image->Number($i) . "\n";
}
$time_end = microtime(true);
$time = $time_end - $time_start;

echo 'Script finished in ' . $time . " seconds\n";

Kode

<?php
// Turn off all error reporting
error_reporting(0);

// Increase execution time since this script is soooo slow :(
set_time_limit (120);

class Image
{
	private $_FIZZ, $_BUZZ, $options, $userip;

	public function __construct()
	{
		$this->_FIZZ = array('F', 'i', 'z', 'z');
		$this->_BUZZ = array('B', 'u', 'z', 'z');
		$this->userip = $_SERVER['REMOTE_ADDR'];

		$this->options = array(
  						'http'=>array(
    					'method'=>"GET",
    					'header'=>"Accept-language: en\r\n" .
              				"Cookie: foo=bar\r\n" .
              				"User-Agent: Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B334b Safari/531.21.102013-01-21 20:23:10\r\n" 
  									)
								);
	}

	public function Fizz()
	{
		$fizzWord = NULL;
		$tempData = NULL;

		for ($i = 0; $i < 4; $i++)
		{
			$random = rand(0, 3);
			$curChar = $this->_FIZZ[$i];
			$tempData = $this->GenerateChar($curChar);

			$fizzWord .= '<img height="32" width="32" src="' . $tempData->responseData->results[$random]->tbUrl . '" />';
		}

		return $fizzWord;
	}

	public function Buzz()
	{
		$buzzWord = NULL;
		$tempData = NULL;

		for ($i = 0; $i < 4; $i++)
		{
			$random = rand(0, 3);
			$curChar = $this->_BUZZ[$i];
			$tempData = $this->GenerateChar($curChar);

			$buzzWord .= '<img height="32" width="32" src="' . $tempData->responseData->results[$random]->tbUrl . '" />';
		}

		return $buzzWord;
	}

	public function FizzBuzz()
	{
		return $this->Fizz() . $this->Buzz();
	}

	public function Number($_num)
	{
		$tempData = NULL;
		$random = rand(0, 2);

		$tempData = $this->GenerateChar($_num, "number%20");

		return '<img height="32" width="32" src="' . $tempData->responseData->results[$random]->tbUrl . '" />';
	}

	private function GenerateChar($_char, $number = NULL)
	{
		$context = stream_context_create($this->options);

		$json = file_get_contents('http://ajax.googleapis.com/ajax/services/search/images?v=1.0&q=' . $number . $_char . '&imgtype=clipart&imgsz=medium&rsz=8&userip=' . $this->userip, false, $context);
		$json = json_decode($json);

		return $json;
	}
}

?>
Script finished in 159.34375 seconds
Vis hele sitatet...
Sist endret av s1gh; 21. januar 2014 kl. 20:26.
Skrev en enkel og grei kodesnutt for FizzBuzz i objektorientert PHP.

Kode

<?php

interface FizzBuzz 
{
    public function run();
    public function output();
}

class FizzBuzzer implements FizzBuzz
{
    protected $iterator;
    protected $strategy;
    protected $printer;

    public function __construct(FizzBuzzIterator $iterator, FizzBuzzStrategy $strategy)
    {
        $this->iterator = $iterator;
        $this->strategy = $strategy;
        $this->printer = new FizzBuzzPrinter();
    }
    
    public function run()
    {
        $multipliers = $this->strategy->getMultipliers();
        
        $this->iterator->rewind();
        
        while($this->iterator->valid()) {
            $worker = new FizzBuzzWorker($multipliers, $this->iterator->current());

            $this->printer->queue($worker->getResult());
            
            $this->iterator->next();
        }
        
        return $this;
    }
    
    public function output($asHtml = false)
    {
        if($asHtml)
            $this->printer->setFormatter(new FizzBuzzPrinterHtmlFormatter());
        
        $this->printer->printAll();
    }
}

class FizzBuzzIterator implements Iterator 
{
    protected $start;
    protected $stop;
    protected $current;
    
    public function __construct(FizzBuzzIteratorNumber $start, FizzBuzzIteratorNumber $stop)
    {
        $this->start = $start;
        $this->stop = $stop;
        $this->current = $start;
    }
    
    public function current()
    {
        return $this->current->getNumber();
    }
    
    public function rewind()
    {
        $this->current->setNumber($this->start->getNumber());
    }
    
    public function key()
    {
        return null;
    }
    
    public function next()
    {
        $this->current->increaseBy(new FizzBuzzIteratorNumber(1));
    }
    
    public function valid()
    {
        return $this->current->getNumber() <= $this->stop->getNumber();
    }
}

class FizzBuzzIteratorNumber 
{
    protected $number;
    
    public function __construct($number)
    {
        if(!$this->isValid($number))
            throw new FizzBuzzIteratorNumberException($number);
            
        $this->number = $number;
    }
    
    public function increaseBy($number)
    {
        $number = $number->getNumber();
        
        if(intval($number) == 0)
            return;
        
        if(intval($number) == 1)
            return ++$this->number;
            
        $this->number = $this->number + $number;
        
        return $this->number;
    }
    
    public function decreaseBy($number)
    {
        if(!$this->isValid($number))
            throw new FizzBuzzIteratorNumberException($number);
            
        if(intval($number) == 0)
            return;
        
        if(intval($number) == 1)
            return --$this->number;
            
        $this->number = $this->number - $number;
        
        return $this->number;
    }
    
    public function getNumber()
    {
        return $this->number;
    }
    
    public function setNumber($number)
    {
        if(!$this->isValid($number))
            throw new FizzBuzzIteratorNumberException($number);
        
        $this->number = $number;
    }
    
    public function isValid($number)
    {
        if(!is_numeric($number)) {
            return false;
        } 
        
        return true;
    }
}

class FizzBuzzIteratorNumberException extends Exception
{
     public function __construct($input, $code = 0, Exception $previous = null) 
     {
        $message = '"' . $input . '" is not a valid number';
        
        parent::__construct($message, $code, $previous);
     }
}

class FizzBuzzStrategy
{
    protected $multipliers;
    
    public function __construct($multipliers) 
    {
        if(!is_array($multipliers))
            throw new FizzBuzzStrategyException('Strategy needs to be constructed with an array');
        
        $this->multipliers = $multipliers;
    }
    
    public function getMultipliers()
    {
        return $this->multipliers;
    }
}

class FizzBuzzStrategyException extends Exception
{
     public function __construct($message, $code = 0, Exception $previous = null) 
     {   
        parent::__construct($message, $code, $previous);
     }
}

class FizzBuzzStrategyMultiplier 
{
    protected $number;
    
    public function __construct($number)
    {
        if(!$this->isValidNumber($number))
            throw new FizzBuzzStrategyMultiplierException('"' . $number . '" is not a valid number');
            
        $this->number = $number;
    }
    
    public function getNumber()
    {
        return $this->number;
    }
    
    public function isValidNumber($number)
    {
        if(!is_numeric($number))
            return false;
            
        return true;
    }
}

class FizzBuzzStrategyMultiplierException extends Exception
{
     public function __construct($message, $code = 0, Exception $previous = null) 
     {  
        parent::__construct($message, $code, $previous);
     }
}

class FizzBuzzWord
{
    protected $text;
    
    public function __construct($text)
    {
        if(!is_string($text))
            throw new FizzBuzzWordException('FizzBuzzStrategyWord must be constructed with a string');
            
        $this->text = $text;
    }
    
    public function getText()
    {
        return $this->text;
    }
}

class FizzBuzzWordException extends Exception
{
     public function __construct($message, $code = 0, Exception $previous = null) 
     {  
        parent::__construct($message, $code, $previous);
     }
}


class FizzBuzzWorker
{
    public function __construct($multipliers, $number)
    {
        if(!is_array($multipliers)) 
            throw new FizzBuzzWorkerException('Multipliers must be provided');
        
        $result = '';
        
        foreach($multipliers as $word => $multiplier) {
            if(!$multiplier instanceof FizzBuzzStrategyMultiplier)
                throw new FizzBuzzWorkerException('Multiplier must be instance of FizzBuzzStrategyMultiplier');
                
            if($this->check($multiplier->getNumber(), $number)) {
                $fbWord = new FizzBuzzWord($word);
                $result .= $fbWord->getText();
            }
        }
        
        if(strlen($result) > 0) {
            $this->result = $result;
        }
        else {
            $this->result = $number;
        }
    }
    
    public function check($multiplier, $number)
    {
        return !($number % $multiplier);
    }
    
    public function getResult()
    {
        return $this->result;
    }
}

class FizzBuzzPrinter
{
    protected $printQueue;
    protected $formatter;
    
    public function __construct()
    {
        $this->printQueue = array();
    }
    
    public function queue($message)
    {
        $this->printQueue[] = $message;
    }
    
    public function printSingle($key = 0)
    {
        if(!isset($this->printQueue[$key]))
            throw new FizzBuzzPrinterException('Invalid key in printqueue');
        
        echo $this->printQueue[$key] . "\n";
        
        array_splice($this->printQueue, $key, 1);
    }
    
    public function printAll()
    {
        foreach($this->printQueue as $printItem) {
            if($this->formatter instanceof FizzBuzzPrinterFormatter) {
                echo $this->formatter->getLine($printItem);
            }
            else {
                echo $printItem . "\n";
            }
        }
        
        $this->reset();
    }
    
    public function reset()
    {
        $this->printQueue = array();
    }
    
    public function setFormatter(FizzBuzzPrinterFormatter $formatter)
    {
        $this->formatter = $formatter;
    }
}

class FizzBuzzPrinterException extends Exception
{
     public function __construct($message, $code = 0, Exception $previous = null) 
     {   
        parent::__construct($message, $code, $previous);
     }
}

interface FizzBuzzPrinterFormatter
{
    public function getLine($line);
}

class FizzBuzzPrinterHtmlFormatter implements FizzBuzzPrinterFormatter
{
    public function getLine($line) 
    {
        return $line . '<br />';
    }
}

$fb = new FizzBuzzer(
    new FizzBuzzIterator(
        new FizzBuzzIteratorNumber(1),
        new FizzBuzzIteratorNumber(100)
    ),
    new FizzBuzzStrategy(array(
        'Fizz' => new FizzBuzzStrategyMultiplier(3),
        'Buzz' => new FizzBuzzStrategyMultiplier(5)
    ))
);

$fb->run()->output();
Dersom dere tenker å kjøre scriptet i nettleseren, endre siste linje til:

Kode

$fb->run()->output(true);
Jeg leverer Fortran77 på hullkort. Enjoy!

http://imgur.com/a/dhXYr
Polyglotisk løsning. Kjører/kompilerer som batch, bash, python og C (og C++, så klart).

Kode

#define m// 2>NUL & @echo off & goto :fibu
#include <stdio.h>
#define $i i
#define elif else if
#define then
#define echo
#define printf printf(
#define $par )
#define $C , // \
"""" 2> /dev/null; par=""; C=""; echo '
int main(){
    int i; //' > /dev/null; for i in {1..100}; do echo '
    for(i = 1; i < 101; i++) //' > /dev/null;
        if (($i%15 == 0))
        then
            printf "fizzbuzz\n" $par;
        elif (($i%3 == 0))
        then
            printf "fizz\n" $par;
        elif (($i%5 == 0))
        then
            printf "buzz\n" $par;
        else printf "%d\n" $C $i $par; echo // > /dev/null; fi; done; echo '
    return 0; }/*
:fibu
for /l %%i in (1, 1, 100) do call :fizzbuzzer %%i
goto :eof
:fizzbuzzer
set /a t=%1 %% 15
if %t% NEQ 0 goto :fizzer
echo fizzbuzz
goto :eof
:fizzer
set /a t=%1 %% 3
if %t% NEQ 0 goto :buzzer
echo fizz
goto :eof
:buzzer
set /a t=%1 %% 5
if %t% NEQ 0 goto :number
echo buzz
goto :eof
:number
echo %1
goto :eof
""" 
for i in range(1, 101):
    print "fizzbuzz" if not i%15 else "fizz" if not i%3 else "buzz" if not i%5 else i; """' > /dev/null | grep """#"*/
Sist endret av Provo; 25. januar 2014 kl. 16:06.
Festligheter med Flask og Bottle
Mikro rammeverk har de seneste årene blitt veldig populært.

Litt forklaring,i del 1 parser jeg ut kode i første post av moridin.
Bruker exec og laster koden inn til minne,spytter ut resultat i nettleser med farge som står i stil til koden
Kan se output her

Kode

from flask import Flask
import sys
from StringIO import StringIO
from lxml.html import parse

app = Flask(__name__)
buffer = StringIO()
sys.stdout = buffer
tag = parse('http://freak.no/forum/showthread.php?t=263999').getroot()
code = tag.xpath ('.//*[@id="post_message_3068988"]/div/pre/text()')
exec(''.join(code))
sys.stdout = sys.__stdout__

@app.route("/")
def fizzbuzz():
    return '<h2 style="color:red;background:black;">{}</h2>'.format(buffer.getvalue())

#http://localhost:5000/
if __name__ == "__main__":
    app.run()
Del 2 parser jeg output av hva Flask viser i nettleser med lxml i Bottle.
Teller antall forekomster av fizz,buzz og fizzbuzz,sender resultat til plotly
Resultat av del 2 blir da denne grafen

Kode

from bottle import run, template, get, post, request
from plotly import plotly
from lxml.html import parse
from collections import Counter

py = plotly(username_or_email='snippsat', key='xxxxxx')

@get('/fizzbuzz')
def submit():
    tag = parse('http://localhost:5000/').getroot()
    links = tag.cssselect('html body h2')
    stats = Counter(links[0].text.split())
    x0 = ['Fizz', 'Buzz', 'Fizzbuzz']
    y0 = [str(stats['fizz']), str(stats['buzz']), str(stats['fizzbuzz'])]
    data = {'x': x0, 'y': y0, 'type': 'bar'}
    response = py.plot([data])
    url = response['url']
    filename = response['filename']
    return template('''<a href=""></a>!''', url=url)

#http://localhost:8080/fizzbuzz
if __name__ == '__main__':
    port = int(os.environ.get('PORT', 8080))
    run(host='0.0.0.0', port=port, debug=True)
Sitat av robhol Vis innlegg
Løsning i Haskell, som jeg (sammen med alle andre funksjonelle språk) omtrent aldri har rørt før... noe jeg regner med er tydelig.

Kode

fizzbuzz :: Int -> String
fizzbuzz n
    | 5 `divs` n && 3 `divs` n = "FIZZBUZZ"
    | 5 `divs` n = "buzz"
    | 3 `divs` n = "fizz"
    | otherwise  = show n
    where x `divs` n = n `mod` x == 0
    
--resultat gis ved:
map fizzbuzz [1..100]
Vis hele sitatet...
Dette er jo ikke noe stygt/overdrevent/rart/etc. Ville dog kombinert to av de guardsa der til:

Kode

  | x `modP` 3 = if x `modP` 5 then "fizzbuzz" else "fizz"
En mer Haskell-aktig (bedre) løsning ville vært:

Kode

f :: Int -> String
f n =
  case (n `mod` 3, n `mod` 5) of
    (0, 0) -> "fizzbuzz"
    (_, 0) -> "fizz"
    (0, _) -> "buzz"
    _       -> show n
Logotytme
liasis's Avatar
Trådstarter
Mange bra innlegg her. Det gjør meg varm innvendig, omtrent som god whisky og skitne bilder på snapchat.

Jeg er litt irritert over at jeg ikke har fått satt meg ned og laget noe selv, og for å sparke både meg selv og andre etternølere litt i ræva tenker jeg vi holder tråden åpen for bidrag frem til fredag 14. februar, før det på diktatorisk vis kåres en vinner i løpet av helgen etter.

Kode

{-# LANGUAGE RankNTypes #-}

import Data.Function (on)
import Data.Maybe (fromMaybe)

bACKUPFUNCTIONDONOTEDIT ::  Bool
bACKUPFUNCTIONDONOTEDIT = (flip (>) `on` id) (id . id . id $ True) (id . id . id $ False)

(.:) ::  (c -> d) -> (a -> b -> c) -> a -> b -> d
(.:) = (.).(.)

doesThe ::  Eq a => a -> [(a, (b, c))] -> Maybe b
doesThe = fmap fst .: lookup

looksLikeThe ::  Eq a => a -> [(a, (b, c))] -> Maybe c
looksLikeThe = fmap snd .: lookup

dividableP ::  forall a. Integral a => a -> [a] -> Bool
dividableP n xs = all (==0) $ map (mod n) xs

fizzbuzz ::  Int -> String
fizzbuzz n =
  case result of
    (_, _, True) -> fromMaybe "ERROR CODE: 42"                       $ looksLikeThe "number is dividable with 3 and 5" functionSucceeded
    (_, True, _) -> fromMaybe "ERROR CODE: OOOOPS"                   $ looksLikeThe "number is dividable with 3"       functionSucceeded
    (True, _, _) -> fromMaybe "ERROR CODE: HOW DID THIS EVEN HAPPEN" $ looksLikeThe "number is dividable with 5"       functionSucceeded
    _            -> show n
  where
    functionSucceed =
      [("number is dividable with 3",       (dividableP n [3],                              "fizz"))
      ,("number is dividable with 5",       (dividableP n [5],                              "buzz"))
      ,("number is dividable with 3 and 5", (dividableP n [head [3..5], last [3..5 ]],      "fizzbuzz"))]
    functionSucceeded = functionSucceed
    result =
      (fromMaybe bACKUPFUNCTIONDONOTEDIT $ doesThe "number is dividable with 3"       functionSucceed
      ,fromMaybe bACKUPFUNCTIONDONOTEDIT $ doesThe "number is dividable with 5"       functionSucceed
      ,fromMaybe bACKUPFUNCTIONDONOTEDIT $ doesThe "number is dividable with 3 and 5" functionSucceed)

main :: IO ()
main = putStrLn . unlines $ map fizzbuzz [1..100]
Glemte meg litt av i main. En mindre amatørmessig løsning ville såklart vært putStrLn . unlines $ map fizzbuzz [n - 1 | n <- [2..101]]
Sist endret av Anonym57965; 4. februar 2014 kl. 16:27. Grunn: Automatisk sammenslåing med etterfølgende innlegg.
ASP .NET C#

Kode

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        FizzBuzz();
    }

    protected void FizzBuzz()
    {
        int start = 0;
        int slutt = 0;

        for (int i = start; i <= slutt; i++)
        {
            if (i % 15 == 0)
            {
                FizzBuzzLiteral.Text = "FizzBuzz";
            
            }
            else if (i % 3 == 0)
            {
                FizzBuzzLiteral.Text = "Fizz";
            
            }
            else if (i % 5 == 0)
            {
                FizzBuzzLiteral.Text = "Buzz";
 
            
            }
 
        
        }
    
    }


}
Sitat av Zirto Vis innlegg
ASP .NET C#

Kode

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        FizzBuzz();
    }

    protected void FizzBuzz()
    {
        int start = 0;
        int slutt = 0;

        for (int i = start; i <= slutt; i++)
        {
            if (i % 15 == 0)
            {
                FizzBuzzLiteral.Text = "FizzBuzz";
            
            }
            else if (i % 3 == 0)
            {
                FizzBuzzLiteral.Text = "Fizz";
            
            }
            else if (i % 5 == 0)
            {
                FizzBuzzLiteral.Text = "Buzz";
 
            
            }
 
        
        }
    
    }


}
Vis hele sitatet...
|d13m0b sier det så bra:

Sitat av |d13m0b Vis innlegg
Utfordringen har du allerede fått. Du gjør den så komples som du vil, og det er kun din egen kreativitet som setter grensen for hva du gjør ut av den. Gjør noe skikkelig oppfinnsomt med oppgaven! De linjene du har levert inn her er ikke i nærheten av å verken imponere eller sette standard.

Heck, jeg skreiv en "AI" i forrige gang, og det var jo kun for å skrive "Hello world!". Her er det virkelig mye potensiale for faenivoldsk kul kode.
Vis hele sitatet...
Nok en løsning i python. Bruker pygame til å rendre en ordsky for å vise resultatet. 100, eller buzz om du vil, er størst, og 1 er minst i størrelse. Er ikke helt fornøyd med skaleringen, men har brukt nok tid nå

Kode

#!/usr/bin/env python

import pygame
from random import randint, choice

def boring_function(isitabuzz):
    if isitabuzz %3 == 0 and isitabuzz%5 == 0:
        return "fizzbuzz"
    elif isitabuzz %3 == 0:
        return "fizz"
    elif isitabuzz %5 == 0:
        return "buzz"
    else:
        return str(isitabuzz)


def space_colors():
    return randint(10,255),randint(10,255),randint(10,255)


pygame.font.init()
buzzez = [pygame.font.Font(None,int(freak*10+15)).render(boring_function(freak)\
         ,True,space_colors()) for freak in range(1,101)]

X = 7000
Y = 7000
cloud = pygame.Surface((X,Y))
cloud.fill((0,0,0))
rects = []
buzzez.reverse()
for buzz in buzzez:

    y = Y/2
    x = randint(0,X-buzz.get_width())
    h = buzz.get_height()
    w = buzz.get_width()
    rect = pygame.Rect(x,y,w,h)
    trying_to_draw = True

    while trying_to_draw:
        if rect.collidelist(rects) == -1:
            rects.append(rect)
            cloud.blit(buzz,rect)
            trying_to_draw = False
        else:
            y += choice((-5,5))
            if y >= Y-buzz.get_height() or y < 0:
                y = Y/2
                x = randint(0,X-buzz.get_width())
            rect = pygame.Rect(x,y,w,h)

pygame.image.save(cloud,"inurbuzz.png")
Resultat:
http://i.imgur.com/5mzRRMB.jpg

Det er nok ikke den raskeste løsningen, men var gøy å implementere i det minste.

Kode

freak@computer:~$ time buzzcloud.py
real	1m7.001s
user	1m5.780s
sys	0m0.352s
z0p
uʍop ǝpısdn
z0p's Avatar
En løsning i Windows Batch Script

Evigheter siden jeg har brukt dette til noe, så here it goes:

Kode

@ECHO OFF
SET "i=0" & SET "u=100" & SET "d=10" & SET "c=SET /A " & SET "st=SET s="
:in
   IF %i% GEQ %u% GOTO :end
   %st%
   %c% "i+=1"
   %c% "r=%i%*%d%/3"
   IF '%r:~-1%' EQU '0' %st%fizz
   %c% "r=%i%*%d%/5"
   IF '%r:~-1%' EQU '0' %st%%s%buzz
  IF '%s%' NEQ '' ECHO %i%:%s%
  GOTO :in
:end
Nå husker jeg hvorofr det er evigheter siden jeg har brukt dette til noe

Provo: Correct me if i'm worng, men batch tolkningen din vil ikke fungere korrekt. i batch vil integer i batch gi f.eks 1%5=0

En quick'n dirty python one liner, bare for å ha gjort det :

Kode

print "".join(["".join((("","fizz")[x%3==0],("","buzz")[x%5==0],("","\n")[x%3==0 or x%5==0])) for x in xrange(1,101)])
En annen python snutt:

Kode

for i in xrange(1,101):
    a = ""
    for j in xrange(1,i):
        if ( j*3==i ): a = "fizz" + a 
        if ( j*5==i ):  a = a + "buzz"
    if a!="": print "%s: %s" % (str(i), a)
Sist endret av z0p; 10. februar 2014 kl. 13:31. Grunn: Automatisk sammenslåing med etterfølgende innlegg.
Sitat av z0p Vis innlegg
Provo: Correct me if i'm worng, men batch tolkningen din vil ikke fungere korrekt. i batch vil integer i batch gi f.eks 1%5=0
Vis hele sitatet...
Mulig jeg er litt dum nå, men jeg har litt problemer med å forstå siste setning. Mener du at når et tall "moddes" med et tall høyere enn seg selv så vil det gi null som resultat?

Den virker brillefint her, i hvert fall. Output:

Kode

Z:\home\xxxxxx\Projects\Prog>fizzbuzz.bat

Z:\home\xxxxxx\Projects\Prog>#define m// 2>NUL & @echo off & goto :fibu 
1
2
fizz
4
buzz
fizz
7
8
fizz
buzz
11
fizz
13
14
fizzbuzz
16
17
fizz
19
buzz
fizz
22
23
fizz
buzz
26
fizz
28
29
fizzbuzz
31
32
fizz
34
buzz
fizz
37
38
fizz
buzz
41
fizz
43
44
fizzbuzz
46
47
fizz
49
buzz
fizz
52
53
fizz
buzz
56
fizz
58
59
fizzbuzz
61
62
fizz
64
buzz
fizz
67
68
fizz
buzz
71
fizz
73
74
fizzbuzz
76
77
fizz
79
buzz
fizz
82
83
fizz
buzz
86
fizz
88
89
fizzbuzz
91
92
fizz
94
buzz
fizz
97
98
fizz
buzz
z0p
uʍop ǝpısdn
z0p's Avatar
prpvo: det hadde vært idiotisk Hehe, jeg er faktisk noe usikker selv nå merker jeg, og ser du har helt rett. Tror jeg rotet sammen fakta og fiksjon her, og rotet min egen fiksering på en løsning oppi det hele Noe usikker på hvor jeg her jeg skapte et ikke eksisterende problem, og skrev kode rundt dette men for all del, jeg kaller det kreativitet

Edit: Det var selvfølgelig bare for å teste din våkenhet
Sist endret av z0p; 11. februar 2014 kl. 07:20. Grunn: Automatisk sammenslåing med etterfølgende innlegg.
NOOOOOOOOOOOOOOOOOO-
robhol's Avatar
x mod y gir bare null hvis y*n = x der n er ett eller annet naturlig tall.

Kode

     class Program
    {
        static void Main(string[] args)
        {
            string showFunction = Console.ReadLine();
            DoFizzBuzz(showFunction);
            Console.ReadLine();
        }

        public static void DoFizzBuzz(string showCode = "MessageBox.Show")
        {
            var se = new ScriptEngine();
            var session = se.CreateSession();

            session.ImportNamespace("System");
            
            var code = String.Format("new Action<string>({0})", showCode);

            Action<string> showFunction = (Action<string>)session.Execute(code);

            for (int i = 0; i <= 100; i++)
            {
                string s = String.Empty;
                if (i % 3 == 0 && i % 5 == 0)
                    s = "fizzbuzz";
                else if (i % 3 == 0)
                    s = "fizz";
                else if (i % 5 == 0)
                    s = "buzz";
                else
                    s = i.ToString();

                showFunction(s);
            }
        }
    }
Lar det være opp til brukeren å bestemme hvordan man skal vise resultatet. Compiler med API er tøft.

PS: for å kjøre trenger du Roslyn nuget pakken.
JS doomified()

Kode

for( var i = 1; i < 101; i++ ) {
  var t = '';
  if( i % 3 == 0 ) {
    t = 'Fizz';
  }
  if( i % 5 == 0 ) {
    t = t + 'Buzz';
  }
  console( i + ' ' + t );
}
Sist endret av nudo; 12. februar 2014 kl. 07:25.
Så da er tiden inne for å kåre en vinner. Om min mening kan påvirke synes jeg hullkort var kult og kreativt.
▼ ... over en måned senere ... ▼
Bumper denne, jeg! Hvem vinner, og hva vinnes moridin?
Logotytme
liasis's Avatar
Trådstarter
ai ai ai! Dette hadde jeg helt glemt/fortrengt helt til opptil flere minnet meg på det. I god enterprise-ånd er avgjørelsen to mnd forsinket, og i god enterprise-ånd sprekker derfor også premiebudsjettet tilsvarende og jeg har bestemt meg for å kåre to vinnere, samt et par trøstepremier.

De to forslagene jeg likte aller best, og som derfor vinner hver sin billett til Freakfest 2014 (lørdag 21 juni 20:00 på Månefisken i Oslo) er:
1. frenor for sin løsning i fortran77, på hullkort! http://freak.no/forum/showpost.php?p...1&postcount=26
1. etse for sin løsning hvor språket det ble programmert i ikke engang hadde alle nødvendige egenskaper og måtte utvides først: http://freak.no/forum/showpost.php?p...06&postcount=7

Honorable mentions, og trøstepremier går til (ikke i noen spesiell rekkefølge):
2. Provo sin polyglotiske løsning
3. Nichotins gpu-aksellererte løsning som tar overkill av et enkelt problem til det ytterste
4. s1ghs bruk av google for å presentere løsningen i form av nedlastede bilder
5. snippsat som gjør det enhver moderne utvikler ville gjort og laget en web service av hele greia

Trøstepremier vil bli utlevert på freakfest 2014 i form av valgfri leskedrikk. (om noen andre føler de også burde få trøstepremie kan de bare spørre på samme fest, jo lengre utpå kvelden jo større sjanse har du for positivt svar)

Hurra!
Sist endret av liasis; 20. mars 2014 kl. 22:18.