def beginner3Layer(state, topLayer=+K_HAT):
    start = time.time()

    moves = [ ]
    log = [ ]

    # The log records information about solution
    # generations and saves it in solutionLogs.txt
    log.extend([str(datetime.datetime.now()), 'Beginner', state.condense()])

    steps = [topCrossBeginner,
             topCornersBeginner,
             secondLayerBeginner,
             thirdLayerEdgeOrientation,
             thirdLayerCornerOrientation,
             thirdLayerCornerPermutation,
             thirdLayerEdgePermutation]

    for step in steps:
        moves.extend(step(state, topLayer, log))

    refine(moves)

    strMoves = [move[0] for move in moves]
    log.append(''.join(strMoves))
    log.append('Time: ' + str(time.time() - start) + " sec")
    log.append('Moves:' + str(len(moves)))
    log = [str(e) for e in log]
    log = ';'.join(log)

    with open('solutionLogs.txt', 'r+') as file:
        logs = eval(file.read())
        logs.append(log)
        file.seek(0)
        file.truncate()
        file.write("# Datetime, method_name, initial_state, move_data,\
move_string, time_elapsed, total_moves\n")
        file.write(repr(logs))

    return moves
A simple human-based algorithm that combines intuition for the
dataset/ETHPy150Open bluquar/cubr/solutions.py/beginner3Layer