Merge pull request #1026 from xexyl/2013-dlowe-updates
This commit is contained in:
7 files changed
+96
-12
No files matched your search
@@ -1,3 +1,5 @@
|
|||||||
dlowe
|
dlowe
|
||||||
dlowe.orig
|
dlowe.orig
|
||||||
|
fun
|
||||||
prog.orig
|
prog.orig
|
||||||
|
sparkl
|
||||||
+4
-1
@@ -109,7 +109,7 @@ PROG= ${ENTRY}
|
|||||||
#
|
#
|
||||||
OBJ= ${PROG}.o
|
OBJ= ${PROG}.o
|
||||||
DATA=
|
DATA=
|
||||||
TARGET= ${PROG}
|
TARGET= ${PROG} sparkl fun
|
||||||
#
|
#
|
||||||
ALT_OBJ=
|
ALT_OBJ=
|
||||||
ALT_TARGET=
|
ALT_TARGET=
|
||||||
@@ -129,6 +129,9 @@ all: data ${TARGET}
|
|||||||
${PROG}: ${PROG}.c
|
${PROG}: ${PROG}.c
|
||||||
${CC} ${CFLAGS} $< -o $@ ${LDFLAGS}
|
${CC} ${CFLAGS} $< -o $@ ${LDFLAGS}
|
||||||
|
|
||||||
|
sparkl: ${PROG}
|
||||||
|
${LN} -sf ${PROG} $@
|
||||||
|
|
||||||
# alternative executable
|
# alternative executable
|
||||||
#
|
#
|
||||||
alt: data ${ALT_TARGET}
|
alt: data ${ALT_TARGET}
|
||||||
|
|||||||
+52
-11
@@ -22,11 +22,23 @@ make
|
|||||||
```sh
|
```sh
|
||||||
./dlowe 0 1 2 3 4 5 6 7
|
./dlowe 0 1 2 3 4 5 6 7
|
||||||
./dlowe 16 32 64 128
|
./dlowe 16 32 64 128
|
||||||
|
./dlowe 16 32 64 128 256
|
||||||
|
./dlowe 16 32 64 128 256 512
|
||||||
|
|
||||||
|
echo "sparkline of file sizes: $(wc -c * | awk '{print $1}' | xargs ./dlowe)" # or ./slen.sh
|
||||||
|
|
||||||
echo sparkline of file sizes: `wc -c * | awk '{print $1}' | xargs ./dlowe`
|
|
||||||
./dlowe 0
|
./dlowe 0
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## INABIAF - it's not a bug it's a feature! :-)
|
||||||
|
|
||||||
|
This program will very likely crash or draw something funny with 0 args. Then
|
||||||
|
again it might not. :-) This is not a bug and should NOT be fixed.
|
||||||
|
|
||||||
|
Ask yourself the following questions: when will it crash, when will it draw
|
||||||
|
something funny (or will it ? :-) ) and when will it do nothing?
|
||||||
|
|
||||||
|
|
||||||
## Judges' remarks:
|
## Judges' remarks:
|
||||||
|
|
||||||
We liked how this entry used Unicode, specifically UTF-8, in a somewhat obfuscated way.
|
We liked how this entry used Unicode, specifically UTF-8, in a somewhat obfuscated way.
|
||||||
@@ -34,7 +46,7 @@ We liked how this entry used Unicode, specifically UTF-8, in a somewhat obfuscat
|
|||||||
Also, why doesn't it crash, and produces a correct output when called with one argument
|
Also, why doesn't it crash, and produces a correct output when called with one argument
|
||||||
or when all arguments are equal?
|
or when all arguments are equal?
|
||||||
|
|
||||||
For extra fun, compile and run
|
For extra fun, compile and run [fun.c](fun.c):
|
||||||
|
|
||||||
```c
|
```c
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
@@ -45,37 +57,66 @@ int main() {
|
|||||||
|
|
||||||
with gcc and clang.
|
with gcc and clang.
|
||||||
|
|
||||||
|
|
||||||
With GCC (4.7.2), we get
|
With GCC (4.7.2), we get
|
||||||
|
|
||||||
-2147483648 -2147483648 -2147483648
|
```
|
||||||
|
-2147483648 -2147483648 -2147483648
|
||||||
|
```
|
||||||
|
|
||||||
and with clang (3.3), we get
|
and with clang (3.3), we get
|
||||||
|
|
||||||
-2147483648 0 2147483647
|
```
|
||||||
|
-2147483648 0 2147483647
|
||||||
|
```
|
||||||
|
|
||||||
|
and with Apple clang version 15.0.0 (clang-1500.0.40.1) we get:
|
||||||
|
|
||||||
|
```
|
||||||
|
1840985120 -2033041452 35979112
|
||||||
|
```
|
||||||
|
|
||||||
Which one is correct? :)
|
Which one is correct? :)
|
||||||
|
|
||||||
|
NOTE: `make all` will compile [fun.c](fun.c) but to provide a different compiler
|
||||||
|
you can do something like:
|
||||||
|
|
||||||
|
|
||||||
|
```sh
|
||||||
|
make CC=clang fun
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
## Author's remarks:
|
## Author's remarks:
|
||||||
|
|
||||||
### sparkl
|
### sparkl
|
||||||
|
|
||||||
A tiny implementation of command-line 'sparkline' data visualization.
|
A tiny implementation of command-line
|
||||||
|
[sparkline](https://en.wikipedia.org/wiki/Sparkline) data visualization.
|
||||||
|
|
||||||
### Synopsis
|
### Synopsis
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
$ sparkl 0 1 2 3 4 5 6 7
|
$ ./sparkl 0 1 2 3 4 5 6 7
|
||||||
▁▂▃▄▅▆▇▉
|
▁▂▃▄▅▆▇▉
|
||||||
|
|
||||||
$ echo sparkline of file lengths: `wc -c * | awk '{print $1}' | xargs sparkl`
|
$ echo "sparkline of file lengths: $(wc -c * | awk '{print $1}' | xargs ./sparkl)"
|
||||||
sparkline of file sizes: ▁▁▁▃▃▂▁▂▁▁▉
|
sparkline of file sizes: ▁▁▁▃▃▂▁▂▁▁▉
|
||||||
```
|
```
|
||||||
|
|
||||||
|
NOTE: this has been provided in [slen.sh](slen.sh) so you can try:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
./slen.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
instead.
|
||||||
|
|
||||||
### Description
|
### Description
|
||||||
|
|
||||||
This is a handy little tool for visualizing numeric series from the
|
This is a handy little tool for visualizing numeric series from the
|
||||||
command-line, using 'sparklines'. Pass it a numeric series as arguments, and
|
command line, using sparklines. Pass it a numeric series as arguments, and
|
||||||
sparkl will display a sparkline graph, which you can use to very quickly get a
|
`sparkl` will display a sparkline graph, which you can use to very quickly get a
|
||||||
sense of the shape of your data.
|
sense of the shape of your data.
|
||||||
|
|
||||||
### Limitations
|
### Limitations
|
||||||
@@ -83,7 +124,7 @@ sense of the shape of your data.
|
|||||||
* Crashes with 0 arguments. It'd be trivial to fix, but adds a few bytes to the
|
* Crashes with 0 arguments. It'd be trivial to fix, but adds a few bytes to the
|
||||||
code.
|
code.
|
||||||
* Produces bogus graphs when given > about 5000 arguments.
|
* Produces bogus graphs when given > about 5000 arguments.
|
||||||
* Only works if your terminal is utf-8 and your font supports the 8 glyphs
|
* Only works if your terminal is UTF-8 and your font supports the 8 glyphs
|
||||||
used.
|
used.
|
||||||
* Produces a few harmless compiler warnings.
|
* Produces a few harmless compiler warnings.
|
||||||
|
|
||||||
@@ -92,7 +133,7 @@ sense of the shape of your data.
|
|||||||
The code is very terse. I was torn between submitting this version, and a
|
The code is very terse. I was torn between submitting this version, and a
|
||||||
one-line version compressed using a couple more -D flags.
|
one-line version compressed using a couple more -D flags.
|
||||||
|
|
||||||
Hand-rolled utf-8 sequence, magic numbers (what's that 7 for?), meaningless
|
Hand-rolled UTF-8 sequence, magic numbers (what's that 7 for?), meaningless
|
||||||
variable names, reused variables, and so on.
|
variable names, reused variables, and so on.
|
||||||
|
|
||||||
### Acknowledgements
|
### Acknowledgements
|
||||||
|
|||||||
@@ -0,0 +1,5 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
int main() {
|
||||||
|
printf("%d %d %d\n", (int)(-1.0/0.0), (int)(0.0/0.0), (int)(1.0/0.0));
|
||||||
|
}
|
||||||
|
|
||||||
Executable
+3
@@ -0,0 +1,3 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
echo "sparkline of file lengths: $(wc -c ./* | awk '{print $1}' | xargs ./sparkl)"
|
||||||
@@ -1840,6 +1840,19 @@ The file is `hd.img`.
|
|||||||
|
|
||||||
Do you have it? Please provide it!
|
Do you have it? Please provide it!
|
||||||
|
|
||||||
|
## [2013/dlowe](2013/dlowe/dlowe.c) ([README.md](2013/dlowe/README.md))
|
||||||
|
## STATUS: INABIAF - please **DO NOT** fix
|
||||||
|
|
||||||
|
This program will very likely crash or draw something strange with 0 args. Then
|
||||||
|
again it might not. :-) This is easy to fix but would add bytes and since the
|
||||||
|
author noted it is a feature and not a bug. You of course can try and fix it
|
||||||
|
yourself but please do NOT open a pull request for this: just do it as an
|
||||||
|
exercise to see if you understand the code.
|
||||||
|
|
||||||
|
You can try and answer the questions, too: when will it crash? When will it draw
|
||||||
|
something funny (or will it? :-) ) and when will it just do nothing?
|
||||||
|
|
||||||
|
|
||||||
# 2014
|
# 2014
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1610,6 +1610,23 @@ Finally Cody provided the [bios.asm](2013/cable3/bios.asm) that the author
|
|||||||
referred to, found at the [GitHub repo for the
|
referred to, found at the [GitHub repo for the
|
||||||
entry](https://github.com/adriancable/8086tiny/tree/master).
|
entry](https://github.com/adriancable/8086tiny/tree/master).
|
||||||
|
|
||||||
|
## [2013/dlowe](2013/dlowe/dlowe.c) ([README.md](2013/dlowe/README.md))
|
||||||
|
|
||||||
|
Cody added the source code that we suggested one should compile and run with
|
||||||
|
different compilers as [fun.c](2013/dlowe/fun.c). He modified the Makefile so
|
||||||
|
that running `make all` will compile it, saving you the effort.
|
||||||
|
|
||||||
|
He also provided the script [slen.sh](2013/dlowe/slen.sh) which is based on the
|
||||||
|
author's remarks, giving a script that shows the spark line of the file lengths
|
||||||
|
(as in `wc -c`), fixing it for shellcheck. These fixes were applied in the
|
||||||
|
author's remarks as well.
|
||||||
|
|
||||||
|
Since the author called the program `sparkl` Cody modified the Makefile so that
|
||||||
|
running `make all` will create a symlink to `dlowe` as `sparkl`. Running `make
|
||||||
|
clobber` will delete both and running `make clobber all` will ensure that the
|
||||||
|
symlink is created.
|
||||||
|
|
||||||
|
|
||||||
## [2013/hou](2013/hou/hou.c) ([README.md](2013/hou/README.md))
|
## [2013/hou](2013/hou/hou.c) ([README.md](2013/hou/README.md))
|
||||||
|
|
||||||
After the file 2013/hou/doc/example.markdown was moved to
|
After the file 2013/hou/doc/example.markdown was moved to
|
||||||
|
|||||||
Reference in new issue
Block a user