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
|
||||
#
|
||||
# 2018 makefile
|
||||
# IOCCC 2018 winning entry /- bellard
|
||||
|
||||
################################################################################
|
||||
#
|
||||
# This work by Landon Curt Noll, Simon Cooper, and Leonid A. Broukhis
|
||||
# is licensed under:
|
||||
# Regarding individual entries:
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
# See: http://creativecommons.org/licenses/by-sa/3.0/
|
||||
|
||||
|
||||
################
|
||||
# tool locations
|
||||
################
|
||||
#############################
|
||||
# shell used by this Makefile
|
||||
#############################
|
||||
#
|
||||
SHELL= bash
|
||||
CP= cp
|
||||
CPP= cpp
|
||||
GUNZIP= gunzip
|
||||
BUNZIP2= bunzip2
|
||||
GZIP_PROG= gzip
|
||||
BZIP2= bzip2
|
||||
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
|
||||
|
||||
#######################
|
||||
# common tool locations
|
||||
#######################
|
||||
#
|
||||
include ../../var.mk
|
||||
|
||||
# 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= /opt/X11/include
|
||||
|
||||
# Compiler warnings
|
||||
#
|
||||
#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
|
||||
# Common C compiler warnings to silence
|
||||
#
|
||||
#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= -ansi
|
||||
CSTD= -std=c11
|
||||
CSTD= -std=gnu17
|
||||
|
||||
# compiler bit architecture
|
||||
# Compiler bit architecture
|
||||
#
|
||||
# Some entries require 32-bitness:
|
||||
# ARCH= -m32
|
||||
@@ -82,20 +92,21 @@ CSTD= -std=c11
|
||||
#
|
||||
ARCH=
|
||||
|
||||
# defines that are needed to compile
|
||||
# Defines that are needed to compile
|
||||
#
|
||||
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 stdio.h
|
||||
#CINCLUDE= -include stdio.h
|
||||
#CINCLUDE= -include stdlib.h -include stdio.h
|
||||
#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.
|
||||
# A few compilers have broken optimizers or this entry make break
|
||||
@@ -108,75 +119,100 @@ CINCLUDE= -include stdio.h
|
||||
#OPT= -O2
|
||||
OPT= -O3
|
||||
|
||||
# default flags for ANSI C compilation
|
||||
# Default flags for ANSI C compilation
|
||||
#
|
||||
CFLAGS= ${CSTD} ${CWARN} ${ARCH} ${CDEFINE} ${CINCLUDE} ${OPT}
|
||||
|
||||
# Libraries needed to build
|
||||
#
|
||||
LIBS= -lm
|
||||
#LIBS= -L ${X11_LIBDIR}
|
||||
LIBS=
|
||||
#LIBS= -lm
|
||||
#LIBS= -L ${X11_LIBDIR} -lX11
|
||||
#LIBS= -L ${HOMEBREW_PREFIX}/lib -lSDL
|
||||
|
||||
# ANSI compiler
|
||||
#
|
||||
# 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.
|
||||
# C compiler to use
|
||||
#
|
||||
CC= cc
|
||||
#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
|
||||
##############################
|
||||
#
|
||||
OBJ= prog.o
|
||||
ENTRY= bellard
|
||||
PROG= prog
|
||||
#
|
||||
OBJ= ${PROG}.o
|
||||
DATA=
|
||||
TARGET= prog
|
||||
TARGET= ${PROG}
|
||||
#
|
||||
ALT_OBJ=
|
||||
ALT_TARGET= prog.orig
|
||||
ALT_TARGET=
|
||||
|
||||
|
||||
#################
|
||||
# build the entry
|
||||
#################
|
||||
#
|
||||
all: ${TARGET} ${DATA}
|
||||
all: data ${TARGET}
|
||||
@${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}
|
||||
|
||||
# alternative executable
|
||||
#
|
||||
alt: ${ALT_TARGET}
|
||||
alt: data ${ALT_TARGET}
|
||||
@${TRUE}
|
||||
|
||||
prog.orig: prog.orig.c
|
||||
${CC} ${CFLAGS} $< -o $@ ${LIBS}
|
||||
|
||||
# data files
|
||||
#
|
||||
data: ${DATA}
|
||||
@${TRUE}
|
||||
|
||||
# both all and alt
|
||||
#
|
||||
everything: all alt
|
||||
|
||||
|
||||
###############
|
||||
# utility rules
|
||||
###############
|
||||
#
|
||||
everything: all alt
|
||||
|
||||
clean:
|
||||
${RM} -f ${OBJ} ${ALT_OBJ}
|
||||
@-if [ -f indent.c ]; then \
|
||||
echo ${RM} -f indent.c; \
|
||||
${RM} -f indent.c; \
|
||||
fi
|
||||
|
||||
clobber: clean
|
||||
${RM} -f ${TARGET} ${ALT_TARGET}
|
||||
@@ -185,20 +221,28 @@ clobber: clean
|
||||
echo 'ate sandwich'; \
|
||||
fi
|
||||
|
||||
nuke: clobber
|
||||
@${TRUE}
|
||||
|
||||
dist_clean: nuke
|
||||
@${TRUE}
|
||||
|
||||
install:
|
||||
@echo "Surely you are performing, Dr. May!"
|
||||
@echo "Dr. Spock says that is not logical!"
|
||||
@${TRUE}
|
||||
|
||||
# backwards compatibility
|
||||
# you may be able to misunderstand the source by reading indent.c
|
||||
#
|
||||
build: all
|
||||
@${TRUE}
|
||||
indent.c: ${PROG}.c
|
||||
@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'
|
||||
@${TRUE}
|
||||
|
||||
make:
|
||||
@echo 'Attend a maker faire'
|
||||
maker:
|
||||
@echo 'Participate in a maker faire'
|
||||
@${TRUE}
|
||||
|
||||
easter_egg:
|
||||
@echo you expected to often mis-understand this $${RANDOM} magic
|
||||
@echo chongo '<was here>' "/\\oo/\\"
|
||||
@echo Eggy
|
||||
@echo "you expected to often misunderstand this $${RANDOM} magic"
|
||||
@echo "chongo '<was here>' /\\oo/\\"
|
||||
@echo "Eggy"
|
||||
|
||||
fabricate fashion form frame manufacture produce: make
|
||||
@${TRUE}
|
||||
|
||||
sandwich:
|
||||
sandwich: easter_egg
|
||||
@if [ `id -u` -eq 0 ]; then \
|
||||
echo 'Okay.'; \
|
||||
echo $${RANDOM}`date +%s`$${RANDOM} > $@; \
|
||||
echo "$${RANDOM}`date +%s`$${RANDOM}" > $@; \
|
||||
else \
|
||||
echo 'What? Make it yourself.'; \
|
||||
exit 1; \
|
||||
@@ -242,18 +283,19 @@ sandwich:
|
||||
# as well as the West Coast Computer Faire and
|
||||
# you might be confused different. :-)
|
||||
#
|
||||
supernova: nuke
|
||||
supernova: sandwich
|
||||
@-if [ -r .code_anal ]; then \
|
||||
${RM} -f .code_anal_v6; \
|
||||
else \
|
||||
echo "planet deniers, like some members of the IAU, are so cute when they try to defend their logic"; \
|
||||
fi
|
||||
@echo A $@ helps ${MAKE} the elements that help form planets
|
||||
@echo "A $@ helps ${MAKE} the elements that help form planets"
|
||||
@${TRUE}
|
||||
|
||||
deep_magic:
|
||||
deep_magic: supernova
|
||||
@-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 \
|
||||
echo "Wrong! Do it again!"; \
|
||||
sleep 2; \
|
||||
@@ -265,7 +307,7 @@ deep_magic:
|
||||
|
||||
magic: deep_magic
|
||||
@-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 \
|
||||
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?!"; \
|
||||
@@ -274,14 +316,15 @@ magic: deep_magic
|
||||
|
||||
# The IOCCC resident astronomer states
|
||||
#
|
||||
charon: supernova
|
||||
@echo $@ is a dwarf planet
|
||||
@echo dwarf is a type of planet
|
||||
@echo $@ is a planet
|
||||
charon: magic
|
||||
@echo "$@ is a dwarf planet"
|
||||
@echo "dwarf is a type of planet"
|
||||
@echo "therefore IAU, $@ is a planet"
|
||||
|
||||
pluto: supernova
|
||||
pluto: charon
|
||||
${MAKE} charon
|
||||
@echo $@ is a dwarf planet
|
||||
@echo dwarf is a type of planet
|
||||
@echo $@ is a planet
|
||||
@echo get used to having lots of planets becasue supernovae can ${MAKE} a lot of them
|
||||
@echo "$@ is a dwarf planet"
|
||||
@echo "dwarf is a type of planet"
|
||||
@echo "therefore, $@ is a planet"
|
||||
@echo "having lots of planets is good feature because supernovae can help ${MAKE} a lot of them"
|
||||
|
||||
@@ -3,36 +3,35 @@
|
||||
Fabrice Bellard
|
||||
<https://bellard.org/>
|
||||
|
||||
## To build:
|
||||
|
||||
## Judges' comments:
|
||||
### To use:
|
||||
make all
|
||||
|
||||
### To run
|
||||
|
||||
make
|
||||
./prog > lena.ppm
|
||||
|
||||
### Try:
|
||||
|
||||
eog lena.ppm # On Linux
|
||||
preview lena.ppm # On MacOS
|
||||
|
||||
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
|
||||
|
||||
### Selected Judges Remarks:
|
||||
|
||||
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
|
||||
`small.jpg` and `lena.ppm`.
|
||||
|
||||
### Selected Judges Remarks:
|
||||
|
||||
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.
|
||||
|
||||
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:
|
||||
|
||||
This program outputs a 128x128 RGB image file to the standard output
|
||||
using the portable pixmap file format (PPM). It contains the famous
|
||||
"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