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:
1 parent
07b69a677b
commit
888b3b91a6
4 files changed
+180
-169
No files matched your search
@@ -1,2 +1,2 @@
|
|||||||
gson
|
gson
|
||||||
og
|
ag
|
||||||
+3
-3
@@ -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} $< $@
|
||||||
|
|
||||||
|
|||||||
+173
-162
@@ -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
|
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
|
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
|
your machine doesn't have one already, you can make your own
|
||||||
dictionary by concatenating a few hundred of your favourite Usenet
|
dictionary by concatenating a few hundred of your favourite Usenet
|
||||||
articles and piping them through the following obfuscated shell
|
articles and piping them through the following obfuscated shell
|
||||||
script:
|
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.
|
AG must be run with the dictionary file as standard input.
|
||||||
|
|
||||||
Because anagrams consisting of just a few words are generally more
|
Because anagrams consisting of just a few words are generally more
|
||||||
meaningful than those consisting of dozens of very short words, the
|
meaningful than those consisting of dozens of very short words, the
|
||||||
number of words in the anagrams is limited to 3 by default. This
|
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
|
limit can be changed using a numeric command line option, as in
|
||||||
"ag -4 international obfuscated c code contest </usr/dict/words".
|
`./ag -4 international obfuscated c code contest </usr/dict/words`.
|
||||||
|
|
||||||
Bugs:
|
### Bugs:
|
||||||
|
|
||||||
- There is no error checking
|
- There is no error checking.
|
||||||
- Standard input must be seekable, so you can't pipe the dictionary
|
- Standard input must be seekable, so you can't pipe the dictionary into AG.
|
||||||
into AG.
|
- The input sentence and each line in the dictionary may contain at most 32
|
||||||
- The input sentence and each line in the dictionary may contain
|
distinct letters, and each letter may occur at most 15 times.
|
||||||
at most 32 distinct letters, and each letter may occur at most 15
|
- Words in the dictionary may be at most 255 bytes long.
|
||||||
times.
|
- AG cannot handle characters that sign-extend to negative values.
|
||||||
- Words in the dictionary may be at most 255 bytes long
|
- Although AG works on both 16-bit and 32-bit machines, the size of the problems
|
||||||
- AG cannot handle characters that sign-extend to negative values
|
it can solve is severely limited on machines that limit the stack size to 64k or
|
||||||
- Although AG works on both 16-bit and 32-bit machines,
|
less.
|
||||||
the size of the problems it can solve is severely limited
|
|
||||||
on machines that limit the stack size to 64k or less.
|
|
||||||
|
|
||||||
|
|
||||||
Obfuscatory notes:
|
### Obfuscatory notes:
|
||||||
|
|
||||||
As you can see, AG takes advantage of the new '92 whitespace rules to
|
As you can see, AG takes advantage of the new '92 whitespace rules to
|
||||||
achieve a clear, readable, self-documenting layout. The identifiers
|
achieve a clear, readable, self-documenting layout. The identifiers
|
||||||
have been chosen in a way appropriate for an alphabet game, and common
|
have been chosen in a way appropriate for an alphabet game, and common
|
||||||
sources of bugs such as goto statements and malloc/free have been
|
sources of bugs such as goto statements and malloc/free have been
|
||||||
eliminated. As AG also refrains from abusing the preprocessor, it
|
eliminated. As AG also refrains from abusing the preprocessor, it
|
||||||
doesn't really have much to offer in terms of "surface obfuscation".
|
doesn't really have much to offer in terms of "surface obfuscation".
|
||||||
Instead, it tries to achieve both its speed and its obscurity through a
|
Instead, it tries to achieve both its speed and its obscurity through a
|
||||||
careful choice of algorithms. Some of the finer points of those
|
careful choice of algorithms. Some of the finer points of those
|
||||||
algorithms are outlined in the rot-13 encoded spoiler below.
|
algorithms are outlined in the rot-13 encoded spoiler below.
|
||||||
|
|
||||||
How it works: (ROT13 to read)
|
### How it works: (ROT13 to read)
|
||||||
|
|
||||||
Urer sbyybjf n qrfpevcgvba bs fbzr bs gur qngn fgehpgherf naq
|
|
||||||
nytbevguzf hfrq ol NT. Vg vf ol ab zrnaf pbzcyrgr, ohg vg znl uryc
|
|
||||||
lbh trg na vqrn nobhg gur trareny cevapvcyrf.
|
|
||||||
|
|
||||||
--
|
Urer sbyybjf n qrfpevcgvba bs fbzr bs gur qngn fgehpgherf naq
|
||||||
|
nytbevguzf hfrq ol NT. Vg vf ol ab zrnaf pbzcyrgr, ohg vg znl uryc
|
||||||
|
lbh trg na vqrn nobhg gur trareny cevapvcyrf.
|
||||||
|
|
||||||
Vagreanyyl, NT ercerfragf jbeqf naq fragraprf nf neenlf bs 32
|
--
|
||||||
4-ovg vagrtre ryrzragf. Rnpu ryrzrag ercerfragf gur ahzore bs
|
|
||||||
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
|
|
||||||
yrggref va zbfg jrfgrea nycunorgf, naq gur ryrzragf ner 4 ovgf
|
|
||||||
rnpu orpnhfr gur fnzr yrggre vf hayvxryl gb bpphe zber guna 15
|
|
||||||
gvzrf va n cenpgvpny nantenz trarengvba ceboyrz.
|
|
||||||
|
|
||||||
Gurfr 32*4-ovg neenlf ner npghnyyl fgberq va zrzbel va n
|
Vagreanyyl, NT ercerfragf jbeqf naq fragraprf nf neenlf bs 32
|
||||||
"ovg-genafcbfrq" sbezng, nf neenlf bs sbhe "ybat" inyhrf. Vg vf
|
4-ovg vagrtre ryrzragf. Rnpu ryrzrag ercerfragf gur ahzore bs
|
||||||
nffhzrq gung n "ybat" vf ng yrnfg 32 ovgf. Gur svefg 4-ovg yrggre
|
gvzrf n yrggre bpphef va gur jbeq/fragrapr. Gurer ner 32 ryrzragf
|
||||||
pbhag vf sbezrq ol gur yrnfg fvtavsvpnag (2^0) ovg va rnpu bs gur
|
orpnhfr 32 vf n pbairavrag cbjre bs gjb ynetre guna gur ahzore bs
|
||||||
sbhe ybatf, gur arkg bar vf sbezrq ol gur 2^1 ovgf, rgp.
|
yrggref va zbfg jrfgrea nycunorgf, naq gur ryrzragf ner 4 ovgf
|
||||||
|
rnpu orpnhfr gur fnzr yrggre vf hayvxryl gb bpphe zber guna 15
|
||||||
|
gvzrf va n cenpgvpny nantenz trarengvba ceboyrz.
|
||||||
|
|
||||||
Guvf fgbentr sbezng znxrf vg cbffvoyr gb nqq be fhogenpg gjb fhpu
|
Gurfr 32*4-ovg neenlf ner npghnyyl fgberq va zrzbel va n
|
||||||
irpgbef bs 32 4-ovg inyhrf va cnenyyry ol fvzhyngvat n frg bs 32
|
"ovg-genafcbfrq" sbezng, nf neenlf bs sbhe "ybat" inyhrf. Vg vf
|
||||||
ovanel shyy nqqref va fbsgjner hfvat ovgjvfr ybtvpny bcrengvbaf.
|
nffhzrq gung n "ybat" vf ng yrnfg 32 ovgf. Gur svefg 4-ovg yrggre
|
||||||
R.t., nyy gur YFO:f bs gur erfhyg ner sbezrq va cnenyyry ol gnxvat
|
pbhag vf sbezrq ol gur yrnfg fvtavsvpnag (2^0) ovg va rnpu bs gur
|
||||||
gur rkpyhfvir BE bs gur YFO:f va rnpu fhzznaq, naq 32 pneel ovgf
|
sbhe ybatf, gur arkg bar vf sbezrq ol gur 2^1 ovgf, rgp.
|
||||||
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
|
|
||||||
bcrengvbaf, ohg ab nevguzrgvp bcrengvbaf bgure guna gubfr vzcyvrq
|
|
||||||
ol neenl vaqrkvat.
|
|
||||||
|
|
||||||
Fhogenpgvba jbexf fvzvyneyl, naq va snpg NT bayl vzcyrzragf
|
Guvf fgbentr sbezng znxrf vg cbffvoyr gb nqq be fhogenpg gjb fhpu
|
||||||
fhogenpgvba qverpgyl, unaqyvat nqqvgvba ol zrnaf bs gur vqragvgl
|
irpgbef bs 32 4-ovg inyhrf va cnenyyry ol fvzhyngvat n frg bs 32
|
||||||
n+o = n-(0-o).
|
ovanel shyy nqqref va fbsgjner hfvat ovgjvfr ybtvpny bcrengvbaf.
|
||||||
|
R.t., nyy gur YFO:f bs gur erfhyg ner sbezrq va cnenyyry ol gnxvat
|
||||||
|
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
|
||||||
|
bcrengvbaf, ohg ab nevguzrgvp bcrengvbaf bgure guna gubfr vzcyvrq
|
||||||
|
ol neenl vaqrkvat.
|
||||||
|
|
||||||
Va nqqvgvba gb guvf 32*4-ovg ercerfragngvba, NT nyfb sbezf n fb-pnyyrq
|
Fhogenpgvba jbexf fvzvyneyl, naq va snpg NT bayl vzcyrzragf
|
||||||
"fvtangher" gung vf gur ovgjvfr BE bs gur sbhe ybatf, juvpu vf
|
fhogenpgvba qverpgyl, unaqyvat nqqvgvba ol zrnaf bs gur vqragvgl
|
||||||
rdhvinyrag gb fnlvat gung gur fvtangher bs n jbeq pbagnvaf n ybtvpny 1
|
n+o = n-(0-o).
|
||||||
va gur ovg cbfvgvbaf pbeerfcbaqvat gb yrggref bppheevat ng yrnfg bapr
|
|
||||||
va gung jbeq.
|
|
||||||
|
|
||||||
Gur svefg guvat NT qbrf vf gb pbafgehpg n ybbxhc gnoyr bs 256
|
Va nqqvgvba gb guvf 32*4-ovg ercerfragngvba, NT nyfb sbezf n fb-pnyyrq
|
||||||
ybatf, bar sbe rnpu 8-ovg punenpgre inyhr. Gur ragel sbe n
|
"fvtangher" gung vf gur ovgjvfr BE bs gur sbhe ybatf, juvpu vf
|
||||||
punenpgre jvyy or mreb vs gung punenpgre qbrfa'g nccrne va gur
|
rdhvinyrag gb fnlvat gung gur fvtangher bs n jbeq pbagnvaf n ybtvpny 1
|
||||||
fragrapr tvira ba gur pbzznaq yvar, be vg jvyy unir n fvatyr ovg
|
va gur ovg cbfvgvbaf pbeerfcbaqvat gb yrggref bppheevat ng yrnfg bapr
|
||||||
frg vs gur punenpgre qbrf nccrne va gur fragrapr. Ol nqqvat
|
va gung jbeq.
|
||||||
gbtrgure gur ovg znfxf sbe nyy gur yrggref va gur vachg fragrapr
|
|
||||||
hfvat gur genafcbfr nqqvgvba zrgubq qrfpevorq nobir, NT sbezf gur
|
|
||||||
32*4 ovg neenl ercerfragngvba bs gur vachg fragrapr.
|
|
||||||
|
|
||||||
Gur arkg npgvba cresbezrq vf ernqvat gur qvpgvbanel. Gubfr jbeqf gung
|
Gur svefg guvat NT qbrf vf gb pbafgehpg n ybbxhc gnoyr bs 256
|
||||||
pbagnva yrggref abg va gur vachg fragrapr ner vzzrqvngryl qvfpneqrq.
|
ybatf, bar sbe rnpu 8-ovg punenpgre inyhr. Gur ragel sbe n
|
||||||
Jbeqf pbagnvavat gur evtug yrggref ohg va rkprffvir ahzoref ner
|
punenpgre jvyy or mreb vs gung punenpgre qbrfa'g nccrne va gur
|
||||||
ryvzvangrq va n frcnengr purpx vaibyivat gur 32*4 ovg neenl.
|
fragrapr tvira ba gur pbzznaq yvar, be vg jvyy unir n fvatyr ovg
|
||||||
|
frg vs gur punenpgre qbrf nccrne va gur fragrapr. Ol nqqvat
|
||||||
|
gbtrgure gur ovg znfxf sbe nyy gur yrggref va gur vachg fragrapr
|
||||||
|
hfvat gur genafcbfr nqqvgvba zrgubq qrfpevorq nobir, NT sbezf gur
|
||||||
|
32*4 ovg neenl ercerfragngvba bs gur vachg fragrapr.
|
||||||
|
|
||||||
Gur erznvavat jbeqf, juvpu jvyy or ersreerq gb nf "pnaqvqngr jbeqf",
|
Gur arkg npgvba cresbezrq vf ernqvat gur qvpgvbanel. Gubfr jbeqf gung
|
||||||
ner fgberq va 32*4-ovg ercerfragngvba, gbtrgure jvgu gurve fvtangherf
|
pbagnva yrggref abg va gur vachg fragrapr ner vzzrqvngryl qvfpneqrq.
|
||||||
naq bssfrgf vagb gur qvpgvbanel svyr fb gung gur cynva-grkg irefvba bs
|
Jbeqf pbagnvavat gur evtug yrggref ohg va rkprffvir ahzoref ner
|
||||||
n jbeq pna yngre or sbhaq sbe cevagvat. Guvf vasbezngvba vf xrcg va n
|
ryvzvangrq va n frcnengr purpx vaibyivat gur 32*4 ovg neenl.
|
||||||
ybpny "fgehpg" va gur qvpgvbanel-ernqvat shapgvba, naq zrzbel vf
|
|
||||||
nyybpngrq sbe rnpu pnaqvqngr jbeq fvzcyl ol znxvat nabgure erphefvir
|
|
||||||
pnyy gb gung shapgvba.
|
|
||||||
|
|
||||||
Rnpu fgehpg fb nyybpngrq vf yvaxrq vagb n svkrq-fvmr unfu gnoyr bs
|
Gur erznvavat jbeqf, juvpu jvyy or ersreerq gb nf "pnaqvqngr jbeqf",
|
||||||
4096 ragevrf vaqrkrq ol gur 12 ybj ovgf bs gur jbeq'f fvtangher.
|
ner fgberq va 32*4-ovg ercerfragngvba, gbtrgure jvgu gurve fvtangherf
|
||||||
Jura gur qvpgvbanel-ernqvat shapgvba rapbhagref raq-bs-svyr, nyy gur
|
naq bssfrgf vagb gur qvpgvbanel svyr fb gung gur cynva-grkg irefvba bs
|
||||||
pnaqvqngr jbeqf unir orra fgberq va arfgrq npgvingvba erpbeqf ba gur
|
n jbeq pna yngre or sbhaq sbe cevagvat. Guvf vasbezngvba vf xrcg va n
|
||||||
fgnpx, npprffvoyr guebhtu gur unfu gnoyr.
|
ybpny "fgehpg" va gur qvpgvbanel-ernqvat shapgvba, naq zrzbel vf
|
||||||
|
nyybpngrq sbe rnpu pnaqvqngr jbeq fvzcyl ol znxvat nabgure erphefvir
|
||||||
|
pnyy gb gung shapgvba.
|
||||||
|
|
||||||
Trarengvat gur nantenzf vf gura qbar ol genirefvat gur unfu gnoyr naq
|
Rnpu fgehpg fb nyybpngrq vf yvaxrq vagb n svkrq-fvmr unfu gnoyr bs
|
||||||
fhogenpgvat gur yrggref bs rnpu jbeq va gur unfu gnoyr sebz gur
|
4096 ragevrf vaqrkrq ol gur 12 ybj ovgf bs gur jbeq'f fvtangher.
|
||||||
"pheerag fragrapr", juvpu vavgvnyyl vf gur fragrapr tvira ba gur
|
Jura gur qvpgvbanel-ernqvat shapgvba rapbhagref raq-bs-svyr, nyy gur
|
||||||
pbzznaq yvar.
|
pnaqvqngr jbeqf unir orra fgberq va arfgrq npgvingvba erpbeqf ba gur
|
||||||
|
fgnpx, npprffvoyr guebhtu gur unfu gnoyr.
|
||||||
|
|
||||||
Gur fhogenpgvba vf cresbezrq va cnenyyry ba gur 4-ovg yrggre pbhagf
|
Trarengvat gur nantenzf vf gura qbar ol genirefvat gur unfu gnoyr naq
|
||||||
nf qrfpevorq nobir, naq vs nyy 32 erfhygf ner mreb, na nantenz unf
|
fhogenpgvat gur yrggref bs rnpu jbeq va gur unfu gnoyr sebz gur
|
||||||
orra sbhaq. Vs gur erfhyg vf artngvir sbe bar be zber bs gur yrggref
|
"pheerag fragrapr", juvpu vavgvnyyl vf gur fragrapr tvira ba gur
|
||||||
(nf vaqvpngrq ol bar be zber "1" va n irpgbe bs 32 obeebj ovgf
|
pbzznaq yvar.
|
||||||
erghearq ol gur fhogenpgvba ebhgvar), gur jbeq qvq abg zngpu gur
|
|
||||||
pheerag fragrapr naq vf vtaberq. Svanyyl, vs gur erfhyg pbagnvarq
|
|
||||||
bayl abaartngvir yrggre pbhagf, jr unir sbhaq n cnegvny nantenz:
|
|
||||||
n jbeq pbagnvavat fbzr, ohg abg nyy, bs gur yrggref va gur pheerag
|
|
||||||
fragrapr. Va guvf pnfr jr erphefviryl gel gb svaq na nantenz bs gur
|
|
||||||
erznvavat yrggref. Gur qrcgu bs gur erphefvba vf yvzvgrq gb gur
|
|
||||||
znkvzhz ahzore bs jbeqf va gur nantenz, nf fcrpvsvrq ol gur hfre.
|
|
||||||
|
|
||||||
Jura gur qrrcrfg erphefvba yriry unf orra ernpurq, na bcgvzvmngvba pna
|
Gur fhogenpgvba vf cresbezrq va cnenyyry ba gur 4-ovg yrggre pbhagf
|
||||||
or nccyvrq: orpnhfr ab shegure erphefvba jvyy or qbar, gurer vf ab
|
nf qrfpevorq nobir, naq vs nyy 32 erfhygf ner mreb, na nantenz unf
|
||||||
arrq gb ybbx sbe cnegvny nantenzf, naq gurersber NT bayl arrqf gb
|
orra sbhaq. Vs gur erfhyg vf artngvir sbe bar be zber bs gur yrggref
|
||||||
purpx sbe jbeqf gung pbagnva rknpgyl gur fnzr yrggref nf gur pheerag
|
(nf vaqvpngrq ol bar be zber "1" va n irpgbe bs 32 obeebj ovgf
|
||||||
fragrapr. Gubfr jbeqf pna or sbhaq fvzcyl ol vaqrkvat gur unfu gnoyr
|
erghearq ol gur fhogenpgvba ebhgvar), gur jbeq qvq abg zngpu gur
|
||||||
jvgu gur fvtangher bs gur pheerag fragrapr.
|
pheerag fragrapr naq vf vtaberq. Svanyyl, vs gur erfhyg pbagnvarq
|
||||||
|
bayl abaartngvir yrggre pbhagf, jr unir sbhaq n cnegvny nantenz:
|
||||||
|
n jbeq pbagnvavat fbzr, ohg abg nyy, bs gur yrggref va gur pheerag
|
||||||
|
fragrapr. Va guvf pnfr jr erphefviryl gel gb svaq na nantenz bs gur
|
||||||
|
erznvavat yrggref. Gur qrcgu bs gur erphefvba vf yvzvgrq gb gur
|
||||||
|
znkvzhz ahzore bs jbeqf va gur nantenz, nf fcrpvsvrq ol gur hfre.
|
||||||
|
|
||||||
Rira jura abg ba gur qrrcrfg erphefvba yriry, NT trarenyyl nibvqf
|
Jura gur qrrcrfg erphefvba yriry unf orra ernpurq, na bcgvzvmngvba pna
|
||||||
rknzvavat nyy gur ragevrf bs gur unfu gnoyr. Gur vqrn vf gung jr ner
|
or nccyvrq: orpnhfr ab shegure erphefvba jvyy or qbar, gurer vf ab
|
||||||
abg vagrerfgrq va unfu ohpxrgf jubfr jbeqf pbagnva nal yrggref abg
|
arrq gb ybbx sbe cnegvny nantenzf, naq gurersber NT bayl arrqf gb
|
||||||
va gur pheerag fragrapr; gurfr ohpxrgf ner rknpgyl gubfr jubfr vaqrk
|
purpx sbe jbeqf gung pbagnva rknpgyl gur fnzr yrggref nf gur pheerag
|
||||||
unf n ybtvpny bar va n ovg cbfvgvba jurer gur fvtangher bs gur pheerag
|
fragrapr. Gubfr jbeqf pna or sbhaq fvzcyl ol vaqrkvat gur unfu gnoyr
|
||||||
fragrapr unf n mreb. Chg nabgure jnl, jr jnag gb ybbc guebhtu bayl
|
jvgu gur fvtangher bs gur pheerag fragrapr.
|
||||||
gubfr unfu ohpxrg vaqvprf "v" gung pbagnva mrebrf va nyy gur ovg
|
|
||||||
cbfvgvbaf jurer gur fvtangher "f" bs gur pheerag fragrapr pbagnvaf
|
|
||||||
n mreb; guvf pna or rkcerffrq va P nf (v & ~f == 0).
|
|
||||||
|
|
||||||
Vg vf cbffvoyr gb ybbc guebhtu nyy fhpu ahzoref va na rssvpvrag jnl ol
|
Rira jura abg ba gur qrrcrfg erphefvba yriry, NT trarenyyl nibvqf
|
||||||
gnxvat nqinagntr bs pregnva cebcregvrf bs ovanel nevguzrgvp: ol
|
rknzvavat nyy gur ragevrf bs gur unfu gnoyr. Gur vqrn vf gung jr ner
|
||||||
sbepvat gur ovgf pbeerfcbaqvat gb mrebrf va "f" gb barf, jr pna znxr
|
abg vagrerfgrq va unfu ohpxrgf jubfr jbeqf pbagnva nal yrggref abg
|
||||||
gur pneevrf trarengrq va vaperzragvat "v" cebcntngr fgenvtug npebff
|
va gur pheerag fragrapr; gurfr ohpxrgf ner rknpgyl gubfr jubfr vaqrk
|
||||||
gubfr ovgf gung fubhyq erznva mreb. Sbe rknzcyr, gur sbyybjvat
|
unf n ybtvpny bar va n ovg cbfvgvba jurer gur fvtangher bs gur pheerag
|
||||||
cebtenz cevagf nyy gubfr 16-ovg vagrtref gung pbagnva mrebrf va nyy
|
fragrapr unf n mreb. Chg nabgure jnl, jr jnag gb ybbc guebhtu bayl
|
||||||
rira ovg cbfvgvbaf:
|
gubfr unfu ohpxrg vaqvprf "v" gung pbagnva mrebrf va nyy gur ovg
|
||||||
|
cbfvgvbaf jurer gur fvtangher "f" bs gur pheerag fragrapr pbagnvaf
|
||||||
|
n mreb; guvf pna or rkcerffrq va P nf (v & ~f == 0).
|
||||||
|
|
||||||
znva(){vag v=0,f=0kNNNN;qb{cevags("%04k\g",v);}juvyr(v=((v|~f)+1)&f);}
|
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:
|
||||||
|
|
||||||
NT hfrf n fvzvyne zrgubq ohg jbexf va gur bccbfvgr qverpgvba, svaqvat
|
znva(){vag v=0,f=0kNNNN;qb{cevags("%04k\g",v);}juvyr(v=((v|~f)+1)&f);}
|
||||||
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
|
NT hfrf n fvzvyne zrgubq ohg jbexf va gur bccbfvgr qverpgvba, svaqvat
|
||||||
yvaxrq yvfg sbezrq ol fgehpgf va gur npgvingvba erpbeqf bs gur
|
gur arkg ybjre inyhr jvgu mrebrf va tvira ovg cbfvgvbaf ol cebcntngvat
|
||||||
erphefvir vaibpngvbaf bs gur frnepu shapgvba, frrxvat gb gur ortvaavat
|
obeebjf npebff gubfr ovgf. Fbzr nqqvgvbany nqwhfgzragf ner znqr
|
||||||
bs gur jbeq zngpurq ol gung vaibpngvba, naq pbclvat gur punenpgref bs
|
gb gur unfu gnoyr vaqrk jura vavgvngvat n erphefvir frnepu, hfvat
|
||||||
gur jbeq qverpgyl sebz fgnaqneq vachg gb fgnaqneq bhgchg.
|
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
@@ -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.
|
||||||
|
|||||||
Reference in new issue
Block a user