From c79a365a72f2334b5c18d4f415fcdf9388201df1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=9Eahin=20Akkaya?= Date: Tue, 9 Sep 2025 12:44:53 +0300 Subject: [PATCH] Initial commit --- Dockerfile | 7 ++ README.md | 51 ++++++++ demo.py | 50 ++++++++ docker-compose.yml | 8 ++ guess_number.py | 56 +++++++++ index.html | 301 +++++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 473 insertions(+) create mode 100644 Dockerfile create mode 100644 README.md create mode 100644 demo.py create mode 100644 docker-compose.yml create mode 100644 guess_number.py create mode 100644 index.html diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..4790254 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,7 @@ +FROM nginx:alpine + +COPY index.html /usr/share/nginx/html/ + +EXPOSE 80 + +CMD ["nginx", "-g", "daemon off;"] \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..68c73ef --- /dev/null +++ b/README.md @@ -0,0 +1,51 @@ +# Number Guessing Game šŸŽÆ + +A web-based number guessing game using binary representation magic! + +## Quick Start with Docker + +### Option 1: Using Docker Compose (Recommended) +```bash +docker-compose up -d +``` + +### Option 2: Using Docker directly +```bash +# Build the image +docker build -t guess-number-game . + +# Run the container +docker run -d -p 8080:80 --name guess-number-app guess-number-game +``` + +## Access the App + +Open your browser and go to: http://localhost:8080 + +## How it Works + +The game uses binary representation to guess numbers 1-100 in exactly 7 questions: +- Each group represents a power of 2 (1, 2, 4, 8, 16, 32, 64) +- When someone says "yes" to a group, add that group's value +- Sum all "yes" values to get their number + +## Deployment Options + +### Local Development +- Just open `index.html` in your browser + +### Production Deployment +- **Docker**: Use the provided Docker setup +- **Static Hosting**: Deploy to Netlify, Vercel, or GitHub Pages +- **Web Server**: Serve with nginx, Apache, or any static file server + +## Stopping the Docker Container + +```bash +# If using docker-compose +docker-compose down + +# If using docker run +docker stop guess-number-app +docker rm guess-number-app +``` \ No newline at end of file diff --git a/demo.py b/demo.py new file mode 100644 index 0000000..7e3d42f --- /dev/null +++ b/demo.py @@ -0,0 +1,50 @@ +#!/usr/bin/env python3 + +def generate_number_groups(max_number): + """Generate groups of numbers based on binary representation.""" + groups = [] + bit_position = 0 + + while (1 << bit_position) <= max_number: + group = [] + for num in range(1, max_number + 1): + if num & (1 << bit_position): + group.append(num) + groups.append(group) + bit_position += 1 + + return groups + +def demo_guess(target_number): + """Demo the guessing process with a known target number.""" + print(f"šŸŽÆ Demo: Guessing the number {target_number}") + print("=" * 50) + + max_number = 63 + groups = generate_number_groups(max_number) + result = 0 + + for i, group in enumerate(groups): + print(f"\nGroup {i + 1} (bit position {i}):") + print("Numbers:", " ".join(map(str, group))) + + is_in_group = target_number in group + print(f"Is {target_number} in this group? {'YES' if is_in_group else 'NO'}") + + if is_in_group: + result += (1 << i) + print(f"Adding 2^{i} = {1 << i} to result") + + print(f"Current result: {result}") + + print(f"\nšŸŽ‰ Final answer: {result}") + print(f"āœ… Correct: {result == target_number}") + return result + +if __name__ == "__main__": + # Demo with a few different numbers + test_numbers = [7, 23, 42, 1, 63] + + for num in test_numbers: + demo_guess(num) + print("\n" + "="*60 + "\n") \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..3069146 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,8 @@ +version: '3.8' + +services: + guess-number-app: + build: . + ports: + - "8080:80" + restart: unless-stopped \ No newline at end of file diff --git a/guess_number.py b/guess_number.py new file mode 100644 index 0000000..61b9922 --- /dev/null +++ b/guess_number.py @@ -0,0 +1,56 @@ +#!/usr/bin/env python3 + +def generate_number_groups(max_number): + """Generate groups of numbers based on binary representation.""" + groups = [] + bit_position = 0 + + while (1 << bit_position) <= max_number: + group = [] + for num in range(1, max_number + 1): + if num & (1 << bit_position): + group.append(num) + groups.append(group) + bit_position += 1 + + return groups + +def guess_number(): + print("šŸŽÆ Number Guessing Game") + print("Think of a number between 1 and 63") + print("I'll show you groups of numbers, tell me if your number is in each group") + print("-" * 50) + + max_number = 63 + groups = generate_number_groups(max_number) + result = 0 + + for i, group in enumerate(groups): + print(f"\nGroup {i + 1}:") + print("Numbers:", " ".join(map(str, group))) + + while True: + answer = input("Is your number in this group? (y/n): ").lower().strip() + if answer in ['y', 'yes', '1']: + result += (1 << i) + break + elif answer in ['n', 'no', '0']: + break + else: + print("Please answer 'y' for yes or 'n' for no") + + print(f"\nšŸŽ‰ Your number is: {result}") + return result + +def main(): + while True: + guess_number() + + play_again = input("\nDo you want to play again? (y/n): ").lower().strip() + if play_again not in ['y', 'yes', '1']: + print("Thanks for playing! šŸ‘‹") + break + print() + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 0000000..2f5e19c --- /dev/null +++ b/index.html @@ -0,0 +1,301 @@ + + + + + + šŸŽÆ Number Guessing Game + + + +
+

šŸŽÆ Number Guessing Game

+ +
+
+

How to Play:

+

Think of a number between 1 and 100.

+

I'll show you 7 groups of numbers. For each group, tell me if your number is included.

+

After all 7 groups, I'll magically tell you your number! šŸŽ©āœØ

+
+ +
+ +
+
+
+
+ +
+
+

Is your number in this group?

+
+
+ + +
+
+
+ +
+ + + + \ No newline at end of file