📄 tape.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 + -