Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix main reset #244

Closed
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added .DS_Store
Binary file not shown.
31 changes: 31 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
name: Python CI

on:
push:
branches:
- main
pull_request:
branches:
- main

jobs:
test:
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v3

- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: 3.10

- name: Install dependencies
run: pip install -r requirements.txt

- name: Run tests
env:
PYTHONPATH: ${{ github.workspace }}
run: python -m unittest discover -s solutions/tests

5 changes: 5 additions & 0 deletions .markdownlint.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
ignore:
- venv
- .github


MD013:
line_length: 150
ignore_urls: true
2 changes: 1 addition & 1 deletion .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,7 @@
"[markdown]": {
"editor.defaultFormatter": "DavidAnson.vscode-markdownlint"
},

// Enable/disable update table of contents on save
"markdown.extension.toc.updateOnSave": false
}
9 changes: 9 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# EST Zone

Welcome to the **EST Zone** group!

Our group is committed to fostering a safe, respectful, and inclusive environment
where members feel valued, communicate openly, and work collaboratively.
We prioritize trust, accountability, constructive discussions focused on ideas,
and adaptability. By embracing diverse perspectives, meeting commitments, and
supporting each other, we strive to achieve shared goals.
90 changes: 89 additions & 1 deletion collaboration/README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,93 @@
# Collaboration

<!-- group norms summary -->
## Group Norms Summary

Our group is committed to fostering a safe, respectful, and inclusive environment
where members feel valued, communicate openly, and work collaboratively.
We prioritize trust, accountability, constructive discussions focused on ideas,
and adaptability, ensuring we embrace diverse perspectives, meet commitments,
and support each other in achieving shared goals.
<!-- group norms list -->
## Group Norms

## Discussions

- We as a group will try first of all to maintain a healthy and safe work environment.
- We as a group will be open to an unexpected direction and strive to learn.

---

## Debate

- We as a group will try to define the scope and objective of our debate clearly.
- We as a group will try to debate positions/terms/ideas/concepts/themes.
- We as a group will try our best to take turns during the debates to debate both
sides of the debate.
- Our intention during the debate should always be **POSITIVE**!
- Being open to accepting changes, new concepts, ideas, and diverse opinions.
- When nobody is willing to compromise, then we will turn to a group **VOTING**.
- When two people are debating, we can consider having a negotiator between them.

---

## Timing

- We as a group will have a good intention when it comes to respecting each other’s
time. We will try to be on time; however, if we can’t make it on time, let's
inform the group beforehand. In exceptional cases, when there is an urgency
and we are in a position not even to inform, our intention is what matters.
- We cannot be present at some meetings/activities, but what matters the most is
our presence in the group in general. We will try our best to be active when
having time and contribute to the best of our abilities.
- We will all make sure to recognize the role of external factors, which are often
out of our control. In such a situation, what matters the most is to let our
group members know that we are here to support them and that they can count on
us.
- Deadlines are important, but communication matters the most. There is always
space for communication.
- As a group, we will arrange a meeting 48 hours ahead and set the agenda of the
meeting, and when setting a time, the majority availability should be taken into
consideration—for example, (a WhatsApp poll).
- Before working on a task, we should set a **SPECIFIC TIME** for that **TASK**!

---

## Trust

- Trust is a default, and throughout our journey, we will build this trust.
- We as a group will build a trustful relationship. One way to build trust would
be to participate in a small experiment, which will allow us to make personal
connections. On New Year's Eve or whenever we have time, we will write a very
small paragraph about ourselves and share it in the WhatsApp group with each
other (maybe backing it up with a picture if we want). Submit everything on time.
- In our group, there is no space for **DISRESPECT**, **INDIFFERENCE**, and **BETRAYAL**!
- We as a group should feel confident/free to ask questions, and we should try
to answer each other’s questions.
- Accept our responsibilities, work hard to get them done, and if challenges are
faced, we should communicate them to the group.

---

## Refining

- We will maintain a supportive and safe environment where all members feel valued
and heard.
- We will stay open to learning and adapting by embracing new ideas, perspectives,
and changes.
- We will approach debates with positivity and respect by focusing on ideas, not
individuals, and aiming for productive outcomes.
- We will communicate openly and clearly to address challenges, share updates,
and foster understanding within the group.
- We will respect each other’s time and commitments by being mindful of
punctuality, deadlines, and external circumstances.
- We will build and maintain trust by being reliable, honest, and supportive in
all interactions.
- We will take responsibility for our contributions and support each other in
overcoming challenges.
- We will make decisions collaboratively by valuing diverse opinions and using
group consensus or voting when needed.
- We will foster connections within the group to strengthen our relationships
and create a positive team dynamic.
- We will adapt our norms as needed to reflect the group’s evolving needs and priorities.

---
77 changes: 40 additions & 37 deletions collaboration/communication.md
Original file line number Diff line number Diff line change
@@ -1,54 +1,57 @@
<!--
this template is for inspiration, feel free to change it however you like!
# Communication Plan

Careful! be sure to protect your privacy when filling out this document
everything you write here will be public
so share only what you are comfortable sharing online
you can share the rest in confidence with you group by another channel
-->
## Communication Schedule

# Communication
| **Day** | **How** | **Topic of Discussion** |
|-------------------|--------------|---------------------------------------------------------------------------------------|
| **December 20** | Zoom Call | Introduction by all |
| **December 22** | Zoom Call | Group Norms, Tools for Collaborative Development |
| **December 24** | Zoom Call | Questions to ask Evan |
| **December 30** | Zoom Call | Communication strategies, constraints |

______________________________________________________________________
*Meetings will be scheduled based on group needs. Additional meetings can be arranged if requested.*

## Communication Schedule
## Communication Channels

| Day | How | The topic of discussion | | --- | :-: | ----------------------- |
| | | |
We will use the following channels for collaboration and communication:

## Communication Channels
1. **WhatsApp**
- Primary platform for communication, available 24/7.
- Used for setting meeting times, asking questions, and discussing challenges in group projects.

how often will we get in touch on each channel, and what we will discuss there:
2. **Slack**
- Utilized less frequently but serves as a secondary platform for posting updates and key points.
- Important links and agreements will be reposted here for easy access.

- **Issues**:
- **Pull Requests**:
- **Slack/Discord**:
- **Video Calls**:
3. **Google Docs**
- Main platform for collaborative document editing, such as drafting group norms, communication plans, constraints, and learning goals.

______________________________________________________________________
4. **Zoom/Google Meet**
- Primary platforms for hosting group meetings and discussions.

## Availability

### Availability for calling/messaging

| Day | Monday | Tuesday | Wednesday | Thursday | Friday | Saturday | Sunday | |
------ | :----: | :-----: | :-------: | :------: | :----: | :------: | :----: |
| _name_ | | | | | | | |
Group members’ availability for calls and messages is listed below:

### How many hours everyone has per day
| **Name** | **Availability** |
|-------------------------------|------------------------------------------------------|
| **Saliha Saadet Kalender** | 10 AM – 8 PM (Every day) |
| **Rumiya Ismatova** | 8 AM – 5 PM (Weekdays), All day (Weekends) |
| **Husna Mansoori** | [Availability pending] |
| **Mostafa Borhani** | [Availability pending] |
| **Anna Shumylina** | 7 PM – 10 PM (Weekdays), All day (Weekends) |
| **Mushtary Alam** | [Availability pending] |
| **Mohammad Jawid Mohseni** | [Availability pending] |
| **Alona Niechvieieva** | 10 AM – 8 PM (Weekdays), All day (Weekends) |
| **Meklit Mitiku Gebregiorgis**| [Availability pending] |
| **Masooma Ahmadi** | [Availability pending] |

- name: _5h_;
- name: _6h_;
- name: _5h_;
- name: _4h_;
- name: _3h_;
## Problem-Solving Protocol

## Asking for Help
As a general rule of the group, we will follow these steps when encountering a problem:

There's a fine line between confidently learning from your mistakes, and
stubbornly getting no where. Here is a general guide for when to ask for help
based on how long you've been stuck on the same problem:
- **0 → 30 minutes**: Work on the problem independently.
- **30 → 60 minutes**: Discuss the problem with the group to gather support and ideas.
- **60+ minutes**: Reach out to coaches via Slack or GitHub for guidance.

1. _0 -> 30 min_: Try on your own
1. _30 -> 60 min_: Ask your group for help
1. _60+ min_: Tag your coaches in Slack or GitHub
This approach ensures efficient collaboration and maximizes learning opportunities for all group members.
Empty file added solutions/__init__.py
Empty file.
24 changes: 24 additions & 0 deletions solutions/decimal_to_binary.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
def decimal_to_binary(decimal):
"""
Convert a decimal number to its binary representation.

:param decimal: int, the decimal number to convert
:return: str, binary representation of the decimal number
"""
if not isinstance(decimal, int):
raise ValueError("Input must be an integer.")
if decimal < 0: # Check for negative numbers
raise ValueError("Negative numbers are not allowed.")
return bin(decimal).replace("0b", "")


# Example usage
if __name__ == "__main__":
# Get user input for the decimal number
user_input_decimal = int(
input("Enter a decimal number: ")
) # Take input from the user
# Call the function to convert to binary
print(
f"The binary representation of {user_input_decimal} is {decimal_to_binary(user_input_decimal)}"
)
Empty file added solutions/tests/__init__.py
Empty file.
31 changes: 31 additions & 0 deletions solutions/tests/test_decimal_to_binary.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
import sys
import os
import unittest

# Add the project root directory to the Python module search path
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), "../..")))

from solutions.decimal_to_binary import decimal_to_binary


class TestDecimalToBinary(unittest.TestCase):
def test_positive_number(self):
self.assertEqual(decimal_to_binary(10), "1010")
self.assertEqual(decimal_to_binary(255), "11111111")

def test_zero(self):
self.assertEqual(decimal_to_binary(0), "0")

def test_negative_number(self):
with self.assertRaises(ValueError):
decimal_to_binary(-5)

def test_non_integer_input(self):
with self.assertRaises(ValueError):
decimal_to_binary(10.5)
with self.assertRaises(ValueError):
decimal_to_binary("string")


if __name__ == "__main__":
unittest.main()
Loading