Мышление блондинок

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by _Great_, 26 Feb 2007.

  1. _Great_

    _Great_ Elder - Старейшина

    Joined:
    27 Dec 2005
    Messages:
    2,032
    Likes Received:
    1,118
    Reputations:
    1,139
    Итак, попробуем же реализовать на нашем любимом языке программирования (Си ;)) мышление блондинок :)
    Напишем программу, которая будет генерировать из предложения "Привет. Как дела?" предлоежение "ПРИВЕТ!!!! КАК ДЕЛА????!!!!!" =))
    Для этого нам нужно:
    1) преобразовать все к верхнему регистру
    2) если предложение вопросительное, дополнить его знаками вопроса
    2) дополнить предложение восклицательными знаками
    Приступим :)
    Code:
    #include <stdio.h>
    #include <windows.h>
    
    // Преобразование к верхнему регистру
    // Разное для разных алфавитов
    char touppercase(char c)
    {
    	if( c >= 'a' && c <= 'z' )
    		return c + 'A' - 'a';
    	else if( c >= 'а' && c <= 'я' )
    		return c + 'А' - 'а';
    	else
    		return c;
    }
    
    // Преобразование предложения
    void blonde(char* sentense)
    {
    	// К верхнему регистру
    	for(char* sp = sentense;*sp;sp++)
    		*sp = touppercase(*sp);
    	
    	// Длина предложения
    	int len = strlen(sentense) + 1;
    
    	// Если вопросительное - дополняем
    	if( sentense[len - 2] == '?' )
    		for(int i=0;i<7;i++)
    		{
    			sentense[len + i - 1] = '?';
    			sentense[len + i] = 0;
    		}
    	
    	// новая длина
    	len = strlen(sentense) + 1;
    
    	// дополняем "!"
    	for(int i=0;i<7;i++)
    	{
    		sentense[len + i - 1] = '!';
    		sentense[len + i] = 0;
    	}
    }
    
    int main()
    {
    	while(1)
    	{
    		char buffer[1024];
    
    		// Приглашение. Считываем строчку
    		printf("blonde> ");
    		gets(buffer);
    
    		// OEM -> ANSI
    		OemToChar( buffer, buffer );
    
    		// Обрабатываем
    		blonde(buffer);
    
    		// ANSI -> OEM
    		CharToOem( buffer, buffer );
    
    		// Выводим 
    		printf("%s\n", buffer);
    	}
    	return 0;
    }
    Все :)
    Вывод:
    Можно даже ICQ-бота написать )


    ЗЫ. Оно зохавало мой моск!!!!!!11111 =\\
     
    7 people like this.
  2. Abra

    Abra Member

    Joined:
    17 Sep 2005
    Messages:
    278
    Likes Received:
    51
    Reputations:
    29
    давай не бот а модик под аську!
    или веб оболочку хотя бы.
    буду через нее с некоторыми общаться.
     
  3. _Great_

    _Great_ Elder - Старейшина

    Joined:
    27 Dec 2005
    Messages:
    2,032
    Likes Received:
    1,118
    Reputations:
    1,139
    Напишу веб оболочку )) Общацо
     
  4. sni4ok

    sni4ok Elder - Старейшина

    Joined:
    4 Nov 2006
    Messages:
    115
    Likes Received:
    37
    Reputations:
    12
    а теперь о косячгах

    ну да, стока буква, вместа обычной стандартной, сишной int toupper(int c );

    берёшь сишную страку, делаешь её больше, а проверку на выход за пределы не проводишь.
     
    1 person likes this.
  5. _Great_

    _Great_ Elder - Старейшина

    Joined:
    27 Dec 2005
    Messages:
    2,032
    Likes Received:
    1,118
    Reputations:
    1,139
    уверен, что она обрабатывает русский язык корректно?

    я заблаговременно выделил 1024 байта под нее.
    на большее оно не способно. А что ты хотел от блондинки?))
     
    1 person likes this.
  6. sni4ok

    sni4ok Elder - Старейшина

    Joined:
    4 Nov 2006
    Messages:
    115
    Likes Received:
    37
    Reputations:
    12
    ага, уверен

    ну может ты где-то эти 1024 байта и выделил.. а функции то это неизвестно, мог бы и размерчег передавать,
    а вообще даже в твоём коде кто запрещает пользователю страку набить более чем 1к?
     
  7. _Great_

    _Great_ Elder - Старейшина

    Joined:
    27 Dec 2005
    Messages:
    2,032
    Likes Received:
    1,118
    Reputations:
    1,139
    Да че пристал, дай постебаться )))
     
  8. DRON-ANARCHY

    DRON-ANARCHY Отец порядка

    Joined:
    4 Mar 2005
    Messages:
    716
    Likes Received:
    142
    Reputations:
    50
    на php все выйдет куда короче....
     
  9. _Pantera_

    _Pantera_ Характерне козацтво

    Joined:
    6 Oct 2006
    Messages:
    186
    Likes Received:
    356
    Reputations:
    109
    а мне один раз примерно такая попалась :(

    #include<iostream.h>
    #include<windows.h>

    const char*ru(const char*s)
    {
    static char but[256];
    CharToOem (s,but);
    return but;
    }

    void main()
    {
    int i=0;
    int n;

    for (i=0; i>n; i++)
    cout<<ru("Че ты молчишь???????");

    }
     
  10. sni4ok

    sni4ok Elder - Старейшина

    Joined:
    4 Nov 2006
    Messages:
    115
    Likes Received:
    37
    Reputations:
    12
    а теперь пишем плагин к миранде, который позволяет делать следующее:
    при вводе /blo text, для text'а делаем замену на бландинистый стиль, и выплювывем обратна(работает как в личке(icq, irc), так и на irc канале, также наводимся на цель.
    комадой
    /aim имя_цели
    которая устанавливает цель на irc канале,и при попытке этого чувачка написать текст, выводит нечто следующее
    PHP:
        [01:12]    sni40k15430UnNam3D wanna sayЧО ТАМА ????!!!!!
        [
    01:12]    Dr_Check|offда
        
    [01:12]    SliP|: -_-
        [
    01:12]    UnNam3Dпро америкосов нах ?
        [
    01:12]    sni40k15430UnNam3D wanna sayПРО АМЕРИКОСОВ НАХ ????!!!!!
    ну и собственно исходник плагинчега:

    PHP:

    <?php



    function mbot_load()
    {
        
    mb_SelfRegister(MB_EVENT_MSG_OUT|IRC_EVENT_GUI_OUT|IRC_EVENT_GUI_IN1);
    }

    function 
    ConvertStringToBlondy($msg)
    {
        
    $msg = @strtoupper($msg);
        
    $msg = @str_replace(",""!!!!"$msg);
        
    $msg = @str_replace("?""????!!"$msg);
        
    $msg $msg.'!!!';
        return 
    $msg;
    }

    function 
    MakeBlonyString($body){
        if(@
    strlen($body) <= 6) return 0;
        if(@
    substr($body,0,4) == '/blo'){
            
    $msg = @substr($body,5);
            
    $msg = @ConvertStringToBlondy($msg);
            return 
    $msg;
        }
        return 
    0;
    }

    function 
    SetTarget($aim)
    {
        if(@
    strlen($aim) <= 6) return 0;
        if(@
    substr($aim,0,4) == '/aim'){
            
    $aim = @substr($aim,5);
            @
    mt_setvar('target'$aim1);
            
    mb_PUMsg('Target setted');
            return 
    1;
        }
        return 
    0;
    }

    function 
    ApplyMsg($msg)
    {
        
    $ret = @SetTarget($msg);
        if(
    $ret === 1) return 1;
        return @
    MakeBlonyString($msg);
    }

    function 
    mbe_MsgOut($cid,$body)
    {
        
    $msg = @ApplyMsg($body);
        if(
    $msg === 0) return 0;
        if(
    $msg === 1) return "drop";
        
    mb_MsgSetBody($msg);
        return 
    "send";
    }

    function 
    irc_GuiOut($module,$iType,$channel,$pszUID,$text)
    {
        
    $msg = @ApplyMsg($text);
        if(
    $msg === 0) return 0;
        if(
    $msg === 1) return "drop";
        
    mb_IrcSetGuiDataOut($iType,null,$pszUID,"$msg");
        return 
    0;
    }

    function 
    irc_GuiIn($module,$eventtype,$channel,$nick,$text)
    {
        if(@
    strcmp($eventtype64) == 0){
            
    $target = @mt_getvar('target');
            if(@
    strcmp($nick$target) == 0){
    //            mb_PUMsg('voshli');
                
    $msg = @ConvertStringToBlondy($text);
                if(
    $msg === 0) return 0;
                
    $msg $target.' wanna say: '.$msg;    
                
    $msg '/MSG '.$channel.' '.$msg;
                
    mb_IrcPostMessage($module,$msg);
    //            mb_PUMsg($msg);
            
    }
            return 
    0;
        }
    }

    ?>

    да, работает он используя плагин:
    MBot/MSP (Miranda Scripting Plugin)
     
    #10 sni4ok, 27 Feb 2007
    Last edited: 27 Feb 2007
    6 people like this.
  11. flipper

    flipper Elder - Старейшина

    Joined:
    5 Sep 2006
    Messages:
    131
    Likes Received:
    85
    Reputations:
    29
    Реализация на Perl'e:
    Code:
     #!/usr/bin/perl -w
    
     sub ads(@){
     my $str=shift @_;
     my $j=rindex $str, '?';
     if ($j>0){ # если вопрос добавляем ???
        for(my $i=$j;$i<$j+3;$i++) {
                   $str =$str. '?'; }
     }
    
     return ads1($str);}
    
     sub ads1(@){
     my $str=shift @_;
     my $j=length($str);  #добавляем !!!
        for(my $i=$j;$i<$j+3;$i++) {
                   $str =$str. '!'; }
     return $str;}
    
    my $str=$ARGV[0];
    if ($str== '') {$str="hello Привет, я блондинка";}
    # Преобразование к верхнему регистру
    $str=~ tr/а-я,a-z/А-Я,A-Z/;
    print ads $str;
    
    
     
    1 person likes this.
  12. GreenBear

    GreenBear наркоман с медалью

    Joined:
    7 May 2005
    Messages:
    2,548
    Likes Received:
    1,397
    Reputations:
    612
    реализация на хтмл
    Code:
    <span style="text-transform:uppercase">я не бладнинка!!! я пацан!!!!!</span>
    
     
  13. Ch3ck

    Ch3ck Elder - Старейшина

    Joined:
    9 Jun 2006
    Messages:
    1,362
    Likes Received:
    1,157
    Reputations:
    430
    Ещё универсальную някалку остаётся написать до полного набора...
    PHP:
    <?php
    while(true)
    {
    echo(
    'Няяяяяяяяяя<br>');
    }
    ?>
     
  14. ATFakep

    ATFakep Elder - Старейшина

    Joined:
    11 Dec 2006
    Messages:
    83
    Likes Received:
    77
    Reputations:
    51
    Гениально! =)
     
    1 person likes this.