<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: kimutaielon</title>
    <description>The latest articles on Forem by kimutaielon (@kimutaielon).</description>
    <link>https://forem.com/kimutaielon</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F880085%2F00596ed1-e6ed-4778-9967-00d42cd94a16.png</url>
      <title>Forem: kimutaielon</title>
      <link>https://forem.com/kimutaielon</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/kimutaielon"/>
    <language>en</language>
    <item>
      <title>Data Structure and Algorithms 102: Deep Dive into Data Structure and Algorithms</title>
      <dc:creator>kimutaielon</dc:creator>
      <pubDate>Tue, 28 Jun 2022 12:17:06 +0000</pubDate>
      <link>https://forem.com/kimutaielon/data-structure-and-algorithms-102-deep-dive-into-data-structure-and-algorithms-1j10</link>
      <guid>https://forem.com/kimutaielon/data-structure-and-algorithms-102-deep-dive-into-data-structure-and-algorithms-1j10</guid>
      <description>&lt;p&gt;In the last article we introduced ourselves into what data structures are, listing some few examples.&lt;br&gt;
Today we're going to dive a little bit deeper giving code examples in python on how to implement the data structures and algorithms mentioned. We'll dig into abstract data structures,searching  algorithms and sorting algorithms&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ABSTRACT DATA STRUCTURES&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Abstract Data type (ADT) is a type (or class) for objects whose behavior is defined by a set of values and a set of operations.It is called “abstract” because it the results to be achieved are given but how they are to be achieved is not defined or restricted.&lt;/p&gt;

&lt;p&gt;Abstract data structure types include arrays,lists,queues,stacks,trees,vectors,maps,etc. Today we're going to focus on lists,stacks and queues.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lists ADTs&lt;/strong&gt;&lt;br&gt;
Lists are used to store data in a sequential manner. The items in the list are ordered and their positions are marked by indexing.  Positive indexing marks the first element from 0 and continues till the last element. Negative indexing marks the data starting from the last element in the list to the first element. Just the opposite of positive listing.&lt;/p&gt;

&lt;p&gt;Lists can contain multiple data types eg strings,integers,floats,etc.Below is a code example of a list containing multiple data types:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;data = ['hello', 3.14, 420]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A number of methods or operations can be done with lists. Examples are as below:&lt;br&gt;
&lt;strong&gt;list.index()&lt;/strong&gt;&lt;br&gt;
This returns the index(position) of an item in a list.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# items list
items = ['book', 'pen', 'car', 'ruler', 'phone', 'sun']

# index of 'car' in items
index = items.index('car')
# Output: 3
print(index)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;list.append()&lt;/strong&gt;&lt;br&gt;
Adds an item to end of the list.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cars = ['BMW']
cars.append('Audi')

# Output: ['BMW', 'Audi']
print(cars)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;list.extend()&lt;/strong&gt;&lt;br&gt;
Extends a list by adding items even from another list&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;items1 = ['spoon', 'plate']
items2 = ['fork', 'knife'] items1.extend(items2)
print(items1)
# Output: ['spoon', 'plate', 'fork', 'knife']
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Other list methods are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;list.sort()&lt;/li&gt;
&lt;li&gt;list.copy()&lt;/li&gt;
&lt;li&gt;list.insert()&lt;/li&gt;
&lt;li&gt;list.remove()&lt;/li&gt;
&lt;li&gt;list.pop() etc.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Stacks&lt;/strong&gt;&lt;br&gt;
A stack is a linear data structure that stores items in a Last-In/First-Out (LIFO) or First-In/Last-Out (FILO) manner.Pop and push functions are used to insert and delete items in a stack.&lt;br&gt;
The functions associated with stack are:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;empty()&lt;/strong&gt; – Returns whether the stack is empty.&lt;br&gt;
&lt;strong&gt;size()&lt;/strong&gt; – Returns the size of the stack.&lt;br&gt;
&lt;strong&gt;top()&lt;/strong&gt; / &lt;strong&gt;peek()&lt;/strong&gt; – Returns a reference to the topmost element of the stack.&lt;br&gt;
&lt;strong&gt;push()&lt;/strong&gt; – Inserts an element at the top of the stack.&lt;br&gt;
&lt;strong&gt;pop()&lt;/strong&gt; – Deletes the topmost element of the stack.&lt;/p&gt;

&lt;p&gt;Example code of some of the operations on stacks is below.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#Create an empty stack.
stack = []
#using append() function to add items to the stack

stack.append('a')
stack.append('b')
stack.append('c')
print(stack)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Output&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;['a', 'b', 'c']
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;pop()&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#pop() function to pop element from stack in
#LIFO order
print('\nElements popped from stack:') 
print(stack.pop())
print(stack.pop())
print(stack.pop())
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Output&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Elements popped from stack:
c
b
a
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;New stack&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;print('\nStack after elements are popped:') 

print(stack) 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Output&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Stack after elements are popped: []
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Queues&lt;/strong&gt;&lt;br&gt;
Items in queues also have a first-in/last-out and last-in/first-out manner.Data is inserted into Queue using the put() function and get() takes data out from the Queue.&lt;br&gt;
Functions available in this module include: &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;maxsize&lt;/strong&gt; – Number of items allowed in the queue.&lt;br&gt;
&lt;strong&gt;empty()&lt;/strong&gt; – Return True if the queue is empty, False otherwise.&lt;br&gt;
&lt;strong&gt;full()&lt;/strong&gt; – Return True if there are maxsize items in the queue. If the queue was initialized with maxsize=0 (the default), then full() never returns True.&lt;br&gt;
&lt;strong&gt;get()&lt;/strong&gt; – Remove and return an item from the queue. If the queue is empty, wait until an item is available.&lt;br&gt;
&lt;strong&gt;get_nowait()&lt;/strong&gt; – Return an item if one is immediately available, else raise QueueEmpty.&lt;br&gt;
&lt;strong&gt;put(item)&lt;/strong&gt; – Put an item into the queue. If the queue is full, wait until a free slot is available before adding the item.&lt;br&gt;
&lt;strong&gt;put_nowait(item)&lt;/strong&gt; – Put an item into the queue without blocking. If no free slot is immediately available, raise QueueFull.&lt;br&gt;
&lt;strong&gt;qsize()&lt;/strong&gt; – Return the number of items in the queue.&lt;/p&gt;

&lt;p&gt;Code implementations are as below:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
# Initializing a stack
stack = LifoQueue(maxsize=3)
# qsize() show the number of elements in the stack
print(stack.qsize())
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Output&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;put()&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#put() function to push element in the stack
stack.put('a') 
stack.put('b') 
stack.put('c')
print("Full: ", stack.full())
print("Size: ", stack.qsize())
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Output&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Full: True
Size: 3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;get()&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#get() function to pop element from stack in LIFO order
print('\nElements popped from the stack')
print(stack.get()) 
print(stack.get()) 
print(stack.get())
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Elements popped from the stack
c
b
a
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Empty stack&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;print("\nEmpty: ", stack.empty())
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Empty: True
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;SORTING&lt;/strong&gt;&lt;br&gt;
Sorting is basically organizing data in a certain order.&lt;br&gt;
&lt;strong&gt;Python sorting algorithms&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Merge sort&lt;/li&gt;
&lt;li&gt;Buble sort&lt;/li&gt;
&lt;li&gt;Insertion sort&lt;/li&gt;
&lt;li&gt;Selection sort&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Insertion sort&lt;/strong&gt;&lt;br&gt;
Insertion sort is appropriate for snall data which is partially sorted.&lt;br&gt;
To sort items in ascending order:&lt;br&gt;
1.Iterate from arr[1] to arr[N] over the array. &lt;br&gt;
2.Compare the current element (key) to its predecessor. &lt;br&gt;
3.If the key element is smaller than its predecessor, compare it to the elements before. Move the greater elements one position up to make space for the swapped element.&lt;br&gt;
An example code is as below:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;def insertionSort(arr):
   for i in range(1, len(arr)): 
      key = arr[i]
      j = i-1
      while j &amp;gt;= 0 and key &amp;lt; arr[j] :
         arr[j + 1] = arr[j]
         j -= 1
      arr[j + 1] = key
# Code to test above
arr = [12, 11, 13, 5, 6]
insertionSort(arr)
for i in range(len(arr)): 
   print ("% d" % arr[i])
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;5 6 11 12 13
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;MERGE SORT ALGORITHM&lt;/strong&gt;&lt;br&gt;
This method uses divide and conquer technique.That is it divides the problem into smaller problems, when the solutions for each problem is arrived at the solutions are combined to give the solution for the bigger problem.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# MergeSort in Python
def mergeSort(array):
    if len(array) &amp;gt; 1:

#  r is the point where the array is divided into two subarrays
        r = len(array)//2
        L = array[:r]
        M = array[r:]

# Sort the two halves
        mergeSort(L)
        mergeSort(M)

        i = j = k = 0

# Until we reach either end of either L or M, pick larger among
# elements L and M and place them in the correct position at A[p..r]
        while i &amp;lt; len(L) and j &amp;lt; len(M):
            if L[i] &amp;lt; M[j]:
                array[k] = L[i]
                i += 1
            else:
                array[k] = M[j]
                j += 1
            k += 1

# When we run out of elements in either L or M,
# pick up the remaining elements and put in A[p..r]
        while i &amp;lt; len(L):
            array[k] = L[i]
            i += 1
            k += 1

        while j &amp;lt; len(M):
            array[k] = M[j]
            j += 1
            k += 1


# Print the array
def printList(array):
    for i in range(len(array)):
        print(array[i], end=" ")
    print()


# Driver program
if __name__ == '__main__':
    array = [6, 5, 12, 10, 9, 1]

    mergeSort(array)

    print("Sorted array is: ")
    printList(array)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;BUBBLE SORT&lt;/strong&gt;&lt;br&gt;
It compares two adjacent elements and swaps them until they are in the intended order.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Bubble sort in Python

def bubbleSort(array):

# loop to access each array element
  for i in range(len(array)):

# loop to compare array elements
    for j in range(0, len(array) - i - 1):

# compare two adjacent elements
# change &amp;gt; to &amp;lt; to sort in descending order
      if array[j] &amp;gt; array[j + 1]:
        temp = array[j]
        array[j] = array[j+1]
        array[j+1] = temp

data = [-2, 45, 0, 11, -9]
bubbleSort(data)

print('Sorted Array in Ascending Order:')
print(data)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;SEARCHING ALGORITHMS&lt;/strong&gt;&lt;br&gt;
We do search every day.It is basically retrieving sth from where it was stored . Searching in this case means retrieving it be it from a list,stack,etc&lt;br&gt;
There are a number of searching algorithms including: &lt;br&gt;
-binary search&lt;br&gt;
-linear search&lt;br&gt;
-interpolation search&lt;br&gt;
-exponential search.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Linear search&lt;/strong&gt;&lt;br&gt;
It involves sequential searching for a  element beginning with the first element until the desired element is found.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Linear Search in Python


def linearSearch(array, n, x):

# Going through array sequencially
    for i in range(0, n):
        if (array[i] == x):
            return i
    return -1


array = [2, 4, 0, 1, 9]
x = 1
n = len(array)
result = linearSearch(array, n, x)
if(result == -1):
    print("Element not found")
else:
    print("Element found at index: ", result)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Binary search&lt;/strong&gt;&lt;br&gt;
It is used to search for an element in a sorted array.It can be implemented in a iterative method or a recursive method.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Iterative method&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Binary Search in python


def binarySearch(array, x, low, high):

# Repeat until the pointers low and high meet each other
    while low &amp;lt;= high:

        mid = low + (high - low)//2

        if array[mid] == x:
            return mid

        elif array[mid] &amp;lt; x:
            low = mid + 1

        else:
            high = mid - 1

    return -1


array = [3, 4, 5, 6, 7, 8, 9]
x = 4

result = binarySearch(array, x, 0, len(array)-1)

if result != -1:
    print("Element is present at index " + str(result))
else:
    print("Not found")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Recursive method&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Binary Search in python


def binarySearch(array, x, low, high):

    if high &amp;gt;= low:

        mid = low + (high - low)//2

# If found at mid, then return it
        if array[mid] == x:
            return mid

# Search the left half
        elif array[mid] &amp;gt; x:
            return binarySearch(array, x, low, mid-1)

# Search the right half
        else:
            return binarySearch(array, x, mid + 1, high)

    else:
        return -1


array = [3, 4, 5, 6, 7, 8, 9]
x = 4

result = binarySearch(array, x, 0, len(array)-1)

if result != -1:
    print("Element is present at index " + str(result))
else:
    print("Not found")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>python</category>
      <category>datascience</category>
      <category>algorithms</category>
      <category>datastructures</category>
    </item>
    <item>
      <title>INTRODUCTION TO DATA STRUCTURES AND ALGORITHMS.</title>
      <dc:creator>kimutaielon</dc:creator>
      <pubDate>Tue, 21 Jun 2022 06:02:14 +0000</pubDate>
      <link>https://forem.com/kimutaielon/introduction-to-data-structures-and-algorithms-2dpm</link>
      <guid>https://forem.com/kimutaielon/introduction-to-data-structures-and-algorithms-2dpm</guid>
      <description>&lt;p&gt;&lt;strong&gt;Introduction to data structures and algorithms.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is a data structure?&lt;/strong&gt;&lt;br&gt;
A data structure is a specialized format for organizing, processing, retrieving and storing data. Anything that can store data is called a data structure.  Primitive data structures &lt;br&gt;
include an integer, Float, Boolean, Char etc while complex data structures include linked lists,trees,graphs,stacks,queues etc.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is an algorithm?&lt;/strong&gt;&lt;br&gt;
Algorithms are all about problem solving. An algorithm is a procedure used for solving a problem or performing a computation. Every algorithm must satisfy the following: &lt;/p&gt;

&lt;p&gt;1.&lt;strong&gt;Input&lt;/strong&gt;- There must be an external input to the algorithm.&lt;br&gt;
2.&lt;strong&gt;Output&lt;/strong&gt;- There algorithm must eventually give out at least one output.&lt;br&gt;
3.&lt;strong&gt;Definiteness&lt;/strong&gt;- Every step of the algorithm should be clear and well defined.&lt;br&gt;
4.&lt;strong&gt;Finiteness&lt;/strong&gt;- The algorithm should have finite number of steps.&lt;br&gt;
5.&lt;strong&gt;Correctness&lt;/strong&gt;- Every step of the algorithm must generate a correct output.&lt;br&gt;
An algorithm must be efficient and use less memory. This performance is arrived at using time and space complexity.&lt;br&gt;
        &lt;strong&gt;TIME COMPLEXITY&lt;/strong&gt;&lt;br&gt;
Time complexity is the amount of time taken by an algorithm to run, as a function of the length of the input.&lt;br&gt;
The different types of time complexities include:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Constant time – O (1) -Irrespective of the input size n, the runtime will always be the same.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Linear time – O (n) -This is when the running time increases linearly with the length of the input.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Logarithmic time – O (log n) -This is when it reduces the size of the input data in each step eg binary search tree.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Quadratic time – O (n^2) - This is where the running time increases non-linearly (n^2) with the length of the input.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Cubic time – O (n^3) &lt;br&gt;
   &lt;strong&gt;SPACE COMPLEXITY&lt;/strong&gt;&lt;br&gt;
The space complexity of an algorithm quantifies the amount of space taken by an algorithm to run as a function of the length of the input.&lt;br&gt;
Space complexity differs from auxiliary  space in that whereas space complexity quantifies the total space used by the algorithm, auxiliary space quantifies the extra space that is used in the algorithm apart from the given input.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>python</category>
      <category>algorithms</category>
    </item>
  </channel>
</rss>
