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 or other geometric shapes 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)

Keçeci Binomial Squares (Keçeci Binom Kareleri) Keçeci Binomial Squares (Keçeci Binom Kareleri)

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 or other geometric shapes 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 veya diğer geometrik şekiller 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.15425529

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.15425529


Pixi:

Pixi

pixi init kececisquares

cd kececisquares

pixi workspace channel add https://prefix.dev/channels/bilgi --prepend

✔ Added https://prefix.dev/channels/bilgi

pixi add kececisquares

✔ Added kececisquares >=...,<1

pixi install

pixi shell

pixi run python -c "import kececisquares; print(kececisquares.version)"

Çıktı:

pixi remove kececisquares

conda install -c https://prefix.dev/channels/bilgi kececisquares

pixi run python -c "import kececisquares; print(kececisquares.version)"

Çıktı:

pixi run pip list | grep kececisquares

kececisquares

pixi run pip show kececisquares

Name: kececisquares

Version:

Summary: Keçeci Squares

Home-page: https://github.com/WhiteSymmetry/kececisquares

Author: Mehmet Keçeci

Author-email: Mehmet Keçeci <...>

License: GNU AFFERO GENERAL PUBLIC LICENSE

Copyright (c) 2025-2026 Mehmet Keçeci


  1. https://pypi.org/project/kececisquares/
  2. https://anaconda.org/bilgi/kececisquares
  3. https://prefix.dev/channels/bilgi/packages/kececisquares

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

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for kececisquares-0.1.7.tar.gz
Algorithm Hash digest
SHA256 5bc690d5912d2ec0f4c672f00e9a5bf888591029d2273dd16321eb6a05c1d7e4
MD5 a8591ee3fceb08f4e3b048f050300200
BLAKE2b-256 99294bf9da32143122ef2d4c83d4e120c2509103ca749ec2b884cb7f2d891d3a

See more details on using hashes here.

Provenance

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

File metadata

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

File hashes

Hashes for kececisquares-0.1.7-py3-none-any.whl
Algorithm Hash digest
SHA256 3fce10ba6c41a9ea9967acb396513ba089a554b64fcfc26b8a0f19d7c31000b1
MD5 e89337b42405d6d870ef61fe423c25c3
BLAKE2b-256 40cfdaf03e64b008f5cbe883389d8bfb3ec779c0d7c98e5b949f390078f1016c

See more details on using hashes here.

Provenance

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