Skip to main content

Keçeci Binomial Squares (Keçeci Binom Kareleri): The Keçeci Binomial Square is a series of binomial coefficients forming a square region within Khayyam (مثلث خیام), Pascal, Binomial Triangle, selected from a specified starting row with defined size and alignment.

Project description

Keçeci Binomial Squares (Keçeci Binom Kareleri): Keçeci's Arithmetical Square (Keçeci Aritmetik Karesi, Keçeci'nin Aritmetik Karesi)

PyPI version License: MIT

DOI DOI

Authorea DOI

WorkflowHub DOI

Anaconda-Server Badge Anaconda-Server Badge Anaconda-Server Badge Anaconda-Server Badge

Open Source Documentation Status

OpenSSF Best Practices

Python CI codecov Documentation Status Binder PyPI version PyPI Downloads Contributor Covenant Linted with Ruff


PyPI PyPI version
Conda conda-forge version
DOI DOI
License: MIT License


Description / Açıklama

Keçeci Binomial Squares (Keçeci Binom Kareleri): Keçeci's Arithmetical Square (Keçeci Aritmetik Karesi, Keçeci'nin Aritmetik Karesi):

Keçeci Binomial Squares (Keçeci Binom Kareleri): The Keçeci Binomial Square is a series of binomial coefficients forming a square region within Khayyam (مثلث خیام), Pascal, Binomial Triangle, selected from a specified starting row with defined size and alignment.

Keçeci Binom Karesi, Hayyam (مثلث خیام), Pascal, Binomial üçgeni içinde belirli bir başlangıç satırından itibaren, seçili boyut ve hizalamada bir kare oluşturan binom katsayıları serisidir.


Installation / Kurulum

conda install bilgi::kececisquares -y

pip install kececisquares

https://anaconda.org/bilgi/kececisquares

https://pypi.org/project/kececisquares/

https://github.com/WhiteSymmetry/kececisquares

https://zenodo.org/records/15411671

https://zenodo.org/records/


Usage / Kullanım

Example

import matplotlib.pyplot as plt
import kececisquares as ks
import math

def get_user_parameters():
    """Kullanıcıdan parametreleri alır."""
    print("--- Configure Binomial Triangle Visualization ---")
    try:
        # Bölge türü seçimi
        region_prompt = (
            "Region type (1: Square, 2: Triangle, 3: Diamond, 4: Staircase, "
            "5: Trapezoid, 6: Zigzag, 7: Cross; default: 1-Square): "
        )
        region_choice = input(region_prompt).strip()
        region_map = {
            "1": ("square", "Square-Kare-Eşkenar Dikdörtgen"),
            "2": ("triangle", "Triangle-Üçgen"),
            "3": ("diamond", "Diamond-Elmas"),
            "4": ("staircase", "Staircase-Merdiven"),
            "5": ("trapezoid", "Isosceles Trapezoid-İkizkenar Trapezoid"),
            "6": ("zigzag", "Zigzag-Zikzak"),
            "7": ("cross", "Cross-Çapraz")
        }
        region_type, region_label = "square", "Square-Kare-Eşkenar Dikdörtgen"
        if region_choice == "":
            print("Defaulting to 'Square' (1).")
        elif region_choice in region_map:
            region_type, region_label = region_map[region_choice]
            print(f"Selected region type: {region_label}")
        else:
            print("Invalid choice. Defaulting to 'Square' (1).")

        # Satır sayısı
        num_rows = int(input("Enter number of rows for Pascal's Triangle (e.g., 8, min: 1): "))
        if num_rows < 1:
            print("Error: Number of rows must be at least 1.")
            return None

        # Bölge boyutu
        if region_type in ["diamond", "cross"]:
            max_size = (num_rows + 1) // 2
            size_prompt = f"Enter {region_label} size (1-{max_size}, e.g., 3): "
        else:
            max_size = num_rows
            size_prompt = f"Enter {region_label} size (1-{num_rows}, e.g., 3): "
        region_size = int(input(size_prompt))
        if not (1 <= region_size <= max_size):
            print(f"Error: {region_label} size must be between 1 and {max_size}.")
            return None

        # Başlangıç satırı
        if region_type in ["diamond", "cross"]:
            total_height = 2 * region_size - 1
            max_start_row_0idx = num_rows - total_height
        else:
            max_start_row_0idx = num_rows - region_size
        min_start_row_0idx = 0
        if min_start_row_0idx > max_start_row_0idx:
            print(f"A {region_label} of size {region_size} cannot fit in {num_rows} rows.")
            return None
        start_row_prompt = f"Enter starting row (1-indexed, between {min_start_row_0idx+1} and {max_start_row_0idx+1}): "
        start_row_user = int(input(start_row_prompt))
        start_row_0idx = start_row_user - 1
        if not (min_start_row_0idx <= start_row_0idx <= max_start_row_0idx):
            print(f"Error: Starting row must be between {min_start_row_0idx+1} and {max_start_row_0idx+1}.")
            return None

        # Hizalama
        if region_type == "diamond":
            alignment = "center"
            print("♦ Diamond only supports CENTER alignment. Automatically set.")
        else:
            align_prompt = "Alignment (1: Left, 2: Right, 3: Centered; default: 1-Left): "
            align_choice = input(align_prompt).strip()
            align_map = {"1": "left", "2": "right", "3": "center"}
            alignment = "left"
            if align_choice == "":
                print("Defaulting to 'Left-Aligned' (1).")
            elif align_choice in align_map:
                alignment = align_map[align_choice]
            else:
                print("Invalid alignment. Defaulting to 'Left-Aligned' (1).")

        # Şekil türü
        shape_prompt = "Shape type (1: hexagon, 2: square, 3: circle, 4: triangle; default: 1-hexagon): "
        shape_choice = input(shape_prompt).strip()
        shape_map = {"1": "hexagon", "2": "square", "3": "circle", "4": "triangle"}
        shape_type = "hexagon"
        if shape_choice == "":
            print("Defaulting to 'hexagon' (1).")
        elif shape_choice in shape_map:
            shape_type = shape_map[shape_choice]
        else:
            print("Invalid shape type. Defaulting to 'hexagon' (1).")

        # Dolgu
        fill_prompt = "Fill the region? (1: Yes, 2: No; default: 1-Yes): "
        fill_choice = input(fill_prompt).strip()
        is_filled = True
        if fill_choice == "2":
            is_filled = False
        elif fill_choice not in ["1", ""]:
            print("Invalid choice. Defaulting to 'Yes' (1).")

        # Sayıları göster
        show_val_prompt = "Show numbers inside shapes? (1: Yes, 2: No; default: 1-Yes): "
        show_val_choice = input(show_val_prompt).strip()
        show_numbers = True
        if show_val_choice == "2":
            show_numbers = False
        elif show_val_choice not in ["1", ""]:
            print("Invalid choice. Defaulting to show numbers (1).")

        return {
            "num_rows": num_rows,
            "region_size": region_size,
            "start_row_0idx": start_row_0idx,
            "region_type": region_type,
            "shape_type": shape_type,
            "alignment": alignment,
            "is_filled": is_filled,
            "show_numbers": show_numbers,
        }
    except ValueError:
        print("Error: Invalid numerical input.")
        return None
    except Exception as e:
        print(f"An unexpected error occurred: {e}")
        return None

# Kullanıcıdan parametreleri al ve görselleştirmeyi çalıştır
params = get_user_parameters()
if params:
    print(f"\n--- Generating {params['region_type'].upper()} Plot ---")
    fig, ax = ks.draw_kececi_binomial_region(
        num_rows_to_draw=params["num_rows"],
        region_size=params["region_size"],
        start_row_index_0based=params["start_row_0idx"],
        region_type=params["region_type"],
        shape_to_draw=params["shape_type"],
        alignment=params["alignment"],
        is_filled=params["is_filled"],
        show_plot=True,
        show_values=params["show_numbers"]
    )
    if fig:
        print("Plot generated successfully.")
    else:
        print("Plot generation failed.")
else:
    print("Invalid parameters. Exiting.")


Keçeci Squares Example

Keçeci Squares Example

Keçeci Squares Example

Keçeci Squares Example

Keçeci Squares Example

Keçeci Squares Example

Keçeci Squares Example



License / Lisans

This project is licensed under the MIT License. See the LICENSE file for details.

Citation

If this library was useful to you in your research, please cite us. Following the GitHub citation standards, here is the recommended citation.

BibTeX

@misc{kececi_2025_15411670,
  author       = {Keçeci, Mehmet},
  title        = {kececisquares},
  month        = may,
  year         = 2025,
  publisher    = {GitHub, PyPI, Anaconda, Zenodo},
  version      = {0.1.0},
  doi          = {10.5281/zenodo.15411670},
  url          = {https://doi.org/10.5281/zenodo.15411670},
}

@misc{kececi_2025_15425855,
  author       = {Keçeci, Mehmet},
  title        = {The Keçeci Binomial Square: A Reinterpretation of
                   the Standard Binomial Expansion and Its Potential
                   Applications
                  },
  month        = may,
  year         = 2025,
  publisher    = {Zenodo},
  doi          = {10.5281/zenodo.15425855},
  url          = {https://doi.org/10.5281/zenodo.15425855},
}

APA

Keçeci, M. (2025). kececisquares [Data set]. WorkflowHub. https://doi.org/10.48546/workflowhub.datafile.15.1

Keçeci, M. (2025). Keçeci's Arithmetical Square. Authorea. June, 2025. https://doi.org/10.22541/au.175070836.63624913/v1

Keçeci, M. (2025). kececisquares. Zenodo. https://doi.org/10.5281/zenodo.15411670

Keçeci, M. (2025). The Keçeci Binomial Square: A Reinterpretation of the Standard Binomial Expansion and Its Potential Applications. https://doi.org/10.5281/zenodo.15425855

Chicago

Keçeci, Mehmet. kececisquares [Data set]. WorkflowHub, 2025. https://doi.org/10.48546/workflowhub.datafile.15.1

Keçeci, Mehmet. "Keçeci's Arithmetical Square". Authorea. June, 2025. https://doi.org/10.22541/au.175070836.63624913/v1

Keçeci, Mehmet. "kececisquares". Zenodo, 01 May 2025. https://doi.org/10.5281/zenodo.15411670

Keçeci, Mehmet. "The Keçeci Binomial Square: A Reinterpretation of the Standard Binomial Expansion and Its Potential Applications", 15 Mayıs 2025. https://doi.org/10.5281/zenodo.15425855

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

kececisquares-0.1.4.tar.gz (18.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

kececisquares-0.1.4-py3-none-any.whl (15.5 kB view details)

Uploaded Python 3

File details

Details for the file kececisquares-0.1.4.tar.gz.

File metadata

  • Download URL: kececisquares-0.1.4.tar.gz
  • Upload date:
  • Size: 18.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for kececisquares-0.1.4.tar.gz
Algorithm Hash digest
SHA256 863c743294180d08b63ebd4dbf572a25f4ef7f22d692de55783544c840c73a72
MD5 611344c6e17ec6b59e257277df198a93
BLAKE2b-256 986163fcc65acaf3f54332955c4592970914443a491c3265f38251b47b388626

See more details on using hashes here.

Provenance

The following attestation bundles were made for kececisquares-0.1.4.tar.gz:

Publisher: workflow.yml on WhiteSymmetry/kececisquares

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file kececisquares-0.1.4-py3-none-any.whl.

File metadata

  • Download URL: kececisquares-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 15.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for kececisquares-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 ea6ed62b7d7f08ec40a6737384b2ea36aac78ff92886334290be252c09f09b2b
MD5 9aae2370518992b12f8a31c26d43f5a7
BLAKE2b-256 66e969d369928b2eaff36725f21f023a8bd59450b1cc4b1a6856fcacfa50db9b

See more details on using hashes here.

Provenance

The following attestation bundles were made for kececisquares-0.1.4-py3-none-any.whl:

Publisher: workflow.yml on WhiteSymmetry/kececisquares

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page