コード例 #1
0
ファイル: MalcevSet.C プロジェクト: koudonojinchuu/magnus
bool MalcevSet::isNormalClosure() const {

  if( isNormal != dontknow ) return isNormal;

  if( ! isBasis )
    error("Attempt to use MalcevSet::isNormalClosure before the set is full.");

  const BasicCommutators& BC = theCollector.commutators();
  MalcevSet* This = (MalcevSet *)this;    // to break physical constness

  //the subgroup is normal iff any w^x is in the set

  for(int i = 1; i < BC.theFirstOfWeight(BC.nilpotencyClass() ); i++) {

    if( ! theSet.bound( Generator(i) ) ) continue;
    PolyWord W = theSet.valueOf( Generator(i) );
    
    for(int j = 1; j <= BC.numberOfGenerators(); j++) {

      PolyWord conj = collect( Letter(j, -1) * W * Letter(j, 1) );

      checkMembership(conj);

      if(! conj.isEmpty() ) {
	This->isNormal = no;
	return false;
      }
    }
  }
  This->isNormal = yes;
  return true;
}
コード例 #2
0
ファイル: directip.cpp プロジェクト: stroem/tejt
DirectIP::DirectIP()
{
	max_addr_len = 15;
	eye.position = Point(2.0, 2.0, 5.0);

	world.push_back(object_ptr(new Text()));

	world.push_back(object_ptr(new Body(Point(2, 3, 0.9), Size(0.9, 0.3, 0.2), Color(1,1,1), CUBE_BORDERED)));	// Övre rutan
	world.push_back(object_ptr(new Body(Point(2, 2, 0.9), Size(2.3, 0.3, 0.2), Color(1,1,1), CUBE_BORDERED)));	// Inputrutan
	world.push_back(object_ptr(new Body(Point(2, 1, 0.9), Size(0.9, 0.3, 0.2), Color(1,1,1), CUBE_BORDERED)));	// Undre rutan

	world.push_back(object_ptr(new Text("PLAYER 1", Letter(Size(0.07,0.15,0.0), 0.03, 2.5, Color(0,0,0)), Point(2, 3, 1.1+MILLI))));
	world.push_back(object_ptr(new Text("PLAYER 2", Letter(Size(0.07,0.15,0.0), 0.03, 2.5, Color(0,0,0)), Point(2, 1, 1.1+MILLI))));
	world.push_back(object_ptr(new Text("IP:", Letter(Size(0.07,0.15,0.0), 0.03, 2.5, Color(0,0,0)), Point(1.3, 2, 1+MILLI))));
}
コード例 #3
0
ファイル: MailHandler.cpp プロジェクト: wladez/POP3-server
//ответ на команду RETR
void MailHandler::getMessage(SOCKET client_socket, string req, User& curUser){
	string request = req;
	string answer;
	int cnt = 0, cap = 0, num=0;
	cnt = curUser.lettersCount();
	if (req.size() > 5){
		string temp = request.substr(5, 1);
		try{
			num = stoi(temp, nullptr);			
		}
		catch (invalid_argument){
			cout << "Error! Invalid argument!" << endl;
			answer.append("-ERR Invalid argument!");
		}
		if (num <= cnt && num > 0) {			
			Letter let = Letter();
			let = curUser.getLetter(num);
			if (let.getMarker() == false){
				cout << "number is " << num << endl;
				answer.append(responses[1] + to_string(curUser.letterSize(num)) + " octets\r\n");
				answer.append("From: " + let.getFrom());
				answer.append("\r\nTo: " + let.getTo());
				answer.append("\r\nSubject: " + let.getSubject());
				answer.append("\r\nData: " + let.getData() + "\r\n.");
			}
			else answer.append("-ERR message " + to_string(num) + " was deleted\r\n");			
		}
		else answer.append(responses[0]);
	}
	else answer.append(responses[0]);
	sendLine(client_socket, answer.c_str());
}
コード例 #4
0
ファイル: directip.cpp プロジェクト: stroem/tejt
void DirectIP::OnKeyDown(const ::SDL_KeyboardEvent& key)
{
	switch(key.keysym.sym)
	{
		case SDLK_UP:
			if(!addr.empty())
				SetNextActivity(new Fade(new Game(true, addr, connection_ptr()), world, eye), true);
			break;
		case SDLK_DOWN:
			if(!addr.empty())
				SetNextActivity(new Fade(new Game(false, addr, connection_ptr()), world, eye), true);
			break;
		case SDLK_ESCAPE:
			SetNextActivity(new Fade(new Menu, world, eye), true);
			break;
		default:
			break;
	}
	// Hantera input, sortera bort oönskade tecken.
	HandleInput(key, addr);
	addr = StripCharacters(addr, "abcdefghijklmnopqrstuvwxyz,!?+-:/ =");

	if(addr.size() >= max_addr_len)
		addr = addr.substr(0, max_addr_len);

	world[0] = object_ptr(new Text(addr, Letter(Size(0.05,0.07,0.0), 0.03, 2.5, Color(0,0,0)),
		Point(2.4, 2, 1+MILLI), Size(1.3, 0.2,0), Color(0.3,0.3,0.3), Rotation(), false));
}
コード例 #5
0
bool Letter::isLetter(char ch) {
    try {
	Letter(ch);
    } catch (std::invalid_argument e) {
	return false;
    }
    return true;
}
コード例 #6
0
ファイル: ID.cpp プロジェクト: AnnRe/archive
std::string ID::GetIDPart1(std::string MAChash,std::string MAC)//******
{
	std::string key = "";
	for (int i = 0; i < 6; i++) //co 4-ty znak #MAC ^ co 3-ci znak MAC licz¹c od 2
	{							// ASCII 48-57, 65-90, 97-122
		key.push_back(Letter(MAC[i * 3 + 1], MAChash[i * 3]));
	}

	return key;
}
コード例 #7
0
ファイル: MalcevSet.C プロジェクト: koudonojinchuu/magnus
void MalcevSet::makeNormalClosure() {

  if(isNormal == yes) return;

  const BasicCommutators& BC = theCollector.commutators();
  int nilClass = BC.nilpotencyClass();

  int upper_i = BC.theFirstOfWeight(nilClass);

  for(int i = 1; i <= upper_i; i++) {

    if( ! theSet.bound( Generator(i) ) ) continue;
    PolyWord Wi = theSet.valueOf( Generator(i) );
    PolyWord WiInv = Wi.inverse();

    // trying generators of the group

    for(int j = 1; j <= BC.numberOfGenerators(); j++) {

      Generator g(j); 
      PolyWord comm = collect( Wi * Letter(g,-1) * WiInv * Letter(g,1) ); 

      addWord(comm);
    }

    // trying basis elements

    int upper_j = BC.theFirstOfWeight(nilClass - BC.weightOf(i) + 1);
    if(upper_j > i) upper_j = i;

    for(int j = 1; j < upper_j; j++) {

      if( ! theSet.bound( Generator(j) ) ) continue;
      PolyWord Wj = theSet.valueOf( Generator(j) );

      PolyWord comm = collect( Wi * Wj * WiInv * Wj.inverse() );

      addWord(comm);
    }
  }
  isBasis = true;
  isNormal = yes;
}
コード例 #8
0
ファイル: MailHandler.cpp プロジェクト: wladez/POP3-server
MailHandler::MailHandler()
{
	// в конструкторе добавляются такие юзера в users, users - private поле в заголовочном
	users.push_back(User("wladez", "password"));
	users.push_back(User("azat", "12345"));
	users.push_back(User("lera", "1q2w3e"));
	// FOR TESTS!
	//и нулевому юзеру добавляются два тестовых письма
	Letter letter = Letter();
	letter.addFrom((string)"lera");
	letter.addSubject((string)"Just for fun");
	letter.addTo((string)"wladez");
	letter.addData((string)"Hi! How are you?");
	users[0].addLetter(letter);
	Letter letter1 = Letter();
	letter1.addFrom((string)"azat");
	letter1.addSubject((string)"Study");
	letter1.addTo((string)"wladez");
	letter1.addData((string)"You need to get zachot for seti!");
	users[0].addLetter(letter1);
}
コード例 #9
0
ファイル: server.cpp プロジェクト: bakwc/Jamsmtpd
//------------------------------------------------------------------------------------------
void Server::clientConnected(int client)
{
	log_->debug("Client connected...");
	fcntl(client, F_SETFL, O_NONBLOCK);
	//std::string answ="220 Ready to serve\n";
	//send(client, answ.c_str(), answ.length(), 0);
	sendStr(client, "220 Ready to serve\n");
	//Letter letter(accounts_,log_);
	//letter.accepting==false;
	//clients_[client]=letter;
	
	clients_.insert( std::map< int, Letter >::value_type ( client, Letter(accounts_,log_) ) );
	
	//log_->debug("Clients: " + itoa(clients_.size()));
	//log_->debug("ClientID: " + itoa(client));
}
コード例 #10
0
ファイル: clattr.cpp プロジェクト: blblblu/Clattr
Letter Clattr::uiData() {
	return Letter(
				ui->inputAlign->currentIndex(),
				ui->inputAttachement->document()->toPlainText(),
				ui->boolAttachement->checkState(),
				ui->inputClosing->text(),
				ui->inputDate->date(),
				ui->inputFontsize->value(),
				ui->inputLanguage->text(),
				ui->inputObject->text(),
				ui->inputOpening->text(),
				ui->inputPackages->document()->toPlainText(),
				ui->inputReceiver->document()->toPlainText(),
				ui->inputSenderaddress->document()->toPlainText(),
				ui->inputSendername->text(),
				ui->inputSignature->document()->toPlainText(),
				ui->inputTemplate->currentText(),
				ui->inputText->document()->toPlainText());
}
コード例 #11
0
ファイル: wxTimeFont.cpp プロジェクト: MarekTP/wxAstroCapture
const wxUint8* wxTimeFont::Letter(wxChar letter) const
{
   // return the known letters
   switch (letter) {
      case wxT('0'): return Letter(wxTimeFont::ELC_0); break;
      case wxT('1'): return Letter(wxTimeFont::ELC_1); break;
      case wxT('2'): return Letter(wxTimeFont::ELC_2); break;
      case wxT('3'): return Letter(wxTimeFont::ELC_3); break;
      case wxT('4'): return Letter(wxTimeFont::ELC_4); break;
      case wxT('5'): return Letter(wxTimeFont::ELC_5); break;
      case wxT('6'): return Letter(wxTimeFont::ELC_6); break;
      case wxT('7'): return Letter(wxTimeFont::ELC_7); break;
      case wxT('8'): return Letter(wxTimeFont::ELC_8); break;
      case wxT('9'): return Letter(wxTimeFont::ELC_9); break;
      case wxT('.'): return Letter(wxTimeFont::ELC_Dot); break;
      case wxT(':'): return Letter(wxTimeFont::ELC_Colon); break;
      case wxT('/'): return Letter(wxTimeFont::ELC_Slash); break;
      case wxT('-'): return Letter(wxTimeFont::ELC_Dash); break;
      case wxT(' '): return Letter(wxTimeFont::ELC_Blank); break;
      default:
         return NULL;
   }
}
コード例 #12
0
ファイル: FbDatabase.cpp プロジェクト: EvgeniiFrolov/myrulib
void FbLetterFunction::Execute(wxSQLite3FunctionContext& ctx)
{
	if (ctx.GetArgCount() == 1) {
		ctx.SetResult(Letter(ctx.GetString(0)));
	}
}
コード例 #13
0
ファイル: Game.cpp プロジェクト: newgrounds/WordEngine
// on "init" you need to initialize your instance
bool Game::init() {
    if ( !LayerColor::init()) {//initWithColor(Color4B(255, 0, 0, 255)) ) {
        return false;
    }
    
    // add background music
    CocosDenshion::SimpleAudioEngine::getInstance()->playBackgroundMusic("action.mp3", true);
    
    // enable touch events
    setTouchEnabled(true);
    
    // get screen size
    Size screenSize = Director::getInstance()->getVisibleSize();

    // add menu button
    MenuItemLabel* menuItem = MainMenu::createButton("End Game", CC_CALLBACK_1(Game::menuCallback, this));
	menuItem->setPosition(Point(screenSize.width - menuItem->getContentSize().width/2 - Letter::PADDING,
                                menuItem->getContentSize().height/2 + Letter::PADDING));
    // create menu, it's an autorelease object
    auto menu = Menu::create(menuItem, NULL);
    menu->setPosition(Point::ZERO);
    this->addChild(menu, 1);
    
    // display score on the screen
    scoreLabel = LabelTTF::create("Score: 0", "Arial", 35);
    scoreLabel->setColor(Color3B(255, 255, 255));
    scoreLabel->setPosition(Point(Letter::PADDING + scoreLabel->getContentSize().width/2, screenSize.height-scoreLabel->getContentSize().height/2 - Letter::PADDING));
    this->addChild(scoreLabel, 1);
    
    // display moves on the screen
    movesLabel = LabelTTF::create("Moves: 20", "Arial", 35);
    movesLabel->setColor(Color3B(255, 255, 255));
    movesLabel->setPosition(Point(screenSize.width - movesLabel->getContentSize().width/2 - Letter::PADDING, screenSize.height - movesLabel->getContentSize().height/2 - Letter::PADDING));
    this->addChild(movesLabel, 1);
    
    // set number of moves
    moves = STARTING_MOVES;
    
    // create board
    Board board = Board(this);
    // whether a letter has been selected
    bool letterSelected = false;
    
    auto listener = EventListenerTouch::create(Touch::DispatchMode::ONE_BY_ONE);
    listener->setSwallowTouches(false);
    listener->onTouchBegan = [=](Touch* touch, Event* event) mutable {
        //log("touch began");
        Point location = touch->getLocation();//->getLocationInView();
        // TODO: Detect touches on labels
        for (int i = 0; i < Board::BOARD_SIZE; i++) {
            vector<Letter> row = board.letters[i];
            for (int j = 0; j < Board::BOARD_SIZE; j++) {
                Letter l = row[j];
                if (location.getDistance(l.posn) < 30) {
                    //log("touched %c", l.letter);
                    
                    l.label->setColor(cocos2d::Color3B(0, 255, 0));
                    
                    //cocos2d::log("letter selected %s, %c", letterSelected ? "true" : "false", board.selected.letter);
                    if (!letterSelected) {
                        // first letter selected
                        board.selected = l;
                        letterSelected = true;
                        //cocos2d::log("set selected to %c, %s", board.selected.letter, letterSelected ? "true" : "false");
                    } else if (board.selected != l) {
                        // second selected letter is not the same as first
                        board.letterSwap(l);
                        letterSelected = false;
                        UpdateScore();
                        UpdateMoves();
                    } else {
                        // same letter was selected
                        //cocos2d::log("you selected the same letter %c", board.selected.letter);
                        // set letterSelected to false
                        letterSelected = false;
                        // reset selected color
                        board.selected.label->setColor(cocos2d::Color3B(255, 255, 255));
                        // set selected letter to empty Letter
                        board.selected = Letter();
                    }
                    
                    return true;
                }
            }
        }
        return false;
    };
    
    // unused listeners
    //listener->onTouchMoved = [](Touch* touch, Event* event) { log("touch moved"); };
    //listener->onTouchEnded = [](Touch* touch, Event* event) { log("touch ended"); };
    //listener->onTouchCancelled = [](Touch* touch, Event* event) { log("touch canceled"); };
    
    // The priority of the touch listener is based on the draw order of sprite
    //EventDispatcher::getInstance()->addEventListenerWithSceneGraphPriority(listener, sprite);
    // Or the priority of the touch listener is a fixed value
    EventDispatcher::getInstance()->addEventListenerWithFixedPriority(listener, 100);
    
    return true;
}
コード例 #14
0
ファイル: MalcevSet.C プロジェクト: koudonojinchuu/magnus
bool MalcevSet::decomposeWord(const PolyWord& w, PolyWord& decomp) const {

  if( ! isBasis )
    error("Attempt to use MalcevSet::decomposeWord before the set is full.");

  PolyWord remainder = theCollector.collect(w);
  decomp = PolyWord();

  // try to decompose the remainder

  while( ! remainder.isEmpty() && theSet.bound( leader(remainder) ) ) {
    PolyWord divisor = theSet.valueOf( leader(remainder) );
    if( absPower(remainder) % absPower(divisor) != 0 ) 
      break;

    // The remainder can be reduced. Do it.
    int divPower = power(remainder) / power(divisor);
    decomp.append( Letter( leader(remainder), divPower ) );

    if( divPower < 0 ) {
      divPower = - divPower;
    }
    else {
      divisor = theCollector.inverse(divisor);
    }

    for(int i = 0; i < divPower; i++) {
      remainder = theCollector.multiply(divisor, remainder);
    }

  }

  // if the remainder cannot be decomposed

  if( ! remainder.isEmpty() ) {
    decomp = PolyWord();
    return false;
  }
  
  // if the remainder initially was empty

  if( decomp.isEmpty() ) return true;

  // initially decomp is a series of letters (gen, power),
  // where gen is a leader of decomposition component and
  // power is its power

  // now translate decomp to Malcev basis terms: replace
  // gen with index of basis word having leader gen

  int curElement = 0;   // index of current basis element

  PolyWordIterator iter(decomp);
  iter.startFromLeft();

  for( int c = 1; c <= theCollector.commutators().theHirschNumber(); c++ ) {
    Generator theLeader(c);
    if( ! theSet.bound(theLeader) ) continue;
    ++curElement;

    if( iter.thisLetter().gen == theLeader ) {
      iter.thisLetter().gen = Generator(curElement);
      iter.stepRight();
      if( iter.done() ) break;
    }
  }
  return true;
}
コード例 #15
0
/*
 * Friend functions
 */
Letter operator+(const Letter& let1, const Letter& let2) {
    return Letter((let1.m_num + let2.m_num) % MAX_NALPHA);
}