Wie kann ich in Brainfuck ne Variable durch 2 teilen?



  • Wie kann ich in Brainfuck ne Variable durch 2 teilen?



  • RFTM!



  • Hi,

    kann dir nicht genau sagen, wie das geht.

    Hier aber ein Link, in dem so einiges (auch dividieren) erklaert wird

    http://www.tiamatix.net/brainfuck/Brainfuck.txt
    [/nachtrag]
    mfg
    v R

    [ Dieser Beitrag wurde am 20.10.2002 um 01:27 Uhr von virtuell Realisticer editiert. ]



  • Hmm, mit 5 multiplizieren (5 mal addieren) und die letzte Stelle auf 0 bringen.



  • Jo. Feine Links. Thx.

    Original erstellt von Doktor Prokt:
    Hmm, mit 5 multiplizieren (5 mal addieren) und die letzte Stelle auf 0 bringen.

    Netter Versuch. Aber durch 10 teilen zu müssen, um die letzte stelle auf 0 zu bringen, vereinfacht das Problem nur unwesentlich.



  • Original erstellt von volkard:
    **Jo. Feine Links. Thx.

    [quote]Original erstellt von Doktor Prokt:
    [qb]Hmm, mit 5 multiplizieren (5 mal addieren) und die letzte Stelle auf 0 bringen.**

    Netter Versuch. Aber durch 10 teilen zu müssen, um die letzte stelle auf 0 zu bringen, vereinfacht das Problem nur unwesentlich.[/QB][/QUOTE]

    Naja, war auch nur so eine Idee, für die Bauernmethode hat das jedenfalls prima geklappt 🙂



  • Hmm... ich würde das so machen:

    1. Zu dividierende Zahl in ein anderes Feld kopieren.
    2. Das nächste Feld auf 0 bringen.
    3. Eine Schleife, bei der die Kopie der zu dividierenden Zahl jeweils um 2 vermindert wird, und das Feld, welches zuvor auf 0 gesetzt wurde um eins erhöht wird.

    lg, phreaking

    EDIT: Ein Problem gibt es nur, wenn die zu dividierende Zahl nicht gerade ist 😞

    [ Dieser Beitrag wurde am 20.10.2002 um 12:42 Uhr von phreaking editiert. ]



  • für gerade zahlen (ungetestet):

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

    ups das ist ja das selbe wie phreakings 🙂

    [ Dieser Beitrag wurde am 20.10.2002 um 17:32 Uhr von japro editiert. ]

    [ Dieser Beitrag wurde am 20.10.2002 um 17:33 Uhr von japro editiert. ]



  • Original erstellt von japro:
    **für gerade zahlen (ungetestet):
    **

    Es geht mir um die Kalenderaufgabe des buha-coding-contests. hab deswegen gestern mit bf angefangen.
    Da muß ich /4 und %7 schaffen für zahlen, die nicht glatte vielfache sind.
    Am besten wohl gleich für beliebige Zahlen.



  • Habs geschafft

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

    Und wer den Code haben mag, wie ich ihn geschrieben hab (ist eigentlich eher forth, aber naja, in bf kann man ja nix entwickeln.):

    // divisor=5 dividend=2
    PUSHZERO result           >
    DUP2 count                <[->>+>+<<<]>>>[-<<<+>>>]<
    DEC count                 -
    // divisor=5 dividend=2 result=0 (count=2) tmp
    go divisor                <<<
    while divisor             [
     go count                  >>>
     DUP1 tmp                  [->+>+<<]>>[-<<+>>]<
     NOT tmp                   >+<[[-]>-<]>[-<+>]<
     IF tmp                    [[-]
      go result                 <<
      INC result                +
      DUP2 count                <[->>+>+<<<]>>>[-<<<+>>>]<
      go tmp                    >
     ENDIF tmp                 ]
     go count                  <
     DEC count                 -
     go divisor                <<<
     DEC divisor               -
    ENDWHILE divisor          ]
    // (divisor=0) dividend=2 result=0 count=?
    go result                 >>
    add to divisor            [-<<+>>]
    go count                  >
    sub from dividend         [-<<->>]
    go dividend               <<
    DEC dividend              -
    


  • BTW : Wird Brainfuck bei dem Coding-Contest eigentlich akzeptiert?! 😉



  • Original erstellt von Gregor:
    BTW : Wird Brainfuck bei dem Coding-Contest eigentlich akzeptiert?! 😉

    Wenn die sehen, wie viel Mühe ich mir gemacht hab, werden sie's schon akzeptieren, hoff ich.



  • Original erstellt von volkard:
    **```
    // divisor=5 dividend=2
    PUSHZERO result >
    DUP2 count <[->>+>+<<<]>>>[-<<<+>>>]<
    DEC count -
    // divisor=5 dividend=2 result=0 (count=2) tmp
    go divisor <<<
    while divisor [
    go count >>>
    DUP1 tmp [->+>+<<]>>[-<<+>>]<
    NOT tmp >+<[[-]>-<]>[-<+>]<
    IF tmp [[-]
    go result <<
    INC result +
    DUP2 count <[->>+>+<<<]>>>[-<<<+>>>]<
    go tmp >
    ENDIF tmp ]
    go count <
    DEC count -
    go divisor <<<
    DEC divisor -
    ENDWHILE divisor ]
    // (divisor=0) dividend=2 result=0 count=?
    go result >>
    add to divisor [-<<+>>]
    go count >
    sub from dividend [-<<->>]
    go dividend <<
    DEC dividend -

    Ahhhhhhhhhhhhh!!!!! IGITT! That really fucks your brain!



  • Keine Sorge, wird akzeptiert, aber ich denke auf die Auflösung wirst du etwas länger warten müssen als normal 😃



  • @volkard: hol dir den bfa.



  • Original erstellt von Mr. N:
    @volkard: hol dir den bfa.

    Das würde doch gegen den "Ehren-Codex" verstoßen!



  • was ist ein ehren-kodex?
    ne, mal im ernst: mvr ist doch besser als > 😉



  • Naja, da gehts um die Ehre :D, bei sowas mogelt man doch nicht.



  • mogeln? wolltest du einen mcdonalds simulator in reinem bf schreiben?



  • lol der mc-donalds simulator hat schon was, hab mich beömmelt.

    naja, das wäre schon ziemliches gemogle, wenn man so ein prog in einem basic-slang schreiben und das mit dem bfa in ein bf-file umwandeln würde.


Anmelden zum Antworten