The navigation bar for a winning entry now has a "_Original C_" link
(between the ✅ and the Inventory on the right hand side) so that one
may easily view the original C code that was submitted for IOCCC judging.
Ran `make www timestamp` to perform the above.
850 lines
34 KiB
HTML
850 lines
34 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 authors
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../bugs.html" class="sub-item-link">
|
||
Bugs and (mis)features
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../faq.html#fix_an_entry" class="sub-item-link">
|
||
Fixing entries
|
||
</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">
|
||
Status
|
||
</span>
|
||
|
||
<div class="sub-item">
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../news.html" class="sub-item-link">
|
||
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/rules.html" class="sub-item-link">
|
||
IOCCC rules
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../next/guidelines.html" class="sub-item-link">
|
||
IOCCC guidelines
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../markdown.html" class="sub-item-link">
|
||
Markdown guidelines
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../SECURITY.html" class="sub-item-link">
|
||
Security policy
|
||
</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">
|
||
Frequently asked questions
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../quick-start.html#enter" class="sub-item-link">
|
||
Enter the IOCCC
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../faq.html#compiling" class="sub-item-link">
|
||
Compiling entries
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../faq.html#running_entries" class="sub-item-link">
|
||
Running entries
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../faq.html#help" class="sub-item-link">
|
||
How to help
|
||
</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">
|
||
Home page
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../social.html" class="sub-item-link">
|
||
IOCCC social media
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../about.html" class="sub-item-link">
|
||
About the IOCCC
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../judges.html" class="sub-item-link">
|
||
The judges
|
||
</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="../../contact.html" class="sub-item-link">
|
||
Contact us
|
||
</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">
|
||
Winning authors
|
||
</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>
|
||
|
||
<a class="mobile-submenu-item" href="../../faq.html#fix_an_entry">
|
||
Fixing entries
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../../faq.html#fix_author">
|
||
Updating author info
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../../thanks-for-help.html">
|
||
Thanks for the help
|
||
</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="../../news.html">
|
||
News
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../../status.html">
|
||
Contest status
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../../next/rules.html">
|
||
IOCCC rules
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../../next/guidelines.html">
|
||
IOCCC guidelines
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../../markdown.html">
|
||
Markdown guidelines
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../../SECURITY.html">
|
||
Security policy
|
||
</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="../../quick-start.html#enter">
|
||
Enter the IOCCC
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../../faq.html#compiling">
|
||
Compiling entries
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../../faq.html#running_entries">
|
||
Running entries
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../../faq.html#help">
|
||
How to help
|
||
</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">
|
||
Home page
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../../social.html">
|
||
IOCCC social media
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../../about.html">
|
||
About the IOCCC
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../../judges.html">
|
||
The judges
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../../contact.html">
|
||
Contact us
|
||
</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>
|
||
<h3>An X-based spreadsheet program with graphing features!</h3>
|
||
</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">← 2000/dlowe</a>
|
||
<a class="Left" href="../index.html">↑ 2000 ↑</a>
|
||
<a class="Left" href="../natori/index.html">2000/natori →</a>
|
||
<a class="Right" href="https://github.com/ioccc-src/winner/blob/master/2000/jarijyrki/jarijyrki.c">C code</a>
|
||
<a class="Right" href="https://github.com/ioccc-src/winner/blob/master/2000/jarijyrki/Makefile">Makefile</a>
|
||
<a class="Right" href="#inventory">Inventory</a>
|
||
<a class="Right" href="https://github.com/ioccc-src/winner/blob/master/2000/jarijyrki/jarijyrki.orig.c">Original C</a>
|
||
<a class="Right" href="https://validator.w3.org/nu/?doc=https%3A%2F%2Fwww.ioccc.org%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><strong>NOTE</strong>: this entry requires the <code>X11/Xlib.h</code> header file and the X11 library to
|
||
compile. For more information see the
|
||
FAQ on “<a href="../../faq.html#X11">X11</a>”.</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><strong>NOTE</strong>: 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="finance.sheet">finance.sheet</a>, use the following
|
||
command line:</p>
|
||
<pre><code> ./jarijyrki < finance.sheet</code></pre>
|
||
<p>The file <a href="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="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/winner/blob/master/2000/jarijyrki/jarijyrki.c">jarijyrki.c</a> - entry source code</li>
|
||
<li><a href="https://github.com/ioccc-src/winner/blob/master/2000/jarijyrki/Makefile">Makefile</a> - entry Makefile</li>
|
||
<li><a href="https://github.com/ioccc-src/winner/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/winner/blob/master/2000/jarijyrki/README.md">README.md</a> - markdown source for this web page</li>
|
||
<li><a href="https://github.com/ioccc-src/winner/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/winner/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/winner/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-2025 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-2025 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%2Fwww.ioccc.org%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 -->
|