@achraf-dev/sorting-algo
Version:
Sort multiple types of data structures using Bubble Sort.
82 lines (81 loc) • 3.15 kB
JavaScript
#!usr/bin/env node
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
//importing utils
var Radio = require('prompt-radio');
var usePrompt = require('prompt-sync')();
//importing classes
var NumbersCollection_1 = require("./NumbersCollection");
var CharactersCollection_1 = require("./CharactersCollection");
var LinkedList_1 = require("./LinkedList");
var SorterStart = /** @class */ (function () {
function SorterStart() {
this.linkedList = new LinkedList_1.LinkedList();
this.numbers = [];
this.radioPrompt = new Radio({
name: 'dataStructures',
message: 'What data structure would you like to sort?',
choices: ['Array of Numbers', 'Linked List', 'String'],
});
}
SorterStart.prototype.startSorting = function () {
var _this = this;
this.radioPrompt.ask(function (answer) {
var dataStructure = answer;
if (dataStructure === 'Array of Numbers') {
_this.sortNumbers();
}
else if (dataStructure === 'String') {
_this.sortCharacters();
}
else {
_this.sortLinkedList();
}
});
};
SorterStart.prototype.sortNumbers = function () {
var len = usePrompt('Enter the length of the array: ');
for (var i = 0; i < len; i++) {
var item = usePrompt("Enter the value [" + i + "]: ");
this.numbers.push(item);
}
var numbersCollection = new NumbersCollection_1.NumbersCollection(this.numbers);
numbersCollection.sort();
this.print({
data: this.numbers,
dataStructure: numbersCollection,
dataText: 'nums',
});
};
SorterStart.prototype.sortCharacters = function () {
var characters = usePrompt('Enter a string of characters: ');
var charactersCollection = new CharactersCollection_1.CharactersCollection(characters);
charactersCollection.sort();
this.print({
data: characters,
dataStructure: charactersCollection,
dataText: 'characters',
});
};
SorterStart.prototype.sortLinkedList = function () {
var len = usePrompt('Enter the number of items to append to the list: ');
for (var i = 0; i < len; i++) {
var item = usePrompt("Enter the value " + i + ": ");
this.linkedList.add(item);
}
console.log("Previous Linked List: ");
this.linkedList.print();
this.linkedList.sort();
console.log("\nSorted Linked List: ");
this.linkedList.print();
};
SorterStart.prototype.print = function (_a) {
var data = _a.data, dataStructure = _a.dataStructure, dataText = _a.dataText;
console.log("Previous " + dataText + ": ", data);
console.log("Sorted " + dataText + ": ", dataStructure.data);
};
return SorterStart;
}());
//start sorting
var sorterStart = new SorterStart();
sorterStart.startSorting();