⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tape.h

📁 这是个很好的源代码,有用的
💻 H
字号:
// ==============================================================
//
//  Copyright (c) 2002-2003 by Alex Vinokur.
//
//  For conditions of distribution and use, see
//  copyright notice in version.h
//
// ==============================================================


// ##############################################################
//
//  SOFTWARE : Turing Machine (C++ Implementation)
//  FILE     : tape.h
//
//  DESCRIPTION :
//         Class Tape (Definition)
//
// ##############################################################




// ###############
#ifndef _TAPE_H
#define _TAPE_H

#include "defs.h"


// =========
#define LEFT_SHIFT	"L"
#define NO_SHIFT	"N"
#define RIGHT_SHIFT	"R"

// =========
class Tape
{
friend class TuringMachine;
  private :
    // ------ Private Data ------
    const vector<symbol_t>	empty_symbols_alphabet_;
    const vector<symbol_t>	internal_alphabet_;
    const vector<symbol_t>	input_alphabet_;
    
    vector<symbol_t>		tape_;
    size_t			position_;
    bool			check_results_;
    size_t			max_symbol_size_;

    // ------ Private Methods ------
    void	clear_it();
    vector<symbol_t>	get_full_alphabet() const;

    void	shift_position (shift_t shift_i);
    symbol_t	get_position_symbol () const;
    void	set_position_symbol (const symbol_t& symbol_i);
    size_t	get_position () const;

    void	set_max_symbol_size_ ();
    
 
    bool	is_input_symbol (const symbol_t& symbol_i) const;
    bool	is_internal_symbol (const symbol_t& symbol_i) const;
    bool	is_empty_symbol (const symbol_t& symbol_i) const;
    bool	is_valid_symbol (const symbol_t& symbol_i) const;
    bool	is_valid_shift (shift_t shift_i) const;

    bool	check_alphabet () const;
    void	show_alphabet (const string& msg_i = string()) const;
    void	show_tape (const string& msg_i = string()) const;
    void	visual_cleaning ();

  public :
   Tape () {}
    Tape (
	const vector<symbol_t>& empty_symbols_alphabet_i, 
	const vector<symbol_t>& internal_alphabet_i,
	const vector<symbol_t>& input_alphabet_i,
	const string& msg_i = string()
	);
    ~Tape ();  

};

#endif	// _TAPE_H

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -