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.1.180 tracks/objective-c/exercises/atbash-cipher/AtbashCipherExample.m
trackler-2.2.1.179 tracks/objective-c/exercises/atbash-cipher/AtbashCipherExample.m
trackler-2.2.1.178 tracks/objective-c/exercises/atbash-cipher/AtbashCipherExample.m
trackler-2.2.1.177 tracks/objective-c/exercises/atbash-cipher/AtbashCipherExample.m
trackler-2.2.1.176 tracks/objective-c/exercises/atbash-cipher/AtbashCipherExample.m
trackler-2.2.1.175 tracks/objective-c/exercises/atbash-cipher/AtbashCipherExample.m
trackler-2.2.1.174 tracks/objective-c/exercises/atbash-cipher/AtbashCipherExample.m
trackler-2.2.1.173 tracks/objective-c/exercises/atbash-cipher/AtbashCipherExample.m
trackler-2.2.1.172 tracks/objective-c/exercises/atbash-cipher/AtbashCipherExample.m
trackler-2.2.1.171 tracks/objective-c/exercises/atbash-cipher/AtbashCipherExample.m
trackler-2.2.1.170 tracks/objective-c/exercises/atbash-cipher/AtbashCipherExample.m
trackler-2.2.1.169 tracks/objective-c/exercises/atbash-cipher/AtbashCipherExample.m
trackler-2.2.1.167 tracks/objective-c/exercises/atbash-cipher/AtbashCipherExample.m
trackler-2.2.1.166 tracks/objective-c/exercises/atbash-cipher/AtbashCipherExample.m
trackler-2.2.1.165 tracks/objective-c/exercises/atbash-cipher/AtbashCipherExample.m
trackler-2.2.1.164 tracks/objective-c/exercises/atbash-cipher/AtbashCipherExample.m
trackler-2.2.1.163 tracks/objective-c/exercises/atbash-cipher/AtbashCipherExample.m
trackler-2.2.1.162 tracks/objective-c/exercises/atbash-cipher/AtbashCipherExample.m
trackler-2.2.1.161 tracks/objective-c/exercises/atbash-cipher/AtbashCipherExample.m
trackler-2.2.1.160 tracks/objective-c/exercises/atbash-cipher/AtbashCipherExample.m