Perm: Permutation Manipulator̎gp@

1. Ώۋ@ƋN@
{vO Linux OSœ삷Bigcc, g++, bison, flexgpj
32rbgvZ@z肵Ă邪ARpCIvVݒɂ
64rbg@ɂΉ\B

vŐN@́A
Perm [-őDDߓ_] [t@C]
łB

NɃt@Cw肷ƃt@Cɏꂽ߂sBt@C
ȂƕW͂ǂݍށBvZʂ͕Wo͂ɏo͂B[
o͂ɂC^v^`̗p@ƁAt@Co͂ɂtB^`
̗p@̗\łB

{vOł́AŐDD f[^( 30 byte/node)L
ӂƏ}ɒቺ邽߁A}V̎LTCYɉ
őZDDߓ_w肵A͈͓̔ŋLǗsBiȗl400000Bj
L̈́ANɍŏmۂAKvɉďXɌE܂Ŋg
BvZɎw肵őm[hɒBꍇ͌vZłAxb
Z[Wo͂ivZʂ0ƂȂjB

ij
perm          C^v^[hŋN
perm <script>    t@C <script> ɏꂽ߂s
perm -100000   őZDDߓ_ 100000 ŋN


2. ϐ
{vOł́Äʒu\uʒuLvƁAvZʂꎞI
ێLꏊ\uvOϐvgpBʒuL͉p
܂͐Ŏn܂pAvOϐ͉p啶Ŏn܂pŕ\B
p͍ő255܂łŁAQڈȍ~ɃA_[o[܂ł悢B
ʒuL͍ő254܂ŎgpłBvOϐ̌ɐ͂ȂB

W0, û݂ȂW1ƕ\B
01͈ʒuLƂėpĂǂBW\Ƃ͕ŋʂB

R}h̒Ńt@Cw肷ꍇAѓ͂GR[ob
NƂɂ́A[pu"vň͂ށB

ij
ʒuL         a  b  1  25  bdd  a5A  f_t6
vOϐ   A  B  X1  X2  BDD  A5a  F_t6
t@C       "a"  "b"  "script1.bem" 


3. ߂̍\
{vÓA{IɍsPʁiPsP߁jœ삷BPsɕ
߂ꍇ́AZ~R ; ŋ؂Bsɂ킽ĂP߂
ꍇ́As̒OɃobNXbVuvuBɃV[v
u#vƁẢs܂ŃRgƂēǂݔ΂B

vO̐Ɋւ閽߂ƂẮÂRB
    source t@C   t@Cɏꂽ߂ĂяoĎsB
    help ܂ ?       gp@\B
    quit ܂ exit    vOIBt@C̏I(EOF)łIB

Perm̌vZs閽߂́ÂR킩ȂB
E錾 --- gpʒuL̖OƏ錾B
E --- vZʂvOϐɑB
Eo͕ --- vZʂX̌`ŕ\B

4. 錾
錾́AgpʒuL̖OƏ炩ߐ錾̂łB

symbol [ ʒuL [ , ʒuL, ...] ]

؂̃R}͋󔒂ł悢Bϐ̏́Aォ錾LʁiEjɔzuADDŐɓWJBʒuLPȂꍇ́Aݎgp̈ʒuLꗗ\B

錾͕ɕĎsĂ悢BϐQx錾ꍇ́AxoĂQxڂ̐錾͖B

ij
symbol a, b, c
symbol b, d, e
ƂƁAa b c d ȅɂȂB

錾ĂȂʒuLW㐔̒Ŏgꂽꍇ́ȀŐV
錾̂ƂāAŏʂɒǉixbZ[WojB
ij
symbol a, b, c
print [b a d c]
ƂƁAa b c d̏ɂȂB


5. 
́AEӂ̏W㐔vZAꂽWӂ̃vO
ϐɑ̂łB

vOϐ = W㐔

vOϐ́A炩ߐ錾Kv͂ȂB̍ӂɏ߂
ꂽ_ŁAL̈悪mۂBvOϐ̎gpɐ͂
BvOϐɏd˂đƁAȑO̓eꂽɁA
VlBʒuLӂɒuƂ͂łȂB܂A
ꂽƂ̂ȂvOϐEӂŎQƂ邱Ƃ͂łȂB

Eӂ̏W㐔̕@́ACɏĂBgpł鉉ZqAs
D揇ɋB
      ()
      (ʒuL:ʒuL)
      [ʒuL ʒuL c ʒuL]
      .Cofact(ʒuL,ʒuL)
@@@ 
       * 
       & 
       + 
       - 

(ʒuL:ʒuL)  ́A2̈ʒuLȊO͈ړȂƂ1Ȃ鏇W\B

[ʒuL ʒuL ʒuL c] ́AʒuL̈ړ񋓂ĕ\1Ȃ鏇W\B

.Cofact(ʒuL1, ʒuL2)@́A\WɊ܂܂鏇̂AʒuL1ʒuL2Ɉړ悤ȏ݂̂𕔕WƂĎoAɈʒuL1ƈʒuL2WԂB

 ƁA*͓ӖŁAQ̏W̒ϏWԂBiQ̏Wɑ鏇񓯎mׂĂ̑g̍Zs񂩂ȂWj

&͐ϏWiintersectionjA+͘aW(union)A-͍W(difference set)vZB

6. o͕
ǒ͕`͎̒ʂłB

print [ /XCb` ] Zp_
print ""

print u?vőpłBXCb`͏o͌`w肷̂ŁA
ȗꍇ́A֐ɉēKɌ₷`IB
pu"vň͂񂾕͂̂܂܃GR[obNB

ȉɁAݎgpłXCb`Ƃ̏o͌`B

   (XCb`Ȃ)@
@@@@ʒuL̍sׂ`ŏWɊ܂܂S񋓂B
   /enum2       2ϐ̐ς̌`ŏWɊ܂܂S񋓂B
   /size        vZʂ̃DDߓ_iяnŜ̐ߓ_j\B
   /count       WɊ܂܂鏇̌\B


7. s
yC^v^[hz
% 
***** Permutation Manipulator (v0.1) *****
perm> symbol a b c d e
perm> F = [b a d e c]
perm> print F
 [b a d e c]
perm> F = F + F (b:e)
perm> print F
 [b a d e c] + [e a d b c]
perm> F = F (1 + F)
perm> print F
 [- - e c d] + [- e b c d] + [c e b a d] + [c - e a d] + [b a d e c]
  + [e a d b c]
perm> print /enum2 F
 (d:c)(e:d) + (c:b)(d:c)(e:d) + (b:a)(c:b)(d:a)(e:d) + (c:a)(d:a)(e:d)
  + (b:a)(d:c)(e:c) + (b:a)(c:b)(d:b)(e:c)
perm> print /size F
 10 (10)
perm> print /count F
 6
perm> exit
%

ȏB

