如何解决Objective-C中的HackerRank问题

obj*_*2.0 11 objective-c

任何人都可以解释如何在目标C中进行黑客等级测试.特别是"从STDIN读取输入.打印输出到STDOUT"部分

如何在objective-c中读取输入和输出?

到目前为止,我得到的输入就像

 NSFileHandle *fileHandler = [NSFileHandle fileHandleWithStandardInput];
 NSData *inputData = [fileHandler availableData];
 NSString *inputString = [[NSString alloc] initWithData:inputData encoding:NSUTF8StringEncoding];
Run Code Online (Sandbox Code Playgroud)

但要打印输出,以下内容不会在HackerRank控制台上打印任何内容(但在Xcode控制台上可以正常工作)

NSFileHandle* fileHandler=[NSFileHandle fileHandleWithStandardOutput];
[fileHandler writeData: [formattedString dataUsingEncoding: NSNEXTSTEPStringEncoding]];
Run Code Online (Sandbox Code Playgroud)

Meh*_*mar 11

"从STDIN读取输入.将输出打印到STDOUT"的最简单方法是使用scanf和printf.
这是一个示例模板,可以帮助您入门:

#import <Foundation/Foundation.h>

int main (int argc, const char * argv[]) {

    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

    int count;
    scanf("%d", &count);
    NSMutableArray *inputIntegers = [NSMutableArray new];

    for (int i=0; i<count; i++) {
        int inputElement;
        scanf("%d", &inputElement);
        [inputIntegers addObject:[NSNumber numberWithInt:inputElement]];
    }

    //to print a specific element:
    printf("printing element 0: %d", (int)[inputIntegers[0] integerValue]);

    [pool drain];
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

在你开始这个旅程之前,先做一些事情:

  • 确保禁用ARC(在构建设置中搜索CLANG_ENABLE_OBJC_ARC,并将其设置为NO)
  • 避免使用自我.这是函数式编程.
  • 使用C函数,而不是Objective-C方法,意思,使用

代替

 - (NSInteger)sumOfNumbers : (NSInteger)a and:(NSInteger)b {
    return a + b;
}
Run Code Online (Sandbox Code Playgroud)

使用

int sumOfNumbers(int a, int b){

    return a + b;
}
Run Code Online (Sandbox Code Playgroud)

快乐的编程.

  • @allenlinli因为NSLog不是STDOUT.@Zangetsu使用`\n`来分隔线条 (2认同)