RosettaCodeData/Task/Man-or-boy-test/Objective-C/man-or-boy-test-1.m
2023-07-01 13:44:08 -04:00

25 lines
651 B
Objective-C

#import <Foundation/Foundation.h>
typedef NSInteger (^IntegerBlock)(void);
NSInteger A (NSInteger kParam, IntegerBlock x1, IntegerBlock x2, IntegerBlock x3, IntegerBlock x4, IntegerBlock x5) {
__block NSInteger k = kParam;
__block __weak IntegerBlock weak_B;
IntegerBlock B;
weak_B = B = ^ {
return A(--k, weak_B, x1, x2, x3, x4);
};
return k <= 0 ? x4() + x5() : B();
}
IntegerBlock K (NSInteger n) {
return ^{return n;};
}
int main (int argc, const char * argv[]) {
@autoreleasepool {
NSInteger result = A(10, K(1), K(-1), K(-1), K(1), K(0));
NSLog(@"%d\n", result);
}
return 0;
}