Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -1,102 +1,14 @@
|
|
1 |
-
import os
|
2 |
-
import pandas as pd
|
3 |
-
import openpyxl
|
4 |
-
from itertools import combinations
|
5 |
-
from copy import deepcopy
|
6 |
import streamlit as st
|
|
|
7 |
|
8 |
-
st.
|
9 |
-
st.title("🏏 Generate All 250 Captain–Vice-Captain Combinations")
|
10 |
-
|
11 |
-
# Default file option
|
12 |
-
default_path = "default.xlsx"
|
13 |
-
use_default = False
|
14 |
-
|
15 |
-
if os.path.exists(default_path):
|
16 |
-
use_default = st.checkbox("✅ Use saved default file (default.xlsx)?")
|
17 |
|
18 |
-
uploaded_file =
|
19 |
-
if not use_default:
|
20 |
-
uploaded_file = st.file_uploader("📤 Upload Excel File", type=["xlsx"])
|
21 |
|
22 |
-
if
|
23 |
try:
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
st.subheader("📄 Uploaded Excel File Preview")
|
28 |
st.dataframe(df)
|
29 |
-
|
30 |
-
# Extract team names from columns A & B
|
31 |
-
team_a_names = df.iloc[:, 0].dropna().tolist()
|
32 |
-
team_b_names = df.iloc[:, 1].dropna().tolist()
|
33 |
-
|
34 |
-
team_a = [{"name": str(name).strip()} for name in team_a_names]
|
35 |
-
team_b = [{"name": str(name).strip()} for name in team_b_names]
|
36 |
-
|
37 |
-
# Confirm teams
|
38 |
-
st.write("🔵 **Team A:**", team_a_names)
|
39 |
-
st.write("🟢 **Team B:**", team_b_names)
|
40 |
-
|
41 |
-
# Generate all 25 teams by swapping 1 player
|
42 |
-
all_teams = []
|
43 |
-
team_number = 1
|
44 |
-
|
45 |
-
for i in range(5): # index in Team A to swap
|
46 |
-
for j in range(5): # index from Team B
|
47 |
-
new_team = deepcopy(team_a)
|
48 |
-
new_team[i] = deepcopy(team_b[j]) # swap one player
|
49 |
-
all_teams.append({
|
50 |
-
"Team Name": f"Team {team_number}",
|
51 |
-
"Players": new_team
|
52 |
-
})
|
53 |
-
team_number += 1
|
54 |
-
|
55 |
-
# Generate all 250 combinations (10 per team)
|
56 |
-
full_team_list = []
|
57 |
-
team_output_counter = 1
|
58 |
-
|
59 |
-
for team in all_teams:
|
60 |
-
player_list = team["Players"]
|
61 |
-
team_name = team["Team Name"]
|
62 |
-
|
63 |
-
# All C–VC pairs from 5 players
|
64 |
-
cvc_combos = list(combinations(player_list, 2))
|
65 |
-
|
66 |
-
for cap, vc in cvc_combos:
|
67 |
-
if cap['name'] != vc['name']:
|
68 |
-
team_rows = []
|
69 |
-
for member in player_list:
|
70 |
-
role = "Member"
|
71 |
-
if member['name'] == cap['name']:
|
72 |
-
role = "Captain"
|
73 |
-
elif member['name'] == vc['name']:
|
74 |
-
role = "Vice-Captain"
|
75 |
-
team_rows.append({
|
76 |
-
"Team": f"{team_name} ({team_output_counter})",
|
77 |
-
"Player": member['name'],
|
78 |
-
"Role": role
|
79 |
-
})
|
80 |
-
|
81 |
-
full_team_list.extend(team_rows)
|
82 |
-
team_output_counter += 1
|
83 |
-
|
84 |
-
# Create DataFrame
|
85 |
-
final_df = pd.DataFrame(full_team_list)
|
86 |
-
|
87 |
-
st.subheader("📋 All 250 Captain–Vice-Captain Combinations")
|
88 |
-
st.dataframe(final_df)
|
89 |
-
|
90 |
-
# Download button
|
91 |
-
csv = final_df.to_csv(index=False).encode("utf-8")
|
92 |
-
st.download_button(
|
93 |
-
label="📥 Download CSV",
|
94 |
-
data=csv,
|
95 |
-
file_name="250_captain_vc_teams.csv",
|
96 |
-
mime="text/csv"
|
97 |
-
)
|
98 |
-
|
99 |
-
st.success(f"✅ Total Unique Team Combinations Generated: {team_output_counter - 1}")
|
100 |
-
|
101 |
except Exception as e:
|
102 |
-
st.error(f"❌ Error
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
import streamlit as st
|
2 |
+
import pandas as pd
|
3 |
|
4 |
+
st.title("✅ openpyxl Test")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5 |
|
6 |
+
uploaded_file = st.file_uploader("Upload an Excel file", type="xlsx")
|
|
|
|
|
7 |
|
8 |
+
if uploaded_file is not None:
|
9 |
try:
|
10 |
+
df = pd.read_excel(uploaded_file)
|
11 |
+
st.write("✅ File loaded successfully!")
|
|
|
|
|
12 |
st.dataframe(df)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
13 |
except Exception as e:
|
14 |
+
st.error(f"❌ Error: {e}")
|