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}}==