Skip to content

Instantly share code, notes, and snippets.

@MattIPv4
Created May 1, 2018 13:36
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save MattIPv4/8dfe365c4413bdc75268f2b721d83aed to your computer and use it in GitHub Desktop.
Save MattIPv4/8dfe365c4413bdc75268f2b721d83aed to your computer and use it in GitHub Desktop.
"""
Write a program which is going to simulate this dice game using a linked list.
"""
from random import randint
from typing import List
class LinkedListNode:
def __init__(self, value=None):
self.next_pointer = -1
self.value = value
class LinkedList:
def __init__(self):
self.__start_pointer = 0
self.__nodes = []
def get(self) -> list:
data = []
pointer = self.__start_pointer
if len(self.__nodes) > 0:
while pointer != -1:
node = self.__nodes[pointer]
data.append(node.value)
pointer = node.next_pointer
return data
def add(self, data):
node = LinkedListNode(data)
# Handle empty list
if not self.__nodes:
self.__start_pointer = 0
self.__nodes.append(node)
return
pointer = self.__start_pointer
last_node = None
while pointer != -1:
thisnode = self.__nodes[pointer]
pointer = thisnode.next_pointer
if data <= thisnode.value:
break
last_node = thisnode
if not last_node:
node.next_pointer = self.__start_pointer
self.__start_pointer = len(self.__nodes)
else:
node.next_pointer = last_node.next_pointer
last_node.next_pointer = len(self.__nodes)
self.__nodes.append(node)
class Game:
def __init__(self):
self.linked_list = LinkedList()
def __roll(self, count: int) -> List[int]:
results = []
for _ in range(count):
results.append(randint(1, 6))
return results
def roll(self, count: int = 5):
results = self.__roll(count)
for result in results:
self.linked_list.add(result)
print(self.linked_list.get())
game = Game()
game.roll()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment