Étienne Simon

Solution to the second problem of the Prologin 2012 selections in Brainfuck (commented)

[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[
La représentation est la même que l'exo3.
L'algo est simplement une boucle :
    afficher
    diviser chaque chiffre par 3 en repportant le modulo au chiffre suivant (fois 10)
    si il y a une retenue non nulle au dernier chiffre, ajouter 1
    faire la somme des chiffres pour tester si on est arrivé à 1 (i.e. si le dernier chiffre est 1 et la somme est 1)
Une partie entiere de log base 3 quoi...
]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]

Centering
>>>>>>>>>>

Input
,----------
[   >+++[<->-------]<-
    <+>>>>>>>>,
    ----------]

@X_x
<<<<<<<<
@X_xm1
[
    [<<<<<<<]>>>>>>>
    [
        Output
        >[->+>+<<]
        >>[-<<+>>]
        +[<+>+++++]<---
        .[-]
        <
        @Xi

        Division
        <<<<<[->>>>>++++++++++<<<<<]>>>>>
        @Xi
        >+++<
        [->-[>+>>]>[+[-<+>]>+>>]<<<<<]
        Here @Xi: 0 nm m d
        >>>[-<<<+>>>]
        <<[-]<
        Here @Xi: d 0 m 0
        
    >>>>>>]
    NL
    ++++++++++.[-]

    <<<<

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

    <<<[<<<<<<<]>>>>>>>
    
    Addition
    [
        [-]
        <<<<<<<[-<+>]<
        [->+>>>>>>>+<<<<<<<<]>>>>>>>>
        >[-<+<+>>]
        <<
        [->>+<<] @L2i
        >
    >>>>>>>]

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