Skip to content

Instantly share code, notes, and snippets.

View CTMacUser's full-sized avatar

Daryle Walker CTMacUser

View GitHub Profile
@CTMacUser
CTMacUser / Lucky Numbers.swift
Last active April 3, 2022 20:18
Using Swift to demonstrate the Sieve of Eratosthenes
import Foundation
/**
Run an incremental counter, but return only the values that survive the "lucky number" process.
The process is to list all the positive integers, then filter out entries in stages. For all the numbers in a stage, let *N* be the first unfiltered number that is neither 1 nor been already been used as a filter seed for a previous stage, and filter out every Nth number. The first pass uses 2 and therefore filters out every second number, i.e. the even numbers. The second pass uses 3 and therefore filters out every third number that survived the 2-stage. The third pass uses 7 and therefore filters out every seventh number that survived both the 2- and 3-stages. The fourth pass uses 9 and therefore filters out every ninth number that survived the 2-, 3-, and 7-stages. (Note that 2 is the only seed that eliminates itself in its filter. Some definitions of lucky numbers avoid this irregularity by starting with the odd positive integers.)
*/
public struct LuckyNumberGenerator<C
@CTMacUser
CTMacUser / NNNN-fixed-size-arrays.md
Last active April 28, 2021 17:37
Swift proposal for fixed-size array types
@CTMacUser
CTMacUser / Int4.swift
Created June 23, 2018 22:34
Four-bit signed and unsigned integer types in Swift.
//
// Int4.swift
// NegaSuperBinary
//
// Created by Daryle Walker on 6/22/18.
// Copyright © 2018 Daryle Walker. All rights reserved.
//
import Foundation
@CTMacUser
CTMacUser / Heap.swift
Last active July 18, 2020 04:28
Heap operation methods and Priority Queues in Swift, inspired by the C++ Standard Library. See <https://forums.swift.org/t/heaps-structure-not-storage-and-priority-queues/31135> for more information.
extension Collection {
/// Computes the binary-tree children indices for the given starting index,
/// if the collection is long enough.
///
/// Child elements of a flattened tree are consecutive, so if two indices
/// are returned, `distance(from: left!, to: right!) == 1`.
///
/// - Parameter source: The index of the parent element.
/// - Returns: A tuple with the indices of the left and right binary-tree
@CTMacUser
CTMacUser / FirstRange.swift
Created May 25, 2020 04:32
A generalized and Swift-y adaptation of NSString.replacingOccurrences(of: with: options: range:). See <https://forums.swift.org/t/additional-string-processing-apis/36255/25?u=ctmacuser> for more.
import Foundation
extension Collection {
/// Returns the index range for the earliest subsequence of this collection
/// that is equivalent to the given sequence, using the given predicate to
/// compare elements.
///
/// The predicate must be an equivalence relation over the elements.
extension Collection {
/// If the collection does not have the given sequence as a prefix when
/// using the given predicate to compare elements, returns the collection
/// as-is; otherwise, returns the part of the collection after that prefix.
///
/// The predicate must be an equivalence relation over the elements.
///
/// Whether a prefix was actually dropped can be tested by checking if the
/// returned sub-sequence's `startIndex` is greater than the collection's
@CTMacUser
CTMacUser / NNNN-diverges.md
Last active May 14, 2020 04:25
A proposal to generalize the Sequence comparison methods, with specializations for Collections.

Locating Sequence-Commonality Breaks

Introduction

@CTMacUser
CTMacUser / ArrayManifestoV3.md
Created March 10, 2020 02:44
Version 3 of a proposal to add fixed-size, scoped-storage arrays to Swift. See <https://forums.swift.org/t/fixed-size-scoped-storage-array-manifesto-version-3/34427> for discussion.

Fixed-Size Array Manifesto

Introduction

This manifesto outlines a plan to add compound types corresponding to fixed-size scoped-storage homogenous containers.

Motivation/Goals

  • Bring a fixed-size, scoped-storage array type to Swift
  • Use declaration and dereference syntax similar to Array. Possibly other members too.
@CTMacUser
CTMacUser / ChunkedCollection.swift
Created February 29, 2020 23:43
For Swift 5.1; wrapping types for sequences and collections that vend their source into fixed-sized chunks. See <https://forums.swift.org/t/yet-another-chunked-sequence-collection-idea/34198> for more information.
//===--- ChunkedCollection.swift ------------------------------*- swift -*-===//
//
// Created by Daryle Walker on 2020-Feb-29
//
// Copyright © 2020 Daryle Walker
//
// A generic type that models a Collection that wraps another, vending fixed-
// sized sub-sequences (i.e. chunks) of the inner collection as the elements of
// the outer collection. There is an option whether or not to vend the last
// chunks if they occur late enough that they are shorter than expected.
@CTMacUser
CTMacUser / AdjacentPermutation.swift
Last active December 9, 2019 02:22
Confirming permutations, rotating to the next or previous permutation, or going through all permutations; inspired by the C++ Standard Library. See <https://forums.swift.org/t/how-about-detection-and-iteration-of-permutations/31404> for more information.
//===--- AdjacentPermutation.swift ----------------------------*- swift -*-===//
//
// Created by Daryle Walker on 2019-Nov-27
//
// Copyright © 2019 Daryle Walker
//
// Methods to rearrange a collection to its next or previous permutation.
// Methods to return a sequence of all permutations of a collection, both lazy
// and eager.
//