stage _freeze, add root and polycount indices
1
.gitignore
vendored
@ -1,4 +1,3 @@
|
|||||||
_freeze/
|
|
||||||
_site/
|
_site/
|
||||||
/.quarto/
|
/.quarto/
|
||||||
index_files/
|
index_files/
|
||||||
|
|||||||
12
_freeze/polycount/1/index/execute-results/html.json
Normal file
12
_freeze/polycount/3/index/execute-results/html.json
Normal file
BIN
_freeze/polycount/3/index/figure-html/cell-7-output-1.png
Normal file
|
After Width: | Height: | Size: 26 KiB |
12
_freeze/polycount/4/index/execute-results/html.json
Normal file
BIN
_freeze/polycount/4/index/figure-html/cell-2-output-1.png
Normal file
|
After Width: | Height: | Size: 41 KiB |
BIN
_freeze/polycount/4/index/figure-html/cell-3-output-1.png
Normal file
|
After Width: | Height: | Size: 61 KiB |
BIN
_freeze/polycount/4/index/figure-html/cell-4-output-1.png
Normal file
|
After Width: | Height: | Size: 58 KiB |
BIN
_freeze/polycount/4/index/figure-html/cell-5-output-1.png
Normal file
|
After Width: | Height: | Size: 67 KiB |
BIN
_freeze/polycount/4/index/figure-html/cell-6-output-1.png
Normal file
|
After Width: | Height: | Size: 68 KiB |
12
_freeze/polycount/5/index/execute-results/html.json
Normal file
16
_freeze/polycount/cell1/fig1/execute-results/html.json
Normal file
BIN
_freeze/polycount/cell1/fig1/figure-html/cell-2-output-1.png
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
_freeze/polycount/cell1/fig1/figure-html/cell-2-output-2.png
Normal file
|
After Width: | Height: | Size: 17 KiB |
16
_freeze/polycount/cell1/index/execute-results/html.json
Normal file
BIN
_freeze/polycount/cell1/index/figure-html/cell-10-output-1.png
Normal file
|
After Width: | Height: | Size: 39 KiB |
BIN
_freeze/polycount/cell1/index/figure-html/cell-11-output-2.png
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
_freeze/polycount/cell1/index/figure-html/cell-2-output-2.png
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
_freeze/polycount/cell1/index/figure-html/cell-3-output-1.png
Normal file
|
After Width: | Height: | Size: 31 KiB |
BIN
_freeze/polycount/cell1/index/figure-html/cell-3-output-2.png
Normal file
|
After Width: | Height: | Size: 20 KiB |
BIN
_freeze/polycount/cell1/index/figure-html/cell-3-output-3.png
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
_freeze/polycount/cell1/index/figure-html/cell-3-output-4.png
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
_freeze/polycount/cell1/index/figure-html/cell-3-output-5.png
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
_freeze/polycount/cell1/index/figure-html/cell-3-output-6.png
Normal file
|
After Width: | Height: | Size: 36 KiB |
BIN
_freeze/polycount/cell1/index/figure-html/cell-3-output-7.png
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
_freeze/polycount/cell1/index/figure-html/cell-3-output-8.png
Normal file
|
After Width: | Height: | Size: 36 KiB |
BIN
_freeze/polycount/cell1/index/figure-html/cell-4-output-5.png
Normal file
|
After Width: | Height: | Size: 48 KiB |
BIN
_freeze/polycount/cell1/index/figure-html/cell-5-output-1.png
Normal file
|
After Width: | Height: | Size: 31 KiB |
BIN
_freeze/polycount/cell1/index/figure-html/cell-5-output-2.png
Normal file
|
After Width: | Height: | Size: 41 KiB |
BIN
_freeze/polycount/cell1/index/figure-html/cell-5-output-3.png
Normal file
|
After Width: | Height: | Size: 42 KiB |
BIN
_freeze/polycount/cell1/index/figure-html/cell-5-output-4.png
Normal file
|
After Width: | Height: | Size: 42 KiB |
BIN
_freeze/polycount/cell1/index/figure-html/cell-5-output-5.png
Normal file
|
After Width: | Height: | Size: 41 KiB |
BIN
_freeze/polycount/cell1/index/figure-html/cell-7-output-1.png
Normal file
|
After Width: | Height: | Size: 38 KiB |
BIN
_freeze/polycount/cell1/index/figure-html/cell-7-output-2.png
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
_freeze/polycount/cell1/index/figure-html/cell-7-output-3.png
Normal file
|
After Width: | Height: | Size: 47 KiB |
BIN
_freeze/polycount/cell1/index/figure-html/cell-7-output-4.png
Normal file
|
After Width: | Height: | Size: 47 KiB |
BIN
_freeze/polycount/cell1/index/figure-html/cell-7-output-5.png
Normal file
|
After Width: | Height: | Size: 19 KiB |
BIN
_freeze/polycount/cell1/index/figure-html/cell-8-output-1.png
Normal file
|
After Width: | Height: | Size: 38 KiB |
BIN
_freeze/polycount/cell1/index/figure-html/cell-8-output-2.png
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
_freeze/polycount/cell1/index/figure-html/cell-8-output-3.png
Normal file
|
After Width: | Height: | Size: 47 KiB |
BIN
_freeze/polycount/cell1/index/figure-html/cell-8-output-4.png
Normal file
|
After Width: | Height: | Size: 47 KiB |
BIN
_freeze/polycount/cell1/index/figure-html/cell-9-output-1.png
Normal file
|
After Width: | Height: | Size: 39 KiB |
BIN
_freeze/polycount/cell1/index/figure-html/cell-9-output-3.png
Normal file
|
After Width: | Height: | Size: 18 KiB |
12
_freeze/polycount/cell1/test/execute-results/html.json
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
"hash": "937ac2b4de72d9620cca965da349a412",
|
||||||
|
"result": {
|
||||||
|
"engine": "jupyter",
|
||||||
|
"markdown": "::: {#239fae83 .cell execution_count=1}\n``` {.python .cell-code}\n%matplotlib notebook\nimport numpy as np\nfrom carry2d import anim, carry\n\nfrom IPython.display import Latex, display_latex\n\nanim.animate_carry_count(\n carry = carry.Carry([\n [-2, 1],\n [ 1, 0]\n ]),\n frames=list(range(256))\n)\n```\n:::\n\n\n",
|
||||||
|
"supporting": [
|
||||||
|
"test_files"
|
||||||
|
],
|
||||||
|
"filters": [],
|
||||||
|
"includes": {}
|
||||||
|
}
|
||||||
|
}
|
||||||
BIN
_freeze/polycount/cell1/test/figure-html/cell-2-output-1.png
Normal file
|
After Width: | Height: | Size: 16 KiB |
16
_freeze/polycount/cell2/index/execute-results/html.json
Normal file
BIN
_freeze/polycount/cell2/index/figure-html/cell-3-output-1.png
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
_freeze/polycount/cell2/index/figure-html/cell-3-output-2.png
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
_freeze/polycount/cell2/index/figure-html/cell-4-output-2.png
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
_freeze/polycount/cell2/index/figure-html/cell-5-output-1.png
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
_freeze/polycount/cell2/index/figure-html/cell-5-output-2.png
Normal file
|
After Width: | Height: | Size: 34 KiB |
BIN
_freeze/polycount/cell2/index/figure-html/cell-6-output-2.png
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
_freeze/polycount/cell2/index/figure-html/cell-7-output-2.png
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
_freeze/polycount/cell2/index/figure-html/cell-8-output-2.png
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
_freeze/polycount/cell2/index/figure-html/cell-9-output-2.png
Normal file
|
After Width: | Height: | Size: 18 KiB |
7
_freeze/site_libs/clipboard/clipboard.min.js
vendored
Normal file
2
_freeze/site_libs/quarto-listing/list.min.js
vendored
Normal file
254
_freeze/site_libs/quarto-listing/quarto-listing.js
Normal file
@ -0,0 +1,254 @@
|
|||||||
|
const kProgressiveAttr = "data-src";
|
||||||
|
let categoriesLoaded = false;
|
||||||
|
|
||||||
|
window.quartoListingCategory = (category) => {
|
||||||
|
// category is URI encoded in EJS template for UTF-8 support
|
||||||
|
category = decodeURIComponent(atob(category));
|
||||||
|
if (categoriesLoaded) {
|
||||||
|
activateCategory(category);
|
||||||
|
setCategoryHash(category);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
window["quarto-listing-loaded"] = () => {
|
||||||
|
// Process any existing hash
|
||||||
|
const hash = getHash();
|
||||||
|
|
||||||
|
if (hash) {
|
||||||
|
// If there is a category, switch to that
|
||||||
|
if (hash.category) {
|
||||||
|
// category hash are URI encoded so we need to decode it before processing
|
||||||
|
// so that we can match it with the category element processed in JS
|
||||||
|
activateCategory(decodeURIComponent(hash.category));
|
||||||
|
}
|
||||||
|
// Paginate a specific listing
|
||||||
|
const listingIds = Object.keys(window["quarto-listings"]);
|
||||||
|
for (const listingId of listingIds) {
|
||||||
|
const page = hash[getListingPageKey(listingId)];
|
||||||
|
if (page) {
|
||||||
|
showPage(listingId, page);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const listingIds = Object.keys(window["quarto-listings"]);
|
||||||
|
for (const listingId of listingIds) {
|
||||||
|
// The actual list
|
||||||
|
const list = window["quarto-listings"][listingId];
|
||||||
|
|
||||||
|
// Update the handlers for pagination events
|
||||||
|
refreshPaginationHandlers(listingId);
|
||||||
|
|
||||||
|
// Render any visible items that need it
|
||||||
|
renderVisibleProgressiveImages(list);
|
||||||
|
|
||||||
|
// Whenever the list is updated, we also need to
|
||||||
|
// attach handlers to the new pagination elements
|
||||||
|
// and refresh any newly visible items.
|
||||||
|
list.on("updated", function () {
|
||||||
|
renderVisibleProgressiveImages(list);
|
||||||
|
setTimeout(() => refreshPaginationHandlers(listingId));
|
||||||
|
|
||||||
|
// Show or hide the no matching message
|
||||||
|
toggleNoMatchingMessage(list);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
window.document.addEventListener("DOMContentLoaded", function (_event) {
|
||||||
|
// Attach click handlers to categories
|
||||||
|
const categoryEls = window.document.querySelectorAll(
|
||||||
|
".quarto-listing-category .category"
|
||||||
|
);
|
||||||
|
|
||||||
|
for (const categoryEl of categoryEls) {
|
||||||
|
// category needs to support non ASCII characters
|
||||||
|
const category = decodeURIComponent(
|
||||||
|
atob(categoryEl.getAttribute("data-category"))
|
||||||
|
);
|
||||||
|
categoryEl.onclick = () => {
|
||||||
|
activateCategory(category);
|
||||||
|
setCategoryHash(category);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
// Attach a click handler to the category title
|
||||||
|
// (there should be only one, but since it is a class name, handle N)
|
||||||
|
const categoryTitleEls = window.document.querySelectorAll(
|
||||||
|
".quarto-listing-category-title"
|
||||||
|
);
|
||||||
|
for (const categoryTitleEl of categoryTitleEls) {
|
||||||
|
categoryTitleEl.onclick = () => {
|
||||||
|
activateCategory("");
|
||||||
|
setCategoryHash("");
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
categoriesLoaded = true;
|
||||||
|
});
|
||||||
|
|
||||||
|
function toggleNoMatchingMessage(list) {
|
||||||
|
const selector = `#${list.listContainer.id} .listing-no-matching`;
|
||||||
|
const noMatchingEl = window.document.querySelector(selector);
|
||||||
|
if (noMatchingEl) {
|
||||||
|
if (list.visibleItems.length === 0) {
|
||||||
|
noMatchingEl.classList.remove("d-none");
|
||||||
|
} else {
|
||||||
|
if (!noMatchingEl.classList.contains("d-none")) {
|
||||||
|
noMatchingEl.classList.add("d-none");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function setCategoryHash(category) {
|
||||||
|
setHash({ category });
|
||||||
|
}
|
||||||
|
|
||||||
|
function setPageHash(listingId, page) {
|
||||||
|
const currentHash = getHash() || {};
|
||||||
|
currentHash[getListingPageKey(listingId)] = page;
|
||||||
|
setHash(currentHash);
|
||||||
|
}
|
||||||
|
|
||||||
|
function getListingPageKey(listingId) {
|
||||||
|
return `${listingId}-page`;
|
||||||
|
}
|
||||||
|
|
||||||
|
function refreshPaginationHandlers(listingId) {
|
||||||
|
const listingEl = window.document.getElementById(listingId);
|
||||||
|
const paginationEls = listingEl.querySelectorAll(
|
||||||
|
".pagination li.page-item:not(.disabled) .page.page-link"
|
||||||
|
);
|
||||||
|
for (const paginationEl of paginationEls) {
|
||||||
|
paginationEl.onclick = (sender) => {
|
||||||
|
setPageHash(listingId, sender.target.getAttribute("data-i"));
|
||||||
|
showPage(listingId, sender.target.getAttribute("data-i"));
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function renderVisibleProgressiveImages(list) {
|
||||||
|
// Run through the visible items and render any progressive images
|
||||||
|
for (const item of list.visibleItems) {
|
||||||
|
const itemEl = item.elm;
|
||||||
|
if (itemEl) {
|
||||||
|
const progressiveImgs = itemEl.querySelectorAll(
|
||||||
|
`img[${kProgressiveAttr}]`
|
||||||
|
);
|
||||||
|
for (const progressiveImg of progressiveImgs) {
|
||||||
|
const srcValue = progressiveImg.getAttribute(kProgressiveAttr);
|
||||||
|
if (srcValue) {
|
||||||
|
progressiveImg.setAttribute("src", srcValue);
|
||||||
|
}
|
||||||
|
progressiveImg.removeAttribute(kProgressiveAttr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function getHash() {
|
||||||
|
// Hashes are of the form
|
||||||
|
// #name:value|name1:value1|name2:value2
|
||||||
|
const currentUrl = new URL(window.location);
|
||||||
|
const hashRaw = currentUrl.hash ? currentUrl.hash.slice(1) : undefined;
|
||||||
|
return parseHash(hashRaw);
|
||||||
|
}
|
||||||
|
|
||||||
|
const kAnd = "&";
|
||||||
|
const kEquals = "=";
|
||||||
|
|
||||||
|
function parseHash(hash) {
|
||||||
|
if (!hash) {
|
||||||
|
return undefined;
|
||||||
|
}
|
||||||
|
const hasValuesStrs = hash.split(kAnd);
|
||||||
|
const hashValues = hasValuesStrs
|
||||||
|
.map((hashValueStr) => {
|
||||||
|
const vals = hashValueStr.split(kEquals);
|
||||||
|
if (vals.length === 2) {
|
||||||
|
return { name: vals[0], value: vals[1] };
|
||||||
|
} else {
|
||||||
|
return undefined;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.filter((value) => {
|
||||||
|
return value !== undefined;
|
||||||
|
});
|
||||||
|
|
||||||
|
const hashObj = {};
|
||||||
|
hashValues.forEach((hashValue) => {
|
||||||
|
hashObj[hashValue.name] = decodeURIComponent(hashValue.value);
|
||||||
|
});
|
||||||
|
return hashObj;
|
||||||
|
}
|
||||||
|
|
||||||
|
function makeHash(obj) {
|
||||||
|
return Object.keys(obj)
|
||||||
|
.map((key) => {
|
||||||
|
return `${key}${kEquals}${obj[key]}`;
|
||||||
|
})
|
||||||
|
.join(kAnd);
|
||||||
|
}
|
||||||
|
|
||||||
|
function setHash(obj) {
|
||||||
|
const hash = makeHash(obj);
|
||||||
|
window.history.pushState(null, null, `#${hash}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
function showPage(listingId, page) {
|
||||||
|
const list = window["quarto-listings"][listingId];
|
||||||
|
if (list) {
|
||||||
|
list.show((page - 1) * list.page + 1, list.page);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function activateCategory(category) {
|
||||||
|
// Deactivate existing categories
|
||||||
|
const activeEls = window.document.querySelectorAll(
|
||||||
|
".quarto-listing-category .category.active"
|
||||||
|
);
|
||||||
|
for (const activeEl of activeEls) {
|
||||||
|
activeEl.classList.remove("active");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Activate this category
|
||||||
|
const categoryEl = window.document.querySelector(
|
||||||
|
`.quarto-listing-category .category[data-category='${btoa(
|
||||||
|
encodeURIComponent(category)
|
||||||
|
)}']`
|
||||||
|
);
|
||||||
|
if (categoryEl) {
|
||||||
|
categoryEl.classList.add("active");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Filter the listings to this category
|
||||||
|
filterListingCategory(category);
|
||||||
|
}
|
||||||
|
|
||||||
|
function filterListingCategory(category) {
|
||||||
|
const listingIds = Object.keys(window["quarto-listings"]);
|
||||||
|
for (const listingId of listingIds) {
|
||||||
|
const list = window["quarto-listings"][listingId];
|
||||||
|
if (list) {
|
||||||
|
if (category === "") {
|
||||||
|
// resets the filter
|
||||||
|
list.filter();
|
||||||
|
} else {
|
||||||
|
// filter to this category
|
||||||
|
list.filter(function (item) {
|
||||||
|
const itemValues = item.values();
|
||||||
|
if (itemValues.categories !== null) {
|
||||||
|
const categories = decodeURIComponent(
|
||||||
|
atob(itemValues.categories)
|
||||||
|
).split(",");
|
||||||
|
return categories.includes(category);
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
24
_quarto.yml
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
project:
|
||||||
|
type: website
|
||||||
|
|
||||||
|
website:
|
||||||
|
title: "Zenzicubi.co"
|
||||||
|
navbar:
|
||||||
|
right:
|
||||||
|
# - about.qmd
|
||||||
|
- icon: github
|
||||||
|
href: https://github.com/queue-miscreant
|
||||||
|
background: primary
|
||||||
|
search: true
|
||||||
|
draft-mode: unlinked
|
||||||
|
|
||||||
|
format:
|
||||||
|
html:
|
||||||
|
theme:
|
||||||
|
light:
|
||||||
|
- default
|
||||||
|
dark:
|
||||||
|
- darkly
|
||||||
|
|
||||||
|
execute:
|
||||||
|
cache: true
|
||||||
6
index.qmd
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
---
|
||||||
|
title: "Categories"
|
||||||
|
listing:
|
||||||
|
contents: polycount/index.*
|
||||||
|
sort: "date desc"
|
||||||
|
---
|
||||||
BIN
polycount/5/canonical_tables/canonical_addition.gif
Normal file
|
After Width: | Height: | Size: 46 KiB |
BIN
polycount/5/canonical_tables/canonical_multiplication.gif
Normal file
|
After Width: | Height: | Size: 198 KiB |
BIN
polycount/5/series_tables/catalan_oplus_mod_2.png
Normal file
|
After Width: | Height: | Size: 3.1 KiB |
BIN
polycount/5/series_tables/factorial_oplus_mod_8.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
polycount/5/series_tables/fibonacci_odot.gif
Normal file
|
After Width: | Height: | Size: 1.1 MiB |
BIN
polycount/5/series_tables/fibonacci_oplus.gif
Normal file
|
After Width: | Height: | Size: 699 KiB |
BIN
polycount/5/series_tables/jacobsthal_oplus.gif
Normal file
|
After Width: | Height: | Size: 3.7 MiB |
BIN
polycount/5/series_tables/padovan_oplus.gif
Normal file
|
After Width: | Height: | Size: 7.2 MiB |
BIN
polycount/5/series_tables/pell_oplus.gif
Normal file
|
After Width: | Height: | Size: 5.4 MiB |
BIN
polycount/5/series_tables/recurrence_1_1_2_oplus.gif
Normal file
|
After Width: | Height: | Size: 4.8 MiB |
BIN
polycount/5/series_tables/square_oplus.gif
Normal file
|
After Width: | Height: | Size: 5.0 MiB |
BIN
polycount/5/series_tables/tetranacci_oplus.gif
Normal file
|
After Width: | Height: | Size: 5.4 MiB |
BIN
polycount/5/series_tables/triangular_oplus.gif
Normal file
|
After Width: | Height: | Size: 6.1 MiB |
BIN
polycount/5/series_tables/tribonacci_oplus.gif
Normal file
|
After Width: | Height: | Size: 5.9 MiB |
5
polycount/_metadata.yml
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
# freeze computational output
|
||||||
|
freeze: true
|
||||||
|
|
||||||
|
# Enable banner style title blocks
|
||||||
|
title-block-banner: true
|
||||||
10
polycount/index.qmd
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
---
|
||||||
|
title: "Polynomial Counting"
|
||||||
|
listing:
|
||||||
|
contents: .
|
||||||
|
sort: "date desc"
|
||||||
|
---
|
||||||
|
|
||||||
|
Articles about generalizations of positional number systems, explained using the concept of counting on polynomials.
|
||||||
|
|
||||||
|
Publication dates correspond to the original WordPress publication dates.
|
||||||