Merge pull request #1563 from xexyl/borsanyi11
This commit is contained in:
5 files changed
+81
-7
No files matched your search
+16
-5
@@ -4,6 +4,16 @@
|
|||||||
make
|
make
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Bugs and (Mis)features:
|
||||||
|
|
||||||
|
The current status of this entry is:
|
||||||
|
|
||||||
|
```
|
||||||
|
STATUS: INABIAF - please **DO NOT** fix
|
||||||
|
```
|
||||||
|
|
||||||
|
For more detailed information see [2011 borsanyi in bugs.md](/bugs.md#2011-borsanyi).
|
||||||
|
|
||||||
|
|
||||||
## To use:
|
## To use:
|
||||||
|
|
||||||
@@ -15,9 +25,7 @@ make
|
|||||||
### Try:
|
### Try:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
./borsanyi < data.1
|
./try.sh
|
||||||
./borsanyi < data.2
|
|
||||||
./borsanyi < data.3
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
@@ -27,7 +35,8 @@ This is a nice quick [histogram](https://en.wikipedia.org/wiki/Histogram)
|
|||||||
plotter. A useful utility when you need to look at the distribution of some
|
plotter. A useful utility when you need to look at the distribution of some
|
||||||
data.
|
data.
|
||||||
|
|
||||||
Here are some challenges:
|
|
||||||
|
### Challenges:
|
||||||
|
|
||||||
You can modify the number of histogram
|
You can modify the number of histogram
|
||||||
[bins](https://en.wikipedia.org/wiki/Data_binning) and the scaling of the
|
[bins](https://en.wikipedia.org/wiki/Data_binning) and the scaling of the
|
||||||
@@ -38,7 +47,7 @@ histogram bins is missing. The source contains no arrays and it does not
|
|||||||
use `malloc(3)` or `alloca(3)`. How does it build the histogram?
|
use `malloc(3)` or `alloca(3)`. How does it build the histogram?
|
||||||
|
|
||||||
While the input does not need to be sorted, the histogram output is sorted.
|
While the input does not need to be sorted, the histogram output is sorted.
|
||||||
How does it put the data into buckets? Why does it `fork()` 22 times?
|
How does it put the data into buckets? Why does it `fork(2)` 22 times?
|
||||||
|
|
||||||
|
|
||||||
## Author's remarks:
|
## Author's remarks:
|
||||||
@@ -49,6 +58,7 @@ histogram. I am all too often logged in to a remote machine with
|
|||||||
slow X connection, and a terminal-based program would be of
|
slow X connection, and a terminal-based program would be of
|
||||||
great help.
|
great help.
|
||||||
|
|
||||||
|
|
||||||
### Limitations
|
### Limitations
|
||||||
|
|
||||||
* I optimized the output for the data I had around, you might want to adjust
|
* I optimized the output for the data I had around, you might want to adjust
|
||||||
@@ -62,6 +72,7 @@ great help.
|
|||||||
* Could rounding errors cause the omission of the highest bin? There might be
|
* Could rounding errors cause the omission of the highest bin? There might be
|
||||||
empty bins at the edges.
|
empty bins at the edges.
|
||||||
|
|
||||||
|
|
||||||
### Obfuscation
|
### Obfuscation
|
||||||
|
|
||||||
* The program follows a rather unconventional approach to the task
|
* The program follows a rather unconventional approach to the task
|
||||||
|
|||||||
@@ -8,5 +8,5 @@ t )/22,s= pow(10, (int)( log10(a)) /*It is
|
|||||||
a simple tool to quickly analyze data. */
|
a simple tool to quickly analyze data. */
|
||||||
- 2),s=t- (a =s*( int)(a/s ))/2,p(t, s,(int)(
|
- 2),s=t- (a =s*( int)(a/s ))/2,p(t, s,(int)(
|
||||||
( a+M-t)/ a)):p(t >M|x<t?x :t,t>M|x >M?x:M ,--n)+(x
|
( a+M-t)/ a)):p(t >M|x<t?x :t,t>M|x >M?x:M ,--n)+(x
|
||||||
> s&&x <= s+a); } main(j){ j==1?j=p (1,0,0) ,printf(
|
> s&&x <= s+a); } main(j,k)char**k;{ j==1?j=p (1,0,0) ,printf(
|
||||||
"%+12g %4d",s+a/2,j,wait(NULL)),main(j*400/n):putchar(35-25*!j)&' '&&main(j+1);}
|
"%+12g %4d",s+a/2,j,wait(NULL)),main(j*400/n,k):putchar(35-25*!j)&' '&&main(j+1,k);}
|
||||||
Executable
+28
@@ -0,0 +1,28 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
#
|
||||||
|
# try.sh - demonstrate IOCCC winner 2011/borsanyi
|
||||||
|
#
|
||||||
|
|
||||||
|
# make sure CC is set so that when we do make CC="$CC" it isn't empty. Doing it
|
||||||
|
# this way allows us to have the user specify a different compiler in an easy
|
||||||
|
# way.
|
||||||
|
if [[ -z "$CC" ]]; then
|
||||||
|
CC="cc"
|
||||||
|
fi
|
||||||
|
|
||||||
|
make CC="$CC" all >/dev/null || exit 1
|
||||||
|
|
||||||
|
# clear screen after compilation so that only the entry is shown
|
||||||
|
clear
|
||||||
|
|
||||||
|
|
||||||
|
read -r -n 1 -p "Press any key to run: ./borsanyi < data.1: "
|
||||||
|
./borsanyi < data.1
|
||||||
|
echo 1>&2
|
||||||
|
|
||||||
|
read -r -n 1 -p "Press any key to run: ./borsanyi < data.2: "
|
||||||
|
./borsanyi < data.2
|
||||||
|
echo 1>&2
|
||||||
|
|
||||||
|
read -r -n 1 -p "Press any key to run: ./borsanyi < data.3: "
|
||||||
|
./borsanyi < data.3
|
||||||
@@ -2435,6 +2435,31 @@ There was no IOCCC in 2010.
|
|||||||
# 2011
|
# 2011
|
||||||
|
|
||||||
|
|
||||||
|
## 2011 dlowe
|
||||||
|
|
||||||
|
### STATUS: INABIAF - please **DO NOT** fix
|
||||||
|
### Source code: [2011/borsanyi/borsanyi.c](2011/borsanyi/borsanyi.c)
|
||||||
|
### Information: [2011/borsanyi/README.md](2011/borsanyi/README.md)
|
||||||
|
|
||||||
|
For a great amount of data points the program will crash, depending on your
|
||||||
|
available stack space.
|
||||||
|
|
||||||
|
Giving too few (distinct) points can also cause a crash or division by zero.
|
||||||
|
|
||||||
|
The program expects plain numbers separated by whitespace.
|
||||||
|
|
||||||
|
This program assumes ASCII.
|
||||||
|
|
||||||
|
If you give the program any arg it might flood the screen.
|
||||||
|
|
||||||
|
It requires both syscalls `fork(2)` and `wait(2)`.
|
||||||
|
|
||||||
|
Giving any arg to the program is likely to flood your screen.
|
||||||
|
|
||||||
|
Rounding errors might cause an omission in the highest bin. There might be empty
|
||||||
|
bins at the edges.
|
||||||
|
|
||||||
|
|
||||||
## 2011 dlowe
|
## 2011 dlowe
|
||||||
|
|
||||||
### STATUS: missing or dead link - please provide them
|
### STATUS: missing or dead link - please provide them
|
||||||
@@ -2462,6 +2487,7 @@ tends to result in empty output.
|
|||||||
If you want to try and fix this (mis)feature, you are welcome to try.
|
If you want to try and fix this (mis)feature, you are welcome to try.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## 2011 richards
|
## 2011 richards
|
||||||
|
|
||||||
### STATUS: doesn't work with some platforms - please help us fix
|
### STATUS: doesn't work with some platforms - please help us fix
|
||||||
|
|||||||
@@ -3215,6 +3215,15 @@ have been a problem in linux with the old `int`s but this is no longer known.
|
|||||||
# <a name="2011"></a>2011
|
# <a name="2011"></a>2011
|
||||||
|
|
||||||
|
|
||||||
|
## [2011/borsanyi](2011/borsanyi/borsanyi.c) ([README.md](2011/borsanyi/README.md]))
|
||||||
|
|
||||||
|
Cody, out of an abundance of caution, added a second arg to `main()` as some
|
||||||
|
versions of clang complain about not only the type of each arg to `main()` but
|
||||||
|
the number of args as well.
|
||||||
|
|
||||||
|
Cody also added the [try.sh](2011/borsanyi/try.sh) script.
|
||||||
|
|
||||||
|
|
||||||
## [2011/goren](2011/goren/goren.c) ([README.md](2011/goren/README.md]))
|
## [2011/goren](2011/goren/goren.c) ([README.md](2011/goren/README.md]))
|
||||||
|
|
||||||
Cody fixed this for macOS. Before the fix it segfaulted. It worked fine under
|
Cody fixed this for macOS. Before the fix it segfaulted. It worked fine under
|
||||||
|
|||||||
Reference in new issue
Block a user