Po otrzymaniu jednego z tych testów, zdecydowałem się wyjść z głównego.m od razu do celu C: tak:
#import <Foundation/Foundation.h>
//Objective-C helper class to take over from main.m
//.h
@interface MainClass : NSObject
+ (BOOL)startMain;
@end
//.m
@implementation MainClass
+ (BOOL)startMain {
//Read the STDIN here using the Objective-C wrapper methods
NSInteger n = [self readInt];
[self printInt:n];
NSArray *numbers = [self readIntArrayOfLength:n];
[self printIntNumberArray:numbers];
return YES;
}
+ (NSInteger)readInt {
int n;
scanf("%i",&n);
return n;
}
+ (NSArray *)readIntArrayOfLength:(NSInteger)len {
NSMutableArray *result = [NSMutableArray array];
for (int i =0; i < len; i++) {
[result addObject:[NSNumber numberWithInt:[self readInt]]];
}
return [result copy];
}
//Helpers to print an int and array of ints to STDOUT
+ (void)printInt:(NSInteger)i {
printf("%li\n",(long)i);
}
+ (void)printIntNumberArray:(NSArray *)array {
printf("[");
[array enumerateObjectsUsingBlock:^(NSNumber *n, NSUInteger idx, BOOL * _Nonnull stop) {
printf("%li",(long)[n integerValue]);
if (idx < array.count-1) {
printf(",");
}
}];
printf("]\n");
}
@end
//This is what will actually run when you hit "Run Code"
int main(int argc, char * argv[]) {
@autoreleasepool {
return [MainClass startMain];
}
}
Teraz możesz robić, co chcesz, używając Celu-C.
Więc w tym przykładzie wejście próbka:
3
11 2 4
przyniosłoby to wyjście:
3
[11,2,4]
nieprzydatne w samo w sobie, ale ilustruje udanej lektury.
To dużo prostsze w Swift, ale tutaj jest kod aby osiągnąć to samo w każdym razie:
func readInt() -> Int? {
if let ln = readLine() {
return Int(ln)
}
return nil
}
func readIntArray() -> [Int]? {
if let ln = readLine() {
return ln.characters.split(" ").filter({ Int(String($0)) != nil }).map({ Int(String($0))! })
}
return nil
}
let n = readInt()!
let array = readIntArray()!
print(n)
print(array)
Funkcje powrotu ewentualne, bo nawet jeśli zamierzamy zmuszać-rozpakować wejście, lepiej katastrofa dla zero opcjonalne dzieje się w twoim kodzie niż szablon podstawowy.
Jestem całkowicie zdezorientowany, jak rozwiązać prosty problem w hackerranku przy użyciu Celu C. Próbowałem testu próbki w hackerranku, który miał ten problem ze schodami. Jestem zaskoczony, jak uzyskać wartość n w SolutionClass, jak wydrukować wartość, aby sprawdzić, czy działa, jak wykonać i jak wydrukować wynik. Próbowałem przeszukać sieć i nie mogłem jej poprawnie zrozumieć. Jeśli ktoś może przekierować mnie we właściwym kierunku, bardzo pomocny będzie przykładowy samouczek, samouczek wideo dotyczący rozwiązania jakiegoś problemu. Dzięki! –
Wygląda na to, że to się nie powiedzie, jeśli zmienię "printf" na "NSLog". Czemu? – allenlinli
co z kilkoma łańcuchami w osobnych liniach? – Zangetsu