core :: union_find
union–find algorithm using an efficient disjoint-set data structure
# Curses for Nit
module curses is pkgconfig("ncurses")
in "C header" `{
	#include <ncurses.h>
`}
# A curse windows
extern class Window `{WINDOW *`}
	# Initialize the screen
	new `{
		WINDOW *res;
		res = initscr();
		if (res == NULL) {
			fprintf(stderr, "Error initialising ncurses.\n");
			exit(EXIT_FAILURE);
		}
		raw();
		keypad(res, TRUE);
		noecho();
		return res;
	`}
	# Move the cursor at the position (y,x) and print a string
	# NOTE: as with the curses API, the position is (y,x)
	fun mvaddstr(y,x: Int, str: String) import String.to_cstring `{
		char *c_string = String_to_cstring( str );
		mvaddstr(y, x, c_string);
	`}
	# Update the window
	fun refresh `{
		refresh();
	`}
	# Clear the entire window so it can be repainted from scratch with a refresh
	fun wclear `{
		wclear(self);
	`}
	# Delete the window
	fun delwin `{
		delwin(self);
	`}
	# Suspend the curses session and restore the previous terminal
	fun endwin `{
		endwin();
	`}
end
lib/curses/curses.nit:15,1--64,3