Friday, August 19, 2011

Google Developer Day / Objective-C: String Handling

Hi!

Here's the code i used for the Google Developer Day 2011, i wasn't able to come up with the 4th task, but it came to me a few hours later at home, so as soon as i code it, i'll update the post.

No way i can paint special words.
Sorry.

CODE:


#import <Foundation/Foundation.h>

@interface MyClass : UIViewController {
    
    IBOutlet UIButton* hitItButton;
    IBOutlet UITextField* TEXT;
    
    int VEZES_QUE_ENTROU;
    int VEZES_QUE_SAIU_SEM_SUCESSO;
    
    NSMutableString* POSITION_1;
    NSMutableString* POSITION_2;
    NSMutableString* POSITION_3;
    NSMutableString* POSITION_4;
    NSMutableString* POSITION_5;
    NSMutableString* POSITION_6;
    NSMutableString* POSITION_7;
    NSMutableString* POSITION_8;
    NSMutableString* POSITION_9;
    NSMutableString* POSITION_10;
    NSMutableString* POSITION_11;
    NSMutableString* POSITION_12;
    NSMutableString* POSITION_13;
    NSMutableString* POSITION_14;
    NSMutableString* POSITION_15;
    NSMutableString* POSITION_16;
    NSMutableString* POSITION_17;
    NSMutableString* POSITION_18;
    NSMutableString* POSITION_19;
    NSMutableString* POSITION_20;
    NSMutableString* POSITION_21;
}


@property(nonatomic, retain)NSUserDefaults* defaultz;

-(void)doIt:(id)sender;


@end


#import "MyClass.h"

@implementation MyClass

@synthesize defaultz;

-(int)intergerForTheString:(NSMutableString*)SINGLE_LETTER{
    
    int switcher;
    
    if ([SINGLE_LETTER isEqualToString:@"l"]){
        switcher = 0;
    }
    if ([SINGLE_LETTER isEqualToString:@"v"]){
        switcher = 1;
    }
    if ([SINGLE_LETTER isEqualToString:@"z"]){
        switcher = 2;
    }
    if ([SINGLE_LETTER isEqualToString:@"t"]){
        switcher = 3;
    }
    if ([SINGLE_LETTER isEqualToString:@"r"]){
        switcher = 4;
    }
    if ([SINGLE_LETTER isEqualToString:@"n"]){
        switcher = 5;
    }
    if ([SINGLE_LETTER isEqualToString:@"h"]){
        switcher = 6;
    }
    if ([SINGLE_LETTER isEqualToString:@"f"]){
        switcher = 7;
    }
    if ([SINGLE_LETTER isEqualToString:@"x"]){
        switcher = 8;
    }
    if ([SINGLE_LETTER isEqualToString:@"d"]){
        switcher = 9;
    }
    if ([SINGLE_LETTER isEqualToString:@"g"]){
        switcher = 10;
    }
    if ([SINGLE_LETTER isEqualToString:@"p"]){
        switcher = 11;
    }
    if ([SINGLE_LETTER isEqualToString:@"b"]){
        switcher = 12;
    }
    if ([SINGLE_LETTER isEqualToString:@"j"]){
        switcher = 13;
    }
    if ([SINGLE_LETTER isEqualToString:@"m"]){
        switcher = 14;
    }
    if ([SINGLE_LETTER isEqualToString:@"w"]){
        switcher = 15;
    }
    if ([SINGLE_LETTER isEqualToString:@"q"]){
        switcher = 16;
    }
    if ([SINGLE_LETTER isEqualToString: @"s"]){
        switcher = 17;
    }
    if ([SINGLE_LETTER isEqualToString:@"k"]){
        switcher = 18;
    }
    if ([SINGLE_LETTER isEqualToString:@"c"]){
        switcher = 19;
    }
    
    return switcher;
}


-(double)potenciacao:(double)X onTheTurn:(int)Z{
    
    double Y=0;
    
    if (Z==0){
        return 1;
    } else {
        Y=X*20;
    }
    
    return Y;
    
}

-(double)calculateIt:(NSString *)X{
    
    
    int TOTAL = [X length];
    int switcher=0;
    double TOTAL_A_ENTREGAR=0;
    double POTENCIACAO=20;
    NSMutableString* SINGLE_LETTER;
    
    for (int i=0; i<[X length]; i++){
        SINGLE_LETTER = [NSMutableString stringWithString:[X substringWithRange:NSMakeRange(i, 1)]];
        switcher = [self intergerForTheString:SINGLE_LETTER];
        
        POTENCIACAO = [self potenciacao:POTENCIACAO onTheTurn:i];
        
        TOTAL_A_ENTREGAR = TOTAL_A_ENTREGAR + switcher*POTENCIACAO; 
        TOTAL--;
    }
    return TOTAL_A_ENTREGAR;
}

-(BOOL)isItBonito:(double)X{
    
    BOOL RETURNER;
    
    if ((X > 865641) && (((int)X%3) == 0)){
        RETURNER = TRUE;
    } else {
        RETURNER = FALSE;
    }
    
    return RETURNER;
    
}

-(BOOL)isItAlreadyStocked:(NSMutableString *)X withLoopNumber:(int)Y{
    
    NSString* RECOVERED_STRING;
    BOOL COISA;
    int zzz;
    VEZES_QUE_ENTROU++;
    
    for (int i=1; i<=Y; i++){
        RECOVERED_STRING = [defaultz stringForKey:[NSString stringWithFormat:@"iz%d", i]];
        if ([X isEqualToString:RECOVERED_STRING ]){
            VEZES_QUE_SAIU_SEM_SUCESSO++;
            COISA = TRUE;
        }
        
    }
    
    if (COISA == TRUE) {
        return COISA;
    } else {
        
        zzz = VEZES_QUE_ENTROU-VEZES_QUE_SAIU_SEM_SUCESSO;
        [defaultz setObject:X forKey:[NSString stringWithFormat:@"iz%d", zzz]];
        return FALSE;
    }
}


-(BOOL)firstLette:(NSMutableString*)X{
    
    BOOL RETURNER;
    
    if ([X isEqualToString:@"x"]){
        RETURNER = TRUE;
    } else if ([X isEqualToString:@"q"]){
        RETURNER = TRUE;
    } else if ([X isEqualToString:@"g"]){
        RETURNER = TRUE;
    } else if ([X isEqualToString:@"p"]){
        RETURNER = TRUE;
    } else if ([X isEqualToString:@"r"]){
        RETURNER = TRUE;
    } else {
        RETURNER = FALSE;
    }
    
    return RETURNER;
    
}

-(IBAction)doIt:(id)sender{
    //NAO ESQUECE DE COLOCAR UM ESPAƇO NO FINAL
    NSString* ENTERING_STRING = @"THE STRING GOOGLE GAVE YOU TO FIND OUT STUFF";
    
    int WORD__COUNTER=0, SAVED_COUNTER=0, WHAT_LETTER_WE_ARE = 0, PREPOSITION_COUNTER=0, NORMAL_VERB_CONTER=0, FP_VERB_CONTER=0, D_LETTER=0, BONITO_COUNTER=0, OUTRO_BONITO_COUNTER=0;
    NSMutableString* SINGLE_LETTER, *WORD, *SINGLE_LETER_FOR_FIRST_PERSON;
    BOOL TIME_TO_SAVE_CONTER = YES, IS_IT_FOO = NO;
    NSMutableArray* array = [[NSMutableArray alloc]initWithCapacity:110];
    
    
    for (int x=0; x<[ENTERING_STRING length]; x++) {
        
        if(TIME_TO_SAVE_CONTER == YES){
            TIME_TO_SAVE_CONTER = NO;
            SAVED_COUNTER = x;
        }
        
        SINGLE_LETTER = [NSMutableString stringWithString:[ENTERING_STRING substringWithRange:NSMakeRange(x, 1)]];
        
        
        if ([SINGLE_LETTER isEqualToString:@" "]){
            WORD = [NSMutableString stringWithString:[ENTERING_STRING substringWithRange:NSMakeRange(SAVED_COUNTER, WHAT_LETTER_WE_ARE)]];            
            //NSLog(@"%@", WORD);
            int OCORRENCIA_FOO=0;
            
            WORD__COUNTER++;
            if (WORD__COUNTER == 1){
                [defaultz setObject:WORD forKey:[NSString stringWithFormat:@"iz%d", WORD__COUNTER]];
            }
            
            NSString* WORD_FOR_CAL = WORD;
            //NSLog(@"%@", WORD_FOR_CAL);
            
            if ([WORD_FOR_CAL isEqualToString:@" "]){
                NSLog(@"branco");
            } else {
                //NSLog(@"wordc: %d", WORD__COUNTER);
                BOOL REPETIDO = [self isItAlreadyStocked:WORD withLoopNumber:WORD__COUNTER];
                //NSLog(@"repetido: %d", REPETIDO);
                
                BOOL BONITO = [self isItBonito:[self calculateIt:WORD_FOR_CAL]];
                if (BONITO == TRUE && REPETIDO == FALSE){
                    BONITO_COUNTER++;
                    [defaultz setObject:WORD_FOR_CAL forKey:[NSString stringWithFormat:@"BONITO%d", BONITO_COUNTER]];
                    [array addObject:[defaultz stringForKey:[NSString stringWithFormat:@"BONITO%d", BONITO_COUNTER]]];
                }
            }
            
            [array sortUsingSelector:@selector(compare:)];
            
            for (int y=0; y<[WORD length]; y++){
                if ([[WORD substringWithRange:NSMakeRange(y, 1)] isEqualToString:@"x"]){
                    //NSLog(@"SOMOOU FOO");
                    OCORRENCIA_FOO++;
                }
                if ([[WORD substringWithRange:NSMakeRange(y, 1)] isEqualToString:@"q"]){
                    //NSLog(@"SOMOOU FOO");
                    OCORRENCIA_FOO++;
                }
                if ([[WORD substringWithRange:NSMakeRange(y, 1)] isEqualToString:@"g"]){
                    //NSLog(@"SOMOOU FOO");
                    OCORRENCIA_FOO++;
                }
                if ([[WORD substringWithRange:NSMakeRange(y, 1)] isEqualToString:@"p"]){
                    //NSLog(@"SOMOOU FOO");
                    OCORRENCIA_FOO++;
                }
                if ([[WORD substringWithRange:NSMakeRange(y, 1)] isEqualToString:@"r"]){
                    //NSLog(@"SOMOOU FOO");
                    OCORRENCIA_FOO++;
                }
                if ([[WORD substringWithRange:NSMakeRange(y, 1)] isEqualToString:@"d"]){
                    //NSLog(@"entrou");
                    D_LETTER++;
                }
            }
            
            //VERIFICA SE TEM FOO
            if (OCORRENCIA_FOO > 0){
                //NSLog(@"SIM ELE Ɖ FOO");
                IS_IT_FOO = YES;
                if (OCORRENCIA_FOO > 1){
                    //NSLog(@"%@ TEM %d LETRAS", WORD, [WORD length]);
                    //NSLog(@"FOO: %d OCORRENCIAS", OCORRENCIA_FOO);
                }
                else{
                    //NSLog(@"%@ TEM %d LETRAS", WORD, [WORD length]);
                    //NSLog(@"FOO: %d OCORRENCIA", OCORRENCIA_FOO);
                }
            } else {
                //NSLog(@"NAO Ɖ FOO");
                IS_IT_FOO = NO;
                //NSLog(@"%@ TEM %d LETRAS", WORD, [WORD length]);
                //NSLog(@"FOO: %d OCORRENCIA", OCORRENCIA_FOO);
            }
            
            
            if ([WORD length] == 3 && IS_IT_FOO == YES && D_LETTER <= 0){
                //NSLog(@"ESSA Ɖ UMA PREPOSIƇƃO");
                PREPOSITION_COUNTER++;
                IS_IT_FOO = NO;
                
            } else
                D_LETTER=0;
                //NSLog(@"ESSA NƃO Ɖ UMA PREPOSIƇƃO");
            }
            
            
            
            if ([WORD length] >= 8){
                SINGLE_LETTER = [NSMutableString stringWithString:[ENTERING_STRING substringWithRange:NSMakeRange(x-1, 1)]];
                SINGLE_LETER_FOR_FIRST_PERSON = [NSMutableString stringWithString:[ENTERING_STRING substringWithRange:NSMakeRange(SAVED_COUNTER, 1)]];
                
                if ([SINGLE_LETTER isEqualToString:@"x"]){
                    NORMAL_VERB_CONTER++;
                    if ([self firstLette:SINGLE_LETER_FOR_FIRST_PERSON] == TRUE){
                        FP_VERB_CONTER++;
                    }
                }
                if ([SINGLE_LETTER isEqualToString:@"q"]){
                    NORMAL_VERB_CONTER++;
                    if ([self firstLette:SINGLE_LETER_FOR_FIRST_PERSON] == TRUE){
                        FP_VERB_CONTER++;
                    }
                }
                if ([SINGLE_LETTER isEqualToString:@"g"]){
                    NORMAL_VERB_CONTER++;
                    if ([self firstLette:SINGLE_LETER_FOR_FIRST_PERSON] == TRUE){
                        FP_VERB_CONTER++;
                    }
                }
                if ([SINGLE_LETTER isEqualToString:@"p"]){
                    NORMAL_VERB_CONTER++;
                    if ([self firstLette:SINGLE_LETER_FOR_FIRST_PERSON] == TRUE){
                        FP_VERB_CONTER++;
                    }
                }
                if ([SINGLE_LETTER isEqualToString:@"r"]){
                    NORMAL_VERB_CONTER++;
                    if ([self firstLette:SINGLE_LETER_FOR_FIRST_PERSON] == TRUE){
                        FP_VERB_CONTER++;
                    }
                }
                
            }
            
            
            TIME_TO_SAVE_CONTER = YES;
            WHAT_LETTER_WE_ARE =0;
        } else {
            //NSLog(@"%@", SINGLE_LETTER);
            WHAT_LETTER_WE_ARE++;
        }
        
        
    }
    NSLog(@"VERBOS: %d", NORMAL_VERB_CONTER);
    NSLog(@"VERBOS EM 1P: %d", FP_VERB_CONTER);
    NSLog(@"PREPOSIƇOES: %d", PREPOSITION_COUNTER);
    NSLog(@"NUM. BONITOS: %d", BONITO_COUNTER);
    NSLog(@"TOTAL DE PALAVRAS = %d", WORD__COUNTER);
    
    NSString* string_De_retorno = [[NSString alloc]init];
    for (NSString* WWW in array) {
        NSLog(@"%@", WWW);
        [string_De_retorno stringByAppendingString:WWW];
    }
    
    TEXT.text = string_De_retorno;
    NSLog(@"%@", string_De_retorno);
    
}

-(int)count:(NSString*)String{
    int x = 0;
    for ( x=0; x <= [String length]; x++)
        NSLog(@"x");
    
    return x;
}

-(void)startMutableStrings{
    
    POSITION_1 = [NSMutableString string];
    POSITION_2 = [NSMutableString string];
    POSITION_3 = [NSMutableString string];
    POSITION_4 = [NSMutableString string];
    POSITION_5 = [NSMutableString string];
    POSITION_6 = [NSMutableString string];
    POSITION_7 = [NSMutableString string];
    POSITION_8 = [NSMutableString string];
    POSITION_9 = [NSMutableString string];
    POSITION_10 = [NSMutableString string];
    POSITION_11 = [NSMutableString string];
    POSITION_12 = [NSMutableString string];
    POSITION_13 = [NSMutableString string];
    POSITION_14 = [NSMutableString string];
    POSITION_15 = [NSMutableString string];
    POSITION_16 = [NSMutableString string];
    POSITION_17 = [NSMutableString string];
    POSITION_18 = [NSMutableString string];
    POSITION_19 = [NSMutableString string];
    POSITION_20 = [NSMutableString string];
    
}

-(void)stockString:(NSMutableString*)X withIndex:(int)Y{
    
    switch (Y){
        case 1: POSITION_1 = X; break;
        case 2: POSITION_2 = X; break;
        case 3: POSITION_3 = X; break;
        case 4: POSITION_4 = X; break;
        case 5: POSITION_5 = X; break;
        case 6: POSITION_6 = X; break;
        case 7: POSITION_7 = X; break;
        case 8: POSITION_8 = X; break;
        case 9: POSITION_9 = X; break;
        case 10: POSITION_10 = X; break;
        case 11: POSITION_11 = X; break;
        case 12: POSITION_12 = X; break;
        case 13: POSITION_13 = X; break;
        case 14: POSITION_14 = X; break;
        case 15: POSITION_15 = X; break;
        case 16: POSITION_16 = X; break;
        case 17: POSITION_17 = X; break;
        case 18: POSITION_18 = X; break;
        case 19: POSITION_19 = X; break;
        case 20: POSITION_20 = X; break;
    }
    
}


-(void)viewDidLoad{
    
    [self startMutableStrings];
    defaultz = [NSUserDefaults standardUserDefaults];
    VEZES_QUE_ENTROU=1;
    VEZES_QUE_SAIU_SEM_SUCESSO=0;
    [super viewDidLoad];
    
}


-(void)viewDidUnload{
    [super viewDidUnload];
 }

-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation{   
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
@end

Thursday, August 11, 2011

Objective-C: String reverting

Hi!


Here's a very simple piece of code  to revert/twist/turn a string:



#import <UIKit/UIKit.h>

@interface StringTurnerViewController : UIViewController{
    
    IBOutlet UIButton* BUTTON;
    IBOutlet UITextField* INSERT_TEXT_FIELD;
    IBOutlet UITextField* RESULT_TEXT_FIELD;
    
}

-(IBAction)revertTheString:(id)sender;
-(int)countStringLenght:(NSString *)string;


@end

#import "StringTurnerViewController.h"

@implementation StringTurnerViewController


-(IBAction)revertTheString:(id)sender{
            
    NSString* STRING_TO_TRANSFORM = INSERT_TEXT_FIELD.text;
    NSString* STRING_WHO_WILL_RECEIVE_CHAR_BY_CHAR;
    NSMutableString* STRING_TO_DISPLAY = [NSMutableString string];
    NSMutableString* MUTABLE_STRING_TO_TRANSFORM = [NSMutableString stringWithString:STRING_TO_TRANSFORM];
    int STRING_SIZE;
    
    STRING_SIZE = [self countStringLenght:STRING_TO_TRANSFORM];
    int x;
    for (x=0; x<=[STRING_TO_TRANSFORM length]; x++){
        STRING_SIZE--;
        if(x <= [STRING_TO_TRANSFORM length]-1){
            STRING_WHO_WILL_RECEIVE_CHAR_BY_CHAR = [MUTABLE_STRING_TO_TRANSFORM substringWithRange:NSMakeRange(STRING_SIZE, 1)];
            [STRING_TO_DISPLAY appendString:STRING_WHO_WILL_RECEIVE_CHAR_BY_CHAR];
        }
    }
    
    RESULT_TEXT_FIELD.text = STRING_TO_DISPLAY;
    
}

-(int)countStringLenght:(NSString *)string{
    
    int stringLength = 0;    
    for(int i=0; i<=[string length]; i++){
        stringLength = i;
    }
    return  stringLength;
}

...

@end

Have a good day, pals.


Tweet