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.3.tar.gz (18.3 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.3-py3-none-any.whl (15.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: kececisquares-0.1.3.tar.gz
  • Upload date:
  • Size: 18.3 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.3.tar.gz
Algorithm Hash digest
SHA256 515c0a8a49d6513401fc6cad7215ceec15aecc8c3219e2a16b45a2d6a54f7e74
MD5 23a95ed88a5d733955a1486897bc5a10
BLAKE2b-256 59aec21f847afd69ace93179e06bdf1672476d563ad87ce576eb55e73f7573bd

See more details on using hashes here.

Provenance

The following attestation bundles were made for kececisquares-0.1.3.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.3-py3-none-any.whl.

File metadata

  • Download URL: kececisquares-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 15.4 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.3-py3-none-any.whl
Algorithm Hash digest
SHA256 99f7286685016d050f87bac5ecd4929305a1e9d85d9bbbda1ebbfcadf6e54b62
MD5 3109a388f90c5af1ca9e7cd914d8d699
BLAKE2b-256 643efc6d58b5017db82b02604ab7d2646e0bdea40cd9b3de2245d5603d75cf96

See more details on using hashes here.

Provenance

The following attestation bundles were made for kececisquares-0.1.3-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