home *** CD-ROM | disk | FTP | other *** search
view JSON data
|
view as text
|
open on a Mac
|
open on a PC
This file was processed as: SHell self-extracting ARchive
(archive/shar).
You can browse this item here: 14
Confidence | Program | Detection | Match Type | Support
|
---|
100%
| dexvert
| Newsgroup Content (archive/news)
| magic
| Supported |
100%
| dexvert
| SHell self-extracting ARchive (archive/shar)
| magic
| Supported |
100%
| dexvert
| Internet Message Format (text/imf)
| magic
| Supported |
1%
| dexvert
| Text File (text/txt)
| fallback
| Supported |
100%
| file
| news or mail, ASCII text
| default
| |
100%
| TrID
| E-Mail message (Var. 2)
| default
| |
100%
| checkBytes
| Printable ASCII
| default
| |
100%
| perlTextCheck
| Likely Text (Perl)
| default
| |
100%
| siegfried
| fmt/329 Shell Archive Format
| default
| |
100%
| detectItEasy
| Format: plain text[LF]
| default (weak)
| |
100%
| xdgMime
| message/rfc822
| default
|
|
hex view+--------+-------------------------+-------------------------+--------+--------+
|00000000| 46 72 6f 6d 3a 20 6d 65 | 72 6c 79 6e 40 73 74 61 |From: me|rlyn@sta|
|00000010| 72 66 69 72 65 2e 55 55 | 43 50 0a 4e 65 77 73 67 |rfire.UU|CP.Newsg|
|00000020| 72 6f 75 70 73 3a 20 63 | 6f 6d 70 2e 73 6f 75 72 |roups: c|omp.sour|
|00000030| 63 65 73 2e 6d 69 73 63 | 0a 53 75 62 6a 65 63 74 |ces.misc|.Subject|
|00000040| 3a 20 53 65 74 20 74 79 | 70 65 20 66 6f 72 20 43 |: Set ty|pe for C|
|00000050| 0a 4d 65 73 73 61 67 65 | 2d 49 44 3a 20 3c 34 31 |.Message|-ID: <41|
|00000060| 36 38 40 6e 63 6f 61 73 | 74 2e 55 55 43 50 3e 0a |68@ncoas|t.UUCP>.|
|00000070| 44 61 74 65 3a 20 31 34 | 20 41 75 67 20 38 37 20 |Date: 14| Aug 87 |
|00000080| 30 30 3a 31 34 3a 35 33 | 20 47 4d 54 0a 53 65 6e |00:14:53| GMT.Sen|
|00000090| 64 65 72 3a 20 61 6c 6c | 62 65 72 79 40 6e 63 6f |der: all|bery@nco|
|000000a0| 61 73 74 2e 55 55 43 50 | 0a 4c 69 6e 65 73 3a 20 |ast.UUCP|.Lines: |
|000000b0| 35 34 35 0a 41 70 70 72 | 6f 76 65 64 3a 20 61 6c |545.Appr|oved: al|
|000000c0| 6c 62 65 72 79 40 6e 63 | 6f 61 73 74 2e 55 55 43 |lbery@nc|oast.UUC|
|000000d0| 50 0a 58 2d 41 72 63 68 | 69 76 65 3a 20 63 6f 6d |P.X-Arch|ive: com|
|000000e0| 70 2e 73 6f 75 72 63 65 | 73 2e 6d 69 73 63 2f 38 |p.source|s.misc/8|
|000000f0| 37 30 38 2f 31 34 0a 0a | 23 20 48 65 72 65 20 61 |708/14..|# Here a|
|00000100| 72 65 20 61 20 63 6f 75 | 70 6c 65 20 6f 66 20 43 |re a cou|ple of C|
|00000110| 20 69 6e 63 6c 75 64 65 | 20 66 69 6c 65 73 20 74 | include| files t|
|00000120| 6f 20 61 64 64 20 74 68 | 65 20 73 65 74 20 74 79 |o add th|e set ty|
|00000130| 70 65 20 61 20 6c 61 27 | 20 50 61 73 63 61 6c 2e |pe a la'| Pascal.|
|00000140| 0a 23 20 41 20 76 65 72 | 79 20 73 6d 61 6c 6c 20 |.# A ver|y small |
|00000150| 64 65 6d 6f 20 70 72 6f | 67 72 61 6d 20 69 73 20 |demo pro|gram is |
|00000160| 61 6c 73 6f 20 69 6e 63 | 6c 75 64 65 64 2e 20 20 |also inc|luded. |
|00000170| 52 65 61 64 20 74 68 65 | 20 63 6f 6d 6d 65 6e 74 |Read the| comment|
|00000180| 73 20 69 6e 0a 23 20 73 | 65 74 73 2e 68 20 66 6f |s in.# s|ets.h fo|
|00000190| 72 20 65 64 69 66 69 63 | 61 74 69 6f 6e 2e 0a 23 |r edific|ation..#|
|000001a0| 0a 23 20 4d 65 72 6c 79 | 6e 20 4c 65 72 6f 79 20 |.# Merly|n Leroy |
|000001b0| 28 73 74 61 72 66 69 72 | 65 21 6d 65 72 6c 79 6e |(starfir|e!merlyn|
|000001c0| 29 0a 3a 20 2d 2d 2d 63 | 75 74 20 68 65 72 65 2d |).: ---c|ut here-|
|000001d0| 2d 2d 0a 3a 0a 23 21 2f | 62 69 6e 2f 73 68 0a 23 |--.:.#!/|bin/sh.#|
|000001e0| 20 54 68 69 73 20 69 73 | 20 61 20 73 68 65 6c 6c | This is| a shell|
|000001f0| 20 61 72 63 68 69 76 65 | 2e 20 20 52 65 6d 6f 76 | archive|. Remov|
|00000200| 65 20 65 76 65 72 79 74 | 68 69 6e 67 0a 23 20 61 |e everyt|hing.# a|
|00000210| 62 6f 76 65 20 21 2f 62 | 69 6e 2f 73 68 20 61 6e |bove !/b|in/sh an|
|00000220| 64 20 74 79 70 65 20 27 | 73 68 20 74 68 69 73 5f |d type '|sh this_|
|00000230| 73 68 61 72 66 69 6c 65 | 27 20 74 6f 20 75 6e 70 |sharfile|' to unp|
|00000240| 61 63 6b 2e 0a 23 20 27 | 73 68 61 72 66 69 6c 65 |ack..# '|sharfile|
|00000250| 20 63 6f 6d 70 6c 65 74 | 65 27 20 73 68 6f 75 6c | complet|e' shoul|
|00000260| 64 20 61 70 70 65 61 72 | 20 6c 61 73 74 2e 0a 23 |d appear| last..#|
|00000270| 20 4d 61 64 65 20 62 79 | 20 27 4d 56 41 58 31 21 | Made by| 'MVAX1!|
|00000280| 62 72 69 61 6e 77 27 20 | 6f 6e 20 57 65 64 20 41 |brianw' |on Wed A|
|00000290| 75 67 20 31 32 20 31 35 | 3a 31 35 3a 32 35 20 43 |ug 12 15|:15:25 C|
|000002a0| 44 54 20 31 39 38 37 0a | 65 78 70 6f 72 74 20 48 |DT 1987.|export H|
|000002b0| 4f 4d 45 20 7c 7c 20 28 | 20 73 65 74 20 63 6d 64 |OME || (| set cmd|
|000002c0| 3d 60 65 63 68 6f 20 22 | 24 30 22 60 20 3b 20 65 |=`echo "|$0"` ; e|
|000002d0| 63 68 6f 20 22 20 22 20 | 3b 20 5c 0a 65 63 68 6f |cho " " |; \.echo|
|000002e0| 20 22 54 68 69 73 20 69 | 73 20 6e 6f 74 20 2f 62 | "This i|s not /b|
|000002f0| 69 6e 2f 73 68 20 2d 20 | 70 75 6e 74 69 6e 67 2e |in/sh - |punting.|
|00000300| 2e 2e 22 20 3b 20 5c 0a | 65 63 68 6f 20 44 6f 20 |.." ; \.|echo Do |
|00000310| 5c 22 73 68 20 73 68 61 | 72 66 69 6c 65 5c 22 2c |\"sh sha|rfile\",|
|00000320| 20 6e 6f 74 20 5c 22 63 | 73 68 20 5c 3c 73 68 61 | not \"c|sh \<sha|
|00000330| 72 66 69 6c 65 5c 22 20 | 22 24 63 6d 64 22 20 7c |rfile\" |"$cmd" ||
|00000340| 20 5c 0a 73 65 64 20 22 | 73 3a 5e 2e 2e 2e 2e 2e | \.sed "|s:^.....|
|00000350| 2e 2e 2e 2e 2e 2e 2e 2e | 2e 2e 2e 2e 2e 2e 2e 2e |........|........|
|00000360| 2e 2e 2e 2e 2e 2e 2e 2e | 2e 2e 2e 2e 2e 2e 2e 2e |........|........|
|00000370| 2e 2e 2e 2a 3a 3a 22 20 | 3b 20 5c 0a 73 65 74 20 |...*::" |; \.set |
|00000380| 63 6d 64 3d 60 65 63 68 | 6f 20 22 24 63 6d 64 2f |cmd=`ech|o "$cmd/|
|00000390| 64 65 76 2f 6e 75 6c 6c | 22 20 7c 20 73 65 64 20 |dev/null|" | sed |
|000003a0| 22 73 20 5e 5c 28 2e 2e | 2a 5c 29 2e 2e 2e 2e 2e |"s ^\(..|*\).....|
|000003b0| 2e 2e 2e 2e 24 20 5c 31 | 20 22 60 20 3b 20 5c 0a |....$ \1| "` ; \.|
|000003c0| 2f 62 69 6e 2f 73 68 20 | 22 24 63 6d 64 22 20 24 |/bin/sh |"$cmd" $|
|000003d0| 2a 20 3b 20 6b 69 6c 6c | 20 24 24 20 3b 20 29 0a |* ; kill| $$ ; ).|
|000003e0| 75 6d 61 73 6b 20 30 30 | 32 0a 50 41 54 48 3d 22 |umask 00|2.PATH="|
|000003f0| 2f 62 69 6e 3a 2f 75 73 | 72 2f 62 69 6e 3a 24 50 |/bin:/us|r/bin:$P|
|00000400| 41 54 48 22 0a 65 63 68 | 6f 20 65 78 74 72 61 63 |ATH".ech|o extrac|
|00000410| 74 69 6e 67 3a 0a 46 3d | 27 73 65 74 73 2e 68 27 |ting:.F=|'sets.h'|
|00000420| 0a 65 63 68 6f 20 24 46 | 0a 69 66 20 74 65 73 74 |.echo $F|.if test|
|00000430| 20 2d 66 20 24 46 0a 74 | 68 65 6e 0a 65 63 68 6f | -f $F.t|hen.echo|
|00000440| 20 24 46 20 65 78 69 73 | 74 73 20 2d 20 6e 6f 74 | $F exis|ts - not|
|00000450| 20 65 78 74 72 61 63 74 | 65 64 20 3e 26 32 0a 65 | extract|ed >&2.e|
|00000460| 6c 73 65 0a 73 65 64 20 | 27 73 2e 5e 3e 2e 2e 27 |lse.sed |'s.^>..'|
|00000470| 20 3c 3c 20 27 45 4f 46 | 27 20 3e 20 24 46 0a 3e | << 'EOF|' > $F.>|
|00000480| 0a 3e 2f 2a 20 73 65 74 | 73 2e 68 20 2d 20 73 65 |.>/* set|s.h - se|
|00000490| 74 20 70 73 65 75 64 6f | 2d 74 79 70 65 20 66 6f |t pseudo|-type fo|
|000004a0| 72 20 43 0a 3e 20 2a 0a | 3e 20 2a 20 74 6f 20 75 |r C.> *.|> * to u|
|000004b0| 73 65 2c 20 69 6e 63 6c | 75 64 65 20 4f 4e 45 20 |se, incl|ude ONE |
|000004c0| 6f 66 20 22 73 65 74 73 | 2e 68 22 20 6f 72 20 22 |of "sets|.h" or "|
|000004d0| 73 65 74 6c 69 62 2e 68 | 22 0a 3e 20 2a 20 73 65 |setlib.h|".> * se|
|000004e0| 74 6c 69 62 2e 68 20 68 | 61 73 20 74 68 65 20 61 |tlib.h h|as the a|
|000004f0| 63 74 75 61 6c 20 43 20 | 72 6f 75 74 69 6e 65 73 |ctual C |routines|
|00000500| 2c 20 61 6e 64 20 6d 75 | 73 74 20 62 65 20 69 6e |, and mu|st be in|
|00000510| 63 6c 75 64 65 64 20 65 | 78 61 63 74 6c 79 20 6f |cluded e|xactly o|
|00000520| 6e 63 65 0a 3e 20 2a 20 | 69 6e 20 61 20 67 72 6f |nce.> * |in a gro|
|00000530| 75 70 20 6f 66 20 66 69 | 6c 65 73 2c 20 6f 72 20 |up of fi|les, or |
|00000540| 6d 61 64 65 20 69 6e 74 | 6f 20 61 20 6c 69 62 72 |made int|o a libr|
|00000550| 61 72 79 20 61 6e 64 20 | 6c 69 6e 6b 65 64 20 69 |ary and |linked i|
|00000560| 6e 2e 20 20 0a 3e 20 2a | 0a 3e 20 2a 20 74 6f 20 |n. .> *|.> * to |
|00000570| 64 65 63 6c 61 72 65 20 | 61 20 73 65 74 20 74 79 |declare |a set ty|
|00000580| 70 65 3a 0a 3e 20 2a 20 | 20 20 73 65 74 20 61 6c |pe:.> * | set al|
|00000590| 70 68 61 62 65 74 20 6f | 66 28 27 61 27 2c 27 7a |phabet o|f('a','z|
|000005a0| 27 29 3b 0a 3e 20 2a 20 | 20 20 73 65 74 20 77 61 |');.> * | set wa|
|000005b0| 6e 64 73 20 6f 66 28 73 | 74 72 69 6b 69 6e 67 2c |nds of(s|triking,|
|000005c0| 70 6f 6c 79 6d 6f 72 70 | 68 29 3b 0a 3e 20 2a 20 |polymorp|h);.> * |
|000005d0| 20 20 73 74 61 74 69 63 | 20 73 65 74 20 76 6f 77 | static| set vow|
|000005e0| 65 6c 73 20 6f 66 28 27 | 61 27 2c 27 7a 27 29 3b |els of('|a','z');|
|000005f0| 0a 3e 20 2a 0a 3e 20 2a | 20 54 68 65 20 65 6c 65 |.> *.> *| The ele|
|00000600| 6d 65 6e 74 20 72 61 6e | 67 65 73 20 6d 75 73 74 |ment ran|ges must|
|00000610| 20 62 65 20 6b 6e 6f 77 | 6e 20 61 74 20 63 6f 6d | be know|n at com|
|00000620| 70 69 6c 65 20 74 69 6d | 65 20 28 63 6f 6e 73 74 |pile tim|e (const|
|00000630| 61 6e 74 73 20 6f 72 20 | 65 6e 75 6d 73 29 2e 0a |ants or |enums)..|
|00000640| 3e 20 2a 20 54 68 65 20 | 73 6d 61 6c 6c 65 72 20 |> * The |smaller |
|00000650| 65 6c 65 6d 65 6e 74 20 | 6d 75 73 74 20 62 65 20 |element |must be |
|00000660| 66 69 72 73 74 2e 20 20 | 53 65 74 20 76 61 72 69 |first. |Set vari|
|00000670| 61 62 6c 65 73 20 77 69 | 74 68 69 6e 20 66 75 6e |ables wi|thin fun|
|00000680| 63 74 69 6f 6e 73 20 61 | 6e 64 0a 3e 20 2a 20 70 |ctions a|nd.> * p|
|00000690| 72 6f 63 65 64 75 72 65 | 73 20 6d 75 73 74 20 62 |rocedure|s must b|
|000006a0| 65 20 64 65 63 6c 61 72 | 65 64 20 73 74 61 74 69 |e declar|ed stati|
|000006b0| 63 2c 20 6f 72 20 64 65 | 63 6c 61 72 65 64 20 61 |c, or de|clared a|
|000006c0| 73 3a 0a 3e 20 2a 20 20 | 20 73 65 74 20 64 69 67 |s:.> * | set dig|
|000006d0| 69 74 73 20 6f 66 73 69 | 7a 65 28 27 30 27 2c 27 |its ofsi|ze('0','|
|000006e0| 39 27 29 3b 0a 3e 20 2a | 20 61 6e 64 20 65 78 70 |9');.> *| and exp|
|000006f0| 6c 69 63 69 74 6c 79 20 | 69 6e 69 74 69 61 6c 69 |licitly |initiali|
|00000700| 7a 65 64 20 77 69 74 68 | 3a 0a 3e 20 2a 20 20 20 |zed with|:.> * |
|00000710| 66 69 72 73 74 5f 65 6c | 65 6d 65 6e 74 28 64 69 |first_el|ement(di|
|00000720| 67 69 74 73 29 20 3d 20 | 27 30 27 3b 0a 3e 20 2a |gits) = |'0';.> *|
|00000730| 20 20 20 6c 61 73 74 5f | 65 6c 65 6d 65 6e 74 28 | last_|element(|
|00000740| 64 69 67 69 74 73 29 20 | 3d 20 27 39 27 3b 0a 3e |digits) |= '9';.>|
|00000750| 20 2a 0a 3e 20 2a 20 59 | 6f 75 20 63 61 6e 20 61 | *.> * Y|ou can a|
|00000760| 6c 73 6f 20 64 65 63 6c | 61 72 65 20 61 20 70 6f |lso decl|are a po|
|00000770| 69 6e 74 65 72 20 74 6f | 20 61 20 73 65 74 2c 20 |inter to| a set, |
|00000780| 74 68 75 73 3a 0a 3e 20 | 2a 20 20 20 73 65 74 20 |thus:.> |* set |
|00000790| 2a 70 5f 73 65 74 3b 0a | 3e 20 2a 20 50 6f 69 6e |*p_set;.|> * Poin|
|000007a0| 74 20 69 74 20 74 6f 20 | 61 20 73 65 74 20 76 61 |t it to |a set va|
|000007b0| 72 69 61 62 6c 65 20 28 | 70 5f 73 65 74 3d 61 6c |riable (|p_set=al|
|000007c0| 70 68 61 62 65 74 3b 29 | 2c 20 6f 72 20 75 73 65 |phabet;)|, or use|
|000007d0| 20 6d 61 6c 6c 6f 63 28 | 29 20 26 20 69 6e 69 74 | malloc(|) & init|
|000007e0| 69 61 6c 69 7a 65 3a 0a | 3e 20 2a 20 20 20 70 5f |ialize:.|> * p_|
|000007f0| 73 65 74 20 3d 20 28 73 | 65 74 20 2a 29 20 6d 61 |set = (s|et *) ma|
|00000800| 6c 6c 6f 63 28 73 69 7a | 65 6f 66 28 73 65 74 20 |lloc(siz|eof(set |
|00000810| 6f 66 73 69 7a 65 28 27 | 41 27 2c 27 5a 27 29 29 |ofsize('|A','Z'))|
|00000820| 29 3b 0a 3e 20 2a 20 20 | 20 66 69 72 73 74 5f 65 |);.> * | first_e|
|00000830| 6c 65 6d 65 6e 74 28 70 | 5f 73 65 74 29 20 3d 20 |lement(p|_set) = |
|00000840| 27 41 27 3b 0a 3e 20 2a | 20 20 20 6c 61 73 74 5f |'A';.> *| last_|
|00000850| 65 6c 65 6d 65 6e 74 28 | 70 5f 73 65 74 29 20 3d |element(|p_set) =|
|00000860| 20 27 5a 27 3b 0a 3e 20 | 2a 0a 3e 20 2a 20 54 68 | 'Z';.> |*.> * Th|
|00000870| 65 20 73 70 65 63 69 61 | 6c 20 6e 75 6c 6c 20 73 |e specia|l null s|
|00000880| 65 74 20 45 4d 50 54 59 | 53 45 54 20 69 73 20 61 |et EMPTY|SET is a|
|00000890| 6c 73 6f 20 64 65 66 69 | 6e 65 64 2e 0a 3e 20 2a |lso defi|ned..> *|
|000008a0| 0a 3e 20 2a 20 41 6c 6c | 20 6f 70 65 72 61 74 69 |.> * All| operati|
|000008b0| 6f 6e 73 20 6f 6e 20 73 | 65 74 73 20 6d 75 73 74 |ons on s|ets must|
|000008c0| 20 62 65 20 62 65 74 77 | 65 65 6e 20 73 65 74 73 | be betw|een sets|
|000008d0| 20 6f 66 20 74 68 65 20 | 73 61 6d 65 20 72 61 6e | of the |same ran|
|000008e0| 67 65 0a 3e 20 2a 20 28 | 6f 72 20 45 4d 50 54 59 |ge.> * (|or EMPTY|
|000008f0| 53 45 54 29 20 65 78 63 | 65 70 74 20 66 6f 72 20 |SET) exc|ept for |
|00000900| 73 65 74 6e 63 70 79 28 | 29 2e 0a 3e 20 2a 0a 3e |setncpy(|)..> *.>|
|00000910| 20 2a 20 66 75 6e 63 74 | 69 6f 6e 73 3a 0a 3e 20 | * funct|ions:.> |
|00000920| 2a 20 20 20 20 20 20 66 | 69 72 73 74 5f 65 6c 65 |* f|irst_ele|
|00000930| 6d 65 6e 74 28 53 29 09 | 46 69 72 73 74 20 6c 65 |ment(S).|First le|
|00000940| 67 61 6c 20 65 6c 65 6d | 65 6e 74 20 6f 66 20 73 |gal elem|ent of s|
|00000950| 65 74 20 53 0a 3e 20 2a | 20 20 20 20 20 20 6c 61 |et S.> *| la|
|00000960| 73 74 5f 65 6c 65 6d 65 | 6e 74 28 53 29 09 09 4c |st_eleme|nt(S)..L|
|00000970| 61 73 74 20 6c 65 67 61 | 6c 20 65 6c 65 6d 65 6e |ast lega|l elemen|
|00000980| 74 20 6f 66 20 73 65 74 | 20 53 0a 3e 20 2a 20 73 |t of set| S.> * s|
|00000990| 65 74 20 2a 65 6d 70 74 | 79 73 65 74 28 53 29 09 |et *empt|yset(S).|
|000009a0| 09 4d 61 6b 65 20 53 20 | 74 68 65 20 65 6d 70 74 |.Make S |the empt|
|000009b0| 79 73 65 74 20 28 72 65 | 74 75 72 6e 73 20 45 4d |yset (re|turns EM|
|000009c0| 50 54 59 53 45 54 29 0a | 3e 20 2a 0a 3e 20 2a 20 |PTYSET).|> *.> * |
|000009d0| 54 68 65 73 65 20 66 75 | 6e 63 74 69 6f 6e 73 20 |These fu|nctions |
|000009e0| 72 65 74 75 72 6e 20 53 | 31 20 6f 72 20 45 4d 50 |return S|1 or EMP|
|000009f0| 54 59 53 45 54 20 69 66 | 20 72 65 73 75 6c 74 20 |TYSET if| result |
|00000a00| 69 73 20 6e 75 6c 6c 3a | 0a 3e 20 2a 0a 3e 20 2a |is null:|.> *.> *|
|00000a10| 20 73 65 74 20 2a 73 65 | 74 63 70 79 28 53 31 2c | set *se|tcpy(S1,|
|00000a20| 53 32 29 09 09 63 6f 70 | 79 20 53 32 20 69 6e 74 |S2)..cop|y S2 int|
|00000a30| 6f 20 53 31 0a 3e 20 2a | 20 73 65 74 20 2a 73 65 |o S1.> *| set *se|
|00000a40| 74 6e 63 70 79 28 53 31 | 2c 53 32 29 09 09 63 6f |tncpy(S1|,S2)..co|
|00000a50| 70 79 20 53 32 20 69 6e | 74 6f 20 53 31 2c 20 65 |py S2 in|to S1, e|
|00000a60| 76 65 6e 20 66 6f 72 20 | 64 69 66 66 65 72 65 6e |ven for |differen|
|00000a70| 74 20 72 61 6e 67 65 73 | 0a 3e 20 2a 09 09 09 09 |t ranges|.> *....|
|00000a80| 20 65 2e 67 2e 20 73 65 | 74 20 53 31 20 6f 66 28 | e.g. se|t S1 of(|
|00000a90| 27 41 27 2c 27 4c 27 29 | 2c 20 53 32 20 6f 66 28 |'A','L')|, S2 of(|
|00000aa0| 27 48 27 2c 27 5a 27 29 | 3b 0a 3e 20 2a 20 73 65 |'H','Z')|;.> * se|
|00000ab0| 74 20 2a 73 65 74 75 6e | 69 6f 6e 28 53 31 2c 53 |t *setun|ion(S1,S|
|00000ac0| 32 29 09 09 53 31 20 3d | 20 53 31 20 75 6e 69 6f |2)..S1 =| S1 unio|
|00000ad0| 6e 20 53 32 09 28 53 31 | 20 65 76 61 6c 75 61 74 |n S2.(S1| evaluat|
|00000ae0| 65 64 20 74 77 69 63 65 | 29 0a 3e 20 2a 20 73 65 |ed twice|).> * se|
|00000af0| 74 20 2a 73 65 74 33 75 | 6e 69 6f 6e 28 53 31 2c |t *set3u|nion(S1,|
|00000b00| 53 32 2c 53 33 29 09 53 | 31 20 3d 20 53 32 20 75 |S2,S3).S|1 = S2 u|
|00000b10| 6e 69 6f 6e 20 53 33 0a | 3e 20 2a 20 73 65 74 20 |nion S3.|> * set |
|00000b20| 2a 73 65 74 69 6e 74 65 | 72 28 53 31 2c 53 32 29 |*setinte|r(S1,S2)|
|00000b30| 09 09 53 31 20 3d 20 53 | 31 20 69 6e 74 65 72 73 |..S1 = S|1 inters|
|00000b40| 65 63 74 69 6f 6e 20 53 | 32 09 28 53 31 20 65 76 |ection S|2.(S1 ev|
|00000b50| 61 6c 75 61 74 65 64 20 | 74 77 69 63 65 29 0a 3e |aluated |twice).>|
|00000b60| 20 2a 20 73 65 74 20 2a | 73 65 74 33 69 6e 74 65 | * set *|set3inte|
|00000b70| 72 28 53 31 2c 53 32 2c | 53 33 29 09 53 31 20 3d |r(S1,S2,|S3).S1 =|
|00000b80| 20 53 32 20 69 6e 74 65 | 72 73 65 63 74 69 6f 6e | S2 inte|rsection|
|00000b90| 20 53 33 0a 3e 20 2a 20 | 73 65 74 20 2a 73 65 74 | S3.> * |set *set|
|00000ba0| 64 69 66 66 28 53 31 2c | 53 32 29 09 09 53 31 20 |diff(S1,|S2)..S1 |
|00000bb0| 3d 20 53 31 20 64 69 66 | 66 65 72 65 6e 63 65 20 |= S1 dif|ference |
|00000bc0| 53 32 09 28 53 31 20 65 | 76 61 6c 75 61 74 65 64 |S2.(S1 e|valuated|
|00000bd0| 20 74 77 69 63 65 29 0a | 3e 20 2a 20 73 65 74 20 | twice).|> * set |
|00000be0| 2a 73 65 74 33 64 69 66 | 66 28 53 31 2c 53 32 2c |*set3dif|f(S1,S2,|
|00000bf0| 53 33 29 09 53 31 20 3d | 20 53 32 20 64 69 66 66 |S3).S1 =| S2 diff|
|00000c00| 65 72 65 6e 63 65 20 53 | 33 0a 3e 20 2a 0a 3e 20 |erence S|3.> *.> |
|00000c10| 2a 20 54 68 69 73 20 61 | 6c 6c 6f 77 73 3a 20 20 |* This a|llows: |
|00000c20| 69 66 20 28 73 65 74 69 | 6e 74 65 72 28 74 65 78 |if (seti|nter(tex|
|00000c30| 74 2c 76 6f 77 65 6c 73 | 29 20 3d 3d 20 45 4d 50 |t,vowels|) == EMP|
|00000c40| 54 59 53 45 54 29 20 70 | 75 74 73 28 22 4e 6f 20 |TYSET) p|uts("No |
|00000c50| 76 6f 77 65 6c 73 21 22 | 29 3b 0a 3e 20 2a 0a 3e |vowels!"|);.> *.>|
|00000c60| 20 2a 20 20 20 20 20 20 | 73 65 74 6f 72 64 28 53 | * |setord(S|
|00000c70| 29 09 09 52 65 74 75 72 | 6e 73 20 6e 75 6d 62 65 |)..Retur|ns numbe|
|00000c80| 72 20 6f 66 20 65 6c 65 | 6d 65 6e 74 73 20 69 6e |r of ele|ments in|
|00000c90| 20 73 65 74 20 53 0a 3e | 20 2a 20 20 20 20 20 20 | set S.>| * |
|00000ca0| 69 73 6d 65 6d 62 65 72 | 28 53 2c 45 29 09 09 52 |ismember|(S,E)..R|
|00000cb0| 65 74 75 72 6e 73 20 31 | 20 69 66 20 45 20 69 73 |eturns 1| if E is|
|00000cc0| 20 61 20 6d 65 6d 62 65 | 72 20 6f 66 20 73 65 74 | a membe|r of set|
|00000cd0| 20 53 2c 20 65 6c 73 65 | 20 30 0a 3e 20 2a 0a 3e | S, else| 0.> *.>|
|00000ce0| 20 2a 20 54 68 65 73 65 | 20 74 68 72 65 65 20 66 | * These| three f|
|00000cf0| 75 6e 63 74 69 6f 6e 73 | 20 72 65 74 75 72 6e 20 |unctions| return |
|00000d00| 53 20 69 66 20 45 20 69 | 73 20 61 20 6c 65 67 61 |S if E i|s a lega|
|00000d10| 6c 20 65 6c 65 6d 65 6e | 74 2c 20 45 4d 50 54 59 |l elemen|t, EMPTY|
|00000d20| 53 45 54 20 6f 74 68 65 | 72 77 69 73 65 0a 3e 20 |SET othe|rwise.> |
|00000d30| 2a 20 73 65 74 20 2a 61 | 64 64 6d 65 6d 62 65 72 |* set *a|ddmember|
|00000d40| 28 53 2c 45 29 09 09 41 | 64 64 20 65 6c 65 6d 65 |(S,E)..A|dd eleme|
|00000d50| 6e 74 20 45 20 74 6f 20 | 73 65 74 20 53 0a 3e 20 |nt E to |set S.> |
|00000d60| 2a 20 73 65 74 20 2a 73 | 75 62 6d 65 6d 62 65 72 |* set *s|ubmember|
|00000d70| 28 53 2c 45 29 09 09 53 | 75 62 74 72 61 63 74 20 |(S,E)..S|ubtract |
|00000d80| 65 6c 65 6d 65 6e 74 20 | 45 20 66 72 6f 6d 20 73 |element |E from s|
|00000d90| 65 74 20 53 0a 3e 20 2a | 20 73 65 74 20 2a 78 6f |et S.> *| set *xo|
|00000da0| 72 6d 65 6d 62 65 72 28 | 53 2c 45 29 09 09 54 6f |rmember(|S,E)..To|
|00000db0| 67 67 6c 65 20 65 6c 65 | 6d 65 6e 74 20 45 20 69 |ggle ele|ment E i|
|00000dc0| 6e 20 73 65 74 20 53 0a | 3e 20 2a 0a 3e 20 2a 20 |n set S.|> *.> * |
|00000dd0| 54 68 65 20 6e 65 78 74 | 20 66 65 77 20 66 75 6e |The next| few fun|
|00000de0| 63 74 69 6f 6e 73 20 74 | 61 6b 65 20 61 20 6c 69 |ctions t|ake a li|
|00000df0| 73 74 20 6f 66 20 65 6c | 65 6d 65 6e 74 73 2e 0a |st of el|ements..|
|00000e00| 3e 20 2a 20 46 6f 72 20 | 73 65 74 73 20 77 68 6f |> * For |sets who|
|00000e10| 73 65 20 66 69 72 73 74 | 20 65 6c 65 6d 65 6e 74 |se first| element|
|00000e20| 20 69 73 20 67 72 65 61 | 74 65 72 20 74 68 61 6e | is grea|ter than|
|00000e30| 20 6f 6e 65 2c 20 61 20 | 6c 69 73 74 20 69 73 20 | one, a |list is |
|00000e40| 61 0a 3e 20 2a 20 6e 75 | 6c 6c 2d 74 65 72 6d 69 |a.> * nu|ll-termi|
|00000e50| 6e 61 74 65 64 20 73 74 | 72 69 6e 67 3b 20 6f 74 |nated st|ring; ot|
|00000e60| 68 65 72 77 69 73 65 2c | 20 61 20 6c 69 73 74 20 |herwise,| a list |
|00000e70| 69 73 20 61 6e 20 69 6e | 74 65 67 65 72 20 28 65 |is an in|teger (e|
|00000e80| 6e 75 6d 29 20 70 6f 69 | 6e 74 65 72 0a 3e 20 2a |num) poi|nter.> *|
|00000e90| 20 74 6f 20 61 20 6c 69 | 73 74 20 74 65 72 6d 69 | to a li|st termi|
|00000ea0| 6e 61 74 65 64 20 62 79 | 20 66 69 72 73 74 5f 65 |nated by| first_e|
|00000eb0| 6c 65 6d 65 6e 74 28 53 | 29 2d 31 2e 20 20 54 68 |lement(S|)-1. Th|
|00000ec0| 69 73 20 61 6c 6c 6f 77 | 73 3a 0a 3e 20 2a 20 20 |is allow|s:.> * |
|00000ed0| 20 20 73 65 74 20 61 6c | 70 68 61 62 65 74 20 6f | set al|phabet o|
|00000ee0| 66 28 27 41 27 2c 27 7a | 27 29 3b 0a 3e 20 2a 20 |f('A','z|');.> * |
|00000ef0| 20 20 20 73 65 74 6c 63 | 70 79 28 61 6c 70 68 61 | setlc|py(alpha|
|00000f00| 62 65 74 2c 22 41 45 49 | 4f 55 61 65 69 6f 75 22 |bet,"AEI|OUaeiou"|
|00000f10| 29 3b 0a 3e 20 2a 20 6f | 72 2c 20 66 6f 72 20 65 |);.> * o|r, for e|
|00000f20| 6e 75 6d 73 3a 0a 3e 20 | 2a 20 20 20 20 65 6e 75 |nums:.> |* enu|
|00000f30| 6d 20 63 6f 6c 6f 72 73 | 20 7b 20 65 6e 64 63 6f |m colors| { endco|
|00000f40| 6c 6f 72 2c 20 72 65 64 | 2c 20 62 6c 75 65 2c 20 |lor, red|, blue, |
|00000f50| 67 72 65 65 6e 7d 3b 0a | 3e 20 2a 20 20 20 20 65 |green};.|> * e|
|00000f60| 6e 75 6d 20 63 6f 6c 6f | 72 6c 69 73 74 5b 5d 20 |num colo|rlist[] |
|00000f70| 3d 20 7b 20 67 72 65 65 | 6e 2c 20 62 6c 75 65 2c |= { gree|n, blue,|
|00000f80| 20 65 6e 64 63 6f 6c 6f | 72 20 7d 3b 0a 3e 20 2a | endcolo|r };.> *|
|00000f90| 20 20 20 20 73 65 74 20 | 73 70 65 63 74 72 75 6d | set |spectrum|
|00000fa0| 20 6f 66 28 72 65 64 2c | 67 72 65 65 6e 29 3b 0a | of(red,|green);.|
|00000fb0| 3e 20 2a 20 20 20 20 73 | 65 74 6c 63 70 79 28 73 |> * s|etlcpy(s|
|00000fc0| 70 65 63 74 72 75 6d 2c | 20 63 6f 6c 6f 72 6c 69 |pectrum,| colorli|
|00000fd0| 73 74 29 3b 0a 3e 20 2a | 0a 3e 20 2a 20 54 68 65 |st);.> *|.> * The|
|00000fe0| 20 66 69 72 73 74 20 66 | 6f 75 72 20 66 75 6e 63 | first f|our func|
|00000ff0| 74 69 6f 6e 73 20 61 6c | 6c 20 72 65 74 75 72 6e |tions al|l return|
|00001000| 20 53 0a 3e 20 2a 20 73 | 65 74 20 2a 73 65 74 6c | S.> * s|et *setl|
|00001010| 63 70 79 28 53 2c 4c 29 | 09 09 41 73 73 69 67 6e |cpy(S,L)|..Assign|
|00001020| 20 74 68 65 20 6c 69 73 | 74 20 6f 66 20 65 6c 65 | the lis|t of ele|
|00001030| 6d 65 6e 74 73 20 4c 20 | 74 6f 20 73 65 74 20 53 |ments L |to set S|
|00001040| 0a 3e 20 2a 20 73 65 74 | 20 2a 61 64 64 6c 6d 65 |.> * set| *addlme|
|00001050| 6d 62 65 72 28 53 2c 4c | 29 09 09 41 64 64 73 20 |mber(S,L|)..Adds |
|00001060| 6c 69 73 74 20 4c 20 74 | 6f 20 73 65 74 20 53 0a |list L t|o set S.|
|00001070| 3e 20 2a 20 73 65 74 20 | 2a 73 75 62 6c 6d 65 6d |> * set |*sublmem|
|00001080| 62 65 72 28 53 2c 4c 29 | 09 09 53 75 62 74 72 61 |ber(S,L)|..Subtra|
|00001090| 63 74 73 20 6c 69 73 74 | 20 4c 20 66 72 6f 6d 20 |cts list| L from |
|000010a0| 73 65 74 20 53 0a 3e 20 | 2a 20 73 65 74 20 2a 78 |set S.> |* set *x|
|000010b0| 6f 72 6c 6d 65 6d 62 65 | 72 28 53 2c 4c 29 09 09 |orlmembe|r(S,L)..|
|000010c0| 54 6f 67 67 6c 65 73 20 | 6c 69 73 74 20 4c 20 69 |Toggles |list L i|
|000010d0| 6e 20 73 65 74 20 53 0a | 3e 20 2a 20 20 20 20 20 |n set S.|> * |
|000010e0| 20 73 65 74 6c 6f 72 64 | 28 53 2c 4c 29 09 09 52 | setlord|(S,L)..R|
|000010f0| 65 74 75 72 6e 73 20 63 | 6f 75 6e 74 20 6f 66 20 |eturns c|ount of |
|00001100| 65 6c 65 6d 65 6e 74 73 | 20 69 6e 20 4c 20 66 6f |elements| in L fo|
|00001110| 75 6e 64 20 69 6e 20 73 | 65 74 20 53 0a 3e 20 2a |und in s|et S.> *|
|00001120| 0a 3e 20 2a 20 46 69 6e | 61 6c 6c 79 2c 20 74 68 |.> * Fin|ally, th|
|00001130| 65 72 65 20 69 73 20 73 | 65 74 63 6d 70 28 53 31 |ere is s|etcmp(S1|
|00001140| 2c 53 32 29 20 74 6f 20 | 63 6f 6d 70 61 72 65 20 |,S2) to |compare |
|00001150| 73 65 74 73 2e 20 20 56 | 61 6c 75 65 73 20 72 65 |sets. V|alues re|
|00001160| 74 75 72 6e 65 64 20 61 | 72 65 3a 0a 3e 20 2a 20 |turned a|re:.> * |
|00001170| 45 52 52 4f 52 53 45 54 | 09 09 54 68 65 20 73 65 |ERRORSET|..The se|
|00001180| 74 73 20 61 72 65 20 6f | 66 20 64 69 66 66 65 72 |ts are o|f differ|
|00001190| 65 6e 74 20 72 61 6e 67 | 65 73 0a 3e 20 2a 20 53 |ent rang|es.> * S|
|000011a0| 41 4d 45 53 45 54 09 09 | 54 68 65 20 73 65 74 73 |AMESET..|The sets|
|000011b0| 20 61 72 65 20 65 71 75 | 61 6c 0a 3e 20 2a 20 53 | are equ|al.> * S|
|000011c0| 55 42 53 45 54 09 09 53 | 65 74 20 53 31 20 69 73 |UBSET..S|et S1 is|
|000011d0| 20 61 20 70 72 6f 70 65 | 72 20 73 75 62 73 65 74 | a prope|r subset|
|000011e0| 20 6f 66 20 53 32 0a 3e | 20 2a 20 53 55 50 45 52 | of S2.>| * SUPER|
|000011f0| 53 45 54 09 09 53 65 74 | 20 53 31 20 69 73 20 61 |SET..Set| S1 is a|
|00001200| 20 70 72 6f 70 65 72 20 | 73 75 70 65 72 73 65 74 | proper |superset|
|00001210| 20 6f 66 20 53 32 0a 3e | 20 2a 20 44 49 53 4a 4f | of S2.>| * DISJO|
|00001220| 49 4e 54 09 09 53 65 74 | 73 20 53 31 20 61 6e 64 |INT..Set|s S1 and|
|00001230| 20 53 32 20 68 61 76 65 | 20 6e 6f 20 65 6c 65 6d | S2 have| no elem|
|00001240| 65 6e 74 73 20 69 6e 20 | 63 6f 6d 6d 6f 6e 0a 3e |ents in |common.>|
|00001250| 20 2a 20 44 49 46 46 53 | 45 54 09 09 4e 6f 6e 65 | * DIFFS|ET..None|
|00001260| 20 6f 66 20 74 68 65 20 | 61 62 6f 76 65 3b 20 53 | of the |above; S|
|00001270| 31 20 61 6e 64 20 53 32 | 20 68 61 76 65 20 61 74 |1 and S2| have at|
|00001280| 20 6c 65 61 73 74 20 6f | 6e 65 0a 3e 20 2a 09 09 | least o|ne.> *..|
|00001290| 09 65 6c 65 6d 65 6e 74 | 20 69 6e 20 63 6f 6d 6d |.element| in comm|
|000012a0| 6f 6e 20 61 6e 64 20 61 | 74 20 6c 65 61 73 74 20 |on and a|t least |
|000012b0| 6f 6e 65 20 75 6e 69 71 | 75 65 20 65 6c 65 6d 65 |one uniq|ue eleme|
|000012c0| 6e 74 2e 0a 3e 20 2a 0a | 3e 20 2a 20 41 6c 73 6f |nt..> *.|> * Also|
|000012d0| 20 6e 6f 74 65 20 74 68 | 61 74 3a 0a 3e 20 2a 20 | note th|at:.> * |
|000012e0| 73 65 74 63 6d 70 28 53 | 31 2c 53 32 29 20 26 20 |setcmp(S|1,S2) & |
|000012f0| 53 55 42 53 45 54 09 69 | 73 20 74 72 75 65 20 69 |SUBSET.i|s true i|
|00001300| 66 66 20 53 31 20 69 73 | 20 61 20 73 75 62 73 65 |ff S1 is| a subse|
|00001310| 74 20 6f 66 20 53 32 0a | 3e 20 2a 09 09 09 09 28 |t of S2.|> *....(|
|00001320| 70 72 6f 70 65 72 20 73 | 75 62 73 65 74 20 6f 72 |proper s|ubset or|
|00001330| 20 73 65 74 73 20 61 72 | 65 20 65 71 75 61 6c 29 | sets ar|e equal)|
|00001340| 0a 3e 20 2a 20 73 65 74 | 63 6d 70 28 53 31 2c 53 |.> * set|cmp(S1,S|
|00001350| 32 29 20 26 20 53 55 50 | 45 52 53 45 54 09 69 73 |2) & SUP|ERSET.is|
|00001360| 20 74 72 75 65 20 69 66 | 66 20 53 31 20 69 73 20 | true if|f S1 is |
|00001370| 61 20 73 75 70 65 72 73 | 65 74 20 6f 66 20 53 32 |a supers|et of S2|
|00001380| 0a 3e 20 2a 20 73 65 74 | 63 6d 70 28 53 31 2c 53 |.> * set|cmp(S1,S|
|00001390| 32 29 20 26 20 53 41 4d | 45 53 45 54 09 69 73 20 |2) & SAM|ESET.is |
|000013a0| 74 72 75 65 20 69 66 66 | 20 53 31 20 69 73 20 61 |true iff| S1 is a|
|000013b0| 20 73 75 62 2d 20 6f 72 | 20 73 75 70 65 72 73 65 | sub- or| superse|
|000013c0| 74 20 6f 66 20 53 32 0a | 3e 20 2a 20 45 4d 50 54 |t of S2.|> * EMPT|
|000013d0| 59 53 45 54 09 09 09 69 | 73 20 61 20 73 75 62 73 |YSET...i|s a subs|
|000013e0| 65 74 20 6f 66 20 61 6c | 6c 20 6f 74 68 65 72 20 |et of al|l other |
|000013f0| 73 65 74 73 0a 3e 20 2a | 20 21 73 65 74 63 6d 70 |sets.> *| !setcmp|
|00001400| 28 53 31 2c 53 32 29 09 | 09 69 73 20 4e 4f 54 20 |(S1,S2).|.is NOT |
|00001410| 74 68 65 20 73 61 6d 65 | 20 61 73 20 28 73 65 74 |the same| as (set|
|00001420| 63 6d 70 28 53 31 2c 53 | 32 29 20 3d 3d 20 53 41 |cmp(S1,S|2) == SA|
|00001430| 4d 45 53 45 54 29 0a 3e | 20 2a 20 20 20 0a 3e 20 |MESET).>| * .> |
|00001440| 2a 2f 0a 3e 0a 3e 2f 2a | 20 57 68 61 74 20 74 79 |*/.>.>/*| What ty|
|00001450| 70 65 20 74 6f 20 75 73 | 65 20 66 6f 72 20 61 20 |pe to us|e for a |
|00001460| 73 65 74 2c 20 74 68 65 | 20 6e 75 6d 62 65 72 20 |set, the| number |
|00001470| 6f 66 20 62 69 74 73 20 | 69 6e 20 69 74 2c 20 61 |of bits |in it, a|
|00001480| 6e 64 20 6c 6f 67 32 20 | 6f 66 20 62 69 74 73 2e |nd log2 |of bits.|
|00001490| 20 2a 2f 0a 3e 2f 2a 20 | 54 68 65 20 66 69 72 73 | */.>/* |The firs|
|000014a0| 74 20 61 6e 64 20 6c 61 | 73 74 20 65 6c 65 6d 65 |t and la|st eleme|
|000014b0| 6e 74 20 6f 66 20 61 20 | 73 65 74 20 6d 75 73 74 |nt of a |set must|
|000014c0| 20 66 69 74 20 69 6e 74 | 6f 20 74 68 65 20 74 79 | fit int|o the ty|
|000014d0| 70 65 20 75 73 65 64 20 | 66 6f 72 20 73 65 74 2e |pe used |for set.|
|000014e0| 20 2a 2f 0a 3e 2f 2a 20 | 46 6f 72 20 65 78 61 6d | */.>/* |For exam|
|000014f0| 70 6c 65 2c 20 73 65 74 | 20 79 65 61 72 73 20 6f |ple, set| years o|
|00001500| 66 28 31 39 30 30 2c 31 | 39 38 37 29 20 77 6f 75 |f(1900,1|987) wou|
|00001510| 6c 64 6e 27 74 20 77 6f | 72 6b 20 77 69 74 68 20 |ldn't wo|rk with |
|00001520| 61 6e 20 38 2d 62 69 74 | 20 73 65 74 20 2a 2f 0a |an 8-bit| set */.|
|00001530| 3e 2f 2a 20 74 79 70 65 | 3b 20 61 20 6c 61 72 67 |>/* type|; a larg|
|00001540| 65 72 20 74 79 70 65 20 | 77 6f 75 6c 64 20 62 65 |er type |would be|
|00001550| 20 6e 65 65 64 65 64 2e | 20 2a 2f 0a 3e 23 64 65 | needed.| */.>#de|
|00001560| 66 69 6e 65 09 73 65 74 | 09 09 63 68 61 72 0a 3e |fine.set|..char.>|
|00001570| 23 64 65 66 69 6e 65 09 | 53 45 54 5f 42 53 49 5a |#define.|SET_BSIZ|
|00001580| 45 09 38 20 2f 2a 20 6d | 75 73 74 20 62 65 20 70 |E.8 /* m|ust be p|
|00001590| 6f 77 65 72 20 6f 66 20 | 74 77 6f 3b 20 75 73 65 |ower of |two; use|
|000015a0| 20 38 20 69 66 20 39 20 | 62 69 74 20 63 68 61 72 | 8 if 9 |bit char|
|000015b0| 73 2c 20 65 74 63 20 2a | 2f 0a 3e 23 64 65 66 69 |s, etc *|/.>#defi|
|000015c0| 6e 65 09 53 45 54 5f 53 | 53 49 5a 45 09 33 20 2f |ne.SET_S|SIZE.3 /|
|000015d0| 2a 20 6c 6f 67 32 20 6f | 66 20 70 72 65 76 69 6f |* log2 o|f previo|
|000015e0| 75 73 20 6e 75 6d 62 65 | 72 20 2a 2f 0a 3e 0a 3e |us numbe|r */.>.>|
|000015f0| 23 64 65 66 69 6e 65 09 | 6f 66 28 61 2c 7a 29 20 |#define.|of(a,z) |
|00001600| 5b 28 28 53 45 54 5f 42 | 53 49 5a 45 2d 28 69 6e |[((SET_B|SIZE-(in|
|00001610| 74 29 28 61 29 2b 28 69 | 6e 74 29 28 7a 29 29 3e |t)(a)+(i|nt)(z))>|
|00001620| 3e 53 45 54 5f 53 53 49 | 5a 45 29 2b 32 5d 3d 7b |>SET_SSI|ZE)+2]={|
|00001630| 28 73 65 74 29 61 2c 28 | 73 65 74 29 7a 7d 0a 3e |(set)a,(|set)z}.>|
|00001640| 23 64 65 66 69 6e 65 09 | 6f 66 73 69 7a 65 28 61 |#define.|ofsize(a|
|00001650| 2c 7a 29 20 5b 28 28 53 | 45 54 5f 42 53 49 5a 45 |,z) [((S|ET_BSIZE|
|00001660| 2d 28 69 6e 74 29 28 61 | 29 2b 28 69 6e 74 29 28 |-(int)(a|)+(int)(|
|00001670| 7a 29 29 3e 3e 53 45 54 | 5f 53 53 49 5a 45 29 2b |z))>>SET|_SSIZE)+|
|00001680| 32 5d 0a 3e 0a 3e 23 64 | 65 66 69 6e 65 09 66 69 |2].>.>#d|efine.fi|
|00001690| 72 73 74 5f 65 6c 65 6d | 65 6e 74 28 73 29 09 28 |rst_elem|ent(s).(|
|000016a0| 28 73 29 5b 30 5d 29 0a | 3e 23 64 65 66 69 6e 65 |(s)[0]).|>#define|
|000016b0| 09 6c 61 73 74 5f 65 6c | 65 6d 65 6e 74 28 73 29 |.last_el|ement(s)|
|000016c0| 09 09 28 28 73 29 5b 31 | 5d 29 0a 3e 0a 3e 23 64 |..((s)[1|]).>.>#d|
|000016d0| 65 66 69 6e 65 09 45 4d | 50 54 59 53 45 54 09 28 |efine.EM|PTYSET.(|
|000016e0| 28 73 65 74 20 2a 29 30 | 29 0a 3e 0a 3e 2f 2a 20 |(set *)0|).>.>/* |
|000016f0| 73 65 74 63 6d 70 20 72 | 65 74 75 72 6e 20 76 61 |setcmp r|eturn va|
|00001700| 6c 75 65 73 20 2a 2f 0a | 3e 23 64 65 66 69 6e 65 |lues */.|>#define|
|00001710| 09 53 55 42 53 45 54 09 | 09 30 78 30 31 0a 3e 23 |.SUBSET.|.0x01.>#|
|00001720| 64 65 66 69 6e 65 09 53 | 55 50 45 52 53 45 54 09 |define.S|UPERSET.|
|00001730| 30 78 30 32 0a 3e 23 64 | 65 66 69 6e 65 09 53 41 |0x02.>#d|efine.SA|
|00001740| 4d 45 53 45 54 09 09 30 | 78 30 33 0a 3e 23 64 65 |MESET..0|x03.>#de|
|00001750| 66 69 6e 65 09 44 49 46 | 46 53 45 54 09 09 30 78 |fine.DIF|FSET..0x|
|00001760| 30 30 0a 3e 23 64 65 66 | 69 6e 65 09 44 49 53 4a |00.>#def|ine.DISJ|
|00001770| 4f 49 4e 54 09 30 78 30 | 34 0a 3e 23 64 65 66 69 |OINT.0x0|4.>#defi|
|00001780| 6e 65 09 45 52 52 4f 52 | 53 45 54 09 30 78 38 30 |ne.ERROR|SET.0x80|
|00001790| 09 2f 2a 20 73 65 74 73 | 20 68 61 76 65 20 64 69 |./* sets| have di|
|000017a0| 66 66 65 72 65 6e 74 20 | 65 6c 65 6d 65 6e 74 20 |fferent |element |
|000017b0| 72 61 6e 67 65 73 20 2a | 2f 0a 3e 0a 3e 23 64 65 |ranges *|/.>.>#de|
|000017c0| 66 69 6e 65 09 61 64 64 | 6c 6d 65 6d 62 65 72 28 |fine.add|lmember(|
|000017d0| 73 2c 6c 29 09 09 53 5f | 6c 6d 65 6d 62 65 72 28 |s,l)..S_|lmember(|
|000017e0| 73 2c 28 63 68 61 72 20 | 2a 29 28 6c 29 2c 61 64 |s,(char |*)(l),ad|
|000017f0| 64 6d 65 6d 62 65 72 29 | 0a 3e 23 64 65 66 69 6e |dmember)|.>#defin|
|00001800| 65 09 73 75 62 6c 6d 65 | 6d 62 65 72 28 73 2c 6c |e.sublme|mber(s,l|
|00001810| 29 09 09 53 5f 6c 6d 65 | 6d 62 65 72 28 73 2c 28 |)..S_lme|mber(s,(|
|00001820| 63 68 61 72 20 2a 29 28 | 6c 29 2c 73 75 62 6d 65 |char *)(|l),subme|
|00001830| 6d 62 65 72 29 0a 3e 23 | 64 65 66 69 6e 65 09 78 |mber).>#|define.x|
|00001840| 6f 72 6c 6d 65 6d 62 65 | 72 28 73 2c 6c 29 09 09 |orlmembe|r(s,l)..|
|00001850| 53 5f 6c 6d 65 6d 62 65 | 72 28 73 2c 28 63 68 61 |S_lmembe|r(s,(cha|
|00001860| 72 20 2a 29 28 6c 29 2c | 78 6f 72 6d 65 6d 62 65 |r *)(l),|xormembe|
|00001870| 72 29 0a 3e 0a 3e 23 64 | 65 66 69 6e 65 09 73 65 |r).>.>#d|efine.se|
|00001880| 74 75 6e 69 6f 6e 28 73 | 31 2c 73 32 29 09 09 73 |tunion(s|1,s2)..s|
|00001890| 65 74 33 75 6e 69 6f 6e | 28 73 31 2c 73 31 2c 73 |et3union|(s1,s1,s|
|000018a0| 32 29 0a 3e 23 64 65 66 | 69 6e 65 09 73 65 74 69 |2).>#def|ine.seti|
|000018b0| 6e 74 65 72 28 73 31 2c | 73 32 29 09 09 73 65 74 |nter(s1,|s2)..set|
|000018c0| 33 69 6e 74 65 72 28 73 | 31 2c 73 31 2c 73 32 29 |3inter(s|1,s1,s2)|
|000018d0| 0a 3e 23 64 65 66 69 6e | 65 09 73 65 74 64 69 66 |.>#defin|e.setdif|
|000018e0| 66 28 73 31 2c 73 32 29 | 09 09 73 65 74 33 64 69 |f(s1,s2)|..set3di|
|000018f0| 66 66 28 73 31 2c 73 31 | 2c 73 32 29 0a 3e 0a 3e |ff(s1,s1|,s2).>.>|
|00001900| 23 64 65 66 69 6e 65 09 | 73 65 74 6c 63 70 79 28 |#define.|setlcpy(|
|00001910| 73 31 2c 6c 29 09 09 53 | 5f 73 65 74 6c 63 70 79 |s1,l)..S|_setlcpy|
|00001920| 28 73 31 2c 28 63 68 61 | 72 20 2a 29 28 6c 29 29 |(s1,(cha|r *)(l))|
|00001930| 0a 3e 23 64 65 66 69 6e | 65 09 73 65 74 6c 6f 72 |.>#defin|e.setlor|
|00001940| 64 28 73 2c 6c 29 09 09 | 53 5f 73 65 74 6c 6f 72 |d(s,l)..|S_setlor|
|00001950| 64 28 73 2c 28 63 68 61 | 72 20 2a 29 28 6c 29 29 |d(s,(cha|r *)(l))|
|00001960| 0a 3e 0a 3e 23 69 66 6e | 64 65 66 09 5f 53 45 54 |.>.>#ifn|def._SET|
|00001970| 4c 49 42 5f 0a 3e 65 78 | 74 65 72 6e 20 73 65 74 |LIB_.>ex|tern set|
|00001980| 20 2a 73 65 74 63 70 79 | 28 29 2c 20 2a 73 65 74 | *setcpy|(), *set|
|00001990| 6e 63 70 79 28 29 2c 20 | 2a 73 65 74 33 75 6e 69 |ncpy(), |*set3uni|
|000019a0| 6f 6e 28 29 2c 20 2a 73 | 65 74 33 69 6e 74 65 72 |on(), *s|et3inter|
|000019b0| 28 29 2c 20 2a 73 65 74 | 33 64 69 66 66 28 29 2c |(), *set|3diff(),|
|000019c0| 0a 3e 09 20 20 20 2a 61 | 64 64 6d 65 6d 62 65 72 |.>. *a|ddmember|
|000019d0| 28 29 2c 20 2a 73 75 62 | 6d 65 6d 62 65 72 28 29 |(), *sub|member()|
|000019e0| 2c 20 2a 78 6f 72 6d 65 | 6d 62 65 72 28 29 2c 0a |, *xorme|mber(),.|
|000019f0| 3e 09 20 20 20 2a 53 5f | 6c 6d 65 6d 62 65 72 28 |>. *S_|lmember(|
|00001a00| 29 2c 20 2a 53 5f 73 65 | 74 6c 63 70 79 28 29 2c |), *S_se|tlcpy(),|
|00001a10| 20 2a 65 6d 70 74 79 73 | 65 74 28 29 3b 0a 3e 65 | *emptys|et();.>e|
|00001a20| 78 74 65 72 6e 20 69 6e | 74 20 69 73 6d 65 6d 62 |xtern in|t ismemb|
|00001a30| 65 72 28 29 2c 20 73 65 | 74 6f 72 64 28 29 2c 20 |er(), se|tord(), |
|00001a40| 73 65 74 63 6d 70 28 29 | 2c 20 53 5f 73 65 74 6c |setcmp()|, S_setl|
|00001a50| 6f 72 64 28 29 3b 0a 3e | 23 65 6e 64 69 66 09 2f |ord();.>|#endif./|
|00001a60| 2a 20 5f 53 45 54 4c 49 | 42 5f 20 2a 2f 0a 45 4f |* _SETLI|B_ */.EO|
|00001a70| 46 0a 53 3d 60 77 63 20 | 2d 63 20 3c 20 24 46 60 |F.S=`wc |-c < $F`|
|00001a80| 0a 69 66 20 74 65 73 74 | 20 35 34 37 37 20 21 3d |.if test| 5477 !=|
|00001a90| 20 24 53 0a 74 68 65 6e | 0a 65 63 68 6f 20 24 46 | $S.then|.echo $F|
|00001aa0| 3a 20 73 69 7a 65 20 69 | 73 20 24 53 2c 20 73 68 |: size i|s $S, sh|
|00001ab0| 6f 75 6c 64 20 62 65 20 | 35 34 37 37 20 3e 26 32 |ould be |5477 >&2|
|00001ac0| 0a 66 69 0a 66 69 0a 46 | 3d 27 73 65 74 6c 69 62 |.fi.fi.F|='setlib|
|00001ad0| 2e 68 27 0a 65 63 68 6f | 20 24 46 0a 69 66 20 74 |.h'.echo| $F.if t|
|00001ae0| 65 73 74 20 2d 66 20 24 | 46 0a 74 68 65 6e 0a 65 |est -f $|F.then.e|
|00001af0| 63 68 6f 20 24 46 20 65 | 78 69 73 74 73 20 2d 20 |cho $F e|xists - |
|00001b00| 6e 6f 74 20 65 78 74 72 | 61 63 74 65 64 20 3e 26 |not extr|acted >&|
|00001b10| 32 0a 65 6c 73 65 0a 73 | 65 64 20 27 73 2e 5e 3e |2.else.s|ed 's.^>|
|00001b20| 2e 2e 27 20 3c 3c 20 27 | 45 4f 46 27 20 3e 20 24 |..' << '|EOF' > $|
|00001b30| 46 0a 3e 0a 3e 2f 2a 20 | 73 65 74 6c 69 62 2e 68 |F.>.>/* |setlib.h|
|00001b40| 20 2d 20 73 65 74 20 70 | 73 65 75 64 6f 2d 74 79 | - set p|seudo-ty|
|00001b50| 70 65 20 66 6f 72 20 43 | 2c 20 6c 69 62 72 61 72 |pe for C|, librar|
|00001b60| 79 20 70 72 6f 67 72 61 | 6d 73 20 2a 2f 0a 3e 2f |y progra|ms */.>/|
|00001b70| 2a 20 73 65 65 20 73 65 | 74 73 2e 68 20 66 6f 72 |* see se|ts.h for|
|00001b80| 20 75 73 61 67 65 20 2a | 2f 0a 3e 0a 3e 23 64 65 | usage *|/.>.>#de|
|00001b90| 66 69 6e 65 09 5f 53 45 | 54 4c 49 42 5f 0a 3e 23 |fine._SE|TLIB_.>#|
|00001ba0| 69 6e 63 6c 75 64 65 09 | 22 73 65 74 73 2e 68 22 |include.|"sets.h"|
|00001bb0| 0a 3e 23 75 6e 64 65 66 | 09 5f 53 45 54 4c 49 42 |.>#undef|._SETLIB|
|00001bc0| 5f 0a 3e 0a 3e 23 64 65 | 66 69 6e 65 09 73 65 74 |_.>.>#de|fine.set|
|00001bd0| 73 69 7a 65 28 73 29 20 | 28 28 53 45 54 5f 42 53 |size(s) |((SET_BS|
|00001be0| 49 5a 45 2d 28 66 69 72 | 73 74 5f 65 6c 65 6d 65 |IZE-(fir|st_eleme|
|00001bf0| 6e 74 28 73 29 2d 6c 61 | 73 74 5f 65 6c 65 6d 65 |nt(s)-la|st_eleme|
|00001c00| 6e 74 28 73 29 29 29 3e | 3e 53 45 54 5f 53 53 49 |nt(s)))>|>SET_SSI|
|00001c10| 5a 45 29 0a 3e 0a 3e 73 | 65 74 20 2a 65 6d 70 74 |ZE).>.>s|et *empt|
|00001c20| 79 73 65 74 28 73 29 0a | 3e 72 65 67 69 73 74 65 |yset(s).|>registe|
|00001c30| 72 20 73 65 74 20 2a 73 | 3b 0a 3e 7b 0a 3e 20 20 |r set *s|;.>{.> |
|00001c40| 20 20 72 65 67 69 73 74 | 65 72 20 69 6e 74 20 6e | regist|er int n|
|00001c50| 3b 0a 3e 0a 3e 20 20 20 | 20 6e 20 3d 20 73 65 74 |;.>.> | n = set|
|00001c60| 73 69 7a 65 28 73 29 3b | 0a 3e 20 20 20 20 73 20 |size(s);|.> s |
|00001c70| 2b 3d 20 32 3b 0a 3e 20 | 20 20 20 77 68 69 6c 65 |+= 2;.> | while|
|00001c80| 20 28 6e 2d 2d 20 3e 20 | 30 29 0a 3e 09 2a 73 2b | (n-- > |0).>.*s+|
|00001c90| 2b 20 3d 20 30 3b 0a 3e | 20 20 20 20 72 65 74 75 |+ = 0;.>| retu|
|00001ca0| 72 6e 20 28 45 4d 50 54 | 59 53 45 54 29 3b 0a 3e |rn (EMPT|YSET);.>|
|00001cb0| 7d 0a 3e 0a 3e 73 65 74 | 20 2a 73 65 74 63 70 79 |}.>.>set| *setcpy|
|00001cc0| 28 73 31 2c 73 32 29 0a | 3e 72 65 67 69 73 74 65 |(s1,s2).|>registe|
|00001cd0| 72 20 73 65 74 20 2a 73 | 31 2c 2a 73 32 3b 0a 3e |r set *s|1,*s2;.>|
|00001ce0| 7b 0a 3e 20 20 20 20 72 | 65 67 69 73 74 65 72 20 |{.> r|egister |
|00001cf0| 73 68 6f 72 74 20 6e 3b | 0a 3e 20 20 20 20 72 65 |short n;|.> re|
|00001d00| 67 69 73 74 65 72 20 73 | 65 74 20 6e 6f 6e 6e 75 |gister s|et nonnu|
|00001d10| 6c 6c 20 3d 20 30 3b 0a | 3e 20 20 20 20 73 65 74 |ll = 0;.|> set|
|00001d20| 20 2a 73 20 3d 20 73 31 | 3b 0a 3e 0a 3e 20 20 20 | *s = s1|;.>.> |
|00001d30| 20 69 66 20 28 73 32 20 | 21 3d 20 45 4d 50 54 59 | if (s2 |!= EMPTY|
|00001d40| 53 45 54 29 20 7b 0a 3e | 09 6e 20 3d 20 73 65 74 |SET) {.>|.n = set|
|00001d50| 73 69 7a 65 28 73 32 29 | 3b 0a 3e 09 2a 73 31 2b |size(s2)|;.>.*s1+|
|00001d60| 2b 20 3d 20 2a 73 32 2b | 2b 3b 09 2f 2a 20 63 6f |+ = *s2+|+;./* co|
|00001d70| 70 79 20 74 68 65 20 65 | 6c 65 6d 65 6e 74 20 72 |py the e|lement r|
|00001d80| 61 6e 67 65 73 20 74 6f | 6f 20 2d 20 63 61 6e 20 |anges to|o - can |
|00001d90| 62 65 20 64 69 66 66 65 | 72 65 6e 74 20 2a 2f 0a |be diffe|rent */.|
|00001da0| 3e 09 2a 73 31 2b 2b 20 | 3d 20 2a 73 32 2b 2b 3b |>.*s1++ |= *s2++;|
|00001db0| 0a 3e 09 77 68 69 6c 65 | 20 28 6e 2d 2d 20 3e 20 |.>.while| (n-- > |
|00001dc0| 30 29 0a 3e 09 20 20 20 | 20 6e 6f 6e 6e 75 6c 6c |0).>. | nonnull|
|00001dd0| 20 7c 3d 20 28 2a 73 31 | 2b 2b 20 3d 20 2a 73 32 | |= (*s1|++ = *s2|
|00001de0| 2b 2b 29 3b 0a 3e 09 72 | 65 74 75 72 6e 20 28 6e |++);.>.r|eturn (n|
|00001df0| 6f 6e 6e 75 6c 6c 20 3f | 20 73 20 3a 20 45 4d 50 |onnull ?| s : EMP|
|00001e00| 54 59 53 45 54 29 3b 0a | 3e 20 20 20 20 7d 0a 3e |TYSET);.|> }.>|
|00001e10| 20 20 20 20 65 6c 73 65 | 0a 3e 09 72 65 74 75 72 | else|.>.retur|
|00001e20| 6e 20 28 65 6d 70 74 79 | 73 65 74 28 73 31 29 29 |n (empty|set(s1))|
|00001e30| 3b 0a 3e 7d 0a 3e 0a 3e | 73 65 74 20 2a 73 65 74 |;.>}.>.>|set *set|
|00001e40| 33 75 6e 69 6f 6e 28 73 | 31 2c 73 32 2c 73 33 29 |3union(s|1,s2,s3)|
|00001e50| 0a 3e 72 65 67 69 73 74 | 65 72 20 73 65 74 20 2a |.>regist|er set *|
|00001e60| 73 31 2c 2a 73 32 2c 2a | 73 33 3b 0a 3e 7b 0a 3e |s1,*s2,*|s3;.>{.>|
|00001e70| 20 20 20 20 72 65 67 69 | 73 74 65 72 20 73 68 6f | regi|ster sho|
|00001e80| 72 74 20 6e 3b 0a 3e 20 | 20 20 20 72 65 67 69 73 |rt n;.> | regis|
|00001e90| 74 65 72 20 73 65 74 20 | 6e 6f 6e 6e 75 6c 6c 20 |ter set |nonnull |
|00001ea0| 3d 20 30 3b 0a 3e 20 20 | 20 20 73 65 74 20 2a 73 |= 0;.> | set *s|
|00001eb0| 20 3d 20 73 31 3b 0a 3e | 0a 3e 20 20 20 20 69 66 | = s1;.>|.> if|
|00001ec0| 20 28 73 32 20 3d 3d 20 | 45 4d 50 54 59 53 45 54 | (s2 == |EMPTYSET|
|00001ed0| 29 0a 3e 09 73 32 20 3d | 20 73 33 2c 20 73 33 20 |).>.s2 =| s3, s3 |
|00001ee0| 3d 20 45 4d 50 54 59 53 | 45 54 3b 0a 3e 20 20 20 |= EMPTYS|ET;.> |
|00001ef0| 20 69 66 20 28 73 32 20 | 3d 3d 20 45 4d 50 54 59 | if (s2 |== EMPTY|
|00001f00| 53 45 54 29 0a 3e 09 72 | 65 74 75 72 6e 20 28 65 |SET).>.r|eturn (e|
|00001f10| 6d 70 74 79 73 65 74 28 | 73 31 29 29 3b 0a 3e 20 |mptyset(|s1));.> |
|00001f20| 20 20 20 6e 20 3d 20 73 | 65 74 73 69 7a 65 28 73 | n = s|etsize(s|
|00001f30| 32 29 3b 0a 3e 20 20 20 | 20 2a 73 31 2b 2b 20 3d |2);.> | *s1++ =|
|00001f40| 20 2a 73 32 2b 2b 3b 0a | 3e 20 20 20 20 2a 73 31 | *s2++;.|> *s1|
|00001f50| 2b 2b 20 3d 20 2a 73 32 | 2b 2b 3b 0a 3e 20 20 20 |++ = *s2|++;.> |
|00001f60| 20 69 66 20 28 73 33 20 | 21 3d 20 45 4d 50 54 59 | if (s3 |!= EMPTY|
|00001f70| 53 45 54 29 20 7b 0a 3e | 09 73 33 20 2b 3d 20 32 |SET) {.>|.s3 += 2|
|00001f80| 3b 0a 3e 09 77 68 69 6c | 65 20 28 6e 2d 2d 20 3e |;.>.whil|e (n-- >|
|00001f90| 20 30 29 0a 3e 09 20 20 | 20 20 6e 6f 6e 6e 75 6c | 0).>. | nonnul|
|00001fa0| 6c 20 7c 3d 20 28 2a 73 | 31 2b 2b 20 3d 20 28 2a |l |= (*s|1++ = (*|
|00001fb0| 73 32 2b 2b 20 7c 20 2a | 73 33 2b 2b 29 29 3b 0a |s2++ | *|s3++));.|
|00001fc0| 3e 20 20 20 20 7d 0a 3e | 20 20 20 20 65 6c 73 65 |> }.>| else|
|00001fd0| 20 7b 0a 3e 09 77 68 69 | 6c 65 20 28 6e 2d 2d 20 | {.>.whi|le (n-- |
|00001fe0| 3e 20 30 29 0a 3e 09 20 | 20 20 20 6e 6f 6e 6e 75 |> 0).>. | nonnu|
|00001ff0| 6c 6c 20 7c 3d 20 28 2a | 73 31 2b 2b 20 3d 20 2a |ll |= (*|s1++ = *|
|00002000| 73 32 2b 2b 29 3b 0a 3e | 20 20 20 20 7d 0a 3e 20 |s2++);.>| }.> |
|00002010| 20 20 20 72 65 74 75 72 | 6e 20 28 6e 6f 6e 6e 75 | retur|n (nonnu|
|00002020| 6c 6c 20 3f 20 73 20 3a | 20 45 4d 50 54 59 53 45 |ll ? s :| EMPTYSE|
|00002030| 54 29 3b 0a 3e 7d 0a 3e | 0a 3e 73 65 74 20 2a 73 |T);.>}.>|.>set *s|
|00002040| 65 74 33 69 6e 74 65 72 | 28 73 31 2c 73 32 2c 73 |et3inter|(s1,s2,s|
|00002050| 33 29 0a 3e 72 65 67 69 | 73 74 65 72 20 73 65 74 |3).>regi|ster set|
|00002060| 20 2a 73 31 2c 2a 73 32 | 2c 2a 73 33 3b 0a 3e 7b | *s1,*s2|,*s3;.>{|
|00002070| 0a 3e 20 20 20 20 72 65 | 67 69 73 74 65 72 20 73 |.> re|gister s|
|00002080| 68 6f 72 74 20 6e 3b 0a | 3e 20 20 20 20 72 65 67 |hort n;.|> reg|
|00002090| 69 73 74 65 72 20 73 65 | 74 20 6e 6f 6e 6e 75 6c |ister se|t nonnul|
|000020a0| 6c 20 3d 20 30 3b 0a 3e | 20 20 20 20 73 65 74 20 |l = 0;.>| set |
|000020b0| 2a 73 20 3d 20 73 31 3b | 0a 3e 0a 3e 20 20 20 20 |*s = s1;|.>.> |
|000020c0| 69 66 20 28 73 32 20 3d | 3d 20 45 4d 50 54 59 53 |if (s2 =|= EMPTYS|
|000020d0| 45 54 29 0a 3e 09 73 32 | 20 3d 20 73 33 2c 20 73 |ET).>.s2| = s3, s|
|000020e0| 33 20 3d 20 45 4d 50 54 | 59 53 45 54 3b 0a 3e 20 |3 = EMPT|YSET;.> |
|000020f0| 20 20 20 69 66 20 28 73 | 32 20 3d 3d 20 45 4d 50 | if (s|2 == EMP|
|00002100| 54 59 53 45 54 29 0a 3e | 09 72 65 74 75 72 6e 20 |TYSET).>|.return |
|00002110| 28 65 6d 70 74 79 73 65 | 74 28 73 31 29 29 3b 0a |(emptyse|t(s1));.|
|00002120| 3e 20 20 20 20 6e 20 3d | 20 73 65 74 73 69 7a 65 |> n =| setsize|
|00002130| 28 73 32 29 3b 0a 3e 20 | 20 20 20 2a 73 31 2b 2b |(s2);.> | *s1++|
|00002140| 20 3d 20 2a 73 32 2b 2b | 3b 0a 3e 20 20 20 20 2a | = *s2++|;.> *|
|00002150| 73 31 2b 2b 20 3d 20 2a | 73 32 2b 2b 3b 0a 3e 20 |s1++ = *|s2++;.> |
|00002160| 20 20 20 69 66 20 28 73 | 33 20 21 3d 20 45 4d 50 | if (s|3 != EMP|
|00002170| 54 59 53 45 54 29 20 7b | 0a 3e 09 73 33 20 2b 3d |TYSET) {|.>.s3 +=|
|00002180| 20 32 3b 0a 3e 09 77 68 | 69 6c 65 20 28 6e 2d 2d | 2;.>.wh|ile (n--|
|00002190| 20 3e 20 30 29 0a 3e 09 | 20 20 20 20 6e 6f 6e 6e | > 0).>.| nonn|
|000021a0| 75 6c 6c 20 7c 3d 20 28 | 2a 73 31 2b 2b 20 3d 20 |ull |= (|*s1++ = |
|000021b0| 28 2a 73 32 2b 2b 20 26 | 20 2a 73 33 2b 2b 29 29 |(*s2++ &| *s3++))|
|000021c0| 3b 0a 3e 09 72 65 74 75 | 72 6e 20 28 6e 6f 6e 6e |;.>.retu|rn (nonn|
|000021d0| 75 6c 6c 20 3f 20 73 20 | 3a 20 45 4d 50 54 59 53 |ull ? s |: EMPTYS|
|000021e0| 45 54 29 3b 0a 3e 20 20 | 20 20 7d 0a 3e 20 20 20 |ET);.> | }.> |
|000021f0| 20 65 6c 73 65 0a 3e 09 | 72 65 74 75 72 6e 20 28 | else.>.|return (|
|00002200| 65 6d 70 74 79 73 65 74 | 28 73 29 29 3b 09 2f 2a |emptyset|(s));./*|
|00002210| 20 6d 75 73 74 20 75 73 | 65 20 73 2c 20 6e 6f 74 | must us|e s, not|
|00002220| 20 28 6d 6f 64 69 66 69 | 65 64 29 20 73 31 20 2a | (modifi|ed) s1 *|
|00002230| 2f 0a 3e 7d 0a 3e 0a 3e | 73 65 74 20 2a 73 65 74 |/.>}.>.>|set *set|
|00002240| 33 64 69 66 66 28 73 31 | 2c 73 32 2c 73 33 29 0a |3diff(s1|,s2,s3).|
|00002250| 3e 72 65 67 69 73 74 65 | 72 20 73 65 74 20 2a 73 |>registe|r set *s|
|00002260| 31 2c 2a 73 32 2c 2a 73 | 33 3b 0a 3e 7b 0a 3e 20 |1,*s2,*s|3;.>{.> |
|00002270| 20 20 20 72 65 67 69 73 | 74 65 72 20 73 68 6f 72 | regis|ter shor|
|00002280| 74 20 6e 3b 0a 3e 20 20 | 20 20 72 65 67 69 73 74 |t n;.> | regist|
|00002290| 65 72 20 73 65 74 20 6e | 6f 6e 6e 75 6c 6c 20 3d |er set n|onnull =|
|000022a0| 20 30 3b 0a 3e 20 20 20 | 20 73 65 74 20 2a 73 20 | 0;.> | set *s |
|000022b0| 3d 20 73 31 3b 0a 3e 0a | 3e 20 20 20 20 69 66 20 |= s1;.>.|> if |
|000022c0| 28 73 32 20 3d 3d 20 45 | 4d 50 54 59 53 45 54 29 |(s2 == E|MPTYSET)|
|000022d0| 0a 3e 09 72 65 74 75 72 | 6e 20 28 65 6d 70 74 79 |.>.retur|n (empty|
|000022e0| 73 65 74 28 73 31 29 29 | 3b 0a 3e 20 20 20 20 6e |set(s1))|;.> n|
|000022f0| 20 3d 20 73 65 74 73 69 | 7a 65 28 73 32 29 3b 0a | = setsi|ze(s2);.|
|00002300| 3e 20 20 20 20 2a 73 31 | 2b 2b 20 3d 20 2a 73 32 |> *s1|++ = *s2|
|00002310| 2b 2b 3b 0a 3e 20 20 20 | 20 2a 73 31 2b 2b 20 3d |++;.> | *s1++ =|
|00002320| 20 2a 73 32 2b 2b 3b 0a | 3e 20 20 20 20 69 66 20 | *s2++;.|> if |
|00002330| 28 73 33 20 21 3d 20 45 | 4d 50 54 59 53 45 54 20 |(s3 != E|MPTYSET |
|00002340| 26 26 20 73 32 20 21 3d | 20 45 4d 50 54 59 53 45 |&& s2 !=| EMPTYSE|
|00002350| 54 29 20 7b 0a 3e 09 20 | 73 33 20 2b 3d 20 32 3b |T) {.>. |s3 += 2;|
|00002360| 0a 3e 09 77 68 69 6c 65 | 20 28 6e 2d 2d 20 3e 20 |.>.while| (n-- > |
|00002370| 30 29 0a 3e 09 20 20 20 | 20 6e 6f 6e 6e 75 6c 6c |0).>. | nonnull|
|00002380| 20 7c 3d 20 28 2a 73 31 | 2b 2b 20 3d 20 28 2a 73 | |= (*s1|++ = (*s|
|00002390| 32 2b 2b 20 26 20 7e 2a | 73 33 2b 2b 29 29 3b 0a |2++ & ~*|s3++));.|
|000023a0| 3e 20 20 20 20 7d 0a 3e | 20 20 20 20 65 6c 73 65 |> }.>| else|
|000023b0| 20 7b 0a 3e 09 77 68 69 | 6c 65 20 28 6e 2d 2d 20 | {.>.whi|le (n-- |
|000023c0| 3e 20 30 29 0a 3e 09 20 | 20 20 20 6e 6f 6e 6e 75 |> 0).>. | nonnu|
|000023d0| 6c 6c 20 7c 3d 20 28 2a | 73 31 2b 2b 20 3d 20 2a |ll |= (*|s1++ = *|
|000023e0| 73 32 2b 2b 29 3b 0a 3e | 20 20 20 20 7d 0a 3e 20 |s2++);.>| }.> |
|000023f0| 20 20 20 72 65 74 75 72 | 6e 20 28 6e 6f 6e 6e 75 | retur|n (nonnu|
|00002400| 6c 6c 20 3f 20 73 20 3a | 20 45 4d 50 54 59 53 45 |ll ? s :| EMPTYSE|
|00002410| 54 29 3b 0a 3e 7d 0a 3e | 0a 3e 69 6e 74 20 73 65 |T);.>}.>|.>int se|
|00002420| 74 6f 72 64 28 73 29 0a | 3e 72 65 67 69 73 74 65 |tord(s).|>registe|
|00002430| 72 20 73 65 74 20 2a 73 | 3b 0a 3e 7b 0a 3e 20 20 |r set *s|;.>{.> |
|00002440| 20 20 72 65 67 69 73 74 | 65 72 20 73 68 6f 72 74 | regist|er short|
|00002450| 20 6d 65 6d 62 65 72 2c | 20 74 6f 74 61 6c 20 3d | member,| total =|
|00002460| 20 30 3b 0a 3e 0a 3e 20 | 20 20 20 69 66 20 28 73 | 0;.>.> | if (s|
|00002470| 20 21 3d 20 45 4d 50 54 | 59 53 45 54 29 20 7b 0a | != EMPT|YSET) {.|
|00002480| 3e 09 66 6f 72 20 28 6d | 65 6d 62 65 72 3d 66 69 |>.for (m|ember=fi|
|00002490| 72 73 74 5f 65 6c 65 6d | 65 6e 74 28 73 29 3b 20 |rst_elem|ent(s); |
|000024a0| 6d 65 6d 62 65 72 3c 3d | 6c 61 73 74 5f 65 6c 65 |member<=|last_ele|
|000024b0| 6d 65 6e 74 28 73 29 3b | 20 6d 65 6d 62 65 72 2b |ment(s);| member+|
|000024c0| 2b 29 20 7b 0a 3e 09 20 | 20 20 20 69 66 20 28 69 |+) {.>. | if (i|
|000024d0| 73 6d 65 6d 62 65 72 28 | 73 2c 6d 65 6d 62 65 72 |smember(|s,member|
|000024e0| 29 29 0a 3e 09 09 20 20 | 20 20 74 6f 74 61 6c 2b |)).>.. | total+|
|000024f0| 2b 3b 0a 3e 09 7d 0a 3e | 20 20 20 20 7d 0a 3e 20 |+;.>.}.>| }.> |
|00002500| 20 20 20 72 65 74 75 72 | 6e 20 28 74 6f 74 61 6c | retur|n (total|
|00002510| 29 3b 0a 3e 7d 0a 3e 0a | 3e 69 6e 74 20 73 65 74 |);.>}.>.|>int set|
|00002520| 63 6d 70 28 73 31 2c 73 | 32 29 0a 3e 72 65 67 69 |cmp(s1,s|2).>regi|
|00002530| 73 74 65 72 20 73 65 74 | 20 2a 73 31 2c 2a 73 32 |ster set| *s1,*s2|
|00002540| 3b 0a 3e 7b 0a 3e 20 20 | 20 20 72 65 67 69 73 74 |;.>{.> | regist|
|00002550| 65 72 20 73 68 6f 72 74 | 20 6e 3b 0a 3e 20 20 20 |er short| n;.> |
|00002560| 20 72 65 67 69 73 74 65 | 72 20 69 6e 74 20 72 65 | registe|r int re|
|00002570| 73 75 6c 74 3b 0a 3e 0a | 3e 20 20 20 20 69 66 20 |sult;.>.|> if |
|00002580| 28 73 31 20 21 3d 20 45 | 4d 50 54 59 53 45 54 20 |(s1 != E|MPTYSET |
|00002590| 26 26 20 73 32 20 21 3d | 20 45 4d 50 54 59 53 45 |&& s2 !=| EMPTYSE|
|000025a0| 54 29 20 7b 0a 3e 09 69 | 66 20 28 66 69 72 73 74 |T) {.>.i|f (first|
|000025b0| 5f 65 6c 65 6d 65 6e 74 | 28 73 31 29 20 21 3d 20 |_element|(s1) != |
|000025c0| 66 69 72 73 74 5f 65 6c | 65 6d 65 6e 74 28 73 32 |first_el|ement(s2|
|000025d0| 29 20 7c 7c 0a 3e 09 20 | 20 20 20 20 6c 61 73 74 |) ||.>. | last|
|000025e0| 5f 65 6c 65 6d 65 6e 74 | 28 73 31 29 20 21 3d 20 |_element|(s1) != |
|000025f0| 6c 61 73 74 5f 65 6c 65 | 6d 65 6e 74 28 73 32 29 |last_ele|ment(s2)|
|00002600| 29 0a 3e 09 09 72 65 74 | 75 72 6e 20 28 45 52 52 |).>..ret|urn (ERR|
|00002610| 4f 52 53 45 54 29 3b 0a | 3e 09 6e 20 3d 20 73 65 |ORSET);.|>.n = se|
|00002620| 74 73 69 7a 65 28 73 31 | 29 3b 0a 3e 09 73 31 20 |tsize(s1|);.>.s1 |
|00002630| 2b 3d 20 32 3b 20 73 32 | 20 2b 3d 20 32 3b 0a 3e |+= 2; s2| += 2;.>|
|00002640| 09 72 65 73 75 6c 74 20 | 3d 20 53 41 4d 45 53 45 |.result |= SAMESE|
|00002650| 54 20 7c 20 44 49 53 4a | 4f 49 4e 54 3b 0a 3e 09 |T | DISJ|OINT;.>.|
|00002660| 77 68 69 6c 65 20 28 6e | 2d 2d 20 3e 20 30 20 26 |while (n|-- > 0 &|
|00002670| 26 20 72 65 73 75 6c 74 | 29 20 7b 0a 3e 09 20 20 |& result|) {.>. |
|00002680| 20 20 69 66 20 28 2a 73 | 31 20 26 20 7e 2a 73 32 | if (*s|1 & ~*s2|
|00002690| 29 0a 3e 09 09 72 65 73 | 75 6c 74 20 26 3d 20 7e |).>..res|ult &= ~|
|000026a0| 53 55 42 53 45 54 3b 0a | 3e 09 20 20 20 20 69 66 |SUBSET;.|>. if|
|000026b0| 20 28 2a 73 32 20 26 20 | 7e 2a 73 31 29 0a 3e 09 | (*s2 & |~*s1).>.|
|000026c0| 09 72 65 73 75 6c 74 20 | 26 3d 20 7e 53 55 50 45 |.result |&= ~SUPE|
|000026d0| 52 53 45 54 3b 0a 3e 09 | 20 20 20 20 69 66 20 28 |RSET;.>.| if (|
|000026e0| 2a 73 31 2b 2b 20 26 20 | 2a 73 32 2b 2b 29 0a 3e |*s1++ & |*s2++).>|
|000026f0| 09 09 72 65 73 75 6c 74 | 20 26 3d 20 7e 44 49 53 |..result| &= ~DIS|
|00002700| 4a 4f 49 4e 54 3b 0a 3e | 09 7d 0a 3e 09 69 66 20 |JOINT;.>|.}.>.if |
|00002710| 28 72 65 73 75 6c 74 20 | 21 3d 20 44 49 53 4a 4f |(result |!= DISJO|
|00002720| 49 4e 54 29 0a 3e 09 20 | 20 20 20 72 65 73 75 6c |INT).>. | resul|
|00002730| 74 20 26 3d 20 7e 44 49 | 53 4a 4f 49 4e 54 3b 0a |t &= ~DI|SJOINT;.|
|00002740| 3e 09 72 65 74 75 72 6e | 20 28 72 65 73 75 6c 74 |>.return| (result|
|00002750| 29 3b 0a 3e 20 20 20 20 | 7d 0a 3e 20 20 20 20 65 |);.> |}.> e|
|00002760| 6c 73 65 20 69 66 20 28 | 73 31 20 21 3d 20 45 4d |lse if (|s1 != EM|
|00002770| 50 54 59 53 45 54 29 20 | 7b 0a 3e 09 6e 20 3d 20 |PTYSET) |{.>.n = |
|00002780| 73 65 74 73 69 7a 65 28 | 73 31 29 3b 0a 3e 09 73 |setsize(|s1);.>.s|
|00002790| 31 20 2b 3d 20 32 3b 0a | 3e 09 77 68 69 6c 65 20 |1 += 2;.|>.while |
|000027a0| 28 6e 2d 2d 20 3e 20 30 | 29 0a 3e 09 20 20 20 20 |(n-- > 0|).>. |
|000027b0| 69 66 20 28 2a 73 31 2b | 2b 29 0a 3e 09 09 72 65 |if (*s1+|+).>..re|
|000027c0| 74 75 72 6e 20 28 53 55 | 50 45 52 53 45 54 29 3b |turn (SU|PERSET);|
|000027d0| 0a 3e 20 20 20 20 7d 0a | 3e 20 20 20 20 65 6c 73 |.> }.|> els|
|000027e0| 65 20 69 66 20 28 73 32 | 20 21 3d 20 45 4d 50 54 |e if (s2| != EMPT|
|000027f0| 59 53 45 54 29 20 7b 0a | 3e 09 6e 20 3d 20 73 65 |YSET) {.|>.n = se|
|00002800| 74 73 69 7a 65 28 73 32 | 29 3b 0a 3e 09 73 32 20 |tsize(s2|);.>.s2 |
|00002810| 2b 3d 20 32 3b 0a 3e 09 | 77 68 69 6c 65 20 28 6e |+= 2;.>.|while (n|
|00002820| 2d 2d 20 3e 20 30 29 0a | 3e 09 20 20 20 20 69 66 |-- > 0).|>. if|
|00002830| 20 28 2a 73 32 2b 2b 29 | 0a 3e 09 09 72 65 74 75 | (*s2++)|.>..retu|
|00002840| 72 6e 20 28 53 55 42 53 | 45 54 29 3b 0a 3e 20 20 |rn (SUBS|ET);.> |
|00002850| 20 20 7d 0a 3e 20 20 20 | 20 72 65 74 75 72 6e 20 | }.> | return |
|00002860| 28 53 41 4d 45 53 45 54 | 29 3b 0a 3e 7d 0a 3e 0a |(SAMESET|);.>}.>.|
|00002870| 3e 69 6e 74 20 69 73 6d | 65 6d 62 65 72 28 73 2c |>int ism|ember(s,|
|00002880| 65 29 0a 3e 72 65 67 69 | 73 74 65 72 20 73 65 74 |e).>regi|ster set|
|00002890| 20 2a 73 3b 0a 3e 69 6e | 74 20 65 3b 0a 3e 7b 0a | *s;.>in|t e;.>{.|
|000028a0| 3e 20 20 20 20 69 66 20 | 28 66 69 72 73 74 5f 65 |> if |(first_e|
|000028b0| 6c 65 6d 65 6e 74 28 73 | 29 20 3c 3d 20 65 20 26 |lement(s|) <= e &|
|000028c0| 26 20 65 20 3c 3d 20 6c | 61 73 74 5f 65 6c 65 6d |& e <= l|ast_elem|
|000028d0| 65 6e 74 28 73 29 29 20 | 7b 0a 3e 09 65 20 2d 3d |ent(s)) |{.>.e -=|
|000028e0| 20 66 69 72 73 74 5f 65 | 6c 65 6d 65 6e 74 28 73 | first_e|lement(s|
|000028f0| 29 3b 0a 3e 09 72 65 74 | 75 72 6e 20 28 28 73 5b |);.>.ret|urn ((s[|
|00002900| 28 65 3e 3e 53 45 54 5f | 53 53 49 5a 45 29 2b 32 |(e>>SET_|SSIZE)+2|
|00002910| 5d 20 26 20 28 31 3c 3c | 28 65 20 26 20 28 53 45 |] & (1<<|(e & (SE|
|00002920| 54 5f 42 53 49 5a 45 2d | 31 29 29 29 29 20 21 3d |T_BSIZE-|1)))) !=|
|00002930| 20 30 29 3b 0a 3e 20 20 | 20 20 7d 0a 3e 20 20 20 | 0);.> | }.> |
|00002940| 20 65 6c 73 65 0a 3e 09 | 72 65 74 75 72 6e 20 28 | else.>.|return (|
|00002950| 30 29 3b 0a 3e 7d 0a 3e | 0a 3e 73 65 74 20 2a 61 |0);.>}.>|.>set *a|
|00002960| 64 64 6d 65 6d 62 65 72 | 28 73 2c 65 29 0a 3e 72 |ddmember|(s,e).>r|
|00002970| 65 67 69 73 74 65 72 20 | 73 65 74 20 2a 73 3b 0a |egister |set *s;.|
|00002980| 3e 69 6e 74 20 65 3b 0a | 3e 7b 0a 3e 20 20 20 20 |>int e;.|>{.> |
|00002990| 69 66 20 28 66 69 72 73 | 74 5f 65 6c 65 6d 65 6e |if (firs|t_elemen|
|000029a0| 74 28 73 29 20 3c 3d 20 | 65 20 26 26 20 65 20 3c |t(s) <= |e && e <|
|000029b0| 3d 20 6c 61 73 74 5f 65 | 6c 65 6d 65 6e 74 28 73 |= last_e|lement(s|
|000029c0| 29 29 20 7b 0a 3e 09 65 | 20 2d 3d 20 66 69 72 73 |)) {.>.e| -= firs|
|000029d0| 74 5f 65 6c 65 6d 65 6e | 74 28 73 29 3b 0a 3e 09 |t_elemen|t(s);.>.|
|000029e0| 73 5b 28 65 3e 3e 53 45 | 54 5f 53 53 49 5a 45 29 |s[(e>>SE|T_SSIZE)|
|000029f0| 2b 32 5d 20 7c 3d 20 28 | 31 3c 3c 28 65 20 26 20 |+2] |= (|1<<(e & |
|00002a00| 28 53 45 54 5f 42 53 49 | 5a 45 2d 31 29 29 29 3b |(SET_BSI|ZE-1)));|
|00002a10| 0a 3e 09 72 65 74 75 72 | 6e 20 28 73 29 3b 0a 3e |.>.retur|n (s);.>|
|00002a20| 20 20 20 20 7d 0a 3e 20 | 20 20 20 65 6c 73 65 0a | }.> | else.|
|00002a30| 3e 09 72 65 74 75 72 6e | 20 28 45 4d 50 54 59 53 |>.return| (EMPTYS|
|00002a40| 45 54 29 3b 0a 3e 7d 0a | 3e 0a 3e 73 65 74 20 2a |ET);.>}.|>.>set *|
|00002a50| 73 75 62 6d 65 6d 62 65 | 72 28 73 2c 65 29 0a 3e |submembe|r(s,e).>|
|00002a60| 72 65 67 69 73 74 65 72 | 20 73 65 74 20 2a 73 3b |register| set *s;|
|00002a70| 0a 3e 69 6e 74 20 65 3b | 0a 3e 7b 0a 3e 20 20 20 |.>int e;|.>{.> |
|00002a80| 20 69 66 20 28 66 69 72 | 73 74 5f 65 6c 65 6d 65 | if (fir|st_eleme|
|00002a90| 6e 74 28 73 29 20 3c 3d | 20 65 20 26 26 20 65 20 |nt(s) <=| e && e |
|00002aa0| 3c 3d 20 6c 61 73 74 5f | 65 6c 65 6d 65 6e 74 28 |<= last_|element(|
|00002ab0| 73 29 29 20 7b 0a 3e 09 | 65 20 2d 3d 20 66 69 72 |s)) {.>.|e -= fir|
|00002ac0| 73 74 5f 65 6c 65 6d 65 | 6e 74 28 73 29 3b 0a 3e |st_eleme|nt(s);.>|
|00002ad0| 09 73 5b 28 65 3e 3e 53 | 45 54 5f 53 53 49 5a 45 |.s[(e>>S|ET_SSIZE|
|00002ae0| 29 2b 32 5d 20 26 3d 20 | 7e 28 31 3c 3c 28 65 20 |)+2] &= |~(1<<(e |
|00002af0| 26 20 28 53 45 54 5f 42 | 53 49 5a 45 2d 31 29 29 |& (SET_B|SIZE-1))|
|00002b00| 29 3b 0a 3e 09 72 65 74 | 75 72 6e 20 28 73 29 3b |);.>.ret|urn (s);|
|00002b10| 0a 3e 20 20 20 20 7d 0a | 3e 20 20 20 20 65 6c 73 |.> }.|> els|
|00002b20| 65 0a 3e 09 72 65 74 75 | 72 6e 20 28 45 4d 50 54 |e.>.retu|rn (EMPT|
|00002b30| 59 53 45 54 29 3b 0a 3e | 7d 0a 3e 0a 3e 73 65 74 |YSET);.>|}.>.>set|
|00002b40| 20 2a 78 6f 72 6d 65 6d | 62 65 72 28 73 2c 65 29 | *xormem|ber(s,e)|
|00002b50| 0a 3e 72 65 67 69 73 74 | 65 72 20 73 65 74 20 2a |.>regist|er set *|
|00002b60| 73 3b 0a 3e 69 6e 74 20 | 65 3b 0a 3e 7b 0a 3e 20 |s;.>int |e;.>{.> |
|00002b70| 20 20 20 69 66 20 28 66 | 69 72 73 74 5f 65 6c 65 | if (f|irst_ele|
|00002b80| 6d 65 6e 74 28 73 29 20 | 3c 3d 20 65 20 26 26 20 |ment(s) |<= e && |
|00002b90| 65 20 3c 3d 20 6c 61 73 | 74 5f 65 6c 65 6d 65 6e |e <= las|t_elemen|
|00002ba0| 74 28 73 29 29 20 7b 0a | 3e 09 65 20 2d 3d 20 66 |t(s)) {.|>.e -= f|
|00002bb0| 69 72 73 74 5f 65 6c 65 | 6d 65 6e 74 28 73 29 3b |irst_ele|ment(s);|
|00002bc0| 0a 3e 09 73 5b 28 65 3e | 3e 53 45 54 5f 53 53 49 |.>.s[(e>|>SET_SSI|
|00002bd0| 5a 45 29 2b 32 5d 20 5e | 3d 20 28 31 3c 3c 28 65 |ZE)+2] ^|= (1<<(e|
|00002be0| 20 26 20 28 53 45 54 5f | 42 53 49 5a 45 2d 31 29 | & (SET_|BSIZE-1)|
|00002bf0| 29 29 3b 0a 3e 09 72 65 | 74 75 72 6e 20 28 73 29 |));.>.re|turn (s)|
|00002c00| 3b 0a 3e 20 20 20 20 7d | 0a 3e 20 20 20 20 65 6c |;.> }|.> el|
|00002c10| 73 65 0a 3e 09 72 65 74 | 75 72 6e 20 28 45 4d 50 |se.>.ret|urn (EMP|
|00002c20| 54 59 53 45 54 29 3b 0a | 3e 7d 0a 3e 0a 3e 73 65 |TYSET);.|>}.>.>se|
|00002c30| 74 20 2a 53 5f 6c 6d 65 | 6d 62 65 72 28 73 2c 6c |t *S_lme|mber(s,l|
|00002c40| 2c 66 6e 29 0a 3e 72 65 | 67 69 73 74 65 72 20 73 |,fn).>re|gister s|
|00002c50| 65 74 20 2a 73 3b 0a 3e | 72 65 67 69 73 74 65 72 |et *s;.>|register|
|00002c60| 20 63 68 61 72 20 2a 6c | 3b 0a 3e 73 65 74 20 2a | char *l|;.>set *|
|00002c70| 28 2a 66 6e 29 28 29 3b | 0a 3e 7b 0a 3e 20 20 20 |(*fn)();|.>{.> |
|00002c80| 20 72 65 67 69 73 74 65 | 72 20 73 68 6f 72 74 20 | registe|r short |
|00002c90| 62 61 73 65 3b 0a 3e 20 | 20 20 20 72 65 67 69 73 |base;.> | regis|
|00002ca0| 74 65 72 20 69 6e 74 20 | 2a 6c 6c 3b 0a 3e 0a 3e |ter int |*ll;.>.>|
|00002cb0| 20 20 20 20 62 61 73 65 | 20 3d 20 66 69 72 73 74 | base| = first|
|00002cc0| 5f 65 6c 65 6d 65 6e 74 | 28 73 29 3b 0a 3e 20 20 |_element|(s);.> |
|00002cd0| 20 20 69 66 20 28 62 61 | 73 65 20 3e 20 31 29 20 | if (ba|se > 1) |
|00002ce0| 7b 0a 3e 09 77 68 69 6c | 65 20 28 2a 6c 29 0a 3e |{.>.whil|e (*l).>|
|00002cf0| 09 20 20 20 20 28 66 6e | 29 28 73 2c 2a 6c 2b 2b |. (fn|)(s,*l++|
|00002d00| 29 3b 0a 3e 20 20 20 20 | 7d 0a 3e 20 20 20 20 65 |);.> |}.> e|
|00002d10| 6c 73 65 20 7b 0a 3e 09 | 6c 6c 20 3d 20 28 69 6e |lse {.>.|ll = (in|
|00002d20| 74 20 2a 29 6c 3b 0a 3e | 09 77 68 69 6c 65 20 28 |t *)l;.>|.while (|
|00002d30| 2a 6c 6c 20 21 3d 20 62 | 61 73 65 2d 31 29 0a 3e |*ll != b|ase-1).>|
|00002d40| 09 20 20 20 20 28 66 6e | 29 28 73 2c 2a 6c 6c 2b |. (fn|)(s,*ll+|
|00002d50| 2b 29 3b 0a 3e 20 20 20 | 20 7d 0a 3e 20 20 20 20 |+);.> | }.> |
|00002d60| 72 65 74 75 72 6e 20 28 | 73 29 3b 0a 3e 7d 0a 3e |return (|s);.>}.>|
|00002d70| 0a 3e 69 6e 74 20 53 5f | 73 65 74 6c 6f 72 64 28 |.>int S_|setlord(|
|00002d80| 73 2c 6c 29 0a 3e 72 65 | 67 69 73 74 65 72 20 73 |s,l).>re|gister s|
|00002d90| 65 74 20 2a 73 3b 0a 3e | 72 65 67 69 73 74 65 72 |et *s;.>|register|
|00002da0| 20 63 68 61 72 20 2a 6c | 3b 0a 3e 7b 0a 3e 20 20 | char *l|;.>{.> |
|00002db0| 20 20 72 65 67 69 73 74 | 65 72 20 73 68 6f 72 74 | regist|er short|
|00002dc0| 20 62 61 73 65 2c 20 74 | 6f 74 61 6c 20 3d 20 30 | base, t|otal = 0|
|00002dd0| 3b 0a 3e 20 20 20 20 72 | 65 67 69 73 74 65 72 20 |;.> r|egister |
|00002de0| 69 6e 74 20 2a 6c 6c 3b | 0a 3e 0a 3e 20 20 20 20 |int *ll;|.>.> |
|00002df0| 69 66 20 28 73 20 3d 3d | 20 45 4d 50 54 59 53 45 |if (s ==| EMPTYSE|
|00002e00| 54 29 0a 3e 09 72 65 74 | 75 72 6e 20 28 30 29 3b |T).>.ret|urn (0);|
|00002e10| 0a 3e 20 20 20 20 62 61 | 73 65 20 3d 20 66 69 72 |.> ba|se = fir|
|00002e20| 73 74 5f 65 6c 65 6d 65 | 6e 74 28 73 29 3b 0a 3e |st_eleme|nt(s);.>|
|00002e30| 20 20 20 20 69 66 20 28 | 62 61 73 65 20 3e 20 31 | if (|base > 1|
|00002e40| 29 20 7b 0a 3e 09 77 68 | 69 6c 65 20 28 2a 6c 29 |) {.>.wh|ile (*l)|
|00002e50| 0a 3e 09 20 20 20 20 74 | 6f 74 61 6c 20 2b 3d 20 |.>. t|otal += |
|00002e60| 69 73 6d 65 6d 62 65 72 | 28 73 2c 2a 6c 2b 2b 29 |ismember|(s,*l++)|
|00002e70| 3b 0a 3e 20 20 20 20 7d | 0a 3e 20 20 20 20 65 6c |;.> }|.> el|
|00002e80| 73 65 20 7b 0a 3e 09 6c | 6c 20 3d 20 28 69 6e 74 |se {.>.l|l = (int|
|00002e90| 20 2a 29 6c 3b 0a 3e 09 | 77 68 69 6c 65 20 28 2a | *)l;.>.|while (*|
|00002ea0| 6c 6c 20 21 3d 20 62 61 | 73 65 2d 31 29 0a 3e 09 |ll != ba|se-1).>.|
|00002eb0| 20 20 20 20 74 6f 74 61 | 6c 20 2b 3d 20 69 73 6d | tota|l += ism|
|00002ec0| 65 6d 62 65 72 28 73 2c | 2a 6c 6c 2b 2b 29 3b 0a |ember(s,|*ll++);.|
|00002ed0| 3e 20 20 20 20 7d 0a 3e | 20 20 20 20 72 65 74 75 |> }.>| retu|
|00002ee0| 72 6e 20 28 74 6f 74 61 | 6c 29 3b 0a 3e 7d 0a 3e |rn (tota|l);.>}.>|
|00002ef0| 0a 3e 73 65 74 20 2a 53 | 5f 73 65 74 6c 63 70 79 |.>set *S|_setlcpy|
|00002f00| 28 73 31 2c 6c 29 0a 3e | 73 65 74 20 2a 73 31 3b |(s1,l).>|set *s1;|
|00002f10| 0a 3e 63 68 61 72 20 2a | 6c 3b 0a 3e 7b 0a 3e 20 |.>char *|l;.>{.> |
|00002f20| 20 20 20 65 6d 70 74 79 | 73 65 74 28 73 31 29 3b | empty|set(s1);|
|00002f30| 0a 3e 20 20 20 20 72 65 | 74 75 72 6e 20 28 53 5f |.> re|turn (S_|
|00002f40| 6c 6d 65 6d 62 65 72 28 | 73 31 2c 6c 2c 61 64 64 |lmember(|s1,l,add|
|00002f50| 6d 65 6d 62 65 72 29 29 | 3b 0a 3e 7d 0a 3e 0a 3e |member))|;.>}.>.>|
|00002f60| 73 65 74 20 2a 73 65 74 | 6e 63 70 79 28 73 31 2c |set *set|ncpy(s1,|
|00002f70| 73 32 29 0a 3e 72 65 67 | 69 73 74 65 72 20 73 65 |s2).>reg|ister se|
|00002f80| 74 20 2a 73 31 2c 20 2a | 73 32 3b 0a 3e 7b 0a 3e |t *s1, *|s2;.>{.>|
|00002f90| 20 20 20 20 72 65 67 69 | 73 74 65 72 20 73 68 6f | regi|ster sho|
|00002fa0| 72 74 20 6d 65 6d 62 65 | 72 3b 0a 3e 20 20 20 20 |rt membe|r;.> |
|00002fb0| 73 65 74 20 2a 72 65 73 | 75 6c 74 20 3d 20 45 4d |set *res|ult = EM|
|00002fc0| 50 54 59 53 45 54 3b 0a | 3e 0a 3e 20 20 20 20 65 |PTYSET;.|>.> e|
|00002fd0| 6d 70 74 79 73 65 74 28 | 73 31 29 3b 0a 3e 20 20 |mptyset(|s1);.> |
|00002fe0| 20 20 69 66 20 28 73 32 | 20 21 3d 20 45 4d 50 54 | if (s2| != EMPT|
|00002ff0| 59 53 45 54 29 20 7b 0a | 3e 09 66 6f 72 20 28 6d |YSET) {.|>.for (m|
|00003000| 65 6d 62 65 72 3d 66 69 | 72 73 74 5f 65 6c 65 6d |ember=fi|rst_elem|
|00003010| 65 6e 74 28 73 32 29 3b | 20 6d 65 6d 62 65 72 3c |ent(s2);| member<|
|00003020| 3d 6c 61 73 74 5f 65 6c | 65 6d 65 6e 74 28 73 32 |=last_el|ement(s2|
|00003030| 29 3b 20 6d 65 6d 62 65 | 72 2b 2b 29 20 7b 0a 3e |); membe|r++) {.>|
|00003040| 09 20 20 20 20 69 66 20 | 28 69 73 6d 65 6d 62 65 |. if |(ismembe|
|00003050| 72 28 73 32 2c 6d 65 6d | 62 65 72 29 20 26 26 20 |r(s2,mem|ber) && |
|00003060| 61 64 64 6d 65 6d 62 65 | 72 28 73 31 2c 6d 65 6d |addmembe|r(s1,mem|
|00003070| 62 65 72 29 29 0a 3e 09 | 09 72 65 73 75 6c 74 20 |ber)).>.|.result |
|00003080| 3d 20 73 31 3b 0a 3e 09 | 7d 0a 3e 20 20 20 20 7d |= s1;.>.|}.> }|
|00003090| 0a 3e 20 20 20 20 72 65 | 74 75 72 6e 20 28 72 65 |.> re|turn (re|
|000030a0| 73 75 6c 74 29 3b 0a 3e | 7d 0a 3e 0a 3e 23 75 6e |sult);.>|}.>.>#un|
|000030b0| 64 65 66 09 73 65 74 73 | 69 7a 65 0a 45 4f 46 0a |def.sets|ize.EOF.|
|000030c0| 53 3d 60 77 63 20 2d 63 | 20 3c 20 24 46 60 0a 69 |S=`wc -c| < $F`.i|
|000030d0| 66 20 74 65 73 74 20 35 | 32 32 34 20 21 3d 20 24 |f test 5|224 != $|
|000030e0| 53 0a 74 68 65 6e 0a 65 | 63 68 6f 20 24 46 3a 20 |S.then.e|cho $F: |
|000030f0| 73 69 7a 65 20 69 73 20 | 24 53 2c 20 73 68 6f 75 |size is |$S, shou|
|00003100| 6c 64 20 62 65 20 35 32 | 32 34 20 3e 26 32 0a 66 |ld be 52|24 >&2.f|
|00003110| 69 0a 66 69 0a 46 3d 27 | 73 65 74 64 65 6d 6f 2e |i.fi.F='|setdemo.|
|00003120| 63 27 0a 65 63 68 6f 20 | 24 46 0a 69 66 20 74 65 |c'.echo |$F.if te|
|00003130| 73 74 20 2d 66 20 24 46 | 0a 74 68 65 6e 0a 65 63 |st -f $F|.then.ec|
|00003140| 68 6f 20 24 46 20 65 78 | 69 73 74 73 20 2d 20 6e |ho $F ex|ists - n|
|00003150| 6f 74 20 65 78 74 72 61 | 63 74 65 64 20 3e 26 32 |ot extra|cted >&2|
|00003160| 0a 65 6c 73 65 0a 73 65 | 64 20 27 73 2e 5e 3e 2e |.else.se|d 's.^>.|
|00003170| 2e 27 20 3c 3c 20 27 45 | 4f 46 27 20 3e 20 24 46 |.' << 'E|OF' > $F|
|00003180| 0a 3e 0a 3e 23 69 6e 63 | 6c 75 64 65 09 3c 73 74 |.>.>#inc|lude.<st|
|00003190| 64 69 6f 2e 68 3e 0a 3e | 23 69 6e 63 6c 75 64 65 |dio.h>.>|#include|
|000031a0| 09 22 73 65 74 6c 69 62 | 2e 68 22 0a 3e 0a 3e 73 |."setlib|.h".>.>s|
|000031b0| 65 74 20 73 31 20 6f 66 | 28 27 61 27 2c 27 7a 27 |et s1 of|('a','z'|
|000031c0| 29 2c 20 73 32 20 6f 66 | 28 27 61 27 2c 27 7a 27 |), s2 of|('a','z'|
|000031d0| 29 3b 0a 3e 0a 3e 6d 61 | 69 6e 28 29 0a 3e 7b 0a |);.>.>ma|in().>{.|
|000031e0| 3e 09 73 65 74 20 2a 73 | 33 3b 0a 3e 0a 3e 09 73 |>.set *s|3;.>.>.s|
|000031f0| 33 20 3d 20 73 32 3b 0a | 3e 09 73 65 74 6c 63 70 |3 = s2;.|>.setlcp|
|00003200| 79 28 73 31 2c 22 61 65 | 69 6f 75 22 29 3b 0a 3e |y(s1,"ae|iou");.>|
|00003210| 09 70 72 5f 73 65 74 28 | 73 31 29 3b 0a 3e 09 65 |.pr_set(|s1);.>.e|
|00003220| 6d 70 74 79 73 65 74 28 | 73 33 29 3b 0a 3e 09 61 |mptyset(|s3);.>.a|
|00003230| 64 64 6c 6d 65 6d 62 65 | 72 28 73 33 2c 22 61 73 |ddlmembe|r(s3,"as|
|00003240| 64 66 67 68 22 29 3b 0a | 3e 09 70 72 5f 73 65 74 |dfgh");.|>.pr_set|
|00003250| 28 73 33 29 3b 0a 3e 09 | 70 72 5f 73 65 74 28 73 |(s3);.>.|pr_set(s|
|00003260| 65 74 75 6e 69 6f 6e 28 | 73 33 2c 73 31 29 29 3b |etunion(|s3,s1));|
|00003270| 0a 3e 09 70 72 5f 73 65 | 74 28 73 65 74 64 69 66 |.>.pr_se|t(setdif|
|00003280| 66 28 73 33 2c 73 31 29 | 29 3b 0a 3e 09 70 72 5f |f(s3,s1)|);.>.pr_|
|00003290| 73 65 74 28 73 65 74 64 | 69 66 66 28 73 31 2c 73 |set(setd|iff(s1,s|
|000032a0| 31 29 29 3b 0a 3e 7d 0a | 3e 0a 3e 70 72 5f 73 65 |1));.>}.|>.>pr_se|
|000032b0| 74 28 73 29 0a 3e 73 65 | 74 20 2a 73 3b 0a 3e 7b |t(s).>se|t *s;.>{|
|000032c0| 0a 3e 09 69 6e 74 20 69 | 3b 0a 3e 0a 3e 09 69 66 |.>.int i|;.>.>.if|
|000032d0| 20 28 73 29 0a 3e 09 20 | 20 20 20 66 6f 72 20 28 | (s).>. | for (|
|000032e0| 69 3d 66 69 72 73 74 5f | 65 6c 65 6d 65 6e 74 28 |i=first_|element(|
|000032f0| 73 29 3b 20 69 3c 3d 6c | 61 73 74 5f 65 6c 65 6d |s); i<=l|ast_elem|
|00003300| 65 6e 74 28 73 29 3b 20 | 69 2b 2b 29 0a 3e 09 09 |ent(s); |i++).>..|
|00003310| 70 75 74 63 68 61 72 28 | 28 69 73 6d 65 6d 62 65 |putchar(|(ismembe|
|00003320| 72 28 73 2c 69 29 29 20 | 3f 20 69 20 3a 20 27 20 |r(s,i)) |? i : ' |
|00003330| 27 29 3b 0a 3e 09 65 6c | 73 65 0a 3e 09 20 20 20 |');.>.el|se.>. |
|00003340| 20 70 72 69 6e 74 66 28 | 22 2d 65 6d 70 74 79 73 | printf(|"-emptys|
|00003350| 65 74 20 70 6f 69 6e 74 | 65 72 2d 22 29 3b 0a 3e |et point|er-");.>|
|00003360| 09 70 75 74 63 68 61 72 | 28 27 5c 6e 27 29 3b 0a |.putchar|('\n');.|
|00003370| 3e 7d 0a 3e 0a 45 4f 46 | 0a 53 3d 60 77 63 20 2d |>}.>.EOF|.S=`wc -|
|00003380| 63 20 3c 20 24 46 60 0a | 69 66 20 74 65 73 74 20 |c < $F`.|if test |
|00003390| 34 36 36 20 21 3d 20 24 | 53 0a 74 68 65 6e 0a 65 |466 != $|S.then.e|
|000033a0| 63 68 6f 20 24 46 3a 20 | 73 69 7a 65 20 69 73 20 |cho $F: |size is |
|000033b0| 24 53 2c 20 73 68 6f 75 | 6c 64 20 62 65 20 34 36 |$S, shou|ld be 46|
|000033c0| 36 20 3e 26 32 0a 66 69 | 0a 66 69 0a 46 3d 59 0a |6 >&2.fi|.fi.F=Y.|
|000033d0| 65 63 68 6f 20 43 68 65 | 63 6b 69 6e 67 20 6d 61 |echo Che|cking ma|
|000033e0| 6e 69 66 65 73 74 2e 2e | 0a 66 6f 72 20 66 69 6c |nifest..|.for fil|
|000033f0| 65 20 69 6e 20 5c 0a 27 | 73 65 74 73 2e 68 27 20 |e in \.'|sets.h' |
|00003400| 5c 0a 27 73 65 74 6c 69 | 62 2e 68 27 20 5c 0a 27 |\.'setli|b.h' \.'|
|00003410| 73 65 74 64 65 6d 6f 2e | 63 27 0a 64 6f 0a 69 66 |setdemo.|c'.do.if|
|00003420| 20 74 65 73 74 20 21 20 | 2d 72 20 24 66 69 6c 65 | test ! |-r $file|
|00003430| 0a 74 68 65 6e 0a 65 63 | 68 6f 20 45 72 72 6f 72 |.then.ec|ho Error|
|00003440| 3a 20 24 66 69 6c 65 20 | 6e 6f 74 20 65 78 74 72 |: $file |not extr|
|00003450| 61 63 74 65 64 2e 20 3e | 26 32 0a 46 3d 0a 66 69 |acted. >|&2.F=.fi|
|00003460| 0a 64 6f 6e 65 0a 65 63 | 68 6f 20 73 68 61 72 66 |.done.ec|ho sharf|
|00003470| 69 6c 65 20 63 6f 6d 70 | 6c 65 74 65 0a 69 66 20 |ile comp|lete.if |
|00003480| 74 65 73 74 20 22 24 46 | 22 0a 74 68 65 6e 0a 65 |test "$F|".then.e|
|00003490| 78 69 74 20 30 0a 65 6c | 73 65 0a 65 78 69 74 20 |xit 0.el|se.exit |
|000034a0| 32 0a 66 69 0a | |2.fi. | |
+--------+-------------------------+-------------------------+--------+--------+