While not strictly necessary, replacing the two ASCII tab characters in the markdown copyright comment makes it easier to detect problematic TAB indentation within markdown files. After this commit, only 90 markdown files have leading ASCII TAB characters. And again, while not strictly necessary, we can consider running expand on those 90 markdown files to see what effect that might have on the HTML files they produce. Replace leading ASCII TAB characters with multiples of 8 ASCII SPACE characters (the default action of the `expand(1)` tool) might have an negative effect on some HTML formatting where **hack-a-round** formatting was attempted to fix broken indentation caused by problematic ASCII TAB characters. Think of this as a baseline for evaluating leading TAB characters within markdown files. TODO: Consider either using `expand(1)` to replace leading ASCII TAB characters with multiples of 8 ASCII SPACE characters AND/OR modifying the appropriate `bin` tool to convert leading ASCII TAB characters into multiples of 8 ASCII SPACE characters.
776 lines
32 KiB
HTML
776 lines
32 KiB
HTML
<!DOCTYPE html>
|
||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
||
<!-- START: two lines up starts content from: inc/top.default.html -->
|
||
|
||
<!-- END: this line ends content from: inc/top.default.html -->
|
||
<!-- START: this line starts content from: inc/head.default.html -->
|
||
|
||
<head>
|
||
<link rel="stylesheet" href="../../ioccc.css">
|
||
<link href="https://fonts.googleapis.com/css2?family=Outfit:wght@100..900&display=swap" rel="stylesheet">
|
||
<meta charset="utf-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
|
||
<title>2000/jarijyrki - Best of Show</title>
|
||
<link rel="icon" type="image/x-icon" href="../../favicon.ico">
|
||
<meta name="description" content="2000 IOCCC entry jarijyrki - Best of Show">
|
||
<meta name="keywords" content="IOCCC, 2000, IOCCC 2000, IOCCC entry, jarijyrki, Best of Show">
|
||
</head>
|
||
|
||
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
|
||
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
|
||
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
|
||
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
|
||
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
|
||
|
||
<!-- END: this line ends content from: inc/head.default.html -->
|
||
|
||
<!-- -->
|
||
<!-- This web page was formed via the tool: bin/readme2index.sh -->
|
||
<!-- The content of main section of this web page came from: 2000/jarijyrki/README.md -->
|
||
<!-- -->
|
||
|
||
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
|
||
<!-- !!! Do not modify this web page, instead modify the file: 2000/jarijyrki/README.md !!! -->
|
||
<!-- !!! Do not modify this web page, instead modify the file: 2000/jarijyrki/README.md !!! -->
|
||
<!-- !!! Do not modify this web page, instead modify the file: 2000/jarijyrki/README.md !!! -->
|
||
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
|
||
|
||
<!-- Markdown content was converted into HTML via the tool: bin/md2html.sh -->
|
||
|
||
<!-- START: this line starts content from: inc/body.default.html -->
|
||
|
||
<body>
|
||
|
||
<!-- END: this line ends content from: inc/body.default.html -->
|
||
<!-- START: this line starts content from: inc/topbar.default.html -->
|
||
|
||
<div class="theader">
|
||
<nav class="topbar">
|
||
<div class="container">
|
||
<div class="logo">
|
||
<a href="../../index.html" class="logo-link">
|
||
IOCCC
|
||
</a>
|
||
</div>
|
||
|
||
<div class="topbar-items">
|
||
<div class="item">
|
||
<span class="item-header">
|
||
Entries
|
||
</span>
|
||
|
||
<div class="sub-item">
|
||
<div class="outfit-font">
|
||
<a href="../../years.html" class="sub-item-link">
|
||
Winning Entries
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../authors.html" class="sub-item-link">
|
||
Winning Authors
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../location.html" class="sub-item-link">
|
||
Location of winning authors
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../bugs.html" class="sub-item-link">
|
||
Bugs and (mis)features
|
||
</a>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="item">
|
||
<span class="item-header">
|
||
Status
|
||
</span>
|
||
|
||
<div class="sub-item">
|
||
<div class="outfit-font">
|
||
<a href="../../news.html" class="sub-item-link">
|
||
IOCCC News
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../status.html" class="sub-item-link">
|
||
Contest status
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../next/index.html" class="sub-item-link">
|
||
Rules and Guidelines
|
||
</a>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="item">
|
||
<span class="item-header">
|
||
FAQ
|
||
</span>
|
||
|
||
<div class="sub-item">
|
||
<div class="outfit-font">
|
||
<a href="../../faq.html" class="sub-item-link">
|
||
FAQ
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../faq.html#submit" class="sub-item-link">
|
||
How to enter the IOCCC
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../faq.html#fix_an_entry" class="sub-item-link">
|
||
Fixing IOCCC entries
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../faq.html#fix_web_site" class="sub-item-link">
|
||
Fixing the website
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../faq.html#fix_author" class="sub-item-link">
|
||
Updating author info
|
||
</a>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="item">
|
||
<span class="item-header">
|
||
About
|
||
</span>
|
||
|
||
<div class="sub-item">
|
||
<div class="outfit-font">
|
||
<a href="../../index.html" class="sub-item-link">
|
||
IOCCC Home
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../judges.html" class="sub-item-link">
|
||
The IOCCC Judges
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../contact.html" class="sub-item-link">
|
||
Contacting the IOCCC
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../thanks-for-help.html" class="sub-item-link">
|
||
Thanks for the help
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../markdown.html" class="sub-item-link">
|
||
IOCCC markdown guidelines
|
||
</a>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</nav>
|
||
|
||
<div class="header-mobile-menu">
|
||
<noscript>
|
||
<a href="../../nojs-menu.html" class="topbar-js-label">
|
||
Please Enable JavaScript
|
||
</a>
|
||
</noscript>
|
||
|
||
<button id="header-open-menu-button" class="topbar-mobile-menu">
|
||
<img
|
||
src="../../png/hamburger-icon-open.png"
|
||
alt="hamburger style menu icon - open state"
|
||
width=48
|
||
height=48>
|
||
</button>
|
||
|
||
<button id="header-close-menu-button" class="hide-content">
|
||
<img
|
||
src="../../png/hamburger-icon-closed.png"
|
||
alt="hamburger style menu icon - closed state"
|
||
width=48
|
||
height=48>
|
||
</button>
|
||
|
||
<div id="mobile-menu-panel" class="hide-content">
|
||
<div class="mobile-menu-container">
|
||
|
||
<div class="mobile-menu-wrapper">
|
||
<div class="mobile-menu-item">
|
||
Entries
|
||
</div>
|
||
<div class="mobile-submenu-wrapper">
|
||
|
||
<a class="mobile-submenu-item" href="../../years.html">
|
||
Winning Entries
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../../authors.html">
|
||
Authors of winning IOCCC entries
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../../location.html">
|
||
Location of authors
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../../bugs.html">
|
||
Bugs and (mis)features
|
||
</a>
|
||
|
||
</div>
|
||
</div>
|
||
|
||
<div class="mobile-menu-wrapper">
|
||
|
||
<div class="mobile-menu-item">
|
||
Status
|
||
</div>
|
||
<div class="mobile-submenu-wrapper">
|
||
|
||
<a class="mobile-submenu-item" href="../../status.html">
|
||
Contest status
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../../next/index.html">
|
||
Rules and Guidelines
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../../news.html">
|
||
IOCCC News
|
||
</a>
|
||
|
||
</div>
|
||
</div>
|
||
|
||
<div class="mobile-menu-wrapper">
|
||
<div class="mobile-menu-item">
|
||
FAQ
|
||
</div>
|
||
<div class="mobile-submenu-wrapper">
|
||
|
||
<a class="mobile-submenu-item" href="../../faq.html">
|
||
Frequently Asked Questions
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../../faq.html#submit">
|
||
How to enter the IOCCC
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../../faq.html#fix_an_entry">
|
||
Fixing IOCCC entries
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../../faq.html#fix_web_site">
|
||
Fixing the website
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../../faq.html#fix_author">
|
||
Fixing author info
|
||
</a>
|
||
|
||
</div>
|
||
</div>
|
||
|
||
<div class="mobile-menu-wrapper">
|
||
<div class="mobile-menu-item">
|
||
About
|
||
</div>
|
||
<div class="mobile-submenu-wrapper">
|
||
|
||
<a class="mobile-submenu-item" href="../../index.html">
|
||
IOCCC Home
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../../judges.html">
|
||
The IOCCC Judges
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../../contact.html">
|
||
Contacting the IOCCC
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../../thanks-for-help.html">
|
||
Thanks for the help
|
||
</a>
|
||
|
||
</div>
|
||
</div>
|
||
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
<script>
|
||
var headerOpenMenuButton = document.getElementById("header-open-menu-button");
|
||
var headerCloseMenuButton = document.getElementById("header-close-menu-button");
|
||
var mobileMenuPanel = document.getElementById("mobile-menu-panel");
|
||
|
||
headerOpenMenuButton.addEventListener("click", () => {
|
||
headerOpenMenuButton.classList.remove("topbar-mobile-menu");
|
||
headerOpenMenuButton.classList.add("hide-content");
|
||
|
||
headerCloseMenuButton.classList.remove("hide-content");
|
||
headerCloseMenuButton.classList.add("topbar-mobile-menu");
|
||
|
||
mobileMenuPanel.classList.remove("hide-content");
|
||
mobileMenuPanel.classList.add("topbar-mobile-panel");
|
||
});
|
||
|
||
headerCloseMenuButton.addEventListener("click", () => {
|
||
headerCloseMenuButton.classList.remove("topbar-mobile-menu");
|
||
headerCloseMenuButton.classList.add("hide-content");
|
||
|
||
mobileMenuPanel.classList.add("hide-content");
|
||
mobileMenuPanel.classList.remove("topbar-mobile-panel");
|
||
|
||
headerOpenMenuButton.classList.add("topbar-mobile-menu");
|
||
headerOpenMenuButton.classList.remove("hide-content");
|
||
});
|
||
</script>
|
||
|
||
<!-- END: this line ends content from: inc/topbar.default.html -->
|
||
<!-- START: this line starts content from: inc/header.default.html -->
|
||
|
||
<div class="header">
|
||
<a href="../../2011/zucker/index.html">
|
||
<img src="../../png/ioccc.png"
|
||
alt="IOCCC image by Matt Zucker"
|
||
width=300
|
||
height=110>
|
||
</a>
|
||
<h1>The International Obfuscated C Code Contest</h1>
|
||
<h2>2000/jarijyrki - Best of Show</h2>
|
||
</div>
|
||
|
||
<!-- END: this line ends content from: inc/header.default.html -->
|
||
<!-- START: this line starts content from: inc/navbar.mid.html -->
|
||
|
||
<div class="navbar">
|
||
<a class="Left" href="../dlowe/index.html">← dlowe</a>
|
||
<a class="Left" href="../index.html">↑ 2000 ↑</a>
|
||
<a class="Left" href="../natori/index.html">natori →</a>
|
||
<a class="Right" href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2000/jarijyrki/jarijyrki.c">C code</a>
|
||
<a class="Right" href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2000/jarijyrki/Makefile">Makefile</a>
|
||
<a class="Right" href="#inventory">Inventory</a>
|
||
<a class="Right" href="https://validator.w3.org/nu/?doc=https%3A%2F%2Fioccc-src.github.io%2Ftemp-test-ioccc%2F2000%2Fjarijyrki%2Findex.html">✓</a>
|
||
</div>
|
||
|
||
<!-- END: this line ends content from: inc/navbar.mid.html -->
|
||
<!-- START: this line starts content from: inc/before-content.default.html -->
|
||
|
||
<div class="content" id="content">
|
||
|
||
<!-- END: this line ends content from: inc/before-content.default.html -->
|
||
<!-- START: this line starts content for HTML phase 20 by: bin/output-index-author.sh via bin/md2html.sh -->
|
||
|
||
<!-- START: this line starts content generated by: bin/output-index-author.sh -->
|
||
|
||
<div id="author">
|
||
<h2 id="authors">Authors:</h2>
|
||
</div>
|
||
<ul>
|
||
<li>Name: <a href="../../authors.html#Jari_Arkko">Jari Arkko</a><br>
|
||
Location: <a href="../../location.html#SE">SE</a> - <em>Kingdom of Sweden</em> (<em>Sweden</em>)
|
||
<br><br></li>
|
||
<li>Name: <a href="../../authors.html#Jyrki_Holopainen">Jyrki Holopainen</a><br>
|
||
Location: <a href="../../location.html#FI">FI</a> - <em>Republic of Finland </em> (<em>Finland</em>)</li>
|
||
</ul>
|
||
|
||
<!-- END: next line ends content generated by: bin/output-index-author.sh -->
|
||
|
||
<!-- END: this line ends content for HTML phase 20 by: bin/output-index-author.sh via bin/md2html.sh -->
|
||
<!-- START: this line starts content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
|
||
|
||
<!-- BEFORE: 1st line of markdown file: 2000/jarijyrki/README.md -->
|
||
<h2 id="to-build">To build:</h2>
|
||
<pre><code> make</code></pre>
|
||
<p>You will need X11 header files and libraries installed to build this program.</p>
|
||
<h2 id="to-use">To use:</h2>
|
||
<pre><code> ./jarijyrki < infile.info > outfile.info</code></pre>
|
||
<p>You will need a system capable of displaying the results of X Window programs.</p>
|
||
<h2 id="try">Try:</h2>
|
||
<pre><code> ./jarijyrki < finance.sheet > myedits.info</code></pre>
|
||
<p>Then click on cell <code>C3</code> and type in the following:</p>
|
||
<pre><code> C5 C6 C7 @</code></pre>
|
||
<p>Click on cell <code>D4</code> and type in the following:</p>
|
||
<pre><code> C5 C6 C7 !</code></pre>
|
||
<p>Hit <code>ESC</code>.</p>
|
||
<p>Now try running:</p>
|
||
<pre><code> ./jarijyrki < myedits.info</code></pre>
|
||
<p>And observe that it matches what you had in the previous run!</p>
|
||
<p>NOTE: changing the dimension parameters (see the authors’ remarks) renders
|
||
existing spreadsheet files unusable.</p>
|
||
<h2 id="judges-remarks">Judges’ remarks:</h2>
|
||
<p>This entry is one of those that makes you wonder why some commercial software
|
||
needs tens to hundreds of <del>megabytes</del>gigabytes to install! This
|
||
entry does not simply do the basics, it includes graphing features. All this
|
||
program needs now is a <a href="../../1998/banks/index.html">1998/banks</a> flight simulator!</p>
|
||
<h2 id="authors-remarks">Author’s remarks:</h2>
|
||
<h3 id="overview">1. OVERVIEW</h3>
|
||
<p>This program is an X-Windows based spreadsheet program. The main functions it
|
||
supports are:</p>
|
||
<ul>
|
||
<li>Text cells</li>
|
||
<li>Numeric cells</li>
|
||
<li>Arithmetic operations: <code>+</code> <code>-</code> <code>*</code> <code>/</code></li>
|
||
<li>Pie charts</li>
|
||
<li>Histograms</li>
|
||
<li>Cell editing</li>
|
||
<li>Formula line</li>
|
||
<li>Dynamic recalculation</li>
|
||
<li>Error detection</li>
|
||
<li>Recursion detection</li>
|
||
<li>Movement within the spreadsheet with arrow keys</li>
|
||
<li>Movement within the spreadsheet with mouse</li>
|
||
<li>Scrolling</li>
|
||
<li>Loading and saving spreadsheets</li>
|
||
<li>Visual style configuration</li>
|
||
</ul>
|
||
<h3 id="usage-instructions">2. USAGE INSTRUCTIONS</h3>
|
||
<h4 id="quick-guide">2.1. Quick Guide</h4>
|
||
<h5 id="starting">Starting</h5>
|
||
<pre><code> ./jarijyrki < finance.sheet > myedits.info</code></pre>
|
||
<h5 id="stopping">Stopping</h5>
|
||
<p>Use the ESC key.</p>
|
||
<h5 id="movement">Movement</h5>
|
||
<p>Click the mouse or use the arrow keys.</p>
|
||
<h5 id="editing">Editing</h5>
|
||
<p>The currently selected cell is always in the edit state. Press any key to add a
|
||
character at the end of the formula; press backspace to delete the last one.</p>
|
||
<h5 id="formulas">Formulas</h5>
|
||
<pre><code> 123.45
|
||
A1 A2 +
|
||
B1 B2 -
|
||
C1 C2 *
|
||
D1 D2 /</code></pre>
|
||
<h5 id="pie-charts">Pie charts</h5>
|
||
<pre><code> A1 A2 A3 ...</code></pre>
|
||
<p>Finish the formula with <code>@</code> to create the pie chart.</p>
|
||
<h5 id="histograms">Histograms</h5>
|
||
<pre><code> A1 A2 A3 ...</code></pre>
|
||
<p>Finish the formula with <code>!</code> to create the histogram.</p>
|
||
<h4 id="starting-and-loading-spreadsheets">2.2. Starting and Loading Spreadsheets</h4>
|
||
<p>To start the spreadsheet program with an existing
|
||
spreadsheet, for instance <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2000/jarijyrki/finance.sheet">finance.sheet</a>, use the following
|
||
command line:</p>
|
||
<pre><code> ./jarijyrki < finance.sheet</code></pre>
|
||
<p>The file <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2000/jarijyrki/finance.sheet">finance.sheet</a> has been provided as an example. This
|
||
file contains a set of financial numbers and two graphical entities - a pie
|
||
chart and a histogram - based on them. We recommend starting the use of the
|
||
program from this file, as a way to study and learn the formula language
|
||
supported by the program.</p>
|
||
<p>To start the program with an empty sheet, use</p>
|
||
<pre><code> ./jarijyrki < /dev/null</code></pre>
|
||
<p>Alternatively, <code>/dev/zero</code> could be used but that may not exist on all systems.</p>
|
||
<h4 id="exiting-and-saving-spreadsheets">2.3. Exiting and Saving Spreadsheets</h4>
|
||
<p>Normally the user obviously wants to edit the spreadsheet. After the
|
||
spreadsheet program finishes, it outputs the edited spreadsheet to the standard
|
||
output. Hence, when the spreadsheet window has come up, you’ve made your
|
||
changes, and you press the ESC key the program finishes. To save the results in
|
||
a file, the following typical command line would be used:</p>
|
||
<pre><code> ./jarijyrki < finance.sheet > myedits.info</code></pre>
|
||
<h4 id="visual-overview">2.4. Visual Overview</h4>
|
||
<p>On top of the window the Formula Area shows the formula (or text) of the
|
||
currently selected cell. The program starts with <code>A1</code> as being the current cell.
|
||
Below the Formula Area is the Column Letters Area: <code>A</code>, <code>B</code>, and so on.
|
||
Correspondingly, on the left side of the window is the Row Numbers Area: <code>1</code>, <code>2</code>,
|
||
and so on. The rest of the window is dedicated to the actual spreadsheet cells.</p>
|
||
<p>The example spreadsheet, <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2000/jarijyrki/finance.sheet">finance.sheet</a>, provided with this
|
||
program contains two sets of numbers in the visible area of the spreadsheet. The
|
||
top set of numbers forms the product-by-product turnover breakdown of an
|
||
imaginary company. Below it is the yearly development of the company profits. On
|
||
the top right corner is a pie chart showing the turnover breakdown in graphical
|
||
form, and on the bottom right corner is a histogram showing the yearly
|
||
development. If you scroll the window you can see additional data from the
|
||
spreadsheet.</p>
|
||
<h4 id="movement-and-scrolling">2.5. Movement and Scrolling</h4>
|
||
<p>Use arrow keys to move left, right, up, and down among the cells. You may also
|
||
click the mouse on a cell to cause it to be activated as the current one.</p>
|
||
<p>Note that it is not possible to move around the formula; the formula can only be
|
||
edited from its end by adding or removing characters.</p>
|
||
<p>Going beyond the borders of the window results in scrolling the current view. It
|
||
is not possible to go up from the first row or left from the first column; but it is
|
||
possible to wrap back to start from the last row and last column.</p>
|
||
<h4 id="formulas-1">2.6. Formulas</h4>
|
||
<p>The spreadsheet formulas operate on a stack. Operands of an operation (e.g.
|
||
plus) are first pushed to the stack and then the operation is performed. If a
|
||
formula on a cell produces <em>exactly</em> one result then that is shown in the cell.
|
||
Otherwise, the formula is interpreted as a string and shown as it is.</p>
|
||
<p>An example of a simple formula, simply specifying a number is</p>
|
||
<pre><code> 123.50</code></pre>
|
||
<p>Another simple formula refers to a cell:</p>
|
||
<pre><code> A1</code></pre>
|
||
<p>This particular example formula referred to the first cell of the first row in
|
||
the spreadsheet. Arithmetic operations require both arguments:</p>
|
||
<pre><code> A1 A2 +
|
||
B1 B2 *
|
||
C1 C2 -
|
||
D1 D2 /</code></pre>
|
||
<p>More complex formulae can be constructed by combining these simple ones:</p>
|
||
<pre><code> A1 A2 + 2 *</code></pre>
|
||
<p>This example calculates the sum of the cells <code>A1</code> and <code>A2</code>, and then multiplies
|
||
the result by two.</p>
|
||
<p>The currently selected cell is always in a state where it can be edited. Press
|
||
any key to add a character at the end of the formula; press backspace to delete
|
||
the last character. Any resulting recalculations are immediately visible. (Note
|
||
how much nicer this feature is as you get used to it, compared to the behaviour
|
||
of certain commercial spreadsheet programs.)</p>
|
||
<h4 id="graphical-formulas">2.7. Graphical Formulas</h4>
|
||
<p>The program supports two types of graphical representations of the data in the
|
||
cells: pie charts and histograms. The pie chart can consist of any number of
|
||
slices, and is constructed by putting the pie amounts in stack and using the <code>@</code>
|
||
operator. The program automatically computes the relative size of the slices.</p>
|
||
<pre><code> A1 A2 A3 A4 @</code></pre>
|
||
<p>This example would draw a pie chart of four cells, <code>A1</code> to <code>A4</code>.
|
||
The pie formula is shown above the pie for reference.</p>
|
||
<p>The histograms are drawn in a similar manner, by using the <code>!</code> operator:</p>
|
||
<pre><code> A1 A2 A3 A3 !</code></pre>
|
||
<h4 id="errors-in-formulas">2.8. Errors in Formulas</h4>
|
||
<p>The program detects recursive reference attempts, references cells not
|
||
containing a numerical value, attempts to define formulas with zero, two, or
|
||
more results remaining on the stack, and syntax errors of formulas. Note that
|
||
typically as the user types in a formula, it toggles between valid and invalid
|
||
forms dynamically as all single character changes are immediately taken in
|
||
account. This is not dangerous, just complete the formula and view the results.</p>
|
||
<p>Errors are signalled by showing the formula on a cell instead of the numerical
|
||
value supposedly returned by it.</p>
|
||
<p>Division by zero results in an IEEE Inf number.</p>
|
||
<h4 id="compilation-parameters-and-configuration">2.9. Compilation Parameters and Configuration</h4>
|
||
<p>This section explains the meaning and rationale for the
|
||
compile time parameters:</p>
|
||
<hr style="width:10%;text-align:left;margin-left:0">
|
||
<pre><code> -DC=XK_Up
|
||
-DL=XK_Down
|
||
-DO=XK_Left
|
||
-DV=XK_Right
|
||
-DR=XK_Escape
|
||
-D_=XK_BackSpace</code></pre>
|
||
<p>These definitions can be used to change the user interface of the program with
|
||
respect to special keys. The first four define the movement operations and
|
||
the latter two define the program termination and character deletion keys.
|
||
Typical modifications to these parameters include changing character deletion to
|
||
the key the user is most familiar with, which could also be <code>XK_Delete</code>.
|
||
<code>XK_Escape</code> might be better in some cases as one of the function keys. Likewise
|
||
for the arrow keys.</p>
|
||
<pre><code> -DU=40</code></pre>
|
||
<p>This parameter defines the maximum dimensions of the stored and handled
|
||
spreadsheet (but see section 4.4 for a warning about changing this without
|
||
thinking about the consequences!).</p>
|
||
<pre><code> -DT=98</code></pre>
|
||
<p>This parameter defines the maximum length of a formula in one cell. Note the
|
||
warning in section 4.4.</p>
|
||
<pre><code> -Dz="(T+1)*U*U"</code></pre>
|
||
<p>Defines the number of bytes in a spreadsheet file. The number is automatically
|
||
adjusted when the spreadsheet size parameters are changed. Note the warning in
|
||
section 4.4.</p>
|
||
<pre><code> -DQ=80
|
||
-DS=20</code></pre>
|
||
<p>These two parameters define the visual dimensions of a cell. Changing these may
|
||
be necessary on your system if the default font sizes differ from those in the
|
||
systems we’ve tested the program with. <code>S</code> also defines the size of the left
|
||
(<code>x1</code>) and top margins (<code>x2</code>).</p>
|
||
<pre><code> -DN=10</code></pre>
|
||
<p>This is the x-indentation of text inside a cell. Changing this may be necessary
|
||
to suit other font sizes and different X environments.</p>
|
||
<pre><code> -DB=5</code></pre>
|
||
<p>This is the y-indentation of text inside a cell. Changing this may be necessary
|
||
to suit other font sizes and different X environments.</p>
|
||
<pre><code> -DG=23</code></pre>
|
||
<p>This parameter is the number of cell rows visible at one time.</p>
|
||
<pre><code> -Dp=7</code></pre>
|
||
<p>This parameter is one smaller than the number of cells columns visible at one
|
||
time.</p>
|
||
<pre><code> -DM="((p+1)*Q)+S"
|
||
-DH="(G*S)+S+S"</code></pre>
|
||
<p>These parameters are the window x and y sizes of the spreadsheet program window.
|
||
With these definitions, they are automatically reflecting the
|
||
at-one-time-visible cell row/column amounts. Hence, we recommend changing the
|
||
<code>G</code> and <code>p</code> parameters if you want to change the window size in normal cases.
|
||
Experimentation with <code>M</code> and <code>H</code> can be used to get other types of effect such
|
||
as adding a margin also at the bottom of the window.</p>
|
||
<h3 id="implementation">3. IMPLEMENTATION</h3>
|
||
<p>It’s better to just read the code. But note the use of stack in the
|
||
implementation of <code>@</code> and <code>!</code> operators, and note the use of <code>*#i</code> in one of the
|
||
macros (can you see why?). Extreme compression has been the key in writing this
|
||
program. With compression comes the use of ASCII code numbers instead of
|
||
character constants and so on. (This particular obfuscation is not really a
|
||
desirable one as it is not completely portable. But it certainly was a necessary
|
||
one.)</p>
|
||
<p>What does <code>i(=)</code> do or does it do anything? Why?</p>
|
||
<h3 id="warnings-and-caveats">4. WARNINGS AND CAVEATS</h3>
|
||
<h4 id="x11-paths-in-compilation">4.1. X11 Paths in Compilation</h4>
|
||
<p>The given Makefile may have to be edited to insert correct library and include
|
||
file path names.</p>
|
||
<h4 id="font-sizes">4.2. Font Sizes</h4>
|
||
<p>We’ve tested the program with a limited amount of X servers. It is possible that
|
||
other systems use default font sizes or other parameters that cause the visual
|
||
looks to be different or perhaps even unusable; if this happens, changing
|
||
compile-time parameters explained in section 2.8 might help.</p>
|
||
<h4 id="screen-sizes">4.3. Screen Sizes</h4>
|
||
<p>The size of the window as it comes up - a parameter as defined in compile-time -
|
||
has been set suitable for a small laptop screen. Larger screens may benefit
|
||
from setting these parameters higher. Smaller screens require changing the
|
||
parameters so that all of the window becomes visible.</p>
|
||
<h4 id="spreadsheet-dimension-changes">4.4. Spreadsheet Dimension Changes</h4>
|
||
<p>The size of the read, manipulated, and stored spreadsheets is defined by a
|
||
compile time parameter. However, changing this parameter is not entirely
|
||
trivial. The following constraints apply:</p>
|
||
<ul>
|
||
<li><p>Horizontal (alphabet) dimension handling will always be A to Z regardless of
|
||
the actual allocated memory area.</p></li>
|
||
<li><p>Any change in the dimension parameter renders existing spreadsheet files
|
||
unusable.</p></li>
|
||
</ul>
|
||
<h4 id="ascii-reliance">4.5. ASCII Reliance</h4>
|
||
<p>The software relies on running on ASCII-based code system. Why? Because <code>32</code> is
|
||
shorter than <code>' '</code>.</p>
|
||
<h4 id="command-line-single-character-defines">4.6. Command Line Single Character Defines</h4>
|
||
<p>The use of single character (e.g. <code>G</code> or <code>p</code>) for a <code>-D</code> option might break
|
||
certain systems, if those characters are used in the included X header files in
|
||
certain kinds of places. If this happens, you may move the offending character
|
||
to a new name by exchanging it on the command line and in the program with
|
||
another character. Note that there are <em>no</em> free characters in the program
|
||
currently.</p>
|
||
<!--
|
||
|
||
Copyright © 1984-2024 by Landon Curt Noll. All Rights Reserved.
|
||
|
||
You are free to share and adapt this file under the terms of this license:
|
||
|
||
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
|
||
|
||
For more information, see:
|
||
|
||
https://creativecommons.org/licenses/by-sa/4.0/
|
||
|
||
-->
|
||
<!-- AFTER: last line of markdown file: 2000/jarijyrki/README.md -->
|
||
|
||
<!-- END: this line ends content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
|
||
<!-- START: this line starts content for HTML phase 22 by: bin/output-index-inventory.sh via bin/md2html.sh -->
|
||
|
||
<!-- START: this line starts content generated by: bin/output-index-inventory.sh -->
|
||
|
||
<div id="inventory">
|
||
<h1 id="inventory-for-2000jarijyrki">Inventory for 2000/jarijyrki</h1>
|
||
</div>
|
||
<h2 id="primary-files">Primary files</h2>
|
||
<ul>
|
||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2000/jarijyrki/jarijyrki.c">jarijyrki.c</a> - entry source code</li>
|
||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2000/jarijyrki/Makefile">Makefile</a> - entry Makefile</li>
|
||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2000/jarijyrki/jarijyrki.orig.c">jarijyrki.orig.c</a> - original source code</li>
|
||
</ul>
|
||
<h2 id="secondary-files">Secondary files</h2>
|
||
<ul>
|
||
<li><a href="2000_jarijyrki.tar.bz2">2000_jarijyrki.tar.bz2</a> - download entry tarball</li>
|
||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2000/jarijyrki/README.md">README.md</a> - markdown source for this web page</li>
|
||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2000/jarijyrki/.entry.json">.entry.json</a> - entry summary and manifest in JSON</li>
|
||
<li><a href="finance.sheet">finance.sheet</a> - example spreadsheet file</li>
|
||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2000/jarijyrki/.gitignore">.gitignore</a> - list of files that should not be committed under git</li>
|
||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2000/jarijyrki/.path">.path</a> - directory path from top level directory</li>
|
||
<li><a href="index.html">index.html</a> - this web page</li>
|
||
</ul>
|
||
<hr style="width:10%;text-align:left;margin-left:0">
|
||
<h4>
|
||
Jump to: <a href="#">top</a>
|
||
</h4>
|
||
|
||
<!-- END: next line ends content generated by: bin/output-index-inventory.sh -->
|
||
|
||
<!-- END: this line ends content for HTML phase 22 by: bin/output-index-inventory.sh via bin/md2html.sh -->
|
||
<!-- START: this line starts content from: inc/after-content.default.html -->
|
||
|
||
</div>
|
||
|
||
<!-- END: this line ends content from: inc/after-content.default.html -->
|
||
<!-- START: this line starts content from: inc/footer.inventory.html -->
|
||
|
||
<!--
|
||
|
||
Copyright © 1984-2024 by Landon Curt Noll. All Rights Reserved.
|
||
|
||
You are free to share and adapt this file under the terms of this license:
|
||
|
||
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
|
||
|
||
For more information, see:
|
||
|
||
https://creativecommons.org/licenses/by-sa/4.0/
|
||
|
||
-->
|
||
|
||
<div class="footer">
|
||
|
||
<div id="copyright"><h3>Copyright © 1984-2024 by Landon Curt Noll:
|
||
<a href="https://creativecommons.org/faq/#what-does-some-rights-reserved-mean"
|
||
target="_blank"
|
||
rel="license noopener noreferrer">Some Rights Reserved</a></h3>
|
||
<p>
|
||
This work is <b>licensed by Landon Curt Noll</b> under
|
||
<b><a href="https://creativecommons.org/licenses/by-sa/4.0/?ref=chooser-v1"
|
||
target="_blank"
|
||
rel="license noopener noreferrer"
|
||
style="display:inline-block;">CC BY-SA 4.0</a></b>.
|
||
<img style="height:22px!important;margin-left:3px;vertical-align:text-bottom;"
|
||
src="../../png/cc.png"
|
||
alt="cc inside circle symbol">
|
||
<img style="height:22px!important;margin-left:3px;vertical-align:text-bottom;"
|
||
src="../../png/by.png"
|
||
alt="person inside circle symbol">
|
||
<img style="height:22px!important;margin-left:3px;vertical-align:text-bottom;"
|
||
src="../../png/sa.png"
|
||
alt="arrow looping back on itself inside circle symbol"><br>
|
||
You should <b>carefully review</b> the
|
||
<b><a href="https://creativecommons.org/licenses/by-sa/4.0/legalcode.en"
|
||
target="_blank"
|
||
rel="license noopener noreferrer">CC BY-SA 4.0 LEGAL CODE</a></b>
|
||
before using the licensed material.<br>
|
||
You may wish to review the
|
||
<b><a href="../../license.html"
|
||
target="_blank"
|
||
rel="license noopener noreferrer">highlights of some of the key features and terms</a></b>
|
||
of <b>CC BY-SA 4.0</b>.<br>
|
||
</p>
|
||
</div>
|
||
|
||
<div id="coda"><h3>Coda</h3>
|
||
<p>
|
||
<a href="https://validator.w3.org/nu/?doc=https%3A%2F%2Fioccc-src.github.io%2Ftemp-test-ioccc%2F2000%2Fjarijyrki%2Findex.html" rel="nofollow">Nu HTML check this web page</a><br>
|
||
<a href="#top">Jump to top</a> <a href="#content">Jump to Content</a> <a href="#inventory">Jump to Inventory</a><br>
|
||
</p>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
<!-- END: this line ends content from: inc/footer.inventory.html -->
|
||
<!-- START: this line starts content from: inc/bottom.default.html -->
|
||
|
||
</body>
|
||
</html>
|
||
|
||
<!-- END: this line ends content from: inc/bottom.default.html -->
|