Towers of Hanoi: Difference between revisions
Content added Content deleted
(VB.NET code) |
No edit summary |
||
Line 529: | Line 529: | ||
END Hanoi.</lang> |
END Hanoi.</lang> |
||
=={{header|Objective-C}}== |
|||
From [http://sites.google.com/site/vinodkshukla/code-snippets/objectivec-towersofhanoi here] |
|||
This has been tested on GNUstep compiler. But it should be compatible with XCode/Cocoa on MacOS too. |
|||
The Interface - TowersOfHanoi.h: |
|||
<lang objective-c> |
|||
#import <Foundation/NSObject.h> |
|||
@interface TowersOfHanoi: NSObject { |
|||
int pegFrom; |
|||
int pegTo; |
|||
int pegVia; |
|||
int numDisks; |
|||
} |
|||
-(void) setPegFrom: (int) from andSetPegTo: (int) to andSetPegVia: (int) via andSetNumDisks: (int) disks; |
|||
-(void) movePegFrom: (int) from andMovePegTo: (int) to andMovePegVia: (int) via andWithNumDisks: (int) disks; |
|||
@end |
|||
</lang> |
|||
The Implementation - TowersOfHanoi.m: |
|||
<lang objective-c> |
|||
#import "TowersOfHanoi.h" |
|||
@implementation TowersOfHanoi |
|||
-(void) setPegFrom: (int) from andSetPegTo: (int) to andSetPegVia: (int) via andSetNumDisks: (int) disks { |
|||
pegFrom = from; |
|||
pegTo = to; |
|||
pegVia = via; |
|||
numDisks = disks; |
|||
} |
|||
-(void) movePegFrom: (int) from andMovePegTo: (int) to andMovePegVia: (int) via andWithNumDisks: (int) disks { |
|||
if (disks == 1) { |
|||
printf("Move disk from pole %i to pole %i", from, to); |
|||
printf("\n"); |
|||
} else { |
|||
[self movePegFrom: from andMovePegTo: via andMovePegVia: to andWithNumDisks: disks-1]; |
|||
[self movePegFrom: from andMovePegTo: to andMovePegVia: via andWithNumDisks: 1]; |
|||
[self movePegFrom: via andMovePegTo: to andMovePegVia: from andWithNumDisks: disks-1]; |
|||
} |
|||
} |
|||
@end |
|||
</lang> |
|||
Test code: TowersTest.m: |
|||
<lang objective-c> |
|||
#import <stdio.h> |
|||
#import "TowersOfHanoi.h" |
|||
int main( int argc, const char *argv[] ) { |
|||
TowersOfHanoi *tower = [[TowersOfHanoi alloc] init]; |
|||
int from = 1; |
|||
int to = 3; |
|||
int via = 2; |
|||
int disks = 3; |
|||
[tower setPegFrom: from andSetPegTo: to andSetPegVia: via andSetNumDisks: disks]; |
|||
[tower movePegFrom: from andMovePegTo: to andMovePegVia: via andWithNumDisks: disks]; |
|||
return 0; |
|||
} |
|||
</lang> |
|||
=={{header|OCaml}}== |
=={{header|OCaml}}== |
||