UNPKG

@achraf-dev/sorting-algo

Version:

Sort multiple types of data structures using Bubble Sort.

82 lines (81 loc) 3.15 kB
#!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();