Make 1992/gson not use gets() + update README.md

In the case of 1992/gson it was not as simple to change it to use
fgets() due to how the char * is set up. First it's set to argv (see
README.md for the more correct details) and then it's set to h which
was of size 256. Since the program requires the input be from the
command line I simply changed the buffer size to ARG_MAX+1 (which might
already be more than enough).

Fixed formatting in README.md.

Changed in Makefile the og to ag to match the description (and in the
places where og was used in the README.md I changed it to ag).

.gitignore also now has ag not og.

Possibly typos were fixed but I'm not sure now.
This commit is contained in:
Cody Boone Ferguson committed 2023-03-29 09:59:05 -07:00
1 parent 07b69a677b
commit 888b3b91a6
4 files changed
+209 -198

No files matched your search

+1 -1
View File
@@ -1,2 +1,2 @@
gson gson
og ag
+3 -3
View File
@@ -68,7 +68,7 @@ CINCLUDE=
# Optimization # Optimization
# #
OPT= -O3 OPT= -ggdb3
# Default flags for ANSI C compilation # Default flags for ANSI C compilation
# #
@@ -114,7 +114,7 @@ PROG= ${ENTRY}
# #
OBJ= ${PROG}.o OBJ= ${PROG}.o
DATA= DATA=
TARGET= ${PROG} og TARGET= ${PROG} ag
# #
ALT_OBJ= ALT_OBJ=
ALT_TARGET= ALT_TARGET=
@@ -134,7 +134,7 @@ all: data ${TARGET}
${PROG}: ${PROG}.c ${PROG}: ${PROG}.c
${CC} ${CFLAGS} $< -o $@ ${LIBS} ${CC} ${CFLAGS} $< -o $@ ${LIBS}
og: ${PROG} ag: ${PROG}
${RM} -f $@ ${RM} -f $@
${LN} $< $@ ${LN} $< $@
+202 -191
View File
@@ -10,21 +10,33 @@
make all make all
### To run ### To run:
./og word word2 word3 < /path/to/dictionary ./ag word word2 word3 < /path/to/dictionary
## Judges' comment [Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) fixed this entry to not
use gets(). Previously it had a buffer size of 256 which could easily overflow.
Now in this entry `gets()` is used in a more complicated way (first `m` is set
to `*++p` in a for loop where `p` is argv and then later `m` is set to point to
`h` which is of size 256) and trying to change it to use fgets() proved more a
problem. Since the input must come from the command line Cody changed the buffer
size to `ARG_MAX+1` which should be enough especially since the command expects
redirecting a dictionary file as part of the command line. This also makes it
possible for longer strings to be read (in case the `gets()` was not used in a
loop). Thank you Cody for your assistance!
Determine where your system dictionary is located. You may find
it located in one of the following places: ## Judges' comment:
Determine where your system dictionary is located. You may find
it located in one of the following places:
/usr/share/dict/words /usr/share/dict/words
/usr/share/lib/spell/words /usr/share/lib/spell/words
/usr/ucblib/dict/words /usr/ucblib/dict/words
/dev/null # <-- for machines with nothing to say /dev/null # <-- for machines with nothing to say
Then using the proper dictionary: Then using the proper dictionary:
./ag free software foundation < /usr/share/dict/words ./ag free software foundation < /usr/share/dict/words
./ag obfuscated c contest < /usr/share/dict/words ./ag obfuscated c contest < /usr/share/dict/words
@@ -34,202 +46,201 @@
./ag ross perot < /usr/share/dict/words ./ag ross perot < /usr/share/dict/words
./ag paul e tsongas < /usr/share/dict/words ./ag paul e tsongas < /usr/share/dict/words
Recently some newspapers printed amusing anagrams of one of the Recently some newspapers printed amusing anagrams of one of the
names listed above. Run this program to find the anagrams they names listed above. Run this program to find the anagrams they
weren't allowed to print! weren't allowed to print!
## Author's comments ## Author's comments:
The name of the game: The name of the game:
AG is short for either Anagram Generator or simply AnaGram. AG is short for either Anagram Generator or simply AnaGram.
It might also be construed to mean Alphabet Game, and by pure It might also be construed to mean Alphabet Game, and by pure
coincidence it happens to be the author's initials. coincidence it happens to be the author's initials.
What it does: ### What it does:
AG takes one or more words as arguments, and tries to find AG takes one or more words as arguments, and tries to find
anagrams of those words, i.e. words or sentences containing anagrams of those words, i.e. words or sentences containing
exactly the same letters. exactly the same letters.
How to use it: ### How to use it:
To run AG, you need a dictionary file consisting of distinct words
in the natural language of your choice, one word on each line. If
your machine doesn't have one already, you can make your own
dictionary by concatenating a few hundred of your favourite Usenet
articles and piping them through the following obfuscated shell
script:
To run AG, you need a dictionary file consisting of distinct words
in the natural language of your choice, one word on each line. If
your machine doesn't have one already, you can make your own
dictionary by concatenating a few hundred of your favourite Usenet
articles and piping them through the following obfuscated shell
script:
#!/bin/sh #!/bin/sh
z=a-z];tr [A-Z\] \[$z|sed s/[\^$z[\^$z*/_/g|tr _ \\012|grep ..|sort -u z=a-z];tr [A-Z\] \[$z|sed s/[\^$z[\^$z*/_/g|tr _ \\012|grep ..|sort -u
Using articles from alt.folklore.computers is likely to make Using articles from alt.folklore.computers is likely to make
a more professional-looking dictionary than rec.arts.erotica. a more professional-looking dictionary than rec.arts.erotica.
AG must be run with the dictionary file as standard input.
Because anagrams consisting of just a few words are generally more
meaningful than those consisting of dozens of very short words, the
number of words in the anagrams is limited to 3 by default. This
limit can be changed using a numeric command line option, as in
`./ag -4 international obfuscated c code contest </usr/dict/words`.
### Bugs:
AG must be run with the dictionary file as standard input. - There is no error checking.
- Standard input must be seekable, so you can't pipe the dictionary into AG.
- The input sentence and each line in the dictionary may contain at most 32
distinct letters, and each letter may occur at most 15 times.
- Words in the dictionary may be at most 255 bytes long.
- AG cannot handle characters that sign-extend to negative values.
- Although AG works on both 16-bit and 32-bit machines, the size of the problems
it can solve is severely limited on machines that limit the stack size to 64k or
less.
### Obfuscatory notes:
Because anagrams consisting of just a few words are generally more As you can see, AG takes advantage of the new '92 whitespace rules to
meaningful than those consisting of dozens of very short words, the achieve a clear, readable, self-documenting layout. The identifiers
number of words in the anagrams is limited to 3 by default. This have been chosen in a way appropriate for an alphabet game, and common
limit can be changed using a numeric command line option, as in sources of bugs such as goto statements and malloc/free have been
"ag -4 international obfuscated c code contest </usr/dict/words". eliminated. As AG also refrains from abusing the preprocessor, it
doesn't really have much to offer in terms of "surface obfuscation".
Bugs: Instead, it tries to achieve both its speed and its obscurity through a
careful choice of algorithms. Some of the finer points of those
- There is no error checking algorithms are outlined in the rot-13 encoded spoiler below.
- Standard input must be seekable, so you can't pipe the dictionary
into AG. ### How it works: (ROT13 to read)
- The input sentence and each line in the dictionary may contain
at most 32 distinct letters, and each letter may occur at most 15
times. Urer sbyybjf n qrfpevcgvba bs fbzr bs gur qngn fgehpgherf naq
- Words in the dictionary may be at most 255 bytes long nytbevguzf hfrq ol NT. Vg vf ol ab zrnaf pbzcyrgr, ohg vg znl uryc
- AG cannot handle characters that sign-extend to negative values lbh trg na vqrn nobhg gur trareny cevapvcyrf.
- Although AG works on both 16-bit and 32-bit machines,
the size of the problems it can solve is severely limited --
on machines that limit the stack size to 64k or less.
Vagreanyyl, NT ercerfragf jbeqf naq fragraprf nf neenlf bs 32
4-ovg vagrtre ryrzragf. Rnpu ryrzrag ercerfragf gur ahzore bs
Obfuscatory notes: gvzrf n yrggre bpphef va gur jbeq/fragrapr. Gurer ner 32 ryrzragf
orpnhfr 32 vf n pbairavrag cbjre bs gjb ynetre guna gur ahzore bs
As you can see, AG takes advantage of the new '92 whitespace rules to yrggref va zbfg jrfgrea nycunorgf, naq gur ryrzragf ner 4 ovgf
achieve a clear, readable, self-documenting layout. The identifiers rnpu orpnhfr gur fnzr yrggre vf hayvxryl gb bpphe zber guna 15
have been chosen in a way appropriate for an alphabet game, and common gvzrf va n cenpgvpny nantenz trarengvba ceboyrz.
sources of bugs such as goto statements and malloc/free have been
eliminated. As AG also refrains from abusing the preprocessor, it Gurfr 32*4-ovg neenlf ner npghnyyl fgberq va zrzbel va n
doesn't really have much to offer in terms of "surface obfuscation". "ovg-genafcbfrq" sbezng, nf neenlf bs sbhe "ybat" inyhrf. Vg vf
Instead, it tries to achieve both its speed and its obscurity through a nffhzrq gung n "ybat" vf ng yrnfg 32 ovgf. Gur svefg 4-ovg yrggre
careful choice of algorithms. Some of the finer points of those pbhag vf sbezrq ol gur yrnfg fvtavsvpnag (2^0) ovg va rnpu bs gur
algorithms are outlined in the rot-13 encoded spoiler below. sbhe ybatf, gur arkg bar vf sbezrq ol gur 2^1 ovgf, rgp.
How it works: (ROT13 to read) Guvf fgbentr sbezng znxrf vg cbffvoyr gb nqq be fhogenpg gjb fhpu
irpgbef bs 32 4-ovg inyhrf va cnenyyry ol fvzhyngvat n frg bs 32
Urer sbyybjf n qrfpevcgvba bs fbzr bs gur qngn fgehpgherf naq ovanel shyy nqqref va fbsgjner hfvat ovgjvfr ybtvpny bcrengvbaf.
nytbevguzf hfrq ol NT. Vg vf ol ab zrnaf pbzcyrgr, ohg vg znl uryc R.t., nyy gur YFO:f bs gur erfhyg ner sbezrq va cnenyyry ol gnxvat
lbh trg na vqrn nobhg gur trareny cevapvcyrf. gur rkpyhfvir BE bs gur YFO:f va rnpu fhzznaq, naq 32 pneel ovgf
ner sbezrq va cnenyyry va n fvzvyne jnl hfvat n ybtvpny NAQ.
-- Guhf, 32 vaqrcraqrag 4-ovg nqqvgvbaf pna or cresbezrq ol whfg sbhe
vgrengvbaf bs n ybbc pbagnvavat fbzr 32-ovg ovgjvfr ybtvpny
Vagreanyyl, NT ercerfragf jbeqf naq fragraprf nf neenlf bs 32 bcrengvbaf, ohg ab nevguzrgvp bcrengvbaf bgure guna gubfr vzcyvrq
4-ovg vagrtre ryrzragf. Rnpu ryrzrag ercerfragf gur ahzore bs ol neenl vaqrkvat.
gvzrf n yrggre bpphef va gur jbeq/fragrapr. Gurer ner 32 ryrzragf
orpnhfr 32 vf n pbairavrag cbjre bs gjb ynetre guna gur ahzore bs Fhogenpgvba jbexf fvzvyneyl, naq va snpg NT bayl vzcyrzragf
yrggref va zbfg jrfgrea nycunorgf, naq gur ryrzragf ner 4 ovgf fhogenpgvba qverpgyl, unaqyvat nqqvgvba ol zrnaf bs gur vqragvgl
rnpu orpnhfr gur fnzr yrggre vf hayvxryl gb bpphe zber guna 15 n+o = n-(0-o).
gvzrf va n cenpgvpny nantenz trarengvba ceboyrz.
Va nqqvgvba gb guvf 32*4-ovg ercerfragngvba, NT nyfb sbezf n fb-pnyyrq
Gurfr 32*4-ovg neenlf ner npghnyyl fgberq va zrzbel va n "fvtangher" gung vf gur ovgjvfr BE bs gur sbhe ybatf, juvpu vf
"ovg-genafcbfrq" sbezng, nf neenlf bs sbhe "ybat" inyhrf. Vg vf rdhvinyrag gb fnlvat gung gur fvtangher bs n jbeq pbagnvaf n ybtvpny 1
nffhzrq gung n "ybat" vf ng yrnfg 32 ovgf. Gur svefg 4-ovg yrggre va gur ovg cbfvgvbaf pbeerfcbaqvat gb yrggref bppheevat ng yrnfg bapr
pbhag vf sbezrq ol gur yrnfg fvtavsvpnag (2^0) ovg va rnpu bs gur va gung jbeq.
sbhe ybatf, gur arkg bar vf sbezrq ol gur 2^1 ovgf, rgp.
Gur svefg guvat NT qbrf vf gb pbafgehpg n ybbxhc gnoyr bs 256
Guvf fgbentr sbezng znxrf vg cbffvoyr gb nqq be fhogenpg gjb fhpu ybatf, bar sbe rnpu 8-ovg punenpgre inyhr. Gur ragel sbe n
irpgbef bs 32 4-ovg inyhrf va cnenyyry ol fvzhyngvat n frg bs 32 punenpgre jvyy or mreb vs gung punenpgre qbrfa'g nccrne va gur
ovanel shyy nqqref va fbsgjner hfvat ovgjvfr ybtvpny bcrengvbaf. fragrapr tvira ba gur pbzznaq yvar, be vg jvyy unir n fvatyr ovg
R.t., nyy gur YFO:f bs gur erfhyg ner sbezrq va cnenyyry ol gnxvat frg vs gur punenpgre qbrf nccrne va gur fragrapr. Ol nqqvat
gur rkpyhfvir BE bs gur YFO:f va rnpu fhzznaq, naq 32 pneel ovgf gbtrgure gur ovg znfxf sbe nyy gur yrggref va gur vachg fragrapr
ner sbezrq va cnenyyry va n fvzvyne jnl hfvat n ybtvpny NAQ. hfvat gur genafcbfr nqqvgvba zrgubq qrfpevorq nobir, NT sbezf gur
Guhf, 32 vaqrcraqrag 4-ovg nqqvgvbaf pna or cresbezrq ol whfg sbhe 32*4 ovg neenl ercerfragngvba bs gur vachg fragrapr.
vgrengvbaf bs n ybbc pbagnvavat fbzr 32-ovg ovgjvfr ybtvpny
bcrengvbaf, ohg ab nevguzrgvp bcrengvbaf bgure guna gubfr vzcyvrq Gur arkg npgvba cresbezrq vf ernqvat gur qvpgvbanel. Gubfr jbeqf gung
ol neenl vaqrkvat. pbagnva yrggref abg va gur vachg fragrapr ner vzzrqvngryl qvfpneqrq.
Jbeqf pbagnvavat gur evtug yrggref ohg va rkprffvir ahzoref ner
Fhogenpgvba jbexf fvzvyneyl, naq va snpg NT bayl vzcyrzragf ryvzvangrq va n frcnengr purpx vaibyivat gur 32*4 ovg neenl.
fhogenpgvba qverpgyl, unaqyvat nqqvgvba ol zrnaf bs gur vqragvgl
n+o = n-(0-o). Gur erznvavat jbeqf, juvpu jvyy or ersreerq gb nf "pnaqvqngr jbeqf",
ner fgberq va 32*4-ovg ercerfragngvba, gbtrgure jvgu gurve fvtangherf
Va nqqvgvba gb guvf 32*4-ovg ercerfragngvba, NT nyfb sbezf n fb-pnyyrq naq bssfrgf vagb gur qvpgvbanel svyr fb gung gur cynva-grkg irefvba bs
"fvtangher" gung vf gur ovgjvfr BE bs gur sbhe ybatf, juvpu vf n jbeq pna yngre or sbhaq sbe cevagvat. Guvf vasbezngvba vf xrcg va n
rdhvinyrag gb fnlvat gung gur fvtangher bs n jbeq pbagnvaf n ybtvpny 1 ybpny "fgehpg" va gur qvpgvbanel-ernqvat shapgvba, naq zrzbel vf
va gur ovg cbfvgvbaf pbeerfcbaqvat gb yrggref bppheevat ng yrnfg bapr nyybpngrq sbe rnpu pnaqvqngr jbeq fvzcyl ol znxvat nabgure erphefvir
va gung jbeq. pnyy gb gung shapgvba.
Gur svefg guvat NT qbrf vf gb pbafgehpg n ybbxhc gnoyr bs 256 Rnpu fgehpg fb nyybpngrq vf yvaxrq vagb n svkrq-fvmr unfu gnoyr bs
ybatf, bar sbe rnpu 8-ovg punenpgre inyhr. Gur ragel sbe n 4096 ragevrf vaqrkrq ol gur 12 ybj ovgf bs gur jbeq'f fvtangher.
punenpgre jvyy or mreb vs gung punenpgre qbrfa'g nccrne va gur Jura gur qvpgvbanel-ernqvat shapgvba rapbhagref raq-bs-svyr, nyy gur
fragrapr tvira ba gur pbzznaq yvar, be vg jvyy unir n fvatyr ovg pnaqvqngr jbeqf unir orra fgberq va arfgrq npgvingvba erpbeqf ba gur
frg vs gur punenpgre qbrf nccrne va gur fragrapr. Ol nqqvat fgnpx, npprffvoyr guebhtu gur unfu gnoyr.
gbtrgure gur ovg znfxf sbe nyy gur yrggref va gur vachg fragrapr
hfvat gur genafcbfr nqqvgvba zrgubq qrfpevorq nobir, NT sbezf gur Trarengvat gur nantenzf vf gura qbar ol genirefvat gur unfu gnoyr naq
32*4 ovg neenl ercerfragngvba bs gur vachg fragrapr. fhogenpgvat gur yrggref bs rnpu jbeq va gur unfu gnoyr sebz gur
"pheerag fragrapr", juvpu vavgvnyyl vf gur fragrapr tvira ba gur
Gur arkg npgvba cresbezrq vf ernqvat gur qvpgvbanel. Gubfr jbeqf gung pbzznaq yvar.
pbagnva yrggref abg va gur vachg fragrapr ner vzzrqvngryl qvfpneqrq.
Jbeqf pbagnvavat gur evtug yrggref ohg va rkprffvir ahzoref ner Gur fhogenpgvba vf cresbezrq va cnenyyry ba gur 4-ovg yrggre pbhagf
ryvzvangrq va n frcnengr purpx vaibyivat gur 32*4 ovg neenl. nf qrfpevorq nobir, naq vs nyy 32 erfhygf ner mreb, na nantenz unf
orra sbhaq. Vs gur erfhyg vf artngvir sbe bar be zber bs gur yrggref
Gur erznvavat jbeqf, juvpu jvyy or ersreerq gb nf "pnaqvqngr jbeqf", (nf vaqvpngrq ol bar be zber "1" va n irpgbe bs 32 obeebj ovgf
ner fgberq va 32*4-ovg ercerfragngvba, gbtrgure jvgu gurve fvtangherf erghearq ol gur fhogenpgvba ebhgvar), gur jbeq qvq abg zngpu gur
naq bssfrgf vagb gur qvpgvbanel svyr fb gung gur cynva-grkg irefvba bs pheerag fragrapr naq vf vtaberq. Svanyyl, vs gur erfhyg pbagnvarq
n jbeq pna yngre or sbhaq sbe cevagvat. Guvf vasbezngvba vf xrcg va n bayl abaartngvir yrggre pbhagf, jr unir sbhaq n cnegvny nantenz:
ybpny "fgehpg" va gur qvpgvbanel-ernqvat shapgvba, naq zrzbel vf n jbeq pbagnvavat fbzr, ohg abg nyy, bs gur yrggref va gur pheerag
nyybpngrq sbe rnpu pnaqvqngr jbeq fvzcyl ol znxvat nabgure erphefvir fragrapr. Va guvf pnfr jr erphefviryl gel gb svaq na nantenz bs gur
pnyy gb gung shapgvba. erznvavat yrggref. Gur qrcgu bs gur erphefvba vf yvzvgrq gb gur
znkvzhz ahzore bs jbeqf va gur nantenz, nf fcrpvsvrq ol gur hfre.
Rnpu fgehpg fb nyybpngrq vf yvaxrq vagb n svkrq-fvmr unfu gnoyr bs
4096 ragevrf vaqrkrq ol gur 12 ybj ovgf bs gur jbeq'f fvtangher. Jura gur qrrcrfg erphefvba yriry unf orra ernpurq, na bcgvzvmngvba pna
Jura gur qvpgvbanel-ernqvat shapgvba rapbhagref raq-bs-svyr, nyy gur or nccyvrq: orpnhfr ab shegure erphefvba jvyy or qbar, gurer vf ab
pnaqvqngr jbeqf unir orra fgberq va arfgrq npgvingvba erpbeqf ba gur arrq gb ybbx sbe cnegvny nantenzf, naq gurersber NT bayl arrqf gb
fgnpx, npprffvoyr guebhtu gur unfu gnoyr. purpx sbe jbeqf gung pbagnva rknpgyl gur fnzr yrggref nf gur pheerag
fragrapr. Gubfr jbeqf pna or sbhaq fvzcyl ol vaqrkvat gur unfu gnoyr
Trarengvat gur nantenzf vf gura qbar ol genirefvat gur unfu gnoyr naq jvgu gur fvtangher bs gur pheerag fragrapr.
fhogenpgvat gur yrggref bs rnpu jbeq va gur unfu gnoyr sebz gur
"pheerag fragrapr", juvpu vavgvnyyl vf gur fragrapr tvira ba gur Rira jura abg ba gur qrrcrfg erphefvba yriry, NT trarenyyl nibvqf
pbzznaq yvar. rknzvavat nyy gur ragevrf bs gur unfu gnoyr. Gur vqrn vf gung jr ner
abg vagrerfgrq va unfu ohpxrgf jubfr jbeqf pbagnva nal yrggref abg
Gur fhogenpgvba vf cresbezrq va cnenyyry ba gur 4-ovg yrggre pbhagf va gur pheerag fragrapr; gurfr ohpxrgf ner rknpgyl gubfr jubfr vaqrk
nf qrfpevorq nobir, naq vs nyy 32 erfhygf ner mreb, na nantenz unf unf n ybtvpny bar va n ovg cbfvgvba jurer gur fvtangher bs gur pheerag
orra sbhaq. Vs gur erfhyg vf artngvir sbe bar be zber bs gur yrggref fragrapr unf n mreb. Chg nabgure jnl, jr jnag gb ybbc guebhtu bayl
(nf vaqvpngrq ol bar be zber "1" va n irpgbe bs 32 obeebj ovgf gubfr unfu ohpxrg vaqvprf "v" gung pbagnva mrebrf va nyy gur ovg
erghearq ol gur fhogenpgvba ebhgvar), gur jbeq qvq abg zngpu gur cbfvgvbaf jurer gur fvtangher "f" bs gur pheerag fragrapr pbagnvaf
pheerag fragrapr naq vf vtaberq. Svanyyl, vs gur erfhyg pbagnvarq n mreb; guvf pna or rkcerffrq va P nf (v & ~f == 0).
bayl abaartngvir yrggre pbhagf, jr unir sbhaq n cnegvny nantenz:
n jbeq pbagnvavat fbzr, ohg abg nyy, bs gur yrggref va gur pheerag Vg vf cbffvoyr gb ybbc guebhtu nyy fhpu ahzoref va na rssvpvrag jnl ol
fragrapr. Va guvf pnfr jr erphefviryl gel gb svaq na nantenz bs gur gnxvat nqinagntr bs pregnva cebcregvrf bs ovanel nevguzrgvp: ol
erznvavat yrggref. Gur qrcgu bs gur erphefvba vf yvzvgrq gb gur sbepvat gur ovgf pbeerfcbaqvat gb mrebrf va "f" gb barf, jr pna znxr
znkvzhz ahzore bs jbeqf va gur nantenz, nf fcrpvsvrq ol gur hfre. gur pneevrf trarengrq va vaperzragvat "v" cebcntngr fgenvtug npebff
gubfr ovgf gung fubhyq erznva mreb. Sbe rknzcyr, gur sbyybjvat
Jura gur qrrcrfg erphefvba yriry unf orra ernpurq, na bcgvzvmngvba pna cebtenz cevagf nyy gubfr 16-ovg vagrtref gung pbagnva mrebrf va nyy
or nccyvrq: orpnhfr ab shegure erphefvba jvyy or qbar, gurer vf ab rira ovg cbfvgvbaf:
arrq gb ybbx sbe cnegvny nantenzf, naq gurersber NT bayl arrqf gb
purpx sbe jbeqf gung pbagnva rknpgyl gur fnzr yrggref nf gur pheerag znva(){vag v=0,f=0kNNNN;qb{cevags("%04k\g",v);}juvyr(v=((v|~f)+1)&f);}
fragrapr. Gubfr jbeqf pna or sbhaq fvzcyl ol vaqrkvat gur unfu gnoyr
jvgu gur fvtangher bs gur pheerag fragrapr. NT hfrf n fvzvyne zrgubq ohg jbexf va gur bccbfvgr qverpgvba, svaqvat
gur arkg ybjre inyhr jvgu mrebrf va tvira ovg cbfvgvbaf ol cebcntngvat
Rira jura abg ba gur qrrcrfg erphefvba yriry, NT trarenyyl nibvqf obeebjf npebff gubfr ovgf. Fbzr nqqvgvbany nqwhfgzragf ner znqr
rknzvavat nyy gur ragevrf bs gur unfu gnoyr. Gur vqrn vf gung jr ner gb gur unfu gnoyr vaqrk jura vavgvngvat n erphefvir frnepu, hfvat
abg vagrerfgrq va unfu ohpxrgf jubfr jbeqf pbagnva nal yrggref abg fvzvyne ovg-gjvqqyvat grpuavdhrf.
va gur pheerag fragrapr; gurfr ohpxrgf ner rknpgyl gubfr jubfr vaqrk
unf n ybtvpny bar va n ovg cbfvgvba jurer gur fvtangher bs gur pheerag Jurarire na nantenz unf orra sbhaq, vg vf cevagrq ol genirefvat n
fragrapr unf n mreb. Chg nabgure jnl, jr jnag gb ybbc guebhtu bayl yvaxrq yvfg sbezrq ol fgehpgf va gur npgvingvba erpbeqf bs gur
gubfr unfu ohpxrg vaqvprf "v" gung pbagnva mrebrf va nyy gur ovg erphefvir vaibpngvbaf bs gur frnepu shapgvba, frrxvat gb gur ortvaavat
cbfvgvbaf jurer gur fvtangher "f" bs gur pheerag fragrapr pbagnvaf bs gur jbeq zngpurq ol gung vaibpngvba, naq pbclvat gur punenpgref bs
n mreb; guvf pna or rkcerffrq va P nf (v & ~f == 0). gur jbeq qverpgyl sebz fgnaqneq vachg gb fgnaqneq bhgchg.
Vg vf cbffvoyr gb ybbc guebhtu nyy fhpu ahzoref va na rssvpvrag jnl ol
gnxvat nqinagntr bs pregnva cebcregvrf bs ovanel nevguzrgvp: ol
sbepvat gur ovgf pbeerfcbaqvat gb mrebrf va "f" gb barf, jr pna znxr
gur pneevrf trarengrq va vaperzragvat "v" cebcntngr fgenvtug npebff
gubfr ovgf gung fubhyq erznva mreb. Sbe rknzcyr, gur sbyybjvat
cebtenz cevagf nyy gubfr 16-ovg vagrtref gung pbagnva mrebrf va nyy
rira ovg cbfvgvbaf:
znva(){vag v=0,f=0kNNNN;qb{cevags("%04k\g",v);}juvyr(v=((v|~f)+1)&f);}
NT hfrf n fvzvyne zrgubq ohg jbexf va gur bccbfvgr qverpgvba, svaqvat
gur arkg ybjre inyhr jvgu mrebrf va tvira ovg cbfvgvbaf ol cebcntngvat
obeebjf npebff gubfr ovgf. Fbzr nqqvgvbany nqwhfgzragf ner znqr
gb gur unfu gnoyr vaqrk jura vavgvngvat n erphefvir frnepu, hfvat
fvzvyne ovg-gjvqqyvat grpuavdhrf.
Jurarire na nantenz unf orra sbhaq, vg vf cevagrq ol genirefvat n
yvaxrq yvfg sbezrq ol fgehpgf va gur npgvingvba erpbeqf bs gur
erphefvir vaibpngvbaf bs gur frnepu shapgvba, frrxvat gb gur ortvaavat
bs gur jbeq zngpurq ol gung vaibpngvba, naq pbclvat gur punenpgref bs
gur jbeq qverpgyl sebz fgnaqneq vachg gb fgnaqneq bhgchg.
## Copyright and CC BY-SA 4.0 License: ## Copyright and CC BY-SA 4.0 License:
+3 -3
View File
@@ -1,12 +1,12 @@
#include <stdio.h> #include <stdio.h>
#include <limits.h>
long a long a
[4],b[ [4],b[
4],c[4] 4],c[4]
,d[0400],e=1; ,d[0400],e=1;
typedef struct f{long g typedef struct f{long g
,h,i[4] ,j;struct f*k;}f;f g,* ,h,i[4] ,j;struct f*k;}f;f g,*
l[4096 ]; char h[256],*m,k=3; l[4096 ]; char h[ARG_MAX+1],*m,k=3;
long n (o, p,q)long*o,*p,*q;{ long n (o, p,q)long*o,*p,*q;{
long r =4,s,i=0;for(;r--;s=i^ long r =4,s,i=0;for(;r--;s=i^
*o^*p, i=i&*p|(i|*p)&~*o++,*q *o^*p, i=i&*p|(i|*p)&~*o++,*q
@@ -33,7 +33,7 @@ s,i=o->h;q.k=o;r>i?j=l[r=i]:r<i&&
j;char *z,*p; j;char *z,*p;
for(;m ? j.j= for(;m ? j.j=
ftell( stdin) ftell( stdin)
,7,(m= gets(m ))||w( ,7,(m= gets(m ))||w(
&g,315 *13,l[ 4095] &g,315 *13,l[ 4095]
,k,64* 64)&0: 0;n(g ,k,64* 64)&0: 0;n(g
.i,j.i, b)||(u (&j),j. .i,j.i, b)||(u (&j),j.