Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: Brainfuck: Fibonaccin sarja

Metabolix [15.04.2006 01:16:02]

#

Katselin tuota vinkkiä, jonka water_flea vastikään lähetti, ja mietin, oliko se ehkä tehty liian vaikeasti. Googlella löysin heti Brainfuckin syntaksin, ja tuonne viestilootaan kirjoitin sitten kerralla mielestäni toimivan ohjelman. No, kääntäjää en sitten löytänytkään, joten virittelin oman tulkin pystyyn. Joka tapauksessa, nyt pääsin jo testaamaan ohjelmaani, ja sehän toimi, kun vain selvitin, missä muistipaikassa luvut ovat. Hassua kyllä, se laskee joka kierroksella kaksi lukua lisää. Nähtävästi kaikki oli koodia kirjoittaessa ilmiselvää, koska en silloin joutunut ajattelemaan lainkaan. Kuitenkin nyt jouduin "parsimaan" koko koodin, jotta sain toimintaperiaatteen selville. Eipä se kummoinen ollut.

Muistutan vielä, että periaatteessa Brainfuck-ohjelma tulostaa vastaavia merkkejä eikä lukuja, joten tulostus ei välttämättä näytä oikealta. Sama vinkki oktaalimuotoisella tulostuksella on kirjoittamassani Brainfuck-oppaassa.

Algoritmin toiminta eli lukujen liikehdintä muistissa:

m1     m2     m3
a      b      -
a+b    -      b
-      a+b    a+b+b
a+b    -      a+b+b
a+b    a+b+b  -

Koodi. Muistathan poistaa kommentit, jos käytät standardinmukaista kääntäjää; pilkut ja pisteet sekä plus- ja miinusmerkit ovat koodin symboleita.

+++++      # Montako kertaa? Lukuja tulostuu 2n+2.
>+.>+.<<   # m1 = 1, m2 = 1, printataan ne
[->        # while (m0) { m0--, ptr = m1
>[-<+>>+<] # m1 += m2, m3 += m2, m2 = 0
<[->+>+<<] # m2 += m1, m3 += m1, m1 = 0
>[-<+>]    # m1 += m2, m2 = 0
>[-<+>]    # m2 += m3, m3 = 0
<<.>.<     # printataan m1 ja m2, kaksi peräkkäistä lukua;
<]         # ptr = m0 ja whilen loppu }

Ja vielä ilman kommentteja:

+++++>+.>+.<<[->>[-<+>>+<]<[->+>+<<]>[-<+>]>[-<+>]<<.>.<<]

tesmu [18.04.2006 08:28:23]

#

On ehkä hiukkasen vaikeampi kieli kuin asm. ^_^

Metabolix [18.04.2006 21:17:30]

#

On ehkä joitakin tuhansia komentoja vähemmän kuin asmissa ^^

DrDeath [28.10.2006 18:53:34]

#

On ehkä hiukkasen turha kieli

moptim [04.11.2006 08:02:56]

#

EIKÄ OLE

tgunner [30.03.2007 22:27:32]

#

;SALEE on

New Samppi [04.05.2009 20:22:19]

#

Ei oo!!!

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta