Untitled
unknown
python
a year ago
8.4 kB
9
Indexable
import tkinter as tk
from tkinter import filedialog
import os
import glob
# Create the main window
root = tk.Tk()
root.title("Heads or Tails Counter")
# Set the window size
root.geometry("400x600")
# Global variable to store the folder path
folder_path = None
last_modified_time = None
# Global variable to store the sequences
sequences = []
last_displayed_sequence = ""
balance = 1000 # Initial balance
# Weights for prediction models
frequency_weight = 0.65
pattern_weight = 0.35
# Track the last prediction and actual outcome
last_prediction = None
last_actual = None
# Function to update counts and sequences
def update_counts(event=None):
global sequences, last_displayed_sequence, last_actual
content = text_widget.get("1.0", tk.END).lower()
heads_count = content.count('(h) has defeated')
tails_count = content.count('(t) has defeated')
result_label.config(text=f"Heads: {heads_count}, Tails: {tails_count}")
# Reset sequences
sequences = []
current_sequence = []
# Parse the content to find sequences
for line in content.splitlines():
if '(h) has defeated' in line:
current_sequence.append('H')
elif '(t) has defeated' in line:
current_sequence.append('T')
# If the sequence ends, add it to sequences list
if current_sequence:
sequences.append(current_sequence)
current_sequence = []
# Update the latest sequence label if it has changed
latest_sequence = ''.join([item for sublist in sequences for item in sublist])
if latest_sequence != last_displayed_sequence:
last_displayed_sequence = latest_sequence
latest_sequence_label.config(text=f"Latest Sequence: {latest_sequence}")
# Predict the next occurrence
next_occurrence, confidence = predict_next_occurrence(sequences)
prediction_label.config(text=f"Next: {next_occurrence}")
# Calculate and display the bet amount based on confidence
bet_amount = calculate_bet_amount(confidence)
bet_label.config(text=f"Bet Amount: {bet_amount:.2f}% of balance")
# Update the last actual outcome
if latest_sequence:
last_actual = latest_sequence[-1]
# Function to predict the next occurrence
def predict_next_occurrence(sequences):
global last_prediction, frequency_weight, pattern_weight
if not sequences:
print("No sequences found.")
return "Unknown", 0.0
# Flatten the sequences list
flat_sequences = [item for sublist in sequences for item in sublist]
# Check for specific patterns
pattern_prediction = "Unknown"
if len(flat_sequences) >= 5:
last_five = ''.join(flat_sequences[-5:])
if last_five.endswith('TTH'):
pattern_prediction = 'H'
elif last_five.endswith('THT'):
pattern_prediction = 'T'
# Add more patterns as needed
# Count occurrences of 'H' and 'T'
h_count = flat_sequences.count('H')
t_count = flat_sequences.count('T')
# Print counts for debugging
print(f"Counts - H: {h_count}, T: {t_count}")
# Frequency-based prediction
if h_count > t_count:
frequency_prediction = 'H'
elif t_count > h_count:
frequency_prediction = 'T'
else:
frequency_prediction = "Unknown"
# Combine predictions with weights
if pattern_prediction == "Unknown":
last_prediction = frequency_prediction
return frequency_prediction, 0.65
if frequency_prediction == "Unknown":
last_prediction = pattern_prediction
return pattern_prediction, 0.35
# Combine predictions
if frequency_prediction == pattern_prediction:
last_prediction = frequency_prediction
return frequency_prediction, 1.0
else:
# If predictions differ, use weighted random choice
import random
combined_prediction = random.choices(
[frequency_prediction, pattern_prediction],
weights=[frequency_weight, pattern_weight]
)[0]
confidence = frequency_weight if combined_prediction == frequency_prediction else pattern_weight
last_prediction = combined_prediction
return combined_prediction, confidence
# Function to calculate bet amount based on confidence
def calculate_bet_amount(confidence):
global balance
if confidence >= 0.8:
risk_level = "confident"
bet_percentage = 0.2 # High bet amount
elif confidence >= 0.5:
risk_level = "not risky"
bet_percentage = 0.1 # Medium bet amount
else:
risk_level = "risky"
bet_percentage = 0.05 # Low bet amount
bet_amount = balance * bet_percentage
return bet_amount / balance * 100 # Return as percentage of balance
# Function to handle folder selection
def select_folder():
global folder_path, last_modified_time
folder_path = filedialog.askdirectory()
if folder_path:
monitor_folder()
# Function to monitor the folder for changes
def monitor_folder():
global last_modified_time, last_prediction, last_actual, frequency_weight, pattern_weight
if folder_path:
try:
# Get the latest file in the folder
list_of_files = glob.glob(os.path.join(folder_path, '*'))
latest_file = max(list_of_files, key=os.path.getmtime)
current_modified_time = os.path.getmtime(latest_file)
if current_modified_time != last_modified_time:
with open(latest_file, 'r') as file:
content = file.read().lower()
text_widget.delete("1.0", tk.END)
text_widget.insert(tk.END, content)
update_counts()
last_modified_time = current_modified_time
# Adjust weights based on the last prediction and actual outcome
if last_prediction and last_actual:
if last_prediction != last_actual:
if last_prediction == 'H':
frequency_weight -= 0.05
pattern_weight += 0.05
elif last_prediction == 'T':
frequency_weight += 0.05
pattern_weight -= 0.05
# Ensure weights are within bounds
frequency_weight = max(0.0, min(1.0, frequency_weight))
pattern_weight = max(0.0, min(1.0, pattern_weight))
print(f"Adjusted Weights - Frequency: {frequency_weight}, Pattern: {pattern_weight}")
frequency_weight_label.config(text=f"Frequency Weight: {frequency_weight:.2f}")
pattern_weight_label.config(text=f"Pattern Weight: {pattern_weight:.2f}")
except Exception as e:
result_label.config(text=f"Error monitoring folder: {e}")
root.after(1000, monitor_folder) # Schedule the function to run again after 1 second
# Add a button to open the folder dialog
button = tk.Button(root, text="Select a folder", command=select_folder)
button.pack(pady=20)
# Add a Text widget for text input
text_widget = tk.Text(root, height=10, width=40)
text_widget.pack(pady=20)
text_widget.bind("<KeyRelease>", update_counts)
# Add a label to display the result
result_label = tk.Label(root, text="Heads: 0, Tails: 0")
result_label.pack(pady=20)
# Add a label to display the prediction
prediction_label = tk.Label(root, text="Next: Unknown")
prediction_label.pack(pady=20)
# Add a label to display the latest sequence
latest_sequence_label = tk.Label(root, text="Latest Sequence: ")
latest_sequence_label.pack(pady=20)
# Add a label to display the bet amount
bet_label = tk.Label(root, text="Bet Amount: 0.00% of balance")
bet_label.pack(pady=20)
# Add labels to display the weights
frequency_weight_label = tk.Label(root, text=f"Frequency Weight: {frequency_weight:.2f}")
frequency_weight_label.pack(pady=20)
pattern_weight_label = tk.Label(root, text=f"Pattern Weight: {pattern_weight:.2f}")
pattern_weight_label.pack(pady=20)
# Run the application
root.mainloop()Editor is loading...
Leave a Comment