Sha256: 351390a4777cb4a2c43a8aa02b95f3dca66866a97bd12589aedbd48fb30e135b

Contents?: true

Size: 1.75 KB

Versions: 268

Compression:

Stored size: 1.75 KB

Contents

#import "AtbashCipherExample.h"

static NSDictionary<NSString *, NSString *> *cipherDictionary;

@implementation AtbashCipher

+ (void)initialize {
    if (self == [AtbashCipher class]) {
        cipherDictionary = [self createCipherDictionary];
    }
}

+ (NSDictionary<NSString *, NSString *> *)createCipherDictionary {
    NSArray<NSString *> *alphabet = @[@"a", @"b", @"c", @"d", @"e", @"f", @"g", @"h", @"i", @"j", @"k", @"l", @"m", @"n", @"o", @"p", @"q", @"r", @"s", @"t", @"u", @"v", @"w", @"x", @"y", @"z"];
    NSMutableDictionary<NSString *, NSString *> *cipherDict = [[NSMutableDictionary alloc] initWithCapacity:26];
    
    NSUInteger count = alphabet.count;
    
    for (int i = 0; i < count; i++) {
        NSString *key = alphabet[i];
        NSString *value = alphabet[count - i - 1];
        
        cipherDict[key] = value;
    }

    return cipherDict;
}

+ (NSString *)encode:(NSString *)input {
    input = [input lowercaseString]; //!OCLint
    
    NSCharacterSet *characterSet = [NSCharacterSet alphanumericCharacterSet];
    NSMutableString *result = [[NSMutableString alloc] init];
    int count = 0;
    
    for (int i = 0; i < input.length; i++) {
        unichar character = [input characterAtIndex:i];
        if (![characterSet characterIsMember:character]) {
            continue;
        }
        
        if (count % 5 == 0 && count > 0) {
            [result appendString:@" "];
        }
        
        NSString *string = [NSString stringWithFormat:@"%C", character];
        NSString *resultLetter = cipherDictionary[string];
        
        if (resultLetter) {
            [result appendString:resultLetter];
        } else {
            [result appendString:string];
        }
        
        count++;
    }
    
    return result;
}

@end

Version data entries

268 entries across 268 versions & 1 rubygems

Version Path
trackler-2.2.0.5 tracks/objective-c/exercises/atbash-cipher/AtbashCipherExample.m
trackler-2.2.0.4 tracks/objective-c/exercises/atbash-cipher/AtbashCipherExample.m
trackler-2.2.0.3 tracks/objective-c/exercises/atbash-cipher/AtbashCipherExample.m
trackler-2.2.0.2 tracks/objective-c/exercises/atbash-cipher/AtbashCipherExample.m
trackler-2.2.0.1 tracks/objective-c/exercises/atbash-cipher/AtbashCipherExample.m
trackler-2.2.0.0 tracks/objective-c/exercises/atbash-cipher/AtbashCipherExample.m
trackler-2.1.0.55 tracks/objective-c/exercises/atbash-cipher/AtbashCipherExample.m
trackler-2.1.0.54 tracks/objective-c/exercises/atbash-cipher/AtbashCipherExample.m
trackler-2.1.0.53 tracks/objective-c/exercises/atbash-cipher/AtbashCipherExample.m
trackler-2.1.0.52 tracks/objective-c/exercises/atbash-cipher/AtbashCipherExample.m
trackler-2.1.0.51 tracks/objective-c/exercises/atbash-cipher/AtbashCipherExample.m
trackler-2.1.0.50 tracks/objective-c/exercises/atbash-cipher/AtbashCipherExample.m
trackler-2.1.0.49 tracks/objective-c/exercises/atbash-cipher/AtbashCipherExample.m
trackler-2.1.0.48 tracks/objective-c/exercises/atbash-cipher/AtbashCipherExample.m
trackler-2.1.0.47 tracks/objective-c/exercises/atbash-cipher/AtbashCipherExample.m
trackler-2.1.0.46 tracks/objective-c/exercises/atbash-cipher/AtbashCipherExample.m
trackler-2.1.0.45 tracks/objective-c/exercises/atbash-cipher/AtbashCipherExample.m
trackler-2.1.0.44 tracks/objective-c/exercises/atbash-cipher/AtbashCipherExample.m
trackler-2.1.0.43 tracks/objective-c/exercises/atbash-cipher/AtbashCipherExample.m
trackler-2.1.0.42 tracks/objective-c/exercises/atbash-cipher/AtbashCipherExample.m