remove orig code from 2018/bellard
This commit is contained in:
1 parent
deba881eaa
commit
a50a997e30
3 files changed
+158
-238
No files matched your search
+150
-107
@@ -1,40 +1,52 @@
|
|||||||
#!/usr/bin/env make
|
#!/usr/bin/env make
|
||||||
#
|
#
|
||||||
# 2018 makefile
|
# IOCCC 2018 winning entry /- bellard
|
||||||
|
|
||||||
|
################################################################################
|
||||||
#
|
#
|
||||||
# This work by Landon Curt Noll, Simon Cooper, and Leonid A. Broukhis
|
# Regarding individual entries:
|
||||||
# is licensed under:
|
#
|
||||||
|
# IOCCC winning entry code may not work on your system. Even with standards,
|
||||||
|
# conditions and build environments change, especially when it comes to more
|
||||||
|
# extreme code such you might find in an IOCCC winner. Moreover, what was
|
||||||
|
# allowed and liked in one IOCCC contest may no longer be liked/allowed in
|
||||||
|
# later IOCCC years.
|
||||||
|
#
|
||||||
|
# Corrections on winning author and fixing typos in remarks are VERY WELCOME.
|
||||||
|
#
|
||||||
|
# GitHub pull requests are welcome:
|
||||||
|
#
|
||||||
|
# If you have a patch that might make running an entry work in modern Unix-like
|
||||||
|
# environments, please create a GitHub pull request for the IOCCC judges to
|
||||||
|
# consider.
|
||||||
|
#
|
||||||
|
# Suggestions and corrections regarding Makefiles, winning author information,
|
||||||
|
# fixing typos in remarks, and code patches are welcome via opening a GitHub
|
||||||
|
# issue or better yet, by creating a GitHub pull request for the IOCCC judges
|
||||||
|
# to consider. To form a GitHub issue or GitHub pull, please visit:
|
||||||
|
#
|
||||||
|
# https://github.com/ioccc-src/winner
|
||||||
|
#
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
# This work by Landon Curt Noll and Leonid A. Broukhis is licensed under:
|
||||||
#
|
#
|
||||||
# Creative Commons Attribution-ShareAlike 3.0 Unported License.
|
# Creative Commons Attribution-ShareAlike 3.0 Unported License.
|
||||||
#
|
#
|
||||||
# See: http://creativecommons.org/licenses/by-sa/3.0/
|
# See: http://creativecommons.org/licenses/by-sa/3.0/
|
||||||
|
|
||||||
|
|
||||||
################
|
#############################
|
||||||
# tool locations
|
# shell used by this Makefile
|
||||||
################
|
#############################
|
||||||
#
|
#
|
||||||
SHELL= bash
|
SHELL= bash
|
||||||
CP= cp
|
|
||||||
CPP= cpp
|
#######################
|
||||||
GUNZIP= gunzip
|
# common tool locations
|
||||||
BUNZIP2= bunzip2
|
#######################
|
||||||
GZIP_PROG= gzip
|
#
|
||||||
BZIP2= bzip2
|
include ../../var.mk
|
||||||
CURL= curl
|
|
||||||
DD= dd
|
|
||||||
LD= ld
|
|
||||||
MAKE= make
|
|
||||||
RM= rm
|
|
||||||
SED= sed
|
|
||||||
TAR= tar
|
|
||||||
TRUE= true
|
|
||||||
MKDIR= mkdir
|
|
||||||
MV= mv
|
|
||||||
TR= tr
|
|
||||||
GREP= grep
|
|
||||||
SORT= sort
|
|
||||||
UNIQ= uniq
|
|
||||||
|
|
||||||
# Set X11_LIBDIR to the directory where the X11 library resides
|
# Set X11_LIBDIR to the directory where the X11 library resides
|
||||||
#
|
#
|
||||||
@@ -48,29 +60,27 @@ X11_LIBDIR= /opt/X11/lib
|
|||||||
#X11_INCDIR= /usr/X11/include
|
#X11_INCDIR= /usr/X11/include
|
||||||
X11_INCDIR= /opt/X11/include
|
X11_INCDIR= /opt/X11/include
|
||||||
|
|
||||||
# Compiler warnings
|
# Common C compiler warnings to silence
|
||||||
#
|
|
||||||
#CWARN=
|
|
||||||
#CWARN= -Wall
|
|
||||||
#CWARN= -Wall -Wextra
|
|
||||||
CWARN= -Wall -Wextra ${CSILENCE}
|
|
||||||
#CWARN= -Wall -Wextra -pedantic ${CSILENCE}
|
|
||||||
#CWARN= -Wall -Wextra -Weverything
|
|
||||||
#CWARN= -Wall -Wextra -Weverything -pedantic
|
|
||||||
#CWARN= -Wall -Wextra -Weverything -pedantic ${CSILENCE}
|
|
||||||
|
|
||||||
# Silence warnings that ${CWARN} would normally complain about
|
|
||||||
#
|
#
|
||||||
#CSILENCE=
|
#CSILENCE=
|
||||||
CSILENCE= -Wno-implicit-int -Wno-parentheses -Wno-return-type
|
CSILENCE= -Wno-error -Wno-implicit-function-declaration -Wno-implicit-int \
|
||||||
|
-Wno-logical-op-parentheses -Wno-main -Wno-parentheses -Wno-return-type \
|
||||||
|
-Wno-shift-op-parentheses
|
||||||
|
|
||||||
# compiler standard
|
# Common C compiler warning flags
|
||||||
|
#
|
||||||
|
#CWARN= ${CSILENCE}
|
||||||
|
#CWARN= -Wall ${CSILENCE}
|
||||||
|
CWARN= -Wall -Wextra ${CSILENCE}
|
||||||
|
#CWARN= -Wall -Wextra -pedantic ${CSILENCE}
|
||||||
|
|
||||||
|
# Compiler standard
|
||||||
#
|
#
|
||||||
#CSTD=
|
#CSTD=
|
||||||
#CSTD= -ansi
|
#CSTD= -ansi
|
||||||
CSTD= -std=c11
|
CSTD= -std=gnu17
|
||||||
|
|
||||||
# compiler bit architecture
|
# Compiler bit architecture
|
||||||
#
|
#
|
||||||
# Some entries require 32-bitness:
|
# Some entries require 32-bitness:
|
||||||
# ARCH= -m32
|
# ARCH= -m32
|
||||||
@@ -82,20 +92,21 @@ CSTD= -std=c11
|
|||||||
#
|
#
|
||||||
ARCH=
|
ARCH=
|
||||||
|
|
||||||
# defines that are needed to compile
|
# Defines that are needed to compile
|
||||||
#
|
#
|
||||||
CDEFINE=
|
CDEFINE=
|
||||||
#CDEFINE= -DIOCCC=25
|
#CDEFINE= -DIOCCC
|
||||||
|
|
||||||
# include files that are needed to compile
|
# Include files that are needed to compile
|
||||||
#
|
#
|
||||||
#CINCLUDE=
|
CINCLUDE=
|
||||||
#CINCLUDE= -include stdlib.h
|
#CINCLUDE= -include stdlib.h
|
||||||
CINCLUDE= -include stdio.h
|
#CINCLUDE= -include stdio.h
|
||||||
#CINCLUDE= -include stdlib.h -include stdio.h
|
#CINCLUDE= -include stdlib.h -include stdio.h
|
||||||
#CINCLUDE= -I ${X11_INCDIR}
|
#CINCLUDE= -I ${X11_INCDIR}
|
||||||
|
#CINCLUDE= -I ${HOMEBREW_PREFIX}/include/SDL2
|
||||||
|
|
||||||
# optimization
|
# Optimization
|
||||||
#
|
#
|
||||||
# Most compiles will safely use -O2. Some can use only -O1 or -O.
|
# Most compiles will safely use -O2. Some can use only -O1 or -O.
|
||||||
# A few compilers have broken optimizers or this entry make break
|
# A few compilers have broken optimizers or this entry make break
|
||||||
@@ -108,75 +119,100 @@ CINCLUDE= -include stdio.h
|
|||||||
#OPT= -O2
|
#OPT= -O2
|
||||||
OPT= -O3
|
OPT= -O3
|
||||||
|
|
||||||
# default flags for ANSI C compilation
|
# Default flags for ANSI C compilation
|
||||||
#
|
#
|
||||||
CFLAGS= ${CSTD} ${CWARN} ${ARCH} ${CDEFINE} ${CINCLUDE} ${OPT}
|
CFLAGS= ${CSTD} ${CWARN} ${ARCH} ${CDEFINE} ${CINCLUDE} ${OPT}
|
||||||
|
|
||||||
# Libraries needed to build
|
# Libraries needed to build
|
||||||
#
|
#
|
||||||
LIBS= -lm
|
LIBS=
|
||||||
#LIBS= -L ${X11_LIBDIR}
|
#LIBS= -lm
|
||||||
|
#LIBS= -L ${X11_LIBDIR} -lX11
|
||||||
|
#LIBS= -L ${HOMEBREW_PREFIX}/lib -lSDL
|
||||||
|
|
||||||
# ANSI compiler
|
# C compiler to use
|
||||||
#
|
|
||||||
# Set CC to the name of your ANSI compiler.
|
|
||||||
#
|
|
||||||
# Some entries seem to need gcc. If you have gcc, set
|
|
||||||
# both CC and MAY_NEED_GCC to gcc.
|
|
||||||
#
|
|
||||||
# If you do not have gcc, set CC to the name of your ANSI compiler, and
|
|
||||||
# set MAY_NEED_GCC to either ${CC} (and hope for the best) or to just :
|
|
||||||
# to disable such programs.
|
|
||||||
#
|
#
|
||||||
CC= cc
|
CC= cc
|
||||||
#CC=clang
|
#CC=clang
|
||||||
MAY_NEED_GCC= gcc
|
#CC=gcc
|
||||||
|
|
||||||
|
# Compiler add-ons or replacements for clang only
|
||||||
|
#
|
||||||
|
ifeq ($(CC),clang)
|
||||||
|
#
|
||||||
|
CSILENCE+= -Wno-conditional-uninitialized -Wno-missing-prototypes \
|
||||||
|
-Wno-missing-variable-declarations -Wno-pedantic \
|
||||||
|
-Wno-poison-system-directories -Wno-strict-prototypes
|
||||||
|
#
|
||||||
|
CWARN+= -Weverything
|
||||||
|
#
|
||||||
|
endif
|
||||||
|
|
||||||
|
# Specific add-ons or replacements for gcc only
|
||||||
|
#
|
||||||
|
ifeq ($(CC),gcc)
|
||||||
|
#
|
||||||
|
#CSILENCE+=
|
||||||
|
#
|
||||||
|
#CWARN+=
|
||||||
|
#
|
||||||
|
endif
|
||||||
|
|
||||||
|
|
||||||
##############################
|
##############################
|
||||||
# Special flags for this entry
|
# Special flags for this entry
|
||||||
##############################
|
##############################
|
||||||
#
|
#
|
||||||
OBJ= prog.o
|
ENTRY= bellard
|
||||||
|
PROG= prog
|
||||||
|
#
|
||||||
|
OBJ= ${PROG}.o
|
||||||
DATA=
|
DATA=
|
||||||
TARGET= prog
|
TARGET= ${PROG}
|
||||||
#
|
#
|
||||||
ALT_OBJ=
|
ALT_OBJ=
|
||||||
ALT_TARGET= prog.orig
|
ALT_TARGET=
|
||||||
|
|
||||||
|
|
||||||
#################
|
#################
|
||||||
# build the entry
|
# build the entry
|
||||||
#################
|
#################
|
||||||
#
|
#
|
||||||
all: ${TARGET} ${DATA}
|
all: data ${TARGET}
|
||||||
@${TRUE}
|
@${TRUE}
|
||||||
|
|
||||||
prog: prog.c
|
.PHONY: all alt data everything clean clobber install \
|
||||||
|
love haste waste maker easter_egg sandwich \
|
||||||
|
supernova deep_magic magic charon pluto
|
||||||
|
|
||||||
|
${PROG}: ${PROG}.c
|
||||||
${CC} ${CFLAGS} $< -o $@ ${LIBS}
|
${CC} ${CFLAGS} $< -o $@ ${LIBS}
|
||||||
|
|
||||||
# alternative executable
|
# alternative executable
|
||||||
#
|
#
|
||||||
alt: ${ALT_TARGET}
|
alt: data ${ALT_TARGET}
|
||||||
@${TRUE}
|
@${TRUE}
|
||||||
|
|
||||||
prog.orig: prog.orig.c
|
|
||||||
${CC} ${CFLAGS} $< -o $@ ${LIBS}
|
|
||||||
|
|
||||||
# data files
|
# data files
|
||||||
#
|
#
|
||||||
data: ${DATA}
|
data: ${DATA}
|
||||||
@${TRUE}
|
@${TRUE}
|
||||||
|
|
||||||
|
# both all and alt
|
||||||
|
#
|
||||||
|
everything: all alt
|
||||||
|
|
||||||
|
|
||||||
###############
|
###############
|
||||||
# utility rules
|
# utility rules
|
||||||
###############
|
###############
|
||||||
#
|
#
|
||||||
everything: all alt
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
${RM} -f ${OBJ} ${ALT_OBJ}
|
${RM} -f ${OBJ} ${ALT_OBJ}
|
||||||
|
@-if [ -f indent.c ]; then \
|
||||||
|
echo ${RM} -f indent.c; \
|
||||||
|
${RM} -f indent.c; \
|
||||||
|
fi
|
||||||
|
|
||||||
clobber: clean
|
clobber: clean
|
||||||
${RM} -f ${TARGET} ${ALT_TARGET}
|
${RM} -f ${TARGET} ${ALT_TARGET}
|
||||||
@@ -185,20 +221,28 @@ clobber: clean
|
|||||||
echo 'ate sandwich'; \
|
echo 'ate sandwich'; \
|
||||||
fi
|
fi
|
||||||
|
|
||||||
nuke: clobber
|
|
||||||
@${TRUE}
|
|
||||||
|
|
||||||
dist_clean: nuke
|
|
||||||
@${TRUE}
|
|
||||||
|
|
||||||
install:
|
install:
|
||||||
@echo "Surely you are performing, Dr. May!"
|
@echo "Dr. Spock says that is not logical!"
|
||||||
@${TRUE}
|
@${TRUE}
|
||||||
|
|
||||||
# backwards compatibility
|
# you may be able to misunderstand the source by reading indent.c
|
||||||
#
|
#
|
||||||
build: all
|
indent.c: ${PROG}.c
|
||||||
@${TRUE}
|
@if which "${GINDENT}" >/dev/null 2>&1; then \
|
||||||
|
echo ${RM} -f $@; \
|
||||||
|
${RM} -f $@; \
|
||||||
|
echo "${GINDENT} < $< > $@"; \
|
||||||
|
${GINDENT} < $< > $@; \
|
||||||
|
elif which "${INDENT}" >/dev/null 2>&1; then \
|
||||||
|
echo ${RM} -f $@; \
|
||||||
|
${RM} -f $@; \
|
||||||
|
echo "${INDENT} < $< > $@"; \
|
||||||
|
${INDENT} < $< > $@; \
|
||||||
|
else \
|
||||||
|
echo "no intent tool found, ident $< yourself, sorry"; \
|
||||||
|
echo "exit 1"; \
|
||||||
|
exit 1; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
##################
|
##################
|
||||||
@@ -217,22 +261,19 @@ waste:
|
|||||||
@echo 'haste'
|
@echo 'haste'
|
||||||
@${TRUE}
|
@${TRUE}
|
||||||
|
|
||||||
make:
|
maker:
|
||||||
@echo 'Attend a maker faire'
|
@echo 'Participate in a maker faire'
|
||||||
@${TRUE}
|
@${TRUE}
|
||||||
|
|
||||||
easter_egg:
|
easter_egg:
|
||||||
@echo you expected to often mis-understand this $${RANDOM} magic
|
@echo "you expected to often misunderstand this $${RANDOM} magic"
|
||||||
@echo chongo '<was here>' "/\\oo/\\"
|
@echo "chongo '<was here>' /\\oo/\\"
|
||||||
@echo Eggy
|
@echo "Eggy"
|
||||||
|
|
||||||
fabricate fashion form frame manufacture produce: make
|
sandwich: easter_egg
|
||||||
@${TRUE}
|
|
||||||
|
|
||||||
sandwich:
|
|
||||||
@if [ `id -u` -eq 0 ]; then \
|
@if [ `id -u` -eq 0 ]; then \
|
||||||
echo 'Okay.'; \
|
echo 'Okay.'; \
|
||||||
echo $${RANDOM}`date +%s`$${RANDOM} > $@; \
|
echo "$${RANDOM}`date +%s`$${RANDOM}" > $@; \
|
||||||
else \
|
else \
|
||||||
echo 'What? Make it yourself.'; \
|
echo 'What? Make it yourself.'; \
|
||||||
exit 1; \
|
exit 1; \
|
||||||
@@ -242,18 +283,19 @@ sandwich:
|
|||||||
# as well as the West Coast Computer Faire and
|
# as well as the West Coast Computer Faire and
|
||||||
# you might be confused different. :-)
|
# you might be confused different. :-)
|
||||||
#
|
#
|
||||||
supernova: nuke
|
supernova: sandwich
|
||||||
@-if [ -r .code_anal ]; then \
|
@-if [ -r .code_anal ]; then \
|
||||||
${RM} -f .code_anal_v6; \
|
${RM} -f .code_anal_v6; \
|
||||||
else \
|
else \
|
||||||
echo "planet deniers, like some members of the IAU, are so cute when they try to defend their logic"; \
|
echo "planet deniers, like some members of the IAU, are so cute when they try to defend their logic"; \
|
||||||
fi
|
fi
|
||||||
@echo A $@ helps ${MAKE} the elements that help form planets
|
@echo "A $@ helps ${MAKE} the elements that help form planets"
|
||||||
@${TRUE}
|
@${TRUE}
|
||||||
|
|
||||||
deep_magic:
|
deep_magic: supernova
|
||||||
@-if [ -r .code_anal ]; then \
|
@-if [ -r .code_anal ]; then \
|
||||||
ccode_analysis --deep_magic 3a3fabb90892eeb2f610ae0f74a35a970060665a063ab702bd686c17c4ae07f6 --FNV1a_hash_256_bit "prog"; \
|
ccode_analysis --deep_magic 7889066cdbdf09b0408021754586e895be641cc9be29e7eafd3ca65359541f17 \
|
||||||
|
--FNV1a_hash_512_bit -v2 "${PROG}" "${PROG}.c"; \
|
||||||
else \
|
else \
|
||||||
echo "Wrong! Do it again!"; \
|
echo "Wrong! Do it again!"; \
|
||||||
sleep 2; \
|
sleep 2; \
|
||||||
@@ -265,7 +307,7 @@ deep_magic:
|
|||||||
|
|
||||||
magic: deep_magic
|
magic: deep_magic
|
||||||
@-if [ -r .code_anal ]; then \
|
@-if [ -r .code_anal ]; then \
|
||||||
ccode_analysis --mode 216091 --level 216193 --FNV1a_hash_256_bit "prog"; \
|
ccode_analysis --level 20003 --mode 5717175 --FNV1a_hash_512_bit -v2 "${PROG}" "${PROG}.c"; \
|
||||||
else \
|
else \
|
||||||
echo "If you don't eat yer meat, you can't have any pudding!"; \
|
echo "If you don't eat yer meat, you can't have any pudding!"; \
|
||||||
echo "How can you have any pudding if you don't eat yer meat?!"; \
|
echo "How can you have any pudding if you don't eat yer meat?!"; \
|
||||||
@@ -274,14 +316,15 @@ magic: deep_magic
|
|||||||
|
|
||||||
# The IOCCC resident astronomer states
|
# The IOCCC resident astronomer states
|
||||||
#
|
#
|
||||||
charon: supernova
|
charon: magic
|
||||||
@echo $@ is a dwarf planet
|
@echo "$@ is a dwarf planet"
|
||||||
@echo dwarf is a type of planet
|
@echo "dwarf is a type of planet"
|
||||||
@echo $@ is a planet
|
@echo "therefore IAU, $@ is a planet"
|
||||||
|
|
||||||
pluto: supernova
|
pluto: charon
|
||||||
${MAKE} charon
|
${MAKE} charon
|
||||||
@echo $@ is a dwarf planet
|
@echo "$@ is a dwarf planet"
|
||||||
@echo dwarf is a type of planet
|
@echo "dwarf is a type of planet"
|
||||||
@echo $@ is a planet
|
@echo "therefore, $@ is a planet"
|
||||||
@echo get used to having lots of planets becasue supernovae can ${MAKE} a lot of them
|
@echo "having lots of planets is good feature because supernovae can help ${MAKE} a lot of them"
|
||||||
|
|
||||||
@@ -3,36 +3,35 @@
|
|||||||
Fabrice Bellard
|
Fabrice Bellard
|
||||||
<https://bellard.org/>
|
<https://bellard.org/>
|
||||||
|
|
||||||
|
## To build:
|
||||||
|
|
||||||
## Judges' comments:
|
make all
|
||||||
### To use:
|
|
||||||
|
### To run
|
||||||
|
|
||||||
make
|
|
||||||
./prog > lena.ppm
|
./prog > lena.ppm
|
||||||
|
|
||||||
### Try:
|
|
||||||
|
|
||||||
eog lena.ppm # On Linux
|
eog lena.ppm # On Linux
|
||||||
preview lena.ppm # On MacOS
|
preview lena.ppm # On MacOS
|
||||||
|
|
||||||
wget http://upload.wikimedia.org/wikipedia/en/2/24/Lenna.png
|
wget http://upload.wikimedia.org/wikipedia/en/2/24/Lenna.png
|
||||||
pngtopnm < Lenna.png | pnmscale 0.25 | cjpeg -arithmetic -dct float -quality 14 > small.jpg
|
pngtopnm < Lenna.png | pnmscale 0.25 | cjpeg -arithmetic -dct float -quality 14 > small.jpg
|
||||||
|
|
||||||
|
### Selected Judges Remarks:
|
||||||
|
|
||||||
The file `small.jpg` will be approximately of the same size as the raw image data
|
The file `small.jpg` will be approximately of the same size as the raw image data
|
||||||
in the program. Compare the level of the detail and the artifacts of
|
in the program. Compare the level of the detail and the artifacts of
|
||||||
`small.jpg` and `lena.ppm`.
|
`small.jpg` and `lena.ppm`.
|
||||||
|
|
||||||
### Selected Judges Remarks:
|
|
||||||
|
|
||||||
Compressing images is just a matter of simple arithmetic and some magic, isn't it?
|
Compressing images is just a matter of simple arithmetic and some magic, isn't it?
|
||||||
|
|
||||||
We could understand some of the arithmetic but none of the magic.
|
We could understand some of the arithmetic but none of the magic.
|
||||||
|
|
||||||
Deciphering the mechanism used for data encoding to make use
|
Deciphering the mechanism used for data encoding to make use
|
||||||
of the whitespaces, braces and semicolons should be a slightly easier task.
|
of whitespace, braces and semicolons should be a slightly easier task.
|
||||||
|
|
||||||
|
|
||||||
## Author's comments:
|
## Author's comments:
|
||||||
|
|
||||||
This program outputs a 128x128 RGB image file to the standard output
|
This program outputs a 128x128 RGB image file to the standard output
|
||||||
using the portable pixmap file format (PPM). It contains the famous
|
using the portable pixmap file format (PPM). It contains the famous
|
||||||
"Lena" image which is used in many image compression tests.
|
"Lena" image which is used in many image compression tests.
|
||||||
|
|||||||
@@ -1,122 +0,0 @@
|
|||||||
#include <math.h>
|
|
||||||
#define e(a, d) for(a=0;a<d;a++)
|
|
||||||
char*v="T{ ; ; :}>{ y} 4}; 1} s; {;9{ - $} ; q{; } u;d} } 3{d} ,{ 3; 1fB{A{ }{+ D}9} v{p{ pa} { N{${ ;P;{ z; ({ .{*}n{w{ v; j{$}<}S}y}@; { Q`{UN 9}0@{Z}'{ {%; h; 5} g} e S ~ q}'{#;e; B{;M} mP; b{y 7{ u;rOK}%} b}3 { k _{ { a{D{ W} L} q { '}A; AX;u}76*- h{O;p} } q}s}M} Q;; Y }D; H{ A ASRs}* n}P-{ {F}u; G; l{ D} ~; ,; } }8}{+Z O c; ;M{ A{Q} g} }} n U;k; |{ {<; /} H B}},} } L;"
|
|
||||||
"_{ j}1{ z} = h{ S;1; 2;O; ; h{P; v; c{ H;;N;d;l}P} a; DBx}3{5 e A; {u} { FZ}8} ; ; 7;;{ $}~{ ~{q [ x;n#}; #{W{3; M ;; =;5; ;{} s}; *; v^} QB}n 9}} 1e <;}g{v} C{ :{a{ } o} R} .}}} , { 4 VX{s}r@{v 3} 7{{; y;{ {K; v 2O; t}&} ; L} t}3/; );e{(]f; ,}(}Nx;7}X} {A;R{;<;[; G;C} O; o}W}{ s; ); }{}[} (} C} ; Y{ 0}8} {m}{K}{ ^{. ;}';^;O }M{z; J,;{ };; "
|
|
||||||
"W; n H; f; {-; v{}; { !} F- r l} {m } ;P} 9{p{ C}}G ={ 3 @{ 5}4{ | ; q ^;f} + -{-; } w{ ]{Q;.{ r{ Z { C 4{ +}o; y} b{[; Wg{N} o{ 9;;,{ P{z;+}>; a{}}p[{{{{b{b; @H{{s; {=}&}0; }} 8{N} {X; }I; 3} W{ 9;P{ {} } Hi}A { U{}D;};t;s; S;+; {O}nV} 7; x{f{ P} 4}B{ M ;Y} g};?{ ;{ t;5K ;* { H}w; SE n{D} I{&; {} =9 }B; W{4}p; l{Au; q{X~ +;O{ $j {G; ;'rb}3 j9} }`} m}4; r; 8; y;r}"
|
|
||||||
"t}>; ~} E; G} 9} 5 ;/i}p{:; C{I} ; 2{ c{ x}}} ?}5{ i{ <} {})} C{ V} ?;X*;P{L{ c{M;T{<_{ {}M; V; q{ } $}l}P{Y{ #{N{9);]} u{ {F ;( ' )%J } x =; Y Q{Q}I'}B { } g}|{! n ({} C; # |; {=}D{3} }L{F}#} ` k} M; ]} J{ }7} 4} Z} ]}} v6 ; X; Y{Qx}{ ;};{ .<{b}7{ } 6 ; {x; & {]{~; [ P r}X} W 9 } {O{ ;f ;)}:;&{-; Eg{)}{0} Z{S}y; } N;; ; k}Y{`z;}? Kv} &; 6 1; ^ Y{ }{){A{${ #} M w; "
|
|
||||||
"6{ >}B}o}; M{ ({ ({}H; ` h j{z; }; 7;f; { L; #{;{#} 4} N{z j}{ o;3{j;l B} 9} F} J;F 2 ;FTw+} y{ _ };l{ }} 4} 8} ]} l{ }K; ;@}{ v;b0; 0; }V; *} R; p;j; &;_;9; ; {J;W #} { h;^{t;|Q} [;U; >} ^} / ~{ @} {n k{ N} {H{ j} {W; X; 8{ 3; u:}T{P;0; k; Z} v{X} {;{`{#{ ;n} ;U} d}d{&{n {|t{ aT} v} $}7;Q; f; W; O} E;} c} F{ 8}AA; ~{ `; w; x<;G}f}7;rE{ ~{ n}F 5} ^{ c{; {!{|} "
|
|
||||||
"1{[} ;3} ;{ 8 a}pIg;9{ n} -} T} e{ !} ; /0{9;V{>; W}F; +}L} F{S} +{ , } o; { x; i; 9 ";
|
|
||||||
int w[3][16384],h[512],T[160],p,q=1,g=128;
|
|
||||||
M(){
|
|
||||||
int b;
|
|
||||||
q*=1968;
|
|
||||||
p*=1968;
|
|
||||||
if(b=*v){
|
|
||||||
p+=b-1-(b>10)-(b>13)-(b>34)-(b>92)<<4;
|
|
||||||
b=v[1];
|
|
||||||
v+=2;
|
|
||||||
p+=b<33?(b^8)*2%5:(b^6)%3*4+(*v++^8)*2%5+4;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
r(A){
|
|
||||||
int s,j,B,*m;
|
|
||||||
if(q<1968)M();
|
|
||||||
m=T+A*2;
|
|
||||||
B=*m+m[1]+2;
|
|
||||||
s=q*(*m+1)/B;
|
|
||||||
if(j=p>=s){
|
|
||||||
p-=s;
|
|
||||||
q-=s;
|
|
||||||
}
|
|
||||||
else q=s;
|
|
||||||
m[j]++;
|
|
||||||
if(B>63){
|
|
||||||
*m/=2;
|
|
||||||
m[1]/=2;
|
|
||||||
}
|
|
||||||
return j;
|
|
||||||
}
|
|
||||||
C(A){
|
|
||||||
int a,b;
|
|
||||||
a=0;
|
|
||||||
while(!r(A+a))a++;
|
|
||||||
b=1;
|
|
||||||
while(a--)b=b<<1|r(3);
|
|
||||||
return b-1;
|
|
||||||
}
|
|
||||||
N(O,U,P,V,Q,d,R)int*O,*P;
|
|
||||||
{
|
|
||||||
int D,a,i,E;
|
|
||||||
e(E,d)e(a,d){
|
|
||||||
D=0;
|
|
||||||
e(i,d)D+=P[i*V+E*Q]*(i>0?lrint(cos(acos(-1)/d*(a+0.5)*i)*1448.155):1024);
|
|
||||||
O[a*U+E*Q]=D+(1<<R-1)>>R;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
S(x,k,l){
|
|
||||||
int t,a,i,F,d,j,y,*n,c,z,o,G,f,u,H;
|
|
||||||
if(l>2&&(l>4||r(0+l-3))){
|
|
||||||
c=1<<--l;
|
|
||||||
e(a,4)S(x+a%2*c,k+a/2*c,l);
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
c=1<<l;
|
|
||||||
d=c*c;
|
|
||||||
o=C(70);
|
|
||||||
e(y,3){
|
|
||||||
n=w[y]+k*g+x;
|
|
||||||
z=y>0;
|
|
||||||
e(a,d)h[a]=0;
|
|
||||||
e(a,d){
|
|
||||||
if(r(60+l*2+z))break;
|
|
||||||
a+=C(4+z*10);
|
|
||||||
j=1-2*r(2);
|
|
||||||
h[a]=j*(C(24+(z+(a<d/8)*2)*10)+1)*(y?76:38);
|
|
||||||
}
|
|
||||||
if(!o){
|
|
||||||
t=0;
|
|
||||||
e(a,c){
|
|
||||||
t+=k?n[-g+a]:0;
|
|
||||||
t+=x?n[a*g-1]:0;
|
|
||||||
}
|
|
||||||
*h+=x&&k?t/2:t;
|
|
||||||
}
|
|
||||||
N(h+d,1,h,1,c,c,10);
|
|
||||||
N(n,g,h+d,c,1,c,10+l);
|
|
||||||
if(o){
|
|
||||||
u=(G=o<17)?9-o:o-25;
|
|
||||||
e(a,c)e(i,c){
|
|
||||||
e(F,2){
|
|
||||||
f=a*u+u;
|
|
||||||
H=f&7;
|
|
||||||
f=(f>>3)+i+F;
|
|
||||||
if(j=f<0)f=(f*8+u/2)/u-2;
|
|
||||||
f=f<c?f:c-1;
|
|
||||||
h[F]=j^G?n[f*g-1]:n[-g+f];
|
|
||||||
}
|
|
||||||
n[G?i*g+a:a*g+i]+=(*h*(8-H)+h[1]*H+4)>>3;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
I(b){
|
|
||||||
putchar(b<0?0:b>255?255:b);
|
|
||||||
}
|
|
||||||
main(){
|
|
||||||
int a,k,J,K,L;
|
|
||||||
M();
|
|
||||||
S(0,0,7);
|
|
||||||
puts("P6\n128 128\n255");
|
|
||||||
e(a,g*g){
|
|
||||||
k=w[0][a];
|
|
||||||
J=w[1][a];
|
|
||||||
K=w[2][a];
|
|
||||||
L=k-J;
|
|
||||||
I(L+K);
|
|
||||||
I(k+J);
|
|
||||||
I(L-K);
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
Reference in new issue
Block a user