home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.cs.arizona.edu
/
ftp.cs.arizona.edu.tar
/
ftp.cs.arizona.edu
/
icon
/
contrib
/
japanese
/
iconlec3.lzh
/
ICONLEC3.TXT
< prev
Wrap
Text File
|
1997-05-08
|
105KB
|
3,063 lines
Rev.03 1997/05/08 òùé┬é⌐éó
Rev.01 1997/05/03 òùé┬é⌐éó
üí Icon > IconÄGïLÆá é═é╢é▀é╔ òùé┬é⌐éó
Iconé═ AWKéΓ Perlé╠Æçè╘é╠âeâLâXâgÅêù¥î╛îΩé┼é╖üB
Iconé═ âfü[â^ì\æóé¬ûLòxé┼üAâeâLâXâgë≡É═é╔ ê╨ù═é≡ö¡è÷é╖éΘ ï¡ù═é╚ɺîΣì\æó
é≡Ä¥é┴é─éóé▄é╖üB
éαé┴é╞üOéQ ÄgéφéΩé─éµéóî╛îΩé╞Ävéóé▄é╖üB
é╡é⌐é╡üAûóé╛ ô·û{îΩé╠ôⁿûσÅæé¬ éáéΦé▄é╣é±é╠é┼üA AWKé╔é┬éóé─üAéáéΘÆ÷ôxé╠
ÆmÄ»é≡ é¿Ä¥é┐é╔é╚é┴é─éóéΘò√é≡ æ╬Å█é╞é╡é─üAôⁿûσìuì└é≡Åæé½é▄é╡é╜üB
üEâeâLâXâgë≡É═î╛îΩIconôⁿûσìuì└ ---AWKeré╠é╜é▀é╠ Iconôⁿûσ---
üEIconô·ïL ---âeâLâXâgë≡É═î╛îΩIconôⁿûσìuì└éQ---
é▒é╠ IconÄGïLÆáé═ é╗é╠æ▒ò╥é╞é╡é─üAé╗é╠îπ ì∞é┴é╜âvâìâOâëâÇéΓ æOé╠ ìuì└é┼
Åæé½ùÄé╞é╡é╜ òöò¬é╠ ë≡Éαé≡üAé▄é╞é▀é╜éαé╠é┼é╖üB
æOé╠ éQò╥é╠ìuì└é╞ éóé┴é╡éσé╔ é▓ùùé╔é╚é┴é─ Iconé≡Ägé┴é─Æ╕é»éΘé╞ éñéΩé╡éó
é┼é╖üB
Iconé╠âvâìâOâëâÇé¿éµé╤âëâCâuâëâèü[é═üAăé╠é╞é▒éδé⌐éτôⁿÄΦé┼é½é▄é╖üB
http://www.cs.arizona.edu/icon/index.html
Iconé═ PDSé┼é╖é╠é┼üAé▒é╠ôⁿûσìuì└éαô»é╢ê╡éóé╞é╡é▄é╖üBüiô]ì┌üEò╥ÅWÄ⌐ùRüj
(This textbook is in the public domain.)
û┌ă
é═é╢é▀é╔
üiéPüj jsplit.icnüiéPüj
üiéQüj jsplit.icnüiéQüj
üiéRüj jsplit.icnüiéRüj
üiéSüj generatoré╠Ägéóò√üiéPüj
üiéTüj generatoré╠Ägéóò√üiéQüj
üiéUüj generatoré╠ì∞éΦò√üiéPüj
üiéVüj generatoré╠ì∞éΦò√üiéQüj
üiéWüj generatoré╠é▄é╞é▀
üiéXüj IYAX.ICN
üiéPéOüj Åçù±
üiéPéPüj ægé▌ìçéφé╣
üiéPéQüj pipeòùé╠âvâìâOâëâÇ
üiéPéRüj ârâfâIûΓæΦé═üAô╣ëôé╡
üiéPéSüj ârâfâIûΓæΦü^ægé▌ìçéφé╣
üiéPéTüj ârâfâIûΓæΦü^è╚ê╒ë≡û@
üiéPéUüj ârâfâIûΓæΦü^ô∩é╡éó
üiéPéVüj ì\æóæ╠ treeò\ĪüiéPüj
üiéPéWüj jimage.icn
üiéPéXüj ì\æóæ╠ treeò\ĪüiéQüj
üiéQéOüj dir2treeüiéPüj
üiéQéPüj dir2treeüiéQüj
üiéQéQüj dir2treeüiéRüj
é▐é╖é╤
òùé┬é⌐éó (TRA11936@biglobe.ne.jp/PFF01531@niftyserve.or.jp)
< Iconé╠WWWé═üAhttp://www.cs.arizona.edu/icon/index.html>
BGM: La Fiesta / Chick Corea
(icon_224.txt 1997/05/03 PCVAN PIG)
üí Icon > IconÄGïLÆáüiéPüj jsplit.icnüiéPüj òùé┬é⌐éó
Iconô·ïL é╔ê°é½æ▒é½üAIconÄGïLÆá é╞éóéñâ^âCâgâïé┼üAIconè╓ÿAé╠ é¿ÿbé╡é≡é╡
é─éóé½é╜éó é╞Ävéóé▄é╖üB Iconé╠ÿbæΦé¬æ╜éóé⌐ ÄGïLÆáé╠ò√é¬æ╜éóé⌐é═üAé┐é╞ÉSöz
é╚é╞é▒éδéα éáéΦé▄é╖é¬üB
é╞é▒éδé┼üAégéa£aÉ»é┼é╖é¬éRîÄë║Å{é╔é╚éΘé╞üAù[ò√é╠éUÄ₧ü`éVÄ₧ìáé╔ûkÉ╝é╠ï≤
é╔î⌐éªéΘé╞éóéñé▒é╞é┼üAè·æ╥é╡é─éóé╜é╠é┼é╖é¬üAù]éΦî⌐éªé▄é╣é±üB
éUÄ₧ìáé═ûóé╛æ╛ùzé¬Æ╛é▌é½é┴é─éóé╚éóé╠é╞üAéVÄ₧ìáé═î⌐ê╒éóé═é╕é╚é╠é┼é╖é¬üA
îïì\ ë_é¬Åoé─é╜éΦüAôVïCé¬ù╟é¡é╚é⌐é┴é╜éΦé╡é─ î⌐éªé╚éóé▒é╞é¬æ╜éóé┼é╖üBîïï╟
ë║Å{é╔é╚é┴é─ é▄é╛éPôxé╡é⌐î⌐é─éóé▄é╣é±üB
é│é─ìíô·é═âVâtâgéiéhérè╓ÿAé╠ procedureé╠æ▒é½é┼üAsplit.icné╠âVâtâgéiéhér
æ╬ë₧é≡éΓé┴é─é▌é╜éóé╞Ävéóé▄é╖üB split.icné═ò╢ÄÜù±é≡éáéΘò╢ÄÜüiâZâbâgüjé┼üA
ïµÉ╪é┴é─ listé╔èiö[é╖éΘéαé╠é┼é╖üB spaceïµÉ╪éΦéΓ tabïµÉ╪éΦé╠âfü[â^Åêù¥é╔
Ägéóé▄é╖üB é┼üAé▄é╕üAôûÅëé╠ split.icné╠ò£ÅK é≡üB
ò╢ÄÜù±é⌐éτ ÆPîΩé≡É╪éΦÅoé╡é─ Åæé½Åoé╖ âvâìâOâëâÇé┼é╖üB É╪éΦÅoé╡é╜ ÆPîΩé≡
listé╔é╡é─ Åπê╩âvâìâOâëâÇé╔ôné╖ éΓéΦò√é╞ generatoré┼ Åπê╩é╔ôné╖ éΓéΦò√ é╠
éQÄφù▐é╠éΓéΦò√ é¬ ôⁿé┴é─éóé▄é╖é¬üAîïë╩é═ ô»é╢é┼é╖üB
-----^ SPLIT4.ICN ( date:97-03-29 time:17:04 ) -------------<cut here
# ò╢ÄÜù±é⌐éτé╠âfü[â^é╠É╪éΦÅoé╡é╠âeâXâg
# This file is in the public domain.
# Rev.01 1997/03/29 windy
# list é≡ÄgéñüB
procedure split(line,c)
# stringé≡ cüicsetüjé┼ò¬èäé╡üAlisté╓ò╧è╖é╖éΘ procedure
# Iconôⁿûσìuì└üiéVüjIconé╠ô┴ÆÑüiéTüj âXâLâââô ÄQÅ╞
/c := ' \t' # ê°Éöé╔ cé¬Å╚ù¬é│éΩé─éóé╜éτâXâyü[âXé⌐â^âué╞é▌é╚é╖
# / é═ nullé⌐é╟éñé⌐é╠â`âFâbâNüBnullé╚éτé╬üDüDüDüB
/line := &subject # lineé¬Å╚ù¬é│éΩé─éóéΩé╬üA &subject
list := [] # û▀éΦÆlùpâèâXâgé≡É╢ɼ
line ? { # line é≡æûì╕æ╬Å█é╞é╖éΘüB
while tab(upto(~c)) do # cê╚èOé╠ò╢ÄÜé¬î⌐é┬é⌐é┴é╜éτæûì╕ê╩Æué≡é╗é▒ûÿê┌ô«
put(list,tab(many(~c))) # cê╚èOé╠ò╢ÄÜê╚èOüié╖é╚éφé┐ cüjé¬î⌐é┬é⌐éΘê╩Æuûÿ
} # ê┌ô«é╡üAê┌ô«é╡é╜ê╩Æué╠è╘é╠ò╢ÄÜù±é≡listé╓Æ╟ë┴
return list # îïë╩(list)é≡ò╘é╖üB
end
# generator é≡ÄgéñüB
# stringé≡ cüicsetüjé┼ò¬èäé╡Åoù═é╖éΘ generator
# Iconô·ïLüiéXüjsuspend/generator ÄQÅ╞
procedure getword(c,s)
# function : split a string with c
/s := &subject # ÄwÆΦé¬û│é»éΩé╬ &subject
/c := ' \t' # ÄwÆΦé¬û│é»éΩé╬âXâyü[âXé⌐â^âué╞é▌é╚é╖üB
s ? {
while tab(upto(~c)) do {
word := tab(many(~c))
suspend word # generatoré╠ÅΩìçé═ suspendé┼îïë╩é≡ò╘é╖üB
}
}
end
# test data
procedure main()
s1 := " The Icon Programming Language"
s2 := "éáé╜éΦ é¬ æO é╚éτ üA ï▀Åè é═ ù╫ üB" # ÆPîΩé╠è╘é╔âXâyü[âXé≡
# é═é│é±é┼éáéΦé▄é╖üB
write("ò╢ÄÜù±é⌐éτé╠ÆPîΩé╠ĵéΦÅoé╡âeâXâg")
write("split.icné┼éΓéΘé╞")
write("data:\"",s1,"\"")
n := 0
s1 ? { # s1é≡îƒì⌡æ╬Å█ò╢ÄÜù±é╞é╖éΘüB
every s := !split() do { # sé╠ÆPîΩé≡ listé╔èiö[é╡é╜éαé╠é⌐éτ
# éPé┬é╕é┬ĵéΦÅoé╖üB
write(n +:= 1,":",s) # ö╘ìåé≡é┬é»é─ÆPîΩé≡Åoù═üB
}
}
write("\ndata:\"",s2,"\"")
n := 0
s2 ? every s := !split() do write(n +:= 1,":",s) # s1é╠Åèéαé▒éñÅæé»é▄é╖üB
# ü½ü¬ö╘ìåüin +:=1é╠é╞é▒éδüjé≡é┬é»é╚éóé╚éτüAë║é╠ò\î╗é┼énéjé┼é╖üB
#s2 ? every write(!split())
# write("\ngetword.icné┼éΓéΘé╞") # split.icné╞îïë╩é═ô»é╢üB
# write("data:\"",s1,"\"")
# n := 0
# s1 ? every s := getword() do write(n +:= 1,":",s)
# write("\ndata:\"",s2,"\"")
# n := 0
# s2 ? every s := getword() do write(n +:= 1,":",s)
end
-----$ SPLIT4.ICN ( lines:62 words:240 ) -------------------<cut here
ô«é⌐é╡é╜îïë╩é═é▒é±é╚òùé╔é╚éΦé▄é╖üB
-----^ SPLIT4.TXT ( date:97-03-29 time:17:04 ) -------------<cut here
ò╢ÄÜù±é⌐éτé╠ÆPîΩé╠ĵéΦÅoé╡âeâXâg
split.icné┼éΓéΘé╞
data:" The Icon Programming Language"
1:The
2:Icon
3:Programming
4:Language
data:"éáé╜éΦ é¬ æO é╚éτ üA ï▀Åè é═ ù╫ üB"
1:éáé╜éΦ
2:é¬
3:æO
4:é╚éτ
5:üA
6:ï▀Åè
7:é═
8:ù╫
9:üB
-----$ SPLIT4.TXT ( lines:18 words:29 ) --------------------<cut here
é▒é▒é┼üAëpò╢é╚éτé╬ ÆPîΩé╠è╘é¬ âXâyü[âXé┼ ïµÉ╪éτéΩé─éóé▄é╖ é╠é┼üAÆPîΩé╠
É╪éΦÅoé╡ é¬ ùeê╒é╚é╠é┼é╖üB ô·û{îΩé┼é═üAÆPîΩé╠è╘é╔ âXâyü[âXé≡ôⁿéΩéΘ ÅKè╡
é═éáéΦé▄é╣é± é╠é┼ É╪éΦÅoé╡é¬éΓé┴é⌐éóé┼é╖üB
âTâôâvâïé╠ ô·û{ò╢é╔é═üAÆPîΩé╠è╘é╔ âXâyü[âXé≡ôⁿéΩé▄é╡é╜é╠é┼üAÉ╪éΦÅoé╣éΘ
é╠é┼é╖é¬üAÄ└ì█é╠ ô·û{ò╢é┼é═ ô∩é╡éóé┼é╖é╦üB
ëpò╢é┼é═üAÆPîΩé╠ïµÉ╪éΦé¬ " "é┼üAìXé╔ ","é¬Ägéªé▄é╖é¬üA ô·û{ò╢é┼é═ "üA"
é╛é»é┼ ïµÉ╪éτé╚éóé╞ éóé»é▄é╣é±üB Iconô·ïLé┼éαüAò╢Å═é≡Åæéóé─éóé─üA "üA"é≡
Ägéñé╞ ò╢Å═é¬ ì╫É╪éΩé╔é╚éΦé╖é¼éΘ é╞é▒éδé┼é═üAé┬éó ïµÉ╪éΦé╠é╜é▀é╔ âXâyü[âX
é≡ ôⁿéΩé╜é¡ é╚éΦé▄é╡é╜üB
é┼üAëpò╢é╞ ô»é╢éµéñé╔ ÆPîΩé╠É╪éΦÅoé╡ é╔ Ägéñé╠é═ û│ù¥é┼é╖é¬üAô┴ÆΦé╠ò╢ÄÜ
é┼üAò╢ÄÜù±é≡ É╪éΦò¬é»éΘ âvâìâOâëâÇé≡üAì∞é┴é─é▌éµéñ é╞Ävéóé▄é╖üB
é▄é╜éPâoâCâgò╢ÄÜé╚éτ æSò╢ÄÜÉöé═ éQéTéUé┼é╖é¬üAô·û{îΩé═éQâoâCâgé┼ ò\éφé╡
é▄é╖üB éQéTéUéÿéQéTéUÆ╩éΦé┼üAéUéTéTéRéUò╢ÄÜüB Ä└ì█é═ éPâoâCâgò╢ÄÜé¬ ì¼ì▌
é╡é▄é╖é╠é┼üAé╗éΩéµéΦé═ Å¡é╚é¡é╚éΦé▄é╖ é¬üAé╗éΩé╔é╡é─éα éQéTéUò╢ÄÜé╠è┤èoé┼
é═ Åêù¥é═ é┼é½é╚éó é╞Ävéóé▄é╖üB
é┼ü`üB ò╢ÄÜÉöé¬éQîàé═æ╜éó é┬éαéΦé┼ Ägéφé╚éóé╞üAéóé¡éτébéoétö\ù═é¬ éáé┴
é─éα Ä└ùpôI é┼é═é╚éóé⌐éαé╡éΩé▄é╣é±üB é▄éáüAè┐ÄÜâ`âFâbâNé╔ æSè┐ÄÜé╠âZâbâg
é╞Å╞ìçé╡é╜éΦ é╡é╚é»éΩé╬üAæσÅΣòvé╠éµéñé╚ïCéαé╡é▄é╖üB
æOé╠ split4.icné┼üA~cüicset cê╚èOüjé╞éóéñò\î╗é╠Åèé═üAcseté═éPâoâCâgò╢ÄÜ
æSæ╠é╠ÅWìç é┼é╖é╠é┼ ìéüXéQéTéUî┬é┼üAÄgéóò¿ é╔ é╚éΦé▄é╖é¬üAéQâoâCâgò╢ÄÜ é┼
éUéTéTéRéUî┬ é≡ æèÄΦé┼é═üAé▄é╕éóé╛éδéñé╞Ävéóé▄é╖üB
òùé┬é⌐éó (TRA11936@biglobe.ne.jp/PFF01531@niftyserve.or.jp)
< Iconé╠WWWé═üAhttp://www.cs.arizona.edu/icon/index.html>
BGM: Europe/Carlos Santana
(icon_201.txt 1997/03/30 PCVAN PIG)
üí Icon > IconÄGïLÆáüiéQüj jsplit.icnüiéQüj òùé┬é⌐éó
ìíô·é═üAÆgé⌐éóÉ░éΩé╠ôVïCé┼üAì≈éαî⌐ìáé╞é╚é┴é─éóé▄é╖üBîÄé╔îQë_ ë╘é╔òù
é╠ ùßéªé╠Æ╩éΦüAï¡òùé¬ Éüéóé─ùêé▄é╡é╜üB Åté╠ùÆ é┼é╖é╦ü`üB
é│é─üAìíë±é═üAjsplit.icné╠æ▒é½é┼é╖üB split.icné═üAupto()é╞ many()é┼
ì\ɼé│éΩé─éóé▄é╖üB é▒éΩé≡ âVâtâgéiéhéræ╬ë₧é╔ é╡é╜ jupto()é╞ jmany()é╔
é╖éΩé╬éóéóé╠é┼é╖é¬üAéαéñêΩé┬ûΓæΦé¬éáéΦé▄é╖üB
~cé╞éóéñ ò\î╗é≡ Ägé┴é─ éóé▄é╖üB é╡é⌐é╡ æOë± é¿ÿbé╡ é╡é▄é╡é╜ éµéñé╔
éQâoâCâgò╢ÄÜé┼ òΓÅWìçüiÄwÆΦò╢ÄÜâZâbâgê╚èO é╠ò╢ÄÜüjé≡ Ägéñé╞ ûcæσé╚ ò╢
ÄÜÉö é╠ Å╞ìç é¬ òKùvé╞é╚éΦé▄é╖ é╠é┼üAjupto_not()é╞ jmany_not() é╞éóéñ
òΓÅWìçé≡ Ägéφé╚éó procedureé≡ ì∞éδéñ é╞ Ävéóé▄é╖üB
é╞éóéñû≤é┼üAăé╔ òΓÅWìçé≡ Ägéφé╚éóé╜é▀ procedureé┼é╖üB
-----^ SJIS5.ICN ( date:97-03-30 time:18:11 ) --------------<cut here
# SJISè╓îW procedure é╗é╠éT
# jsplit.icnùp procedure
# Iconô·ïLüiéQéOüjü`üiéQéQüjâVâtâgéiéhérÅêù¥ ÄQÅ╞
# Rev.01 1997/03/30 windy
# This file is in the public domain.
procedure jupto_not(S,s,i1,i2)
# ò╢ÄÜù± sé╠Æåé╠ ÅWìç Sé╔è▄é▄éΩé╚éóò╢ÄÜé╠ê╩Æué≡É╢ɼé╖éΘ generator
# value: ò╢ÄÜé╠ɵô¬ê╩Æu
# üÖé╠òöò¬é≡üAjuptoé╞ ö╗ÆΦÅ≡îÅé≡ ïté╔ é╡é─éáéΦé▄é╖üB
# Rev.01 1997/03/30 windy
/i1 := 1 # default
if /s then { # default
s := &subject
i1 := &pos
}
/i2 := *s +1 # default
every L := jpos(s,i1,i2) do { # ò╢ÄÜé≡ Åçă ĵéΦÅoé╖üB
if not member(S,s[L[1]:L[2]]) then { # üÖò╢ÄÜé¬ Sé╔è▄é▄éΩé╚éóâeâXâg
suspend L[1]
}
}
end
# ò╢ÄÜù± sé╠Æå &posê╚ì~é┼üAÅWìç Sé╔è▄é▄éΩéΘò╢ÄÜé╠ê╩Æué≡É╢ɼé╖éΘ
# value: ò╢ÄÜé╠ɵô¬ê╩Æu
# üÖé╠òöò¬é≡üAjmanyé╞ ö╗ÆΦÅ≡îÅé≡ ïté╔ é╡é─éáéΦé▄é╖üB
# Rev.01 1997/03/30 windy
procedure jmany_not(S,s,i1,i2)
/i1 := 1 # default
if /s then { # default
s := &subject
i1 := &pos
}
/i2 := *s +1 # default
if i1 = i2 then return i2 # ìsûûÄΦôû
every L := jpos(s,i1,i2) do { # ÅçăĵéΦÅoé╖üB
if member(S,s[L[1]:L[2]]) # üÖò╢ÄÜé¬ Sé╔è▄é▄éΩéΘâeâXâg
then {
return L[1]
}
else {
if L[2] = i2 then { # ìsûûé╚éτè▄é▄éΩé╚éóò╢ÄÜé╞é▌é╚é╖üB
return L[2]
}
}
}
fail
end
# SJISâRü[âhé╠ò╢ÄÜù±é╠ò╢ÄÜé╠ɵô¬ê╩Æué≡ö¡É╢é╖éΘ generator
# value: list [1]:ɵô¬ê╩Æu,[2]:ăé╠ò╢ÄÜé╠ɵô¬
# Rev.03 1997/03/02 windy ö═ê═ûûÄΦôûö▓é»æ╬ì⌠
# Rev.02 1997/03/02 windy ö═ê═ÄwÆΦüii1,i2üjÆ╟ë┴
# Rev.01 1997/02/27 windy, Rev.03 1997/03/02 windy
procedure jpos(s,i1,i2)
# write("jpos:",s,":",i1,":",i2)
mode := 1 # éPâoâCâgû┌üiü^éQâoâCâgû┌üjâéü[âh
every i := i1 to (i2 -1) do { #
n := ord(s[i])
case mode of {
# SJISâRü[âhé╠éPâoâCâgû┌â`âFâbâNüi16ré═16ÉiÉöé≡Īé╖üBüj
1 : if {16r80 < n < 16rA0} | {16rDF < n < 16rFD}
then { # éQâoâCâgâRü[âh
if i = i2 -1 then { # ö═ê═ûûÄΦôû
suspend [i,i+2]
}
else mode := 2 # ü⌐éQâoâCâgû┌âéü[âhé╓
}
else suspend [i,i+1] # éPâoâCâgâRü[âh
2 : { # éQâoâCâgâRü[âhé╠éQâoâCâgû┌
mode := 1 # âéü[âhé≡éPâoâCâgû┌â`âFâbâNé╓
suspend [i-1,i+1] # éQâoâCâgâRü[âh
}
}
}
end
# test driver
#procedure main()
# S := set(L := ["d","éª","e","é¿","f","é⌐"]) # îƒì⌡é┼æ{é╖ò╢ÄÜé╠âZâbâg
# s := "abcdeféáéóéñéªé¿é⌐abcéáéóéñ" # îƒì⌡æ╬Å█ò╢ÄÜù±
# write("îƒì⌡æ╬Å█ü½")
# write(s)
# writes("æ{é╖ò╢ÄÜ")
# n := 0
# every ss := !L do writes(" ",n +:= 1,":",ss)
# write()
# write("every write(jupto_not(S\,s\,3\,22))")
# every write(jupto_not(S,s,3,22)) # jupto_not(S,s,i1,i2)
# write("write(jmany_not(S\,s\,9\,22))")
# write(jmany_not(S,s,9,22)) # jmany_not(S,s,i1,i2)
# write("write(jmany_not(S\,s\,26))")
# write(jmany_not(S,s,26)) # jmany_noté╠ìsûûÄΦôû
#
# write("Sé╔è▄é▄éΩéΘò╢ÄÜê╚èOé╠É╪éΦÅoé╡")
# s ? { # jupto_noté╞jmany_not
# while tab(jupto_not(S)) do {
# write(tab(jmany_not(S)))
# }
# }
#end
-----$ SJIS5.ICN ( lines:106 words:370 ) -------------------<cut here
òùé┬é⌐éó (TRA11936@biglobe.ne.jp/PFF01531@niftyserve.or.jp)
< Iconé╠WWWé═üAhttp://www.cs.arizona.edu/icon/index.html>
BGM: âgâëâCâAâôâOâïüEâuâïü[ü^âAâôüEâïâCâX
(icon_202.txt 1997/03/30 PCVAN PIG)
üí Icon > IconÄGïLÆáüiéRüj jsplit.icnüiéRüj òùé┬é⌐éó
ìíë±éα jsplit.icné╠æ▒é½é┼é╖üB
âVâtâgéiéhéræ╬ë₧é╠ split.icnâvâìâOâëâÇé┼é╖üB linké╡é─éóéΘ sjis5é═ æOë±
é╠ âvâìâOâëâÇé┼é╖üB
-----^ SPLIT5.ICN ( date:97-03-30 time:18:38 ) -------------<cut here
# ò╢ÄÜù±é⌐éτé╠âfü[â^é╠É╪éΦÅoé╡é╠âeâXâg
# This file is in the public domain.
# Rev.01 1997/03/30 windy
link sjis5
# list é≡ÄgéñüB
procedure jsplit(S,s)
# split.icné╞ê°Éöé╠Åçé≡ôⁿéΩæ╓éª
# stringé≡ ò╢ÄÜù±é╠âZâbâgS é┼ ò¬èäé╡üAlisté╓ò╧è╖é╖éΘ procedure
/S := set([" ","\t"]) # ê°Éöé╔ Sé¬Å╚ù¬é│éΩé─éóé╜éτüAspaceé⌐ tab
/s := &subject # sé¬ Å╚ù¬é│éΩé─éóéΩé╬üA &subject
list := [] # û▀éΦÆlùpâèâXâgé≡É╢ɼ
s ? { # s é≡æûì╕æ╬Å█é╞é╖éΘüB
while tab(jupto_not(S)) do # Sê╚èOé╠ò╢ÄÜé¬î⌐é┬é⌐é┴é╜éτæûì╕ê╩Æué≡
# é╗é▒ûÿê┌ô«
put(list,tab(jmany_not(S))) # Sê╚èOé╠ò╢ÄÜê╚èOüié╖é╚éφé┐ Süjé¬î⌐é┬
# é⌐éΘê╩Æuûÿ ê┌ô«é╡üAê┌ô«é╡é╜ê╩Æué╠è╘
} # é╠ò╢ÄÜù±é≡listé╓Æ╟ë┴
return list # îïë╩(list)é≡ò╘é╖üB
end
# generator é≡ÄgéñüB
# stringé≡ Süisetüjé┼ò¬èäé╡Åoù═é╖éΘ generator
procedure jgetword(S,s)
# function : split a string with S
/s := &subject # ÄwÆΦé¬û│é»éΩé╬ &subject
/S := set([" ","\t"]) # ÄwÆΦé¬û│é»éΩé╬ spaceé⌐ tab
s ? {
while tab(jupto_not(S)) do {
word := tab(jmany_not(S))
suspend word # generatoré╠ÅΩìçé═ suspendé┼îïë╩é≡ò╘é╖üB
}
}
end
# test data
procedure main()
s1 := " The Icon Programming Language"
s2 := "éáé╜éΦé¬üAæOé╚éτüAï▀Åèé═üAù╫üB"
write("ò╢ÄÜù±é⌐éτé╠ÆPîΩé╠ĵéΦÅoé╡âeâXâg")
write("jsplit.icné┼éΓéΘé╞")
write("data:\"",s1,"\"")
n := 0
s1 ? every s := !jsplit() do write(n +:= 1,":",s)
write("\ndata:\"",s2,"\"")
n := 0
s2 ? every s := !jsplit(set(["üA","üB"])) do write(n +:= 1,":",s)
# write("\njgetword.icné┼éΓéΘé╞") # jsplit.icné╞îïë╩é═ô»é╢üB
# write("data:\"",s1,"\"")
# n := 0
# s1 ? every s := jgetword() do write(n +:= 1,":",s)
# write("\ndata:\"",s2,"\"")
# n := 0
# s2 ? every s := jgetword(set(["üA","üB"])) do write(n +:= 1,":",s)
end
-----$ SPLIT5.ICN ( lines:57 words:210 ) -------------------<cut here
split5 > split5.txté╞é╡é╜Ä₧é╠îïë╩é┼é╖üB
-----^ SPLIT5.TXT ( date:97-03-30 time:18:38 ) -------------<cut here
ò╢ÄÜù±é⌐éτé╠ÆPîΩé╠ĵéΦÅoé╡âeâXâg
jsplit.icné┼éΓéΘé╞
data:" The Icon Programming Language"
1:The
2:Icon
3:Programming
4:Language
data:"éáé╜éΦé¬üAæOé╚éτüAï▀Åèé═üAù╫üB"
1:éáé╜éΦé¬
2:æOé╚éτ
3:ï▀Åèé═
4:ù╫
-----$ SPLIT5.TXT ( lines:13 words:16 ) --------------------<cut here
ìíô·é╠ù[ò√é═üAégéa£aÉ»é¬ù╟é¡î⌐éªé▄é╡é╜üB
òùé┬é⌐éó (TRA11936@biglobe.ne.jp/PFF01531@niftyserve.or.jp)
< Iconé╠WWWé═üAhttp://www.cs.arizona.edu/icon/index.html>
BGM: éuéëéûéëéàéÄü^Ä┬î┤öⁿûτÄq
(icon_203.txt 1997/03/30 PCVAN PIG)
üí Icon > IconÄGïLÆáüiéSüj generatoré╠Ägéóò√üiéPüj òùé┬é⌐éó
âAâèâ]âiæσé╠ Icon-Webé╔ âAâNâZâXé╡é▄é╡é╜éτüAIcon Newsletteré╠ No.52
é¬üAÅoé─éóé▄é╡é╜üB urlé═üAăé╠Æ╩éΦé┼é╖üB
http://www.cs.arizona.edu/icon/newsletter/inl52/inl52.html
û┌ăé╠òöò¬é≡ê°ùpé╡é─é¿é½é▄é╖üB
>No. 52 -- April 1, 1997
>
>Contents
>
> Mail-Order Program Material
> Teaching Icon
> Web Links
> Native Interface Components in Windows Icon 9.3
> Programming Language Handbook
> From Our Mail
> Knowledge Explorer
é▓ï╗ûíé╠éáéΘò√é═üAé▓ùùé╔é╚é┴é─ë║é│éóüB
é│é─üAìíô·é═üAIconé╠ô┴ÆÑ é╠éPé┬é┼éáéΘ generatoré╠Ägéóò√ é╔é┬éóé─üA
é¿ÿbé╡ é╡é▄é╖üB
generatoré╞üAé╗é╠Ägéóò√é≡ éáé░é─ é▌é▄é╡éσéñüB
Ä└ùßé≡ Īé╡é╜ò√é¬ æüéóé╞Ävéóé▄é╖é╠é┼üAæüæ¼âTâôâvâïé≡üB
every (generatoré≡è▄é▐Ä«) é▄é╜é═üA
every (generatoré≡è▄é▐Ä«) do ...
é╠èiìDé┼ Ägéóé▄é╖üB
-----^ GEN01.ICN ( date:97-04-01 time:01:02 ) --------------<cut here
# generator Ägéóò√éP
# Rev.01 1997/04/01 windy
procedure main()
write("generatoré╠Ägéóò√éP")
write("! : ùvæfé≡ Åçă ĵéΦÅoé╖")
every writes(" ",!"ABC") ; write() # string
every writes(" ",!["D","E","F"]) ; write() # list
every writes(" ",!set(["G","H","I"])) ; write() # setüiÅçö╘é═û│ò█Å╪üj
write()
write("! : Åçă ĵéΦÅoé╡é╠ ægé▌ìçéφé╣")
every writes(" ",!("MNO") || !("123"))
write()
write()
write("! : Åçă ĵéΦÅoé╡é─üAĵéΦÅoé╖ôxé╔ ë╜é⌐é╠ òtæ╤Åêù¥éαìséñ")
n := 0
every s := !"PQR" do write(" ",n +:=1,":",s)
write()
write("alternation")
every writes(" ","éá" | "éó" | "éñ") ; write() # alternation
every writes(" ",(1 | 2 | 3) + (10 | 20 | 30))
write()
write()
write("i to k by j : Éöù±é╠ö¡É╢")
every writes(" ",1 to 20 by 2) ; write()
s := "W1X2Y3Z4"
write("! : Éöù±é≡ö¡É╢é╡é─üAé╗é╠Éöé≡Ägé┴é─ ë╜é⌐é╠ Åêù¥é≡ ìséñ")
every writes(" ",s[1 to *s]) ; write()
n := 0
every i := 1 to *s by 2 do write(" ",n +:=1,":",s[i])
write()
write("seq()è╓Éö : Éöù±é╠ö¡É╢")
every writes(" ",seq() \10) ; write() # seq() 10î┬î└ÆΦ
write()
write("ò╢ÄÜù±âXâLâââô")
s := "ABCDE12345ABCDE12345"
write(s)
write("upto(\'C1\')")
s ? every writes(" ",upto('C1')) ; write()
write("find(\"AB\" | \"CD\")")
s ? every writes(" ",find("AB"|"12")) ; write()
end
-----$ GEN01.ICN ( lines:49 words:179 ) --------------------<cut here
gen01 > gen01.txt é╞é╡é╜Ä₧é╠îïë╩é┼é╖üB
-----^ GEN01.TXT ( date:97-04-01 time:01:03 ) --------------<cut here
generatoré╠Ägéóò√éP
! : ùvæfé≡ Åçă ĵéΦÅoé╖
A B C
D E F
H G I
! : Åçă ĵéΦÅoé╡é╠ ægé▌ìçéφé╣
M1 M2 M3 N1 N2 N3 O1 O2 O3
! : Åçă ĵéΦÅoé╡é─üAĵéΦÅoé╖ôxé╔ ë╜é⌐é╠ òtæ╤Åêù¥éαìséñ
1:P
2:Q
3:R
alternation
éá éó éñ
11 21 31 12 22 32 13 23 33
i to k by j : Éöù±é╠ö¡É╢
1 3 5 7 9 11 13 15 17 19
! : Éöù±é≡ö¡É╢é╡é─üAé╗é╠Éöé≡Ägé┴é─ ë╜é⌐é╠ Åêù¥é≡ ìséñ
W 1 X 2 Y 3 Z 4
1:W
2:X
3:Y
4:Z
seq()è╓Éö : Éöù±é╠ö¡É╢
1 2 3 4 5 6 7 8 9 10
ò╢ÄÜù±âXâLâââô
ABCDE12345ABCDE12345
upto('C1')
3 6 13 16
find("AB" | "CD")
1 11 6 16
-----$ GEN01.TXT ( lines:36 words:113 ) --------------------<cut here
òùé┬é⌐éó (TRA11936@biglobe.ne.jp/PFF01531@niftyserve.or.jp)
< Iconé╠WWWé═üAhttp://www.cs.arizona.edu/icon/index.html>
BGM: Four On Six / Wes Montgomery
(icon_204.txt 1997/04/01 PCVAN PIG)
üí Icon > IconÄGïLÆáüiéTüj generatoré╠Ägéóò√üiéQüj òùé┬é⌐éó
ìíë±é═üAgeneratoré╠æ▒é½é┼é╖üB
âfü[â^é≡ Åçă ö¡É╢é╖éΘéαé╠é╔é═üAæOë±éáé░é╜éαé╠é╠æ╝é╔éα éáéΦé▄é╖üB
üEread(), reads() é╠éµéñé╚ âtâ@âCâïô╟é▌é╛é╡è╓Éö
üEget(), pull() é╠éµéñé╚ âfü[â^ĵéΦÅoé╡è╓Éö
üEupto(), find() é╠éµéñé╚ âXâLâââôè╓Éö
é╞
üEwhile ...
üEuntil ...
üErepeat ...
é╠éµéñé╚ é¡éΦò╘é╡ì\ò╢ é╠ægé▌ìçéφé╣é┼éαüAâfü[â^é≡ Åçă ö¡É╢é┼é½é▄é╖üB
æüæ¼âTâôâvâïé≡üB
-----^ GEN02.ICN ( date:97-04-02 time:23:04 ) --------------<cut here
# generator Ägéóò√éQ
# This file is in the public domain.
# Rev.01 1997/04/02 windy
procedure main()
write("generatoré╠Ägéóò√éQ")
write()
write("while ... read()é╠âTâôâvâï ì┼Åëé╠éTìsé╠é▌Åæé½Åoé╡")
dir := open(f_name := "gen02.icn") | stop("cannot open ",f_name)
#ü¬é▒é╠â\ü[âXâvâìâOâëâÇé≡âIü[âvâô
n := 0
while s := read(dir) do {
n +:= 1
write(5 >= n," :",s) # ì┼Åëé╠éTìsé╠é▌Åæé½Åoé╖
}
# while s := read(dir) do write( 5 >= (n +:= 1), " :",s) # é▒éΩé┼éαô»é╢üB
# while write(5 >= (n +:= 1) ," :",read(dir)) # é▒éΩé┼éαô»é╢üB
write()
write("while ... get()é╠âTâôâvâï ɵô¬é⌐éτĵéΦÅoé╡")
L := ["A","B","C"]
n := 0
while s := get(L) do writes(" ",n +:= 1,":",s) ; write()
write()
write("while ... pull()é╠âTâôâvâï ûûö÷é⌐éτĵéΦÅoé╡")
L := ["A","B","C"]
n := 0
while writes(" ",n +:= 1,":",pull(L)) ; write() # get()éαé▒éñÅæé»é▄é╖üB
write()
write("until ... do ... pop() é╠âTâôâvâï")
L := ["A","B","C","D","E","F","G"]
n := 0
until n = 5 do writes(" ",n +:= 1,":",pop(L)) # pop()é═ get()é╞ô»é╢üB
write()
write()
write("repeat { if ... break } é╠âTâôâvâï")
L := ["A","B","C","D","E","F","G"]
n := 0
repeat {
writes(" ",n +:= 1,":",get(L))
if n >= 5 then break
}
write()
write()
write("while ... upto() do {... many() ...} é╠âTâôâvâï")
s := " The Icon Programming Language"
n := 0
s ? { while tab(upto(~' ')) do writes(" ",n +:= 1,":",tab(many(~' '))) }
write()
end
-----$ GEN02.ICN ( lines:55 words:209 ) --------------------<cut here
gen02 > gen02.txté╞é╡é╜Ä₧é╠îïë╩é┼é╖üB
-----^ GEN02.TXT ( date:97-04-02 time:23:04 ) --------------<cut here
generatoré╠Ägéóò√éQ
while ... read()é╠âTâôâvâï ì┼Åëé╠éTìsé╠é▌Åæé½Åoé╡
1 :# generator Ägéóò√éQ
2 :# This file is in the public domain.
3 :# Rev.01 1997/04/02 windy
4 :procedure main()
5 : write("generatoré╠Ägéóò√éQ")
while ... get()é╠âTâôâvâï ɵô¬é⌐éτĵéΦÅoé╡
1:A 2:B 3:C
while ... pull()é╠âTâôâvâï ûûö÷é⌐éτĵéΦÅoé╡
1:C 2:B 3:A
until ... do ... pop() é╠âTâôâvâï
1:A 2:B 3:C 4:D 5:E
repeat { if ... break } é╠âTâôâvâï
1:A 2:B 3:C 4:D 5:E
while ... upto() do {... many() ...} é╠âTâôâvâï
1:The 2:Icon 3:Programming 4:Language
-----$ GEN02.TXT ( lines:23 words:78 ) ---------------------<cut here
é╚é±é╛é⌐üAé¡éΦò╘é╡ì\ò╢é╠Éαû╛é╔é╚é┴é─é╡é▄é┴é╜üB
òùé┬é⌐éó (TRA11936@biglobe.ne.jp/PFF01531@niftyserve.or.jp)
< Iconé╠WWWé═üAhttp://www.cs.arizona.edu/icon/index.html>
BGM: öMé¡é╚éΩü^æσìòûâïG
(icon_205.txt 1997/04/02 PCVAN PIG)
üí Icon > IconÄGïLÆáüiéUüj generatoré╠ì∞éΦò√üiéPüj òùé┬é⌐éó
ìíë±é═üAgeneratoré╠Ägéóò√é╔ ò╧éφé┴é─üAì∞éΦò√é┼é╖üB
é╞éóé┴é─éαüAæOüXë±üAæOë±é╠ generatoré╠Ägéóò√é┼üAwrite()éΓ writes()é┼
âfü[â^é≡Åæé½Åoé╡é─éóéΘé╞é▒éδé≡üA suspend âfü[â^ é╞éóéñî`é╔üAò╧éªéΩé╬
é╗é╠é▄é▄ generatoré¬é┼é½éáé¬éΦé▄é╖üB
ùßéªé╬üAæOüXë±é╠ gen01.icné╠
every writes(" ",!"ABC") ; write() # string
é═üA
procedure abc()
suspend !"ABC"
end
é╞ò╧î`é╖éΩé╬üAé▒éΩé═ generatoré╞é╚éΦé▄é╖üB
procedure main()
every writes(" ",abc())
end
é╞é╖éΘé╞üAì┼Åëé╠üAevery writes(" ",!"ABC") é╞ô»é╢ô«ì∞é╞é╚éΦé▄é╖üB
Ä└ì█é╠âvâìâOâëâÇé┼é═üAô»é╢ô«ì∞é┼é═Ädò√é¬û│éóé╠é┼é╖é¬üAgenerator
é≡Ägé┴é─üAgeneratoré≡ì∞éΘêΩö╘è╚ÆPé╚âTâôâvâïé╞é╡é─éáé░é▄é╡é╜üB
Ä└ì█é═üAòíÄGé╚ generatoré≡üAöΣèrôIè╚ÆPé╚ generatoré≡ÆièKôIé╔ægé▌
ìçéφé╣é─ì∞é┴é─éóé½é▄é╖üB
gen01.icné≡ generatoré╔ò╧è╖é╡é▄é╖é╞üAăé╠éµéñé╔ é╚éΦé▄é╖üB
-----^ GEN01A.ICN ( date:97-04-04 time:21:46 ) -------------<cut here
# generator Ägéóò√éP é╠ procedureé≡ generatoré╓ò╧è╖
# This file is in the public domain.
# Rev.01 1997/04/04 windy
procedure main()
write("generatoré╠Ägéóò√éP")
write("! : ùvæfé≡ Åçă ĵéΦÅoé╖")
every writes(" ",abc()) ; write() # string
every writes(" ",def()) ; write() # list
every writes(" ",ghi()) ; write() # setüiÅçö╘é═û│ò█Å╪üj
write()
write("! : Åçă ĵéΦÅoé╡é╠ ægé▌ìçéφé╣")
every writes(" ",mno123())
write()
write()
write("! : Åçă ĵéΦÅoé╡é─üAĵéΦÅoé╖ôxé╔ ë╜é⌐é╠ òtæ╤Åêù¥éαìséñ")
n := 0
every s := pqr() do write(" ",n +:=1,":",s)
write()
write("alternation")
every writes(" ",AIU()) ; write() # alternation
every writes(" ",number1())
write()
write()
write("i to k by j : Éöù±é╠ö¡É╢")
every writes(" ",number2()) ; write()
write("! : Éöù±é≡ö¡É╢é╡é─üAé╗é╠Éöé≡Ägé┴é─ ë╜é⌐é╠ Åêù¥é≡ ìséñ")
n := 0
every writes(" ",wxyz1()) ; write()
every L := wxyz2() do write(" ",L[1],":",L[2])
write()
write("seq()è╓Éö : Éöù±é╠ö¡É╢")
every writes(" ",seque() \10) ; write() # 10î┬î└ÆΦ
write() #ü¬É╢ɼÉöî└ÆΦ
write("ò╢ÄÜù±âXâLâââô")
s := "ABCDE12345ABCDE12345"
write(s)
write("upto(\'C1\')")
s ? every writes(" ",n_upto(s)) ; write()
write("find(\"AB\" | \"CD\")")
s ? every writes(" ",n_find(s)) ; write()
end
# generator
procedure abc()
suspend !"ABC" # string
end
procedure def()
suspend !["D","E","F"] # list
end
procedure ghi()
suspend !set(["G","H","I"]) # setüiÅçö╘é═û│ò█Å╪üj
end
procedure mno123()
suspend !("MNO") || !("123")
end
procedure pqr()
suspend !"PQR"
end
procedure AIU()
suspend "éá" | "éó" | "éñ"
end
procedure number1()
suspend (1 | 2 | 3) + (10 | 20 | 30)
end
procedure number2()
suspend 1 to 20 by 2
end
procedure wxyz1()
s := "W1X2Y3Z4"
suspend s[1 to *s]
end
procedure wxyz2()
n := 0
s := "W1X2Y3Z4"
every i := 1 to *s by 2 do suspend [n +:= 1,s[i]]
end
procedure seque()
suspend seq()
end
procedure n_upto(s)
s ? suspend upto('C1')
end
procedure n_find(s)
s ? suspend find("AB"|"12")
end
-----$ GEN01A.ICN ( lines:93 words:279 ) -------------------<cut here
gen02.icné≡ generatoré╔ò╧è╖é╡é╜éαé╠é═üAăë±é╔é╡é▄é╖üB
òùé┬é⌐éó (TRA11936@biglobe.ne.jp/PFF01531@niftyserve.or.jp)
< Iconé╠WWWé═üAhttp://www.cs.arizona.edu/icon/index.html>
BGM: élénéré`éhébü^ùVì▓ûóÉX
(icon_206.txt 1997/04/04 PCVAN PIG)
üí Icon > IconÄGïLÆáüiéVüj generatoré╠ì∞éΦò√üiéQüj òùé┬é⌐éó
ìíë±éα generatoré╠ì∞éΦò√é╠æ▒é½é┼é╖üBgen02.icné╠
L := ["A","B","C"]
n := 0
while s := get(L) do writes(" ",n +:= 1,":",s) ; write()
é╠ while ...é╠òöò¬é≡
while s := get(L) do suspend s
é╞é╖éΘé╞üAé▒éΩéα generatoré╞é╚éΦé▄é╖üB é▒éΩé¬üAé¡éΦò╘é╡ì\ò╢é≡Ägé┴é─
generatoré≡ì∞éΘ êΩö╘è╚ÆPé╚âTâôâvâïé╞é╚éΦé▄é╖üB
é▒é╠ÅΩìçé╔üAnéαò╘é╡é╜é»éΩé╬üA
while s := get(L) do suspend [n +:= 1,s]
é╞é╖éΘé╞üAâèâXâgé≡ö¡É╢é╖éΘ generatoré╞éóéñé▒é╞é╔é╚éΦé▄é╖üB
generatoré≡ Ägé┴é─üAgeneratoré≡ èKæwôIé╔ ì∞é┴é─éóé¡éΓéΦò√é═üAè∙é╔
jsplit.icné┼ Ägé┴é─éóé▄é╖üB
jsplit.icné╠Æåé╠ jgetword()é═üAăé╠éµéñé╚ èKæwì\æóé╔ é╚é┴é─éóé▄é╡é╜üB
generator --- jgetword() ---
| ... |
| while ... jupto_not()...| <---- ò╢ÄÜù±é⌐éτÆPîΩé≡É╪éΦÅoé╖
| ... | | generator
-------------------------- |
---------------
|
generator --- jupto_not() --
| ... | ò╢ÄÜù±é≡üAéPò╢ÄÜé╕é┬ é╚é▀é─
| every ... jpos() do ... | <---- ò╢ÄÜâZâbâgé╞é╠Å╞ìçé≡é╡é─üA
| ... | | ÆPîΩé╠ïµÉ╪éΦê╩Æué≡ÆTé╖
-------------------------- | generator
---------------
|
generator --- jpos()-------- ò╢ÄÜù±é≡üAéPâoâCâgé╕é┬ é╚é▀é─
| ... | âVâtâgéiéhéré╠ò╢ÄÜé╠ ɵô¬ê╩Æu
| every ... i to j do ... | é≡ÆTé╖ generator
| ... | üi i to j é╞éóéñ generatoré≡
-------------------------- é≡Ägé┴é╜ generatoré┼é╖üBüj
é│é─üAgen02.icné≡ generatoré╔ò╧è╖é╡é╜éαé╠é≡üAăé╔üB
-----^ GEN02A.ICN ( date:97-04-04 time:21:50 ) -------------<cut here
# generator Ägéóò√éQ é╠ procedureé≡ generatoré╓ò╧è╖
# This file is in the public domain.
# Rev.01 1997/04/04 windy
procedure main()
write("generatoré╠Ägéóò√éQ")
write()
write("while ... read()é╠âTâôâvâï ì┼Åëé╠éTìsé╠é▌Åæé½Åoé╡")
dir := open(f_name := "gen02a.icn") | stop("cannot open ",f_name)
#ü¬é▒é╠â\ü[âXâvâìâOâëâÇé≡âIü[âvâô
# ì┼Åëé╠éTìsé╠é▌Åæé½Åoé╖
every L := line(dir) \5 do write(L[1]," :",L[2])
write() #ü¬É╢ɼÉöî└ÆΦüiìsÉöɺî└é╔Ägéñüj
write("while ... get()é╠âTâôâvâï ɵô¬é⌐éτĵéΦÅoé╡")
L := ["A","B","C"]
every LL := get_l(L) do writes(" ",LL[1],":",LL[2]) ; write()
write()
write("while ... pull()é╠âTâôâvâï ûûö÷é⌐éτĵéΦÅoé╡")
L := ["A","B","C"]
every LL := pull_l(L) do writes(" ",LL[1],":",LL[2]) ; write()
write()
write("until ... do ... pop() é╠âTâôâvâï")
L := ["A","B","C","D","E","F","G"]
every LL := until_l(L) do writes(" ",LL[1],":",LL[2]) ; write()
write()
write("repeat é╠âTâôâvâï")
L := ["A","B","C","D","E","F","G"]
every LL := repeat_l(L) \5 do writes(" ",LL[1],":",LL[2]) ; write()
write() #ü¬É╢ɼÉöî└ÆΦüiìsÉöɺî└é╔Ägéñüj
write("while ... upto() do {... many() ...} é╠âTâôâvâï")
s := " The Icon Programming Language"
every LL := word(s) do writes(" ",LL[1],":",LL[2]) ; write()
end
# generator
procedure line(dir)
n := 0
while s := read(dir) do suspend [n +:= 1,s] # ìsÉöɺî└é═üAÅπê╩é╓ê┌ô«
end
procedure get_l(L)
n := 0
while s := get(L) do suspend [n +:= 1,s]
end
procedure pull_l(L)
n := 0
while s := pull(L) do suspend [n +:= 1,s]
end
procedure until_l(L)
n := 0
until n = 5 do suspend [n +:= 1,pop(L)] # pop()é═ get()é╞ô»é╢üB
end
procedure repeat_l(L)
n := 0
repeat suspend [n +:= 1,get(L)] # ìsÉöɺî└é═üAÅπê╩é╓ê┌ô«
end
procedure word(s)
n := 0
s ? {
while tab(upto(~' ')) do {
s := tab(many(~' ')) # é▒é▒é═üAsuspendé╠èOé┼éΓéτé╚éóé╞éñé▄é¡
# ô«é½é▄é╣é±üB
suspend [n +:= 1,s]
}
}
end
-----$ GEN02A.ICN ( lines:71 words:251 ) -------------------<cut here
òùé┬é⌐éó (TRA11936@biglobe.ne.jp/PFF01531@niftyserve.or.jp)
< Iconé╠WWWé═üAhttp://www.cs.arizona.edu/icon/index.html>
BGM: élénéré`éhébü^ùVì▓ûóÉX
(icon_207.txt 1997/04/04 PCVAN PIG)
üí Icon > IconÄGïLÆáüiéWüj generatoré╠é▄é╞é▀ òùé┬é⌐éó
é▒é╠é╞é▒éδüAëJé╠ô·é¬æ╜éóé┼é╖üB é┼éαüAì≈é╠ë╘é═ îïì\ é╡é╘é╞é¡Äcé┴é─
éóé▄é╖é╦üB é│é─üAëJé╠ô·é═üAIconé┼éαéΓéδéñé⌐é╚üB
ìíô·é═üAgeneratoré╠ìléªò√é╠é▄é╞é▀é≡üAéΓé┴é─é▌éµéñé╞Ävéóé▄é╖üB
generatoré≡ Ägé┴é╜âvâìâOâëâÇ é╠ì\ɼé═üA
- generator--------- -consumer----------
| âfü[â^ö¡É╢òö | âfü[â^ | âfü[â^Å┴ö∩òö |
| suspend data -----------------> every generator |
| | | |
-------------------- -------------------
âfü[â^é≡ÅçăÉ╢ɼ âfü[â^ë┴ìH
âfü[â^æIæ≡
é╠ éµéñé╚ èiìDé╔é╚éΦé▄é╖üB
âfü[â^é≡ ÅçăÉ╢ɼé╖éΘ âvâìâOâëâÇé¬éáé┴é─üAé╗é╠âfü[â^é≡ Å┴ö∩é╖éΘâvâìâO
âëâÇé¬ éáéΘüB é╞éóéñì\ɼé╔é╚éΦé▄é╖üB
é▒é▒é┼üAgeneratoré¬É╢ɼé╡é╜âfü[â^é╔æ╬é╡é─üAconsumeré¬ Å≡îÅé╔ ìçéφé╚éó
âfü[â^é≡èⁿé─é─üAăé╠âfü[â^é≡ÄÄé╡é─é▌éΘüB é╞é╡é╜ ÅΩìçé¬üABacktracking é╞
éóéñé▒é╞é╔ é╚éΦé▄é╖üB
æOë±üAéáé░é▄é╡é╜ jgetword()é═üAâvâìâOâëâÇì\ɼÅπé═üA
-----------
Åπê╩ | jgetword | ÆPîΩ É╪éΦÅoé╡
ü¬ -----------
üb | ------------
üb î─é╘ -->| jupto_not | ÆPîΩ ïµÉ╪éΦê╩Æu îƒì⌡
üb call ------------
üb | ---------------
üb î─é╘ -->| jpos | âVâtâgéiéhérò╢ÄÜ
ü½ call | | | ïµÉ╪éΦê╩Æu îƒì⌡
ë║ê╩ |î─é╘ -> i to j |
---------------
é╞éóéñèKæwé╔ é╚é┴é─éóé▄é╖é¬üAìléªò√é╞é╡é─é═üA
drive -----------
Åπê╩ ï∞ô« -->| jgetword | ÆPîΩ É╪éΦÅoé╡
ü¬ | -----------
üb drive ------------
üb ï∞ô« -->| jupto_not | ÆPîΩ ïµÉ╪éΦê╩Æu îƒì⌡
üb | ------------
üb ---------------
üb |ï∞ô« --> jpos | âVâtâgéiéhérò╢ÄÜ
ü½ | | | ïµÉ╪éΦê╩Æu îƒì⌡
ë║ê╩ | i to j |
---------------
generatoré¬É╢ɼé╖éΘâfü[â^é┼üAÅçă Åπê╩âvâìâOâëâÇé≡ ï∞ô«é╡é─éóé¡ì\ɼé╞
ìléªé╜ò√é¬üAò¬é⌐éΦéΓé╖éóé╞Ävéóé▄é╖üB âfü[â^ï∞ô«î^é╠âvâìâOâëâÇì\ɼ é╞é┼
éαî╛éªéΘé┼é╡éσéñüB
âeâLâXâgâfü[â^é┼üA
üEéPìsé╔ âfü[â^é¬ âXâyü[âXïµÉ╪éΦé┼üAèiö[é│éΩé─éóéΘî`Ä«é┼üA
é╗é╠âfü[â^é≡Ägé┴é─üAë╜éτé⌐é╠Åêù¥é≡ éΓéΦé╜éóÅΩìç
é┼é╖é╞üA
AWKé╠éµéñé╔üAìsâfü[â^é≡ Ä⌐ô«ôIé╔ âJâëâÇò¬èäé╡é─ $1,$2,...é╞ò╧Éöé╔âZâbâg
é╡é─é¡éΩé╜ò√é¬üAâvâìâOâëâÇé═ ægé▌éΓé╖é¡ é╚éΦé▄é╖üB
Iconé┼é═üAé▒é╠ÅΩìçé═üAâJâëâÇò¬èä procedureé≡ ì∞éτé╚éóé╞ éóé»é▄é╣é±üB
êΩò√üA
üEâeâLâXâgâfü[â^é¬üAÆ╩Åφé╠ò╢Å═ é╞é⌐ âvâìâOâëâÇâ\ü[âXé┼üA
ò╢ÄÜéΓÆPîΩé╠Åoî╗Åçé╔üAë╜é⌐é╠Åêù¥é≡ éΓéΦé╜éóÅΩìç
é┼é╖é╞üA
Iconé╠éµéñé╔üAò╢ÄÜéΓÆPîΩé≡üAɵô¬é⌐éτ Åçă É╪éΦÅoé╡é─ éóé¡ï@ö\é¬ òKùvé╔
é╚éΦé▄é╖üB é▒é╠éµéñé╚Åêù¥é┼ generatoré¬ ö±Åφé╔ û≡ùºé┐é▄é╖üB
generatoré═üAò╢Å═é╠éµéñé╚ âeâLâXâgâfü[â^é≡üAò╢ÄÜé╠ÅWé▄éΦ ÆPîΩé╠ÅWé▄éΦ é╞
é▌é╚é╡é╜ò√é¬ Ä⌐æRé╚âPü[âX é╠âvâìâOâëâÇé╔üAîⁿéóé─éóé▄é╖üB
òùé┬é⌐éó (TRA11936@biglobe.ne.jp/PFF01531@niftyserve.or.jp)
< Iconé╠WWWé═üAhttp://www.cs.arizona.edu/icon/index.html>
BGM: é╗é╠é▄é▄é╠îNé┼éóé─ü^ë¬û{É^ûΘ
(icon_208.txt 1997/04/05 PCVAN PIG)
üí Icon > IconÄGïLÆáüiéXüj IYAX.ICN òùé┬é⌐éó
Iconôⁿûσìuì└é┼üAYAXî`Ä«é╠âoâCâôâ_ü[ YAB.ICNé≡Éαû╛é╡é▄é╡é╜é¬üAÄ└é═âeâL
âXâgâtâ@âCâïé⌐éτüAâtâ@âCâïé≡ĵéΦÅoé╖ YAX.ICNéα éóé┴é╡éσé╔Éαû╛é╖éΘù\ÆΦé┼
é╡é╜üB
é╡é⌐é╡üAâRâüâôâgòté»é¬âüâôâhâCé╠é┼ é═é╡éσé┴é─ é╡é▄éóé▄é╡é╜üB
ăé╠âVâèü[âYé┼é═üAÉαû╛é╡éµéñé╞ Ävé┴é─éóé╜ é╠é┼é╖é¬üAIconô·ïLé≡Åæéóé─éΘ
ìáé╔é═ üAé╖é┴é⌐éΦ ûYéΩé─é╡é▄é┴é─ éóé▄é╡é╜üB
é╞éóéñé╠é═üAYABé═Ägéñé╠é┼é╖é¬üAYAXé═ù]éΦÄgéφé╚éóéαé╠é┼üB
é╟é╚é╜é⌐é╠ Åæé½ì₧é▌é╠Æåé╠ âXâNâèâvâgé≡üAâìâOé⌐éτö▓é½Åoé╡é─üAé┐éσé┴é╞
ô«é⌐é╡é─é▌éΘé╠é═üAâGâfâBâ^ü[é┼É╪éΦÅoé╡é─éαüAæσì╖é═û│éóé┼é╖é⌐éτé╦üB
Iconôⁿûσìuì└éΓüAIconô·ïLé⌐éτüAé▄é╞é▀é─ âvâìâOâëâÇé≡ É╪éΦÅoé╖ é╠é╚éτ
éáé┴é╜ò√é¬üAù╟éóé╞Ävéñé╠é┼é╖é¬üB
é┼éαüAYABé╞ YAXé═éΓé═éΦ âyâAé┼æ╡éªé─ Æué½é╜éóüBé╞éóéñé▒é╞é┼üAé╛éóé╘æO
é╔ì∞é┴é╜âvâìâOâëâÇé╔üAâRâüâôâgé≡Æ╟ë┴é╡é─üAÉ«éªé─é▌é▄é╡é╜üB
-----^ IYAX.ICN ( date:97-04-05 time:22:22 ) ---------------<cut here
###################
# YAX.LZH awkâXâNâèâvâgîfì┌òWÅÇî`Ä«òzï│âpâbâPü[âW Version 1.00 July/4/1990
# by takun@ô·îoMIX é╠YAX.BATé≡Iconé╔Æuè╖é╡é╜éαé╠üBì╫é⌐éóô«ì∞é═æ╜Å¡ê┘é╚éΘüB
###################
# This file is in the public domain.
# iyax.icn 1.8 1997/04/05 windy âRâüâôâgÆ╟ë┴
# iyax.icn 1.1 1995/07/01 - Yet Another eXtractor
global T, S
#link split
procedure main(args)
Usage := "Usage : iyax input_file"
# âtâ@âCâïâIü[âvâô
if *args = 1 then in_dir := open(args[1]) | stop("cannot open ",args[1])
else stop(Usage)
write(&errout,args[1]) # âtâ@âCâïû╝ò\Ī
T := table() # âtâ@âCâïæ«É½èiö[âeü[âuâïÉ╢ɼ
S := table() # âtâ@âCâïæ«É½èiö[âeü[âuâïüiâ`âFâbâNùpüjÉ╢ɼ
files := 0 # âtâ@âCâïÉö
# âtâ@âCâïô╟é▌ì₧é▌
while line := read(in_dir) do { # éPìsé├é┬ô╟é▌ì₧é▐
line ? {
# ɵô¬é¬ "-" é┼üAé╗é╠îπé╔ "-"é¬òíÉöéáé┴é╜éτô╟é▌ö≥é╬é╖
if ( tab(match("-")) & tab(many('-')) ) then {
case s := move(2) of { # é╗é╠îπé╠éQò╢ÄÜé≡â`âFâbâN
"^ " : { # âtâ@âCâïèJÄnïLìå
# âtâ@âCâïÅoù═Æåé╔üAé▄é╜âwâbâ_ü[é¬ùêé╜Ä₧é╠Änûû
if \T["f_name"] then { # Åoù═Æåâtâ@âCâïû╝é¬æ╢ì▌é╖éΩé╬
f_close(o_dir) # Åoù═âtâ@âCâï âNâìü[âYÅêù¥
files +:= 1
write(&errout,"no trailer error") # âgâîü[âëü[û│é╡
}
# Æ╩ÅφÅêù¥
head_anl(line) # âwâbâ_ü[ë≡É═
o_dir := open(T["f_name"],"a") | # Åoù═âtâ@âCâïâIü[âvâô
stop("open error ",f_name)
S_inz() # â`âFâbâNùpâeü[âuâï
# âCâjâVâââëâCâY
}
"$ " : { # âtâ@âCâïÅIù╣ïLìå
# âtâ@âCâïÅoù═Æåé┼û│éóé╠é╔üAâgâîü[âëü[é¬ùêé╜Ä₧é╠Änûû
if /T["f_name"] then { # Åoù═Æåâtâ@âCâïû╝é¬û│é»éΩé╬
write(&errout,"no header error")
}
# Æ╩ÅφÅêù¥
else {
tail_anl(line) # âgâîâCâëü[ë≡É═
f_close(o_dir) # Åoù═âtâ@âCâï âNâìü[âYÅêù¥
files +:= 1
}
}
default : { # output body
# âtâ@âCâïÅoù═Æåé╚éτüAìsâfü[â^Åoù═
if \T["f_name"] then line_out(o_dir,line)
}
} # end of case
} # end of if...
else { # output body
if \T["f_name"] then line_out(o_dir,line)
} # end of else
} # end of line ?
} # end of while
close(in_dir) # âtâ@âCâïâNâìü[âY
write(&errout,"\n",files," file(s) extracted.") # ÅIù╣âüâbâZü[âW
end
procedure f_close(o_dir)
# Åoù═âtâ@âCâïâNâìü[âY
close(o_dir) # Åoù═âtâ@âCâï âNâìü[âY
set_time() # Åoù═âtâ@âCâïé╠â^âCâÇâXâ^âôâvÉ▌ÆΦ
check() # âtâ@âCâïæ«É½é╠â`âFâbâN
every delete(T,key(T)) # âeü[âuâïôαùeâNâèâA
every delete(S,key(S)) # âeü[âuâïôαùeâNâèâA
return
end
procedure S_inz()
# â`âFâbâNùpâfü[â^èiö[âeü[âuâïé≡âCâjâVâââëâCâY
S["lines"] := S["words"] := S["chars"] := 0
return
end
procedure head_anl(line)
# âwâbâ_ü[é≡ë≡É═é╡é─üAæ«É½ÄwÆΦé¬éáéΩé╬üAâeü[âuâïé╔âZâbâg
write(&errout,line)
L := split(line)
T["f_name"] := L[2] # Åoù═âtâ@âCâïû╝âZâbâg
set_atr(T,L)
return
end
procedure tail_anl(line)
# âgâîâCâëü[é≡ë≡É═é╡é─üAæ«É½ÄwÆΦé¬éáéΩé╬üAâeü[âuâïé╔âZâbâg
write(&errout,line)
L := split(line)
S["f_name"] := L[2] # Åoù═âtâ@âCâïû╝âZâbâg
set_atr(T,L)
return
end
procedure set_atr(T,L)
# âeü[âuâïé╔âwâbâ_ü[üAâgâîâCâëü[é╠æ«É½é≡âZâbâgé╖éΘüB
every s := !L do {
s ? if cp := upto(':') then T[ s[1 : cp]] := s[cp +1 : 0]
}
return
end
procedure line_out(o_dir,line)
write(o_dir,line)
# â`âFâbâNâeü[âuâïé╠ôαùeé≡ìXÉV
S["lines"] +:= 1 # lines ìsÉö
S["words"] +:= *split(line) # words îΩÉö
S["chars"] +:= *line # chars ò╢ÄÜÉö
return
end
procedure check()
# âtâ@âCâïé╠âwâbâ_ü[üEâgâîü[âëü[é╠æ«É½òöé╞üA
# Ä└ì█é╠âtâ@âCâïé╠æ«É½é≡üAöΣèr
every x := key(T) do {
if string(T[x]) ~== string(S[x]) then {
write(&errout,T["f_name"]," ",x," error")
}
}
return
end
procedure set_time()
# â^âCâÇâXâ^âôâvé╠É▌ÆΦüB osawarié═üAYAX.LZHé╔è▄é▄éΩéΘéαé╠é≡ÄgùpüB
# û│é»éΩé╬üAæ╝é╠ touché╔ìçéñéµéñé╔ÅCÉ│é╖éΘé⌐üAâRâüâôâgâAâEâgé╡é─ë║é│éóüB
if (member(T,"date") & member(T,"time")) then {
system("osawari " || T["date"] || " " || T["time"] || " " || T["f_name"])
}
return
end
# ò╢ÄÜù±é≡ÄwÆΦò╢ÄÜüiâZâbâgüjé┼ïµÉ╪éΦâèâXâgé╔ôⁿéΩéΘüB
procedure split(line,c)
# function : split a string with c and store a list(exclude c)
/c := ' \t' # ÄwÆΦé¬û│é»éΩé╬âXâyü[âXé⌐â^âué╞é▌é╚é╖üB
list := [] # returnùpâèâXâgÉ╢ɼ
line ? while tab(upto(~c)) do put(list,tab(many(~c)))
return list
end
-----$ IYAX.ICN ( lines:149 words:469 ) --------------------<cut here
IYAXé┼üAIconôⁿûσìuì└éΓ Iconô·ïLé⌐éτ âvâìâOâëâÇé≡ É╪éΦÅoé╡é▄é╖é╞üAâGâëü[
é¬ ÅoéΘâtâ@âCâïé¬éáéΦé▄é╖üB é╗é╠âtâ@âCâïé═üAYABé┼âoâCâôâhé╡é╜éáé╞é┼üAâRâü
âôâgé≡Æ╟ë┴é╡é╜éΦüAÅCÉ│é╡é╜é╜é▀é╔üAìsÉöéΓîΩÉöé¬é╕éΩé─éóéΘéαé╠é┼é╖üBüiè╛üj
é▄é╜üAæσé½é╚âfü[â^âtâ@âCâïé┼üAÆåù¬é╡é─éóéΘéαé╠é┼éαüAâGâëü[é¬Åoé▄é╖üB
òùé┬é⌐éó (TRA11936@biglobe.ne.jp/PFF01531@niftyserve.or.jp)
< Iconé╠WWWé═üAhttp://www.cs.arizona.edu/icon/index.html>
BGM: êñé╠î╛ù∞ü^âTâUâôüEâIü[âïâXâ^ü[âY
(icon_209.txt 1997/04/05 PCVAN PIG)
üí Icon > IconÄGïLÆáüiéPéOüj Åçù± òùé┬é⌐éó
égéa£aÉ»é╔è╓é╖éΘéséuö╘ægé≡üAîïì\éΓé┴é─éóé▄é╖é╦üB
é┼üA£aÉ»é═ ë╜Åêé⌐éτùêéΘé⌐é╞éóéñé╠é┼üAæ╛ùzîné⌐éτéPéOÆ¢éïéìéáé╜éΦé▄é┼é═üA
è╧æ¬é┼é½é╚éóé¬ òXéΓÉoé¬òYé┴é─éóéΘé╗éñé┼é╖üB
é╗é╠ò╙é⌐éτæ╛ùzîné╔ï▀é├éóé─ùêé─üAæ╛ùzé╠ê°ù═é╔æ¿éªéτéΩé╜éαé╠鬣aÉ»é╔é╚é┴é─
æ╛ùzé╠ÄⁿéΦé≡ë±éΦé╛é╖é╠é┼é═é╚éóé⌐üH é╞éóéñÉαû╛é≡éΓé┴é─éóé▄é╡é╜üB
û╗ëñÉ»é╠éáé╜éΦé¬üAéUéOë¡éïéìé┼é╖é╠é┼üAé╗é╠é▄é╜ùyé⌐ëôé¡é⌐éτéΓé┴é─ùêéΘé╠é┼
é╖é╦üB
ìíô·éαëJé┼üAégéa£aÉ»é═î⌐éªé▄é╣é±üB é┼éαüAö≥ìsï@é┼ù╖ìsé│éΩéΘò√é═üAë_é╠Åπ
é≡ö≥é±é┼éτé┴é╡éßéóé▄é╖é╠é┼üAé▓ùùé╔é╚éΩéΘò√éαéóé▄é╖éµé╦üB
é│é─üAê╚æOüAò╢ÄÜù±é╠ægé▌ìçéφé╣é≡üAéΓéΦé▄é╡é╜üB é▒éΩé═üAèmé⌐ìéìZé╠ìáé╔
éΓé┴é╜ Åçù±üEægé▌ìçéφé╣ é╞ô»é╢éαé╠é┼é╖éµé╦üB
nPmé╞é⌐ nCmé╔üAô¬é≡öYé▄é╣é╜éαé╠é┼é╖üB æOé╠âvâìâOâëâÇé┼é═üAnPné╡é⌐éΓé┴é─
éóé▄é╣é±é╠é┼üAêΩö╩ë╗é╡é─üAnPmé╠ÅΩìçé╠âvâìâOâëâÇé≡ì∞é┴é─é▌é▄é╡éσéñüB
stringé╠Åçù±é╞ listé╠Åçù±é╠âvâìâOâëâÇé≡ì∞é┴é─é▌é▄é╡é╜üB
ìléªò√é═üAIconô·ïLüiéPéUüj Recursive generator é╞ô»é╢é┼é╖üB
É╢ɼò╢ÄÜÉöé╔ ɺî└é≡ é┬é»é╚éóé╞éóé»é╚éó é╠é┼é╖é¬üAé╗é▒é═Äåé╔Ä└ì█é╔Åæé½Åo
é╡é─ é╙é▐é╙é▐üAé▒é▒é┼ɺî└é≡é┬é»éΩé╬éóéóé±é╛é╚üDüDüDé╞üAéΓé┴é─é▄é╖üB
3éo2é╠ÅΩìçé┼é╖é╞üA
perm("DNA",2)
|--> "D" || perm("NA",1) # é▒é▒é┼éPò╢ÄÜû┌
|--> "N" || perm("A",0) # é▒é▒é┼éQò╢ÄÜû┌üiîπé═òsùvüj
|---> "" # éRò╢ÄÜû┌é╚é╠é┼ï≤ò╢ÄÜé┼ò╘é╖üB
é╞éóéñòùé╔ô«é½é▄é╖üB
-----^ PERM11.ICN ( date:97-04-06 time:22:24 ) -------------<cut here
# nPm (n = *s é▄é╜é═ *L) nî┬é╠éαé╠é⌐éτüAmî┬é≡æIé±é┼üAò└é╫éΘüB
# This file is in the public domain.
# perm11.icn 1997/04/06 windy
# stringé╠Åçù±
# nPm (n = *s) nî┬é╠éαé╠é⌐éτüAmî┬é≡æIé±é┼üAò└é╫éΘüB
procedure perm(s,m)
local i
/m := *s # âfâtâHâïâg nPn (n = m = *s)
if m = 0 then return "" # mé≡ò╢ÄÜÉöâJâEâôâ^ü[é╔ÄgéñüB
# éOé╚é┴é╜éτüAé╗é▒é┼æ┼é┐Ä~é▀üB
suspend s[i := 1 to *s] || perm(s[1:i] || s[i+1:0],m -1)
#ü¬ éPò╢ÄÜæIé╘ ü¬ ü¬ü⌐æOé┼æIé±é╛ò╢ÄÜê╚èO ü¬ÄwÆΦò╢ÄÜÉöé╔
# üb é╠ò╢ÄÜù±é╔æ╬é╡ô»é╢ ò╢ÄÜù±é≡ù}éª
# üb Åêù¥é≡ìséñüB éΘé╜é▀é╠âJâE
# ò╢ÄÜù±é╠ÿAîï âôâ^ü[
end
# listé╠ùvæfé╠Åçù±üB
# nPm (n = *L) nî┬é╠éαé╠é⌐éτüAmî┬é≡æIé±é┼üAò└é╫éΘüB
procedure lperm(L,m)
local i
/m := *L
if m = 0 then return []
suspend [L[i := 1 to *L]] ||| lperm(L[1:i] ||| L[i+1:0],m -1)
# ü¬listé╠ÿAîï
end
# test data
procedure main()
# ëpò╢ÄÜé╠Åçù±âTâôâvâï
s := "DNA"
write(s,"é╠Åçù±")
write("3éo0 éRò╢ÄÜé⌐éτéOò╢ÄÜæIé╘")
every write(perm(s,0))
write("3éo1 éRò╢ÄÜé⌐éτéPò╢ÄÜæIé╘")
every write(perm(s,1))
write("3éo2 éRò╢ÄÜé⌐éτéQò╢ÄÜæIé╘")
every write(perm(s,2))
write("3éo3 éRò╢ÄÜé⌐éτéRò╢ÄÜæIé╘")
every write(perm(s,3))
write()
# listùvæfüiô·û{îΩò╢ÄÜüjé╠Åçù±âTâôâvâï
L := ["é▄","éΣ","é▌"]
every writes(!L) ; write("é╠Åçù±")
write("3éo0 éRò╢ÄÜé⌐éτéOò╢ÄÜæIé╘")
every LL := lperm(L,0) do {
every writes(!LL)
write()
}
write("3éo1 éRò╢ÄÜé⌐éτéPò╢ÄÜæIé╘")
every LL := lperm(L,1) do {
every writes(!LL)
write()
}
write("3éo2 éRò╢ÄÜé⌐éτéQò╢ÄÜæIé╘")
every LL := lperm(L,2) do {
every writes(!LL)
write()
}
write("3éo3 éRò╢ÄÜé⌐éτéRò╢ÄÜæIé╘")
every LL := lperm(L,3) do {
every writes(!LL)
write()
}
end
-----$ PERM11.ICN ( lines:68 words:204 ) -------------------<cut here
îïë╩é┼é╖üB
-----^ PERM11.TXT ( date:97-04-06 time:22:24 ) -------------<cut here
DNAé╠Åçù±
3éo0 éRò╢ÄÜé⌐éτéOò╢ÄÜæIé╘
3éo1 éRò╢ÄÜé⌐éτéPò╢ÄÜæIé╘
D
N
A
3éo2 éRò╢ÄÜé⌐éτéQò╢ÄÜæIé╘
DN
DA
ND
NA
AD
AN
3éo3 éRò╢ÄÜé⌐éτéRò╢ÄÜæIé╘
DNA
DAN
NDA
NAD
ADN
AND
é▄éΣé▌é╠Åçù±
3éo0 éRò╢ÄÜé⌐éτéOò╢ÄÜæIé╘
3éo1 éRò╢ÄÜé⌐éτéPò╢ÄÜæIé╘
é▄
éΣ
é▌
3éo2 éRò╢ÄÜé⌐éτéQò╢ÄÜæIé╘
é▄éΣ
é▄é▌
éΣé▄
éΣé▌
é▌é▄
é▌éΣ
3éo3 éRò╢ÄÜé⌐éτéRò╢ÄÜæIé╘
é▄éΣé▌
é▄é▌éΣ
éΣé▄é▌
éΣé▌é▄
é▌é▄éΣ
é▌éΣé▄
-----$ PERM11.TXT ( lines:43 words:48 ) --------------------<cut here
òùé┬é⌐éó (TRA11936@biglobe.ne.jp/PFF01531@niftyserve.or.jp)
< Iconé╠WWWé═üAhttp://www.cs.arizona.edu/icon/index.html>
BGM: êúÅDé╠âJâTâuâëâôâJü^ï╜é╨éδé▌
(icon_210.txt 1997/04/06 PCVAN PIG)
üí Icon > IconÄGïLÆáüiéPéPüj ægé▌ìçéφé╣ òùé┬é⌐éó
æOë±üAÅçù±é≡éΓéΦé▄é╡é╜é╠é┼üAìíë±é═üAægé▌ìçéφé╣é┼é╖üB
nCmé╔æèôûé╖éΘâvâìâOâëâÇé┼é╖üBÅçù±é╠âvâìâOâëâÇé╞üAé┘é┌ô»ùlé╠âvâìâOâëâÇ
é┼é╖üB
Åçù±é╞êßé┴é─üAò╢ÄÜé╠Åçö╘é≡ìlù╢é╡é▄é╣é±é╠é┼üA
ÄcéΦé╠òöò¬é╔üAô»é╢Åêù¥é≡ë┴éªéΘé╜é▀é╔üAôné╖Åêù¥é¬Å¡é╡êßé┴é─éóé▄é╖üB
3éb2é╠ÅΩìçé┼é╖é╞üA
comb("CPU",2)
|--> "C" || comb("PU",1) # é▒é▒é┼éPò╢ÄÜû┌
|--> "P" || comb("U",0) # é▒é▒é┼éQò╢ÄÜû┌üiîπé═òsùvüj
|---> "" # éRò╢ÄÜû┌é╚é╠é┼ï≤ò╢ÄÜé┼ò╘é╖üB
é╞éóéñòùé╔ô«é½é▄é╖üB
-----^ COMB11.ICN ( date:97-04-07 time:19:06 ) -------------<cut here
# nCm (n = *s é▄é╜é═ *L) nî┬é╠éαé╠é⌐éτüAmî┬é≡æIé╘üB
# This file is in the public domain.
# comb11.icn 1997/04/07 windy
# stringé╠ægé▌ìçéφé╣
# nCm (n = *s) nî┬é╠éαé╠é⌐éτüAmî┬é≡æIé╘üB
procedure comb(s,m)
/m := *s # âfâtâHâïâg nCn (n = m = *s)
if m = 0 then return "" # mé≡ò╢ÄÜÉöâJâEâôâ^ü[é╔ÄgéñüB
# éOé╚é┴é╜éτüAé╗é▒é┼æ┼é┐Ä~é▀üB
suspend s[i := 1 to *s] || comb(s[i+1 : 0], m -1)
#ü¬ éPò╢ÄÜæIé╘ ü¬ ü¬ü⌐æOé┼æIé±é╛ò╢ÄÜéµéΦ ü¬ÄwÆΦò╢ÄÜÉöé╔
# üb îπéδé╠ò╢ÄÜù±é╔ô»é╢ ò╢ÄÜù±é≡ù}éª
# üb Åêù¥é≡ìséñüB éΘé╜é▀é╠âJâE
# ò╢ÄÜù±é╠ÿAîï âôâ^ü[
end
# listé╠ùvæfé╠ægé▌ìçéφé╣üB
# nCm (n = *L) nî┬é╠éαé╠é⌐éτüAmî┬é≡æIé╘üB
procedure lcomb(L,m)
local i
/m := *L
if m = 0 then return []
suspend [L[i := 1 to *L]] ||| lcomb(L[i+1 : 0],m -1)
# ü¬listé╠ÿAîï
end
# test data
procedure main()
# ëpò╢ÄÜé╠ægé▌ìçéφé╣âTâôâvâï
s := "CPU"
write("\"",s,"\" é╠ægé▌ìçéφé╣")
every i := 1 to *s do {
write("\n\"",*s,"C",i)
j := 0
every ss := comb(s,i) do {
j +:= 1
writes(j,":",ss)
write()
}
}
write()
# listùvæfüiô·û{îΩò╢ÄÜüjé╠ægé▌ìçéφé╣âTâôâvâï
L := ["é│","é¿","éΦ"]
every writes(!L) ; write(" é╠ægé▌ìçéφé╣")
every i := 1 to *L do {
write("\n\"",*L,"C",i)
j := 0
every LL := lcomb(L,i) do {
j +:= 1
writes(j,":")
every writes(!LL)
write()
}
}
end
-----$ COMB11.ICN ( lines:60 words:193 ) -------------------<cut here
îïë╩é┼é╖üB
-----^ COMB11.TXT ( date:97-04-07 time:19:23 ) -------------<cut here
"CPU" é╠ægé▌ìçéφé╣
"3C1
1:C
2:P
3:U
"3C2
1:CP
2:CU
3:PU
"3C3
1:CPU
é│é¿éΦ é╠ægé▌ìçéφé╣
"3C1
1:é│
2:é¿
3:éΦ
"3C2
1:é│é¿
2:é│éΦ
3:é¿éΦ
"3C3
1:é│é¿éΦ
-----$ COMB11.TXT ( lines:29 words:24 ) --------------------<cut here
òùé┬é⌐éó (TRA11936@biglobe.ne.jp/PFF01531@niftyserve.or.jp)
< Iconé╠WWWé═üAhttp://www.cs.arizona.edu/icon/index.html>
BGM: Waltz For Debby / Bill Evans
(icon_211.txt 1997/04/07 PCVAN PIG)
üí Icon > IconÄGïLÆáüiéPéQüj pipeòùé╠âvâìâOâëâÇ òùé┬é⌐éó
âpâCâvé╞éóéñé╠é═üAUnixéΓ MS-DOSé┼éóéñâpâCâvé╠é▒é╞é┼é╖üBâvâìâOâëâÇ
é╠è╘é╠âfü[â^é╠ôné╡ò√é┼üA
data data
------------ stream ------------ stream ------------
| program1 | =====> | program2 | =====> | program3 |
------------ pipe ------------ pipe ------------
òWÅÇ òWÅÇ òWÅÇ òWÅÇ
Åoù═ ôⁿù═ Åoù═ ôⁿù═
é╞üAé┬é╚éóé┼éóé»éΘ éαé╠é┼é╖üB
generatoré╠ìléªò√é╠Éαû╛é≡é╡é─éóé─üAé▒éΦéßü`âpâCâvé╛ü`é╞Ävéóé▄é╡é╜üB
generatoré╠é▒é╞é┼é╖é⌐éτüAprocedureé╠è╘é╠âfü[â^é╠Ä≤é»ôné╡ò√û@é╠é▒é╞
é╔é╚éΘé±é┼é╖é¬üB éµé¡Äùé─éóé▄é╖éµé╦üB
âpâCâvé╠ÅΩìçé═üAÅπé╠É}é╠éµéñé╔üAprogram1é╞ program2é═æ╬ôÖé╚ê╩Æu
è╓îWé╔é╚éΦé▄é╖é¬üAprocedureé╠ÅΩìçé═üAâfü[â^é≡ôné╖é╞é▒éδé┼üAæ╬ôÖé╞
éóéñû≤é╔é═éóé⌐é╕üAé╟é┐éτé⌐é╠âvâìâOâëâÇé¬ æ╝ò√é≡î─é╘ü^Ägéñé╞éóéñè╓
îWé╔é╚éΦé▄é╖é╠é┼üA
------------ data ------------ data ------------
| procedure1 | =====> | procedure2 | =====> | procedure3 |
------------ ------------ ------------
é═üA
- proc1 ---- î─é╘ü^Ägéñ - proc2 ---- î─é╘ü^Ägéñ - proc3 ----
| | ---- procedure2 | ---- procedure3 |
| | / | | / | |
| proc2 <-- | <-- | |
------------ ë║ê╩ Åπê╩ ------------ ë║ê╩ Åπê╩ ------------
é╞éóéñì\ɼé╔é╚éΦé▄é╖üB
âTâôâvâïé╞é╡é─üAé┐éσé┴é╞ï¡ê°é╚ùßé┼é╖é¬üAâfü[â^é≡ö¡É╢é╡é─üAé╗éΩé≡
âtâBâïâ^ü[é╔é⌐é»é─üAÅoù═é╖éΘéαé╠é≡üB
-----^ PIPE01.ICN ( date:97-04-10 time:21:57 ) -------------<cut here
# pipeòù âvâìâOâëâÇì\ɼ âTâôâvâï
# samp212.icn 1997/04/10 windy
# This file is in the public domain.
procedure song_name()
# âfü[â^ö¡É╢
L_Vivien := ["éféÅéÅéäü@éeéÆéëéàéÄéä",
"òùé╠öwÆå",
"Å¥é╛éτé»é╠ôVÄg",
"Åté╠ô·",
"éùéàéîéâéÅéìéàü@éöéÆéÅéòéééîéà",
"ûΘû╛é»é╠âëâôâiü[",
"é`éîéùéüéÖéô",
"î▀æOéRÄ₧é╠ëJ",
"ï╔èyëwé⌐éτî⌐éªéΘîÄ",
"Ægé⌐éóÆ╛û┘",
"æOö»"]
suspend !L_Vivien # listé⌐éτùvæfé≡Åçé╔ĵéΦÅoé╡
end
# ü½âfü[â^
procedure sel_word()
# âtâBâïâ^ü[üiò╢ÄÜù±é╔ "é╠" é¬è▄é▄éΩéΘéαé╠é≡ö▓é½Åoé╖üj
key := "é╠"
every s := song_name() do {
s ? if find(key) then suspend s
}
end
# ü½âfü[â^
procedure main()
# Åæé½Åoé╡
every write(sel_word())
end
-----$ PIPE01.ICN ( lines:36 words:73 ) --------------------<cut here
îïë╩é═ăé╠éµéñé╔é╚éΦé▄é╖üB
-----^ PIPE.TXT ( date:97-04-10 time:22:28 ) ---------------<cut here
òùé╠öwÆå
Å¥é╛éτé»é╠ôVÄg
Åté╠ô·
ûΘû╛é»é╠âëâôâiü[
î▀æOéRÄ₧é╠ëJ
-----$ PIPE.TXT ( lines:5 words:5 ) ------------------------<cut here
é▒éΩé═üAăé╠éRé┬é╠âvâìâOâëâÇé≡üApipeé┼ é┬é╚éóé╛éαé╠é╞üAô»é╢é┼é╖üB
âRâ}âôâhâëâCâôé⌐éτüAăé╠éµéñé╔æ┼é┐ì₧é▌é▄é╖é╞üAô»é╢îïë╩é¬é┼é▄é╖üB
pipe02 | pipe03 | pipe04 > pipe.txt
pipe03 é╠Åoù═é¬òWÅÇÅoù═é┼é╖é╠é┼üApipe04 òsùvé┼é╖é¬üAî`é≡ìçéφé╣éΘé╜é▀
é╔ôⁿéΩé─éáéΦé▄é╖üBüiè╛üj
-----^ PIPE02.ICN ( date:97-04-10 time:22:21 ) -------------<cut here
# pipe âTâôâvâïâvâìâOâëâÇéP
# pipe02.icn 1997/04/10 windy
# This file is in the public domain.
procedure main()
# âfü[â^ö¡É╢
L_Vivien := ["éféÅéÅéäü@éeéÆéëéàéÄéä",
"òùé╠öwÆå",
"Å¥é╛éτé»é╠ôVÄg",
"Åté╠ô·",
"éùéàéîéâéÅéìéàü@éöéÆéÅéòéééîéà",
"ûΘû╛é»é╠âëâôâiü[",
"é`éîéùéüéÖéô",
"î▀æOéRÄ₧é╠ëJ",
"ï╔èyëwé⌐éτî⌐éªéΘîÄ",
"Ægé⌐éóÆ╛û┘",
"æOö»"]
every write(!L_Vivien) # listé⌐éτùvæfé≡Åçé╔ĵéΦÅoé╡
end
-----$ PIPE02.ICN ( lines:18 words:37 ) --------------------<cut here
-----^ PIPE03.ICN ( date:97-04-10 time:22:20 ) -------------<cut here
# pipe âTâôâvâïâvâìâOâëâÇéQ
# pipe03.icn 1997/04/10 windy
# This file is in the public domain.
procedure main()
# âtâBâïâ^ü[
# ò╢ÄÜù±Æåé╔ "é¬" è▄é▄éΩéΘéαé╠é≡üAö▓é½Åoé╖üB
while line := read() do {
key := "é╠"
line ? if find(key) then write(line)
}
end
-----$ PIPE03.ICN ( lines:11 words:40 ) --------------------<cut here
-----^ PIPE04.ICN ( date:97-04-10 time:22:20 ) -------------<cut here
# pipe âTâôâvâïâvâìâOâëâÇéR
# pipe04.icn 1997/04/10 windy
# This file is in the public domain.
procedure main()
# Åæé½Åoé╡
while write(read())
end
-----$ PIPE04.ICN ( lines:7 words:22 ) ---------------------<cut here
òùé┬é⌐éó (TRA11936@biglobe.ne.jp/PFF01531@niftyserve.or.jp)
< Iconé╠WWWé═üAhttp://www.cs.arizona.edu/icon/index.html>
BGM: éuéëéûéëéàéÄü^Ä┬î┤öⁿûτÄq
(icon_212.txt 1997/04/10 PCVAN PIG)
üí Icon > IconÄGïLÆáüiéPéRüj ârâfâIûΓæΦé═üAô╣ëôé╡ òùé┬é⌐éó
éñü`é±üBô∩é╡éóüB ɵô·é⌐éτüAægé▌ìçéφé╣é╠âvâìâOâëâÇé≡ÉFüXÄÄé╡é─éóé▄é╖é¬
û┌òWé¬éáéΦé▄é╖üB
ê╚æOé╠Åæé½é▒é▌é╔éáé┴é╜üAÿ^ëµârâfâIé≡î°ùªéµé¡üAò╩é╠ârâfâIâeü[âvé╓ïlé▀ì₧
é▐ûΓæΦé¬üAé╚é±é╞é⌐ë≡é»é╚éóé⌐é╞éΓé┴é─éóé▄é╖üB
é╡é⌐é╡üAô╣é═ëôéóé╚ü` é╞éóéñÅ≤æ╘é┼é╖üB
üiéoébéué`émé╠ éoéhéfé╠ âeâLâXâgâfü[â^ë∩ïcÄ║é╔üAÿ^ëµârâfâIé≡ ò╩é╠âeü[âvé╔
î°ùªù╟é¡ ïlé▀ì₧é▐âAâïâSâèâYâÇé═û│éóé⌐ é╞Ä┐ûΓé│éΩé╜ò√é¬ éóéτé┴é╡éßéóé▄é╡
é╜üB é▒é╠ò╙é═üAé╗éΩé≡ìuì└é╠âlâ^é╔ Ägéφé╣é─ éóé╜é╛éóé─éóé▄é╖üBüj
û{ë«é┼üAægé▌ìçéφé╣ù¥ÿ_é╠û{é╞é⌐üAâAâïâSâèâYâÇé╠û{é╞é⌐é≡âpâëâpâëé▀é¡é┴é─
é▌é╜é╠é┼é╖é¬üAé▒é╠ûΓæΦé═üuâiâbâvâUâbâNûΓæΦüvé╞éóéñéτé╡éóé┼é╖é╦üB
âiâbâvâUâbâNûΓæΦé═üAâiâbâvâUâbâNé╞ë╫ò¿é¬éáé┴é─üAêΩö╘é╜é¡é│é±ïlé▀éΘéΓéΦ
ò√é═é╟éΩé⌐é╞éóéñéµéñé╚ûΓæΦé┼é╖üB
ï∩æ╠ôIé╔üAé╟éñéΓé┴é─üAægé▌ìçéφé╣é≡É⌠éóé╛é╖é╠é⌐üAéµé¡ò¬é⌐éΦé▄é╣é±üB
é▒é╠ûΓæΦé≡ë≡é¡âvâìâOâëâÇé╔é═üAéáéΘÆ÷ôxé═üué╡éτé▌é┬é╘é╡üvüuæìôûé╜éΦüvôI
é╚Åêù¥é¬òKùvé╛éδéñé╞éóéñé▒é╞é┼üAIconé¬îⁿéóé─éóéΘé╠é═èmé⌐é╛é╞Ävéñé╠é┼é╖é¬
é╚é⌐é╚é⌐üAÄΦï¡éóé┼é╖üB ìíë±éαüAârâfâIûΓæΦé╠ÅKì∞âvâìâOâëâÇé╞é╚éΦé▄é╖üB
generatoré⌐éτâfü[â^é≡Ä≤é»ÄµéΦüAé╗é╠âfü[â^é≡Åçé╔ægé▌ìçéφé╣é─éóé¡ âvâìâO
âëâÇé≡éΓé┴é─é▌é▄é╖üB ô«ì∞é═üAâRâüâôâgé≡ÄQÅ╞é╡é─ë║é│éóüB
-----^ COMB12.ICN ( date:97-04-12 time:10:53 ) -------------<cut here
# generatoré⌐éτé╠âfü[â^é╠ægé▌ìçéφé╣
# comb12.icn 1997/04/12 windy
# This file is in the public domain.
# ò╢ÄÜù± sé╠ò╢ÄÜé≡üAéPò╢ÄÜé╕é┬ɵô¬é⌐éτüAÅçă É╢ɼé╖éΘ generator
# s : â\ü[âXâfü[â^
procedure gen_char(s)
suspend !s # éPò╢ÄÜé╕é┬ĵéΦÅoé╖
end
# ü½âfü[â^üiéPò╢ÄÜüj
# ò╢ÄÜù± sé╠ò╢ÄÜé≡üAéPò╢ÄÜé╕é┬Ä≤é»ÄµéΦüAægé▌ìçéφé╣ò╢ÄÜù± é≡üA
# Åçă É╢ɼé╖éΘ generator
# s : â\ü[âXâfü[â^
procedure glcomb(s)
L := [] # âÅü[âNùpâèâXâgüiÉ╢ɼì╧é╠ò╢ÄÜù±é≡üAò╢ÄÜÉöò╩é╔èiö[üBüj
# "A","B","C"é╠Åçé┼éRò╢ÄÜé≡Ä≤é»é╜ÅΩìçé╠ô«ì∞é═ăé╠Æ╩éΦé┼é╖üB
# [["A"]] # éPò╢ÄÜû┌é╠Å≤æ╘
# ü¬éPò╢ÄÜâèâXâg
# éPò╢ÄÜâèâXâgé╠ò╢ÄÜ "A"é╞ÉVé╜é╔ùêé╜ "B"é≡ÿAîïé╡é╜ò╢ÄÜù±é≡üA
# îπéδé╔éQò╢ÄÜâèâXâgé≡ì∞ɼé╡èiö[é╡üA
# ìXé╔üAéPò╢ÄÜâèâXâgé╔ "B"é≡Æ╟ë┴é╖éΘé╞üA
# [["A","B"], ["AB"]] # éQò╢ÄÜû┌é╠Å≤æ╘
# ü¬éPò╢ÄÜâèâXâg ü¬éQò╢ÄÜâèâXâg
# éQò╢ÄÜâèâXâgé╠ò╢ÄÜ "AB"é╞ÉVé╜é╔ùêé╜ "C"é≡ÿAîïé╡é╜ò╢ÄÜù±é≡üA
# îπéδé╔éRò╢ÄÜâèâXâgé≡ì∞ɼé╡èiö[é╡üA
# ìXé╔üAéPò╢ÄÜâèâXâgé╠ò╢ÄÜ "A","B"é╞ "C"é≡èeüXÿAîïé╡é╜ò╢ÄÜù±é≡üA
# éQò╢ÄÜâèâXâgé╔èiö[é╡üA
# ìXé╔üAéPò╢ÄÜâèâXâgé╔ "C"Æ╟ë┴èiö[é╖éΘé╞üA
# [["A","B","C"], ["AB","AC","DC"],["ABC"]] # éRò╢ÄÜû┌é╠Å≤æ╘
# ü¬éPò╢ÄÜâèâXâg ü¬éQò╢ÄÜâèâXâg ü¬éRò╢ÄÜâèâXâg
#
every new := gen_char(s) do { # generatoré⌐éτéPò╢ÄÜĵéΦÅoé╡
put(L,[]) # âèâXâg Lôαé╔üAï≤âèâXâgÆ╟ë┴
every i := *L to 1 by -1 do { # âèâXâgé≡üAûûö÷é⌐éτÅêù¥
if i > 1 then { # âèâXâgé¬éQùvæfê╚Åπé╛é┴é╜éτ
every j := 1 to *L[i -1] do { # (i-1)ò╢ÄÜâèâXâgé╠ùvæfé╔
put(L[i], comb := (L[i -1][j] || new) ) # ÉVé╜é╚ò╢ÄÜé≡ÿAîïé╡
# iò╢ÄÜâèâXâgé╔èiö[
suspend comb # Æ╟ë┴é╡é╜ò╢ÄÜù±é≡ôné╖
}
}
else {
put(L[1],new) # éPò╢ÄÜâèâXâgé╔üAÉVé╜é╚ò╢ÄÜé≡Æ╟ë┴
suspend new # Æ╟ë┴é╡é╜ò╢ÄÜé≡ôné╖
}
}
}
end
# ü½âfü[â^üiò╢ÄÜüiù±üjüj
# ò╢ÄÜù±É▌ÆΦü^îïë╩Åæé½Åoé╡Åêù¥
procedure main(args)
# âRâ}âôâhâëâCâôâpâëâüü[â^é¬û│é»éΩé╬üA"ABCD"é≡â\ü[âXâfü[â^é╞é╖éΘüB
s := if *args = 0 then "ABCD" else args[1]
# é╖é╫é─é╠ægé▌ìçéφé╣é≡Åæé½Åoé╖üB
every write(glcomb(s))
end
-----$ COMB12.ICN ( lines:62 words:198 ) -------------------<cut here
îïë╩é═üAé▒éñé╚éΦé▄é╖üB
-----^ COMB12.TXT ( date:97-04-12 time:10:54 ) -------------<cut here
A
AB
B
ABC
AC
BC
C
ABCD
ABD
ACD
BCD
AD
BD
CD
D
-----$ COMB12.TXT ( lines:15 words:15 ) --------------------<cut here
òùé┬é⌐éó (TRA11936@biglobe.ne.jp/PFF01531@niftyserve.or.jp)
< Iconé╠WWWé═üAhttp://www.cs.arizona.edu/icon/index.html>
BGM: éáüTû│Åεü^âAâôüEâïâCâX
(icon_213.txt 1997/04/12 PCVAN PIG)
üí Icon > IconÄGïLÆáüiéPéSüj ârâfâIûΓæΦü^ægé▌ìçéφé╣ òùé┬é⌐éó
ârâfâIûΓæΦé╠ÅKì∞âvâìâOâëâÇé╠æ▒é½é┼é╖üB æOë±é╠ generatoré⌐éτ Ä≤é»Äµé┴é╜
ò╢ÄÜé╠ægé▌ìçéφé╣âvâìâOâëâÇé≡üAâèâXâgî`Ä«âfü[â^é┼éα Ä≤é»ÄµéΩéΘéµéñé╔ ègÆú
é╡é╜éαé╠é┼é╖üB
-----^ COMB13.ICN ( date:97-04-12 time:10:31 ) -------------<cut here
# generatoré⌐éτé╠âfü[â^é╠ægé▌ìçéφé╣
# comb12.icné≡üAò╢ÄÜù±é╛é»é┼é╚é¡âèâXâgé╔éαôKùpé┼é½éΘéµéñègÆú
# ô«ì∞é═üAcomb12.icné╠âRâüâôâgé≡ÄQÅ╞é╡é─ë║é│éóüB
# comb13.icn 1997/04/12 windy
# This file is in the public domain.
link show_l # listÅæé½Åoé╡ procedure
# âfü[â^ xé╠ùvæfé≡üAéPé┬é╕é┬ɵô¬é⌐éτüAÅçă É╢ɼé╖éΘ generator
# x : â\ü[âXâfü[â^
procedure gen_elem(x)
suspend !x # ùvæfé≡éPé┬é╕é┬ĵéΦÅoé╖
end
# ü½âfü[â^
# âfü[â^é≡Åçă Ä≤é»ÄµéΦüAægé▌ìçéφé╣é─âèâXâgé╔é╡é╜âfü[â^é≡
# É╢ɼé╖éΘ generator
# proc1 : generatorû╝Å╠üAx : â\ü[âXâfü[â^
procedure glcombf(proc1,x)
L := [] # âÅü[âNùpâèâXâgüiÉ╢ɼì╧é▌é╠âèâXâgüAé≡ùvæfÉöò╩é╔èiö[üj
every new := proc1(x) do { # ÉVé╜é╔ùvæfé≡Ä≤é»ÄµéΘüB
put(L,[]) # âèâXâg Lôαé╔üAï≤âèâXâgÆ╟ë┴
every i := *L to 1 by -1 do { # ùvæfÉöûêâèâXâgé╔é┬éóé─ûûö÷é⌐éτ
if i > 1 then { # è∙é╔üAùvæfé¬éáé┴é╜éτüAÉVé╜é╚ùvæf
every j := 1 to *L[i -1] do { # é╞ægé▌ìçéφé╣é─üA
put(L[i], comb := (L[i -1][j] ||| [new]) ) # ùvæfÉöûêâèâXâgé╔Æ╟ë┴
# ü¬iùvæfÉöâèâXâg ü¬(i-1)ùvæfÉöâèâXâg
suspend comb # ægé▌ìçéφé╣é┼É╢ɼé╡é╜ùvæfé≡ò╘é╖
}
}
else {
put(L[1],[new]) # éPùvæfâèâXâgé╔üAÉVé╜é╔ùêé╜ùvæfé≡Æ╟ë┴
suspend [new] # ÉVé╜é╔ùêé╜ùvæfé≡ò╘é╖
}
}
}
end
# ü½âfü[â^
# â\ü[âXâfü[â^É▌ÆΦü^îïë╩Åæé½Åoé╡Åêù¥
procedure main()
# ò╢ÄÜù±âfü[â^
x := "ABCD"
every show_sl(glcombf(gen_elem,x))
# ü¬éPÅdâèâXâgÅæé½Åoé╡
write()
# âèâXâgâfü[â^
x := [["A1","A2","A3"],["B1","B2","B3"],["C1","C2","C3"]]
every show_wl(glcombf(gen_elem,x))
# ü¬éQÅdâèâXâgÅæé½Åoé╡
end
-----$ COMB13.ICN ( lines:56 words:161 ) -------------------<cut here
âèâXâgôαùeò\Īé╠é╜é▀é╔üAlinké╡é─éóéΘ procedureé┼é╖üB
-----^ SHOW_L.ICN ( date:96-11-04 time:11:19 ) -------------<cut here
procedure show_sl(list)
# show_sl.icn Ver.1.1 1996/11/04 windy
# âèâXâgé╠ôαùeò\ĪüiâeâXâgü^ò\Īùpüj
every writes(" ",!list)
write()
return
end
procedure show_wl(wlist)
# show_wl.icn Ver.1.1 1996/11/03 windy
# 2ÅdâèâXâgé╠ôαùeò\ĪüiâeâXâgü^ò\Īùpüj
every list := !wlist do {
every writes(" ",!list)
write("")
}
write("")
return
end
-----$ SHOW_L.ICN ( lines:18 words:38 ) --------------------<cut here
îïë╩é═é▒éñé╚éΦé▄é╖üB
-----^ COMB13.TXT ( date:97-04-12 time:10:54 ) -------------<cut here
A
A B
B
A B C
A C
B C
C
A B C D
A B D
A C D
B C D
A D
B D
C D
D
A1 A2 A3
A1 A2 A3
B1 B2 B3
B1 B2 B3
A1 A2 A3
B1 B2 B3
C1 C2 C3
A1 A2 A3
C1 C2 C3
B1 B2 B3
C1 C2 C3
C1 C2 C3
-----$ COMB13.TXT ( lines:35 words:68 ) --------------------<cut here
òùé┬é⌐éó (TRA11936@biglobe.ne.jp/PFF01531@niftyserve.or.jp)
< Iconé╠WWWé═üAhttp://www.cs.arizona.edu/icon/index.html>
BGM: âgâëâCâAâôâOâïüEâuâïü[ü^âAâôüEâïâCâX
(icon_214.txt 1997/04/12 PCVAN PIG)
üí Icon > IconÄGïLÆáüiéPéTüj ârâfâIûΓæΦü^è╚ê╒ë≡û@ òùé┬é⌐éó
ârâfâIâeü[âvé╓é╠ÿ^ëµïlé▀ì₧é▌ûΓæΦé═üAâeü[âvéΓélécé╔ìDé½é╚ë╣èyé≡ïlé▀ì₧é±
é╛éΦüAâgâëâbâNé╔ë╫ò¿é≡ïlé▀ì₧é±é╛éΦüAÉ╢èêé╡é─éóé─Ä└ì█é╔éóéδé±é╚ÅΩû╩é┼æÿï÷
é╡é▄é╖üB
é┼éαüAÄ└ì█ôIé╔é═üAæSé─é╠ægé▌ìçéφé╣é≡ÄÄé╖é╠é┼é═é╚é¡üA
üEæσé½éóéαé╠é⌐éτüAÅçé╔ïlé▀é─éóé¡üB
üEï≤é½é¬éáéΩé╬üAé╚éΘé╫é¡æσé½éóéαé╠é≡ïlé▀é─é▌éΘüB
üEï≤é½é╔üAôⁿéΘéαé╠é¬û│é¡é╚éΘé▄é┼ÄÄé╖üB
é╞éóéñéµéñé╚éΓéΦò√éαéµé¡éΓéΦé▄é╖üB
é▒éΩé┼üAì┼ôKé╞éóéªé╚é¡é╞éαüAÄ└ùpôIé╔é═üAé╗é▒é╗é▒é╠îïë╩é¬üAô╛éτéΩé─éóéΘ
é╠é┼é╚éóé⌐é╞üAÄvéóé▄é╖üBé▒é╠éΓéΦò√é┼é╖é╞üAöΣèrôIè╚ÆPé╔âvâìâOâëâÇé┼é½é▄é╖üB
é╡é⌐é╡üAIconé┼é═ æ╜Åd listâfü[â^ì\æóé¬âTâ|ü[âgé│éΩé─éóé▄é╖é¬üAû│éóî╛îΩ
é┼é═ îïì\ û╩ô|é╚âvâìâOâëâÇé╔é╚éΘé⌐éαüB
ÿ^ëµârâfâIé╠âfü[â^ùßé≡ê°ùpé╡é─é¿é½é▄é╖üBæΦû╝é╞ÿ^ëµÄ₧è╘é¬ìsÆPê╩é╔Åæé½ì₧
é▄éΩé─éóéΘâtâ@âCâïé┼é╖üB
-----^ SOURCE.DAT ( date:97-03-23 time:19:38 ) -------------<cut here
âWâââXâeâBâX 118
û\ù═ÆEìû 127
âZâïâsâR 130
éáé╚é╜é╛é»ìíö╙é═ 137
ôVìæé⌐éτé½é╜â`âââôâsâIâô 101
âXâ^âôâhâoâCâ~ü[ 85
âtâëâôâLü[üòâWâçâjü[ 118
âXâeâBâôâO 129
âOâbâhâéü[âjâôâOâxâgâiâÇ 121
-----$ SOURCE.DAT ( lines:9 words:18 ) ---------------------<cut here
é▒éΩé≡üAÆ╖éóÅçé╔âeü[âvé╔ïlé▀é─éóé¡âvâìâOâëâÇé┼é╖üB
-----^ PACK01.ICN ( date:97-04-13 time:10:57 ) -------------<cut here
# ârâfâIûΓæΦü@è╚ê╒ë≡û@
# Æ╖éóârâfâIé⌐éτÅçé╔üAïlé▀é─éóé¡üB
# pack01.icn Rev.1.3 1997/04/13 windy ÿ^ëµÄ₧è╘é╠ò¬é≡Æ╟ë┴
# pack01.icn Rev.1.2 1997/04/13 windy âRâüâôâgÆ∙É│üEÆ╟ë┴üAôÖ
# pack01.icn Rev.1.1 1997/04/12 windy
# This file is in the public domain.
link split, show_l
procedure main(args)
# â_ârâôâOâeü[âvÄ₧è╘
t_tape := 120 # âeü[âvÄ₧è╘üiò¬üj
t_max := t_tape *3 # éRö{
# âtâ@âCâïâIü[âvâô
f_name := "source.dat"
dir := open(f_name) | stop("cannot open ",f_name)
# ÿ^ëµâfü[â^ô╟é▌ì₧é▌
L_data := []
n := 0
while line := read(dir) do { # ÿ^ëµâfü[â^âtâ@âCâïé╠Åçăô╟ì₧
L := split(line)
put(L_data,[n +:= 1,L[1],numeric(L[2])])
# ìsé≡ spaceé┼ò¬èäé╡üAɵô¬é╔ Noé≡òtë┴é╡é─üAlisté╔èiö[üB
# [1]:No [2]:æΦû╝, [3]:ÿ^ëµÄ₧è╘üiò¬üj(Rev.1.2)
}
close(dir)
write("ÿ^ëµâfü[â^") # ÿ^ëµâfü[â^ÅæÅoé╡
show_wl(L_data)
# ÿ^ëµÄ₧è╘é┼ listé≡ sort
L_data2 := sortf(L_data,3) # éRö╘û┌é╠ fieldé┼ sort
write("ÿ^ëµâfü[â^â\\ü[âgîïë╩") # ÿ^ëµâfü[â^â\ü[âgîïë╩ÅæÅoé╡
show_wl(L_data2) # "â\"é═ SJISé┼üA835c
i := 0 # ïlé▀ì₧é▌âeü[âvö╘ìå
L_out := [] # ïlé▀ì₧é▌âfü[â^èiö[ list
# [i]: âeü[âvö╘ìå
# [i][1]: ïlé▀ì₧é▌Ä₧è╘ (Åëè·Æl : [0,"ò¬"]üj(Rev.1.3)
# listé╔é╖éΘé╠é═üAshow_tlé┼èmöFé╡éΓé╖é¡é╖éΘé╜é▀ ü¬
# [i][2ü`]: ïlé▀ì₧é▌âfü[â^(list)
while *L_data2 >0 do { # ÿ^ëµâfü[â^é¬û│é¡é╚éΘûÿ (Rev.1.2)
i +:= 1 # âeü[âvö╘ìåé≡Éié▀éΘüB(Rev.1.2)
put(L_out,[[0,"ò¬"]]) # iö╘û┌âeü[âvïlé▀ì₧é▌Ä₧è╘Åëè·Ælé≡Æ╟ë┴(Rev.1.3)
every 1 to *L_data2 do { # ÿ^ëµâfü[â^æSòöé╔æ╬é╡é─
LL := pull(L_data2) # ÿ^ëµâfü[â^ĵéΦÅoé╡
# listûûö÷é⌐éτÄÄé╖üB
#üiÅ╕Åçé╚é╠é┼ûûö÷é╠ò√é¬ÿ^ëµÄ₧è╘é¬Æ╖éóüBüj
if (L_out[i][1][1] +LL[3]) <= t_max then {
put(L_out[i],LL)
L_out[i][1][1] +:= LL[3] # ÿ^ëµÄ₧è╘ìXÉV
} else {
push(L_data2,LL) # âfü[â^é≡û▀é╖
}
} # end of every
} # end of while
write("ïlé▀ì₧é▌âfü[â^üiɵô¬é═ïlé▀ì₧é▌Ä₧è╘æìÿaüj")
show_tl(L_out)
end
-----$ PACK01.ICN ( lines:65 words:204 ) -------------------<cut here
üiÅCÉ│é╠é╜é▀ì╖é╡æ╓éªüj
îïë╩é═üAăé╠éµéñé╔é╚éΦé▄é╖üB
-----^ PACK01.TXT ( date:97-04-13 time:10:57 ) -------------<cut here
ÿ^ëµâfü[â^
1 âWâââXâeâBâX 118
2 û\ù═ÆEìû 127
3 âZâïâsâR 130
4 éáé╚é╜é╛é»ìíö╙é═ 137
5 ôVìæé⌐éτé½é╜â`âââôâsâIâô 101
6 âXâ^âôâhâoâCâ~ü[ 85
7 âtâëâôâLü[üòâWâçâjü[ 118
8 âXâeâBâôâO 129
9 âOâbâhâéü[âjâôâOâxâgâiâÇ 121
ÿ^ëµâfü[â^â\ü[âgîïë╩
6 âXâ^âôâhâoâCâ~ü[ 85
5 ôVìæé⌐éτé½é╜â`âââôâsâIâô 101
1 âWâââXâeâBâX 118
7 âtâëâôâLü[üòâWâçâjü[ 118
9 âOâbâhâéü[âjâôâOâxâgâiâÇ 121
2 û\ù═ÆEìû 127
8 âXâeâBâôâO 129
3 âZâïâsâR 130
4 éáé╚é╜é╛é»ìíö╙é═ 137
ïlé▀ì₧é▌âfü[â^üiɵô¬é═ïlé▀ì₧é▌Ä₧è╘æìÿaüj
352 ò¬
4 éáé╚é╜é╛é»ìíö╙é═ 137
3 âZâïâsâR 130
6 âXâ^âôâhâoâCâ~ü[ 85
357 ò¬
8 âXâeâBâôâO 129
2 û\ù═ÆEìû 127
5 ôVìæé⌐éτé½é╜â`âââôâsâIâô 101
357 ò¬
9 âOâbâhâéü[âjâôâOâxâgâiâÇ 121
7 âtâëâôâLü[üòâWâçâjü[ 118
1 âWâââXâeâBâX 118
-----$ PACK01.TXT ( lines:38 words:90 ) --------------------<cut here
üiÅCÉ│é╠é╜é▀ì╖é╡æ╓éªüj
é╜é▄é╜é▄é⌐éα é╡éΩé▄é╣é±é¬üAîïì\ éñé▄é¡ ïlé▄é┴é─éóé▄é╖é╦üB
éRÅdâèâXâgé≡Ägéóé▄é╡é╜é╠é┼üAshow_lé╔üAé╗é╠ò\Īùp procedureé≡Æ╟ë┴
é╡é▄é╡é╜üB
-----^ SHOW_L.ICN ( date:97-04-12 time:21:07 ) -------------<cut here
# show elements of list
# This file is in the public domain.
# show_l.icn Rev.1.3 1997/04/12 windy add show_tl
# show_l.icn Rev.1.1 1996/11/03 windy
procedure show_sl(list)
# âèâXâgé╠ôαùeò\ĪüiâeâXâgü^ò\Īùpüj
every writes(" ",!list)
write()
return
end
procedure show_wl(wlist)
# 2ÅdâèâXâgé╠ôαùeò\ĪüiâeâXâgü^ò\Īùpüj
every list := !wlist do show_sl(list)
write()
return
end
procedure show_tl(tlist)
# 3ÅdâèâXâgé╠ôαùeò\ĪüiâeâXâgü^ò\Īùpüj
every list := !tlist do show_wl(list)
return
end
-----$ SHOW_L.ICN ( lines:24 words:60 ) --------------------<cut here
éñü`é±üBìíô·é═üAê╒é½é╔æûé┴é─é╡é▄é┴é╜üB
é╛é┴é─üAüué╡éτé▌é┬é╘é╡üvò√Ä«é┴é─üAæσò╧é╚é±é╛éαé±üB
òùé┬é⌐éó (TRA11936@biglobe.ne.jp/PFF01531@niftyserve.or.jp)
< Iconé╠WWWé═üAhttp://www.cs.arizona.edu/icon/index.html>
BGM: öⁿÉlöûû╜ü^âAâôüEâïâCâX
(icon_215.txt 1997/04/12 PCVAN PIG)
üí Icon > IconÄGïLÆáüiéPéUüj ârâfâIûΓæΦü^ô∩é╡éó òùé┬é⌐éó
ârâfâIâeü[âvé╓é╠ÿ^ëµïlé▀ì₧é▌ûΓæΦé╠ÅKì∞é┼é╖üBìíë±é═üAÿ^ëµâeü[âvé╠âfü[â^
é╠ægé▌ìçéφé╣é╠éñé┐üAéPû{é╠âeü[âvé╔ôⁿéΘægé▌ìçéφé╣é≡üAæSé─Åæé½Åoé╖é╞é▒éδûÿ
é≡éΓé┴é─é▌é▄é╡é╜üB
âvâìâOâëâÇé═üAÿ^ëµâfü[â^ô╟é▌ì₧é▌òö (pack02.icn)é╞üAÄ└ì█é╔ægé▌ìçéφé╣é≡É╢
ɼé╖éΘòöò¬ (pack04.icn)é╠éQé┬é╔ò¬é»é─éáéΦé▄é╖üB
é▄é╕üAÿ^ëµâfü[â^ô╟é▌ì₧é▌òöò¬é┼é╖üB main()é═é▒é┐éτé╔éáéΦé▄é╖üB
-----^ PACK02.ICN ( date:97-04-14 time:20:16 ) -------------<cut here
# ârâfâIûΓæΦ ÿ^ëµâfü[â^É▌ÆΦü^ÅæÅoé╡
# pack01.icn é⌐éτò¬ùúé╡é╜éαé╠üié╜é╛é╡üAâfü[â^Noé≡âAâïâtâ@âxâbâgé╔ò╧ìXüj
# pack02.icn Rev.1.1 1997/04/13 windy
# This file is in the public domain.
link split
procedure main(args)
# â_ârâôâOâeü[âvÄ₧è╘
t_tape := 120 # âeü[âvÄ₧è╘üiò¬üj
t_max := t_tape *3 # éRö{æ¼é┼ÿ^ëµé╖éΘé╞é╖éΘé╞
# âtâ@âCâïâIü[âvâô
f_name := if *args = 0 then "source.dat" # ÿ^ëµâfü[â^âtâ@âCâïû╝
else args[1]
# source.dat é═üAö╘ægû╝ Ä₧è╘üiò¬üjé¬üAìsûêé╔Åæé½ì₧é▄éΩé─éóéΘî`Ä«
dir := open(f_name) | stop("cannot open ",f_name)
# ÿ^ëµâfü[â^ô╟é▌ì₧é▌
L_data := [] # ÿ^ëµâfü[â^èiö[ list
n := 0 # data No
while line := read(dir) do { # ÿ^ëµâfü[â^âtâ@âCâïé╠Åçăô╟ì₧
L := split(line) # ìsé≡ spaceé┼ò¬èäé╡ listé╔ò╧è╖
put(L_data,[&letters[n +:= 1],L[1],numeric(L[2])])
# ìsé≡ spaceé┼ò¬èäé╡üAɵô¬é╔ Noé≡òtë┴é╡é─üAL_data(list)é╔èiö[üB
# [1]:No [2]:æΦû╝, [3]:ÿ^ëµÄ₧è╘üiò¬üj
# No é═âAâïâtâ@âxâbâgé≡üAÅçé╔ÉUé┴é─éóéΘüB"A"ü`"Z","a"ü`"z"é╠Åç
#
# L_data é═üAéXî┬é╠ÿ^ëµâfü[â^é¬éáéΘé╞é╖éΘé╞
# [ #ü½L_data[1][1] #ü½L_data[1][2] #ü½L_data[1][3]
# ["A",éPö╘û┌ÿ^ëµæΦû╝,éPö╘û┌ÿ^ëµÄ₧è╘üiò¬üj] # ü⌐L_data[1]
# ["B",éQö╘û┌ÿ^ëµæΦû╝,éQö╘û┌ÿ^ëµÄ₧è╘üiò¬üj] # ü⌐L_data[2]
# üiÆåù¬üj
# ["I",éXö╘û┌ÿ^ëµæΦû╝,éXö╘û┌ÿ^ëµÄ₧è╘üiò¬üj] # ü⌐L_data[9]
# ] #ü¬L_data[9][1] #ü¬L_data[9][2] #ü¬L_data[9][3]
# é╠î`Ä«é╞é╚éΘüB
}
close(dir)
# ïlé▀ì₧é▌ü^îïë╩ÅæÅoé╡
pack(L_data,t_max) # ïlé▀ì₧é▌
end
-----$ PACK02.ICN ( lines:43 words:141 ) -------------------<cut here
Ä└ì█é╔ægé▌ìçéφé╣é≡ì∞éΘòöò¬é┼é╖üB pack02.icné≡ linké╡é─éóé▄é╖üB
-----^ PACK04.ICN ( date:97-04-14 time:22:28 ) -------------<cut here
# éPû{é╠âeü[âvé╔ôⁿéΘÿ^ëµâfü[â^é╠ægé▌ìçéφé╣
# This file is in the public domain.
# pack04.icn 1997/04/13 windy
link pack02, show_l # main()é═üApack02é╔è▄é▄éΩé─éóéΘüB
# âfü[â^ xé╠ùvæfé≡üAéPé┬é╕é┬ɵô¬é⌐éτüAÅçă É╢ɼé╖éΘ generator
# x: â\ü[âXâfü[â^
procedure gen_elem(x)
suspend !x # ùvæfé≡éPé┬é╕é┬ĵéΦÅoé╖
end
# ü½âfü[â^
# âfü[â^é≡Åçă Ä≤é»ÄµéΦüAægé▌ìçéφé╣é─âèâXâgé╔é╡é╜âfü[â^é≡
# É╢ɼé╖éΘ generator
procedure glcombf(proc1,x,t_max)
# proc1: generatorû╝
# x: generatoré╠â\ü[âXâfü[â^
# t_max:âeü[âvÄ₧è╘
L := [] # âÅü[âNùpâèâXâgüiÉ╢ɼì╧é▌é╠âèâXâgüAé≡ùvæfÉöò╩é╔èiö[üj
every new := proc1(x) do { # ÉVé╜é╔ùvæfé≡Ä≤é»ÄµéΘüB
put(L,[]) # âèâXâg Lûûö÷é╔üAÉVâfü[â^æ}ôⁿùp
# ï≤âèâXâgÆ╟ë┴
every i := *L to 1 by -1 do { # ùvæfÉöûêâèâXâgé╔é┬éóé─üAûûö÷é⌐éτ
if i > 1 then { # éQé┬û┌ê╚ì~é╠âfü[â^é╠ÅΩìç
# è∙é╔üAùvæfé¬éáé┴é╜éτüAÉVé╜é╚ùvæf
every j := 2 to *L[i -1] do { # é╞ é╗é╠ùvæfé≡ægé▌ìçéφé╣é─üA
if (t := (L[i -1][j][1][1] + new[3])) <= t_max then {
LL := [[t,"ò¬"]] ||| L[i -1][j][2:0] ||| [new]
put(L[i],LL) # ùvæfÉöûêâèâXâgé╔Æ╟ë┴
# ü¬iùvæfÉöâèâXâg ü¬(i-1)ùvæfÉöâèâXâg
suspend LL # ægé▌ìçéφé╣é┼É╢ɼé╡é╜ùvæfé≡ò╘é╖
} # end of if
} # end of every
} # end of if
else { # ì┼Åëé╠âfü[â^é╠ÅΩìçüB
LL := [[new[3],"ò¬"]] ||| [new]
# ü¬ÿ^ëµÄ₧è╘ ü¬ÉVùvæf
put(L[1],LL) # éPùvæfâèâXâgé╔üAÉVé╜é╔ùêé╜ùvæfé≡Æ╟ë┴
suspend LL # ÉVé╜é╔ùêé╜ùvæfé≡ò╘é╖
} # end of else
} # end of if
} # end of every
end
# ü½âfü[â^
# pack02.icn é╠ main()é┼üAé▒é╠ pack()é≡î─é±é┼éóéΘüB
procedure pack(L_data,t_max)
# L_data # ÿ^ëµâfü[â^ list
# [j][1]:âfü[â^No, [j][2]:ÿ^ëµû╝Å╠, [j][3]:ÿ^ëµÄ₧è╘
i := 0 # ïlé▀ì₧é▌âeü[âvö╘ìå
L_out := [] # ïlé▀ì₧é▌âfü[â^èiö[ list
# i : âeü[âvö╘ìå
# [i][1] : ïlé▀ì₧é▌Ä₧è╘ (Åëè·Æl : [0,"ò¬"]üj
# Ä₧è╘é≡listé╔é╖éΘé╠é═üAshow_tlé┼èmöFé╡éΓé╖é¡é╖éΘé╜é▀
write("ÿ^ëµâfü[â^") # ÿ^ëµâfü[â^ÅæÅoé╡
show_wl(L_data) # 2Åd listôαùeò\Ī
# ægé▌ìçéφé╣âfü[â^ÅæÅoé╡
every show_wl( # ü½every é┼é▒é╠ generatoré⌐éτâfü[â^é≡ĵéΦÅoé╡üB
glcombf(gen_elem,L_data,t_max)
)
return # é▒é╠âèâ^ü[âôé═û│é¡é╞éαô«é½é▄é╖üB
#üi main()é╔Ælé≡ò╘é╖ì\ɼé┼é═é╚éóé╜é▀üj
end
-----$ PACK04.ICN ( lines:70 words:249 ) -------------------<cut here
îïë╩é═üAÆ╖éóé╠é┼Å╚ù¬é╡é▄é╖üBé▒é╠îïë╩é≡ìXé╔ægé▌ìçéφé╣é─üAùvæfé¬é╛é╘é┴é─
éóéΘéαé╠é≡ìφÅ£é╖éΩé╬üAæSé─é╠ægé▌ìçéφé╣é¬ô╛éτéΩé▄é╖üBüiù¥ÿ_ôIé╔é═üjüiè╛üj
é╡é⌐é╡ü`üAægé▌ìçéφé╣îïë╩é╠Éöé¬üA
ôûÅëé╠ éXâfü[â^é┼üA éUéWÆ╩éΦ
é╗éΩé≡éQé┬é¡é┴é┬é»é╜ éPéWâfü[â^é┼üA éTéQéUÆ╩éΦ
éRé┬é¡é┴é┬é»é╜ éQéVâfü[â^é┼üAéPéVéUéTÆ╩éΦ
éSé┬é¡é┴é┬é»é╜ éRéUâfü[â^é┼üAéSéPéWéPÆ╩éΦ
éTé┬é¡é┴é┬é»é╜ éSéTâfü[â^é┼üAéWéPéVéTÆ╩éΦ
é╞üAî│é╠âfü[â^Éöé╔öΣé╫é─üAö±Åφé╔æ╜é¡é╚éΦé▄é╖üB é▒é╠é▄é╜ægé▌ìçéφé╣é╠Éö
é═üAé╞é±é┼éαé╚éóÉöé╔é╚éΦé╗éñé┼é╖üB
æ╝é╔ù╟éóâAâïâSâèâYâÇé¬û│éóé⌐é╞üAé┐éσé┴é╞ìléªé─î⌐é▄é╡é╜é¬üAÄvéóòté½é▄é╣
é±üB
é╞éóéñû≤é┼üAârâfâIâeü[âvûΓæΦé═üAôûû╩üiëiïvé⌐éαé╡éΩé╚éóüBüjÆIÅπé░é╔é╡é▄é╖üB
üié¡éΓé╡éóé╚ü`üj
é┼éαüAìíë±é╠âvâìâOâëâÇé≡ì∞é┴é─é▌é─üAlinké≡Ägé┴é╜âvâìâOâëâÇì\ɼé╔è╓é╡é─üA
éPé┬üAÄäé╠è¿êßéóé¬î⌐é┬é⌐éΦé▄é╡é╜üB ìíë±é╠âvâìâOâëâÇé╠ì\ɼé═üA
Åπê╩ ë║ê╩
- pack02.icn ------- link - pack04.icn --------
| procedure main() | <----------- |link pack02 |
| .... | ------->|procedure pack() |
| .... | / î─é╘ | |
| pack() ----------------- | |
-------------------- ---------------------
ü½ icont -c pack02.icn üb
pack02.u1 ----- link ----->üb icont pack04.icn
pack02.u2 ü½
pack04.exe
é╞üAéóéñéαé╠é┼é╖üB é╖é╚éφé┐üAë║ê╩é╠ procedureé¬üAôⁿé┴é─éóéΘâtâ@âCâïé¬üA
Åπê╩é╠ procedureé¬ôⁿé┴é─éóéΘâtâ@âCâïé≡ linké╡é─éóé▄é╖üB
ɵé╔üA icont -c pack02.icné╞é╡é─é¿éóé─üAăé╔ icont pack04.icné╞é╡é─ linké╡
é▄é╖üBÄ└ìsâtâ@âCâïû╝é═üApack04.exeé╞é╚éΦé▄é╖üB
ïté╠üAÅπê╩âvâìâOâëâÇé¬ë║ê╩âvâìâOâëâÇé≡ linké╖éΘéΓéΦò√é═üAìíé▄é┼éαÄgé┴é─éó
é╜é╠é┼é╖é¬üAé▒éñéóéñë║ê╩âvâìâOâëâÇé¬Åπê╩âvâìâOâëâÇé≡ linké╖éΘéΓéΦò√é¬é┼é½éΘ
é╞é═üAÄvé┴é─éóé▄é╣é±é┼é╡é╜üB
âfü[â^ô╟é▌ì₧é▌òöò¬é═ô»é╢é┼üAægé▌ìçéφé╣òöò¬é≡üAÉFüXé╠éΓéΦò√é╠âvâìâOâëâÇé╔
ò╧éªéτéΩéΘé╞éóéóé╚üB é╞éóéñé▒é╞é┼üAÄÄé╡é─é▌é▄é╡é╜éτüAé┼é½é▄é╡é╜üB
òùé┬é⌐éó (TRA11936@biglobe.ne.jp/PFF01531@niftyserve.or.jp)
< Iconé╠WWWé═üAhttp://www.cs.arizona.edu/icon/index.html>
BGM: événélé`émü^âAâôüEâïâCâX
(icon_216.txt 1997/04/17 PCVAN PIG)
üí Icon > IconÄGïLÆáüiéPéVüj ì\æóæ╠ treeò\Ī òùé┬é⌐éó
ì≈é═üAëíòlé┼é═üAéαéñé╖é┴é⌐éΦùtì≈é╔é╚é┴é─éóé▄é╖é¬üAèmé⌐ÄDûyéáé╜éΦé┼é═üA
ì≈é═éTîÄé┼é╡é╜é⌐é╦üB ì≈æOÉⁿé≡Æ╟éóé⌐é»éΘù╖é╚é±é─é╠éαüAéΓé┴é─é▌é╜éóéαé±é┼
é╖é╦ü`üB
é│é─üAìíô·é═üAì\æóæ╠ (list,set,table)é╠ treeò\Īé≡éΓé┴é─é▌é▄é╖üB
Iconé┼é═üAlistéΓ setéΓ tableé╠ùvæfé╔üAì─é╤ listéΓ setéΓ tableé≡ è▄é▐
é▒é╞é¬é┼é½é─üAéóé¡éτé┼éα É[éóèKæwé╠ì\æóé≡ì∞éΘé▒é╞é┼é½é▄é╖üB Iconé╠Ådùv
é╚ô┴ÆÑé╠éPé┬é╛é╞üAÄvéóé▄é╖üB
é╡é⌐é╡üAÄäé╠ô¬é┼é═üAéQÅd listê╩é▄é┼é═üAô¬é╔òéé⌐é╫éτéΩé▄é╖é¬üAéRÅdé╠
listé╞éαé╚éΘé╞üAé╚é⌐é╚é⌐âTâbâgé═Ävéóòéé⌐é╤é▄é╣é±üB
âvâìâOâëâÇé≡Åæéóé╜é╗é╠Ä₧é═üAò¬é⌐é┴é─éóéΘé╠é┼é╖é¬üAé╡é╬éτé¡îπé╔é╚éΘé╞üA
éαéñÄ⌐ò¬é╠Åæéóé╜âvâìâOâëâÇé╠ âfü[â^ì\æóé¬üAù¥ë≡é┼é½é╚é¡é╚é┴é─éóé▄é╖üB
âRâüâôâgé┼üAâVâbâJâèé╞âfü[â^ì\æóé≡Åæéóé─é¿é»é╬ù╟éóé╠é┼é╖é¬üAé╗é╠é╜é▀é╔
é═âvâìâOâëâÇé╠ìséµéΦüAâRâüâôâgé╠ìsé╠ò√é¬üAæ╜é╖é¼éΘé¡éτéóé╔é╚éΦé▄é╖üB
âRâüâôâgé╠è╘é╔âvâìâOâëâÇé¬üAé█é┬é█é┬é╞æ╢ì▌é╖éΘéµéñé╚Å≤æ╘é╔é╚é┴é─üAé▒éΩ
é▄é╜ ô╟ë≡ɽé¬üAùÄé┐éΘé▒é╞é╔é╚éΦé▄é╖üB
é╞éóéñé▒é╞é┼üAèKæwì\æóé≡Ä¥é┬ì\æóæ╠é≡ treeÅ≤é╔ò\Īé╖éΘâvâìâOâëâÇé≡ì∞é┴
é─é▌é▄é╡é╜üB
Recursive generatoré≡Ägé┴é─üAì─ïAôIé╔ âfü[â^ì\æóé≡ÅæÅoé╡é─ éóé½é▄é╖üB
treeé╠ì┼Åëé╠ù±é╠ÅæÅoé╡é¬üAì─ïAì\æóé╔è▄é▀É╪éΩé▄é╣é±é┼é╡é─é╠é┼üAÅ¡é╡ ò¬é⌐
éΦé╔é¡é¡é╚é┴é─é╡é▄éóé▄é╡é╜üB
é▄é╜ stringé╠ôαùeò\Ī é╠é╞é▒éδé╔éαüAimage()é╞éóéñ ò\Īë┬ö\é╚ò╢ÄÜ é╚éτ
é╗é╠é▄é▄ ò\Īé╡ é╗éñé┼û│é»éΩé╬ 16ÉiÉöò\Ī é≡ìséñ è╓Éöé≡üAÄgéóé╜é⌐é┴é╜
é╠é┼é╖é¬üAâVâtâgéiéhéræ╬ë₧é┼é═û│éóé╠é┼üAÄgé┴é─éóé▄é╣é±üB
é▒é╠è╓Éöé≡âVâtâgéiéhéræ╬ë₧é╔é╡é╜ procedureé≡üAì∞éτé╚éóé╞éóé»é▄é╣é±é╦üB
-----^ X2TREE01.ICN ( date:97-04-23 time:21:05 ) -----------<cut here
# ì\æóæ╠é╠ì\ɼé≡ treeÅ≤é╔î⌐é╣éΘ generator
# Recursive generator
# x2tree01.icn 1997/04/23 windy
# This file is in the public domain.
procedure x2t(x)
# generator
# x2treeé╔è▄é▀é╜é⌐é┴é╜é¬üAéñé▄é¡éóé⌐é╚éóé╠é┼èOÅoé╡üB
suspend "<" || type(x) || ">" # xé╠â^âCâvé≡ÅæÅoé╡
suspend " " || x2tree(x) # treeë╗Åêù¥
# ü¬treeÅæÅoé╡Åëè·ê╩Æu
end
procedure x2tree(x)
# generator
# show the tree structure of x
n := *x # xé╠âTâCâYüiûûö÷ùvæfîƒÅoùpüj
every xx := !x do { # ì\æóæ╠é╠ùvæfé≡éPé┬é├é┬ĵéΦÅoé╖
n -:= 1 # ùvæfâJâEâôâ^ü|éP
case t := type(xx) of { # ì\æóæ╠é╠â^âCâvé╔éµéΦüA
"string" : suspend "+ " || left(t,7) || " " || xx
# jimageé≡ì∞éτé╚é½éßüBü¬
"list" | "set" | "table" : { # é▒é╠ÅΩìçé═üAì─ôxì\ɼùvæfé≡ë≡É═
suspend "+ <" || t || ">"
#ü½ì┼îπé╠ùvæfé┼é╚éóé╚éτ
if n > 0 then suspend "| " || x2tree(xx)
else suspend " " || x2tree(xx)
}
#ü¬list,set,tableé╚éτüAtypeé≡ÅæÅoé╡é─üAé╗é╠ÆåÉgé≡é▄é╜ë≡É═é╖éΘüB
default : suspend "+ " || left(t,7) || " " || image(xx)
# ü¬é╗é╠æ╝é╚éτüAtypeé╞Ælé≡Åæé½Åoé╖üB
}
}
end
# test driver
procedure main()
L := ["A",[],"B",10.5,["C","D",set(["X","Y"]),["E","F",127],"G"],"H"]
every write(x2t(L))
end
-----$ X2TREE01.ICN ( lines:41 words:157 ) -----------------<cut here
x2tree01 > x2tree01.txté╞é╡é╜Ä₧é╠îïë╩é┼é╖üB
-----^ X2TREE01.TXT ( date:97-04-23 time:00:30 ) -----------<cut here
<list>
+ string A
+ <list>
+ string B
+ real 10.5
+ <list>
| + string C
| + string D
| + <set>
| | + string X
| | + string Y
| + <list>
| | + string E
| | + string F
| | + integer 127
| + string G
+ string H
-----$ X2TREE01.TXT ( lines:17 words:60 ) ------------------<cut here
òùé┬é⌐éó (TRA11936@biglobe.ne.jp/PFF01531@niftyserve.or.jp)
< Iconé╠WWWé═üAhttp://www.cs.arizona.edu/icon/index.html>
BGM: The Other Side of Love / Ryuichi Sakamoto featuring Sister M
(icon_217.txt 1997/04/27 PCVAN PIG)
üí Icon > IconÄGïLÆáüiéPéWüj jimage.icn òùé┬é⌐éó
ï▀é▓éδÅæé¡ âvâìâOâëâÇé╔é═üAûwé╟ generatoré≡ Ägé┴é─éóé▄é╖üBé┬éóɵìáé▄é┼
é═üAé▒é╠ generatoré≡üAé╟éñéóéñòùé╔Ägé┴é╜éτ ù╟éóé╠é⌐ ò¬é⌐éΦé▄é╣é±é┼é╡é╜üB
ìíé═üAò╓ùÿé╚é±é┼üAÄgéªé╚éóÅèê╚èOé═üAÄgé┴é─é╡é▄éñüB é╞éóéñÅ≤æ╘é┼é╖üB
listé═üAIconï│ôT (The Icon Programming Language)é≡ô╟é±é╛é╛é»é┼üAé▒éΩé═
ò╓ùÿé╛ é╞ò¬é⌐éΦé▄é╡é╜üB
é╡é⌐é╡üAgeneratoré╠ò╓ùÿé│é═üAÄgé┴é─éóéΘé╞âWâÅâWâÅé╞î°éóé─é¡éΘüB é╚é±é┬
éñé⌐üAè┐ò√û≥é╠î°ö\Åæé½é▌é╜éóé╚ù╟é│é┼é╖üB
Ägé┴é─é▌é╚éóé╞üAéφé⌐éΦé▄é╣é±é┼é╡é╜é¬üAé╚é⌐é╚é⌐é╠âXâOâîâéâmé┼é╖üB
é▒éñéóéñù╟é│é═üAé╟éñÉαû╛é╡é─éóé»é╬éóéóé±é┼é╡éσéñé⌐é╦üBéΓé┴é╧éΦüAÄ└ùßé≡
æ≥ÄRÅæéóé─éóé¡é╡é⌐é╚éóé±é┼é╡éσéñé╦ü`üB
é╞éóéñé╞é▒éδé┼üAìíë±é═ image()è╓Éöé≡ SHIFT-JISæ╬ë₧é╔é╡é╜ procedureé≡ì∞
é┴é─é▌é▄é╖üB SHIFT-JISé╠ò╢ÄÜù±é≡ë≡É═é╖éΘ procedureé═üAIconô·ïLé┼ ì∞é┴é─
éóé▄é╖é╠é┼üAöΣèrôIè╚ÆPé╔üASHIFT-JISæ╬ë₧é╔é┼é½é▄é╖üB
âvâìâOâëâÇé≡ăé╔éáé░é▄é╖üB âfü[â^â^âCâvé¬ stringê╚èOé┼é═üAimage()é≡üA
é╗é╠é▄é▄Ägé┴é─éóé▄é╖üB
-----^ JIMAGE.ICN ( date:97-04-27 time:19:37 ) -------------<cut here
# image()é≡ SHIFT-JISæ╬ë₧é╔é╡é╜éαé╠
# jimage.icn 1997/04/27 windy
# This file is in the public domain.
link hexcvt,sjis4
# hexcvt.icné═ BIPLé╔è▄é▄éΩé─éΘüB Iconô·ïLüiéPéSüjé╔ê°ùpé╡é─éóé▄é╖üB
# sjis4.icné═ Iconô·ïLüiéQéWüjé╔é─ì∞ɼé╡é╜éαé╠üB
procedure jimage(x)
if not (type(x) == "string") then return image(x) # stringê╚èOé╚éτ
# image()é≡ÄgéñüB
else { # stringé╚éτ
s := "\"" # û▀éΦÆlæ½é╡é▒é▌ùpé╠ï≤ string
every L := jcpos(x) do {
if L[3] == ("C" | "U") #âRâôâgâìü[âïâRü[âhé⌐ûóÆΦï`ò╢ÄÜé╚éτ
then s ||:= ("\\x" || hexstring(ord(L[2]),2))
#ü¬éPéUÉiò\Īé╔ò╧è╖é╡é─ "\\"é≡é┬é»é─æ½é╡ì₧é▌
else s ||:= L[2] #ü⌐ ò╢ÄÜé╚éτé╗é╠é▄é▄æ½é╡é▒é▌
}
return s || "\""
}
end
# test data
#procedure main()
# L := ["ABC","\x00\x02",123,12.5,"éáéóéñ▒▓│abcABCé`éaébéüéééâéOéPéQ"]
# every write(jimage(!L))
#end
-----$ JIMAGE.ICN ( lines:28 words:95 ) --------------------<cut here
jimage()é≡ x2treeé╔Ägéñé╞üAăé╠éµéñé╔é╚éΦé▄é╖üB
-----^ X2TREE02.ICN ( date:97-04-27 time:19:32 ) -----------<cut here
# ì\æóæ╠é╠ì\ɼé≡ treeÅ≤é╔î⌐é╣éΘ generator
# Recursive generator
# x2tree02.icn 1997/04/27 windy
# x2tree01.icn é╠ main()é≡âRâüâôâgâAâEâgé╡üAjimage()é≡ô▒ôⁿüB
# This file is in the public domain.
link jimage
procedure x2t(x)
# generator
# x2treeé╔è▄é▀é╜é⌐é┴é╜é¬üAéñé▄é¡éóé⌐é╚éóé╠é┼èOÅoé╡üB
suspend "<" || type(x) || ">"
suspend " " || x2tree(x)
end
procedure x2tree(x)
# generator
# show the tree structure of x
n := *x
every xx := !x do { # ì\æóæ╠é╠ùvæfé≡éPé┬é├é┬ĵéΦÅoé╖
n -:= 1
case t := type(xx) of { # ì\æóæ╠é╠â^âCâvé╔éµéΦüA
"string" : suspend "+ " || left(t,7) || " " || jimage(xx)
"list" | "set" | "table" : {
suspend "+ <" || t || ">"
if n > 0 then suspend "| " || x2tree(xx)
else suspend " " || x2tree(xx)
} # ì─ïAü¬
#ü¬list,set,tableé╚éτüAtypeé≡ÅæÅoé╡é─üAé╗é╠ÆåÉgé≡é▄é╜ë≡É═é╖éΘüB
default : suspend "+ " || left(t,7) || " " || image(xx)
# ü¬é╗é╠æ╝é╚éτüAtypeé╞Ælé≡Åæé½Åoé╖üB
}
}
end
# test driver
#procedure main()
# L := ["A",[],"B",10.5,["C","D",set(["X","Y"]),["E","F",127],"G"],"H"]
# every write(x2t(L))
#end
-----$ X2TREE02.ICN ( lines:39 words:152 ) -----------------<cut here
SHIFT-JISæ╬ë₧é╔é╡é╜üAx2treeé┼üAârâfâIïlé▀ì₧é▌âvâìâOâëâÇé╠è╚ê╒ë≡û@é┼Ägé┴é─
éóéΘ listé╠ì\æóé≡Åæé½Åoé╖é╞üAăé╠éµéñé╔é╚éΦé▄é╖üB
ïlé▀ì₧é▌é¬ÅIéφé┴é╜Å≤æ╘é≡ÅæÅoé╡é─éóé▄é╖üB æOé╠âoü[âWâçâôé╞é╠êßéóé═üAstring
é¬üA""é┼èçéτéΩé─é¡éΘé╛é»é┼é╖üBüiè╛üj
-----^ PACK05.TXT ( date:97-04-27 time:19:38 ) -------------<cut here
ïlé▀ì₧é▌âfü[â^
<list>
+ <list>
| + <list>
| | + integer 352
| | + string "ò¬"
| + <list>
| | + integer 4
| | + string "éáé╚é╜é╛é»ìíö╙é═"
| | + integer 137
| + <list>
| | + integer 3
| | + string "âZâïâsâR"
| | + integer 130
| + <list>
| + integer 6
| + string "âXâ^âôâhâoâCâ~ü["
| + integer 85
+ <list>
| + <list>
| | + integer 357
| | + string "ò¬"
| + <list>
| | + integer 8
| | + string "âXâeâBâôâO"
| | + integer 129
| + <list>
| | + integer 2
| | + string "û\ù═ÆEìû"
| | + integer 127
| + <list>
| + integer 5
| + string "ôVìæé⌐éτé½é╜â`âââôâsâIâô"
| + integer 101
+ <list>
+ <list>
| + integer 357
| + string "ò¬"
+ <list>
| + integer 9
| + string "âOâbâhâéü[âjâôâOâxâgâiâÇ"
| + integer 121
+ <list>
| + integer 7
| + string "âtâëâôâLü[üòâWâçâjü["
| + integer 118
+ <list>
+ integer 1
+ string "âWâââXâeâBâX"
+ integer 118
-----$ PACK05.TXT ( lines:50 words:185 ) -------------------<cut here
òùé┬é⌐éó (TRA11936@biglobe.ne.jp/PFF01531@niftyserve.or.jp)
< Iconé╠WWWé═üAhttp://www.cs.arizona.edu/icon/index.html>
BGM: éuéëéûéëéàéÄü^Ä┬î┤öⁿûτÄq
(icon_218.txt 1997/04/27 PCVAN PIG)
üí Icon > IconÄGïLÆáüiéPéXüj ì\æóæ╠ treeò\ĪüiéQüj òùé┬é⌐éó
Iconé╠ì\æóæ╠(list,set,table)é═üAé╗é╠ùvæfé╔é▄é╜ list,set,tableé≡Ä¥é─é▄é╖
é¬üAÄ⌐ò¬Ä⌐Égé≡é╗é╠ùvæfé╔Ä¥é┬é▒é╞éαé┼é½é▄é╖üB ì─ïAôIé╚ì\æó é╞é┼éα éóéóé▄é╡
éσéñé⌐üB é╟é±é╚ÅΩìçé╔Ägéñé⌐é╞éóéñé╞üAùßéªé╬ì─ïAì\ɼé╠âvâìâOâëâÇé╠ì\æóé≡üA
ò\éφé╗éñé╞ é╖éΘé╞üAì─ïAôIé╚ì\æóæ╠é¬òKùvé╔é╚éΦé▄é╖üB
æOé╔ì∞é┴é╜ treeò\Īé╠âvâìâOâëâÇ(x2tree01.icn, x2tree02.icn)é═üAé╗éñéóéñ
ì\æóæ╠é╠ÅΩìçé┼éαüAæfÆ╝é╔ò\Īé╡é─éóé½é▄é╖é╠é┼üAëäüX treeé≡Åæé½Åoé╡é▄é╖üB
âTâôâvâïâvâìâOâëâÇé≡ăé╔Īé╡é▄é╖üB
ëäüXÅæé½Åoé│éΩé─éαìóéΘé╠é┼üAgeneratoré╠É╢ɼÉöî└ÆΦÄwÆΦé┼üAéQéOî┬ûÿé╞é╡é─
éóé▄é╖üB
-----^ RECUR01.ICN ( date:97-04-30 time:09:09 ) ------------<cut here
# ì─ïAé≡è▄é▐ì\æóé╠ treeÅæÅoé╡
# recur01.icn 1997/04/30 windy
# This file is in the public domain.
link x2tree02 #ü⌐ì─ïAûóæ╬ë₧ö┼
procedure main()
L1 := ["A","B"]
L2 := ["C","D"]
L3 := ["E","F"]
put(L1,L2) # L1é╠ûûö÷é╔ L2é≡Æ╟ë┴
put(L2,L3) # L2é╠ûûö÷é╔ L3é≡Æ╟ë┴
put(L1,L3) # L1é╠ûûö÷é╔éα L3é≡Æ╟ë┴
put(L3,L1) # L3é╠ûûö÷é╔ Ä⌐ò¬é╠Åπê╩é╠ L1é≡Æ╟ë┴üié▒é▒é┼ì─ïAé╞é╚éΘüBüj
every write(x2t(L1) \20)
#ü¬âeâXâgé≡â~âXé╡é╜é╞é½é╔üA20î┬é┼Ä~é▀éΘé╜é▀üB
end
-----$ RECUR01.ICN ( lines:17 words:51 ) -------------------<cut here
recur01 >recur01.txté╞é╡é╜Ä₧é╠îïë╩é┼é╖üB
-----^ RECUR01.TXT ( date:97-04-30 time:09:18 ) ------------<cut here
<list>
+ string "A"
+ string "B"
+ <list>
| + string "C"
| + string "D"
| + <list>
| + string "E"
| + string "F"
| + <list>
| + string "A"
| + string "B"
| + <list>
| | + string "C"
| | + string "D"
| | + <list>
| | + string "E"
| | + string "F"
| | + <list>
| | + string "A"
-----$ RECUR01.TXT ( lines:20 words:75 ) -------------------<cut here
é╞éóéñû≤é┼üAì─ïAì\æóé╠ÅΩìçé═üAì─ïA(Recursion)é╞ò\Īé╡é─ é╗é▒é┼ treeé¬
æ┼Ä~é▀é╞é╚éΘéµéñé╔ x2treeé≡ ÅCÉ│é╡é─é▌é▄é╡é╜üB
Iconé┼é═üAì\æóæ╠é═ listé┼Ä└î╗é╡é─éóé▄é╖üB é╗é╡é─ listé╠ö╘ìåé≡ô╛éΘè╓Éö
serial()é¬éáéΦé▄é╖üB
é▒é╠è╓Éöé≡Ägé┴é─üAlistö╘ìåé≡ÅWìç Sé╔ôoÿ^é╡é─é¿éóé─üAè∙é╔î╗éΩé╜ listé¬
ì─é╤ùvæfé╞é╡é─î╗éΩé╜é╚éτì─ïAé╞ö╗Æfé╡é─éóé▄é╖üB
ë╜Åêé⌐éτë╜Åêé▄é┼ì─ïAé╖éΘé╠é⌐ò¬é⌐éΘéµéñé╔üAlisté╠ö╘ìåéαò\Īé╡é▄é╖üB
é▄é╜üAòíÉöé╠Ä}é╔ô»é╢ listé¬è▄é▄éΩéΘÅΩìçéαéáéΦé▄é╖é╠é┼üAÄ⌐ò¬éµéΦèεé╠
ò√é╔éáéΘ listé╠é▌ÅWìç Sé╔æ╢ì▌é╖éΘé╖éΘéµéñé╔üAì─ïAé⌐éτé╠û▀éΦé╠Ä₧ô_é┼üA
ö╘ìåé≡ìφÅ£é╡é─éóé▄é╖üBüisuspend ... do ... é╠é╞é▒éδüBüj
-----^ X2TREE03.ICN ( date:97-05-01 time:10:17 ) -----------<cut here
# ì\æóæ╠é╠ì\ɼé≡ treeÅ≤é╔î⌐é╣éΘ generator
# Recursive generator
# x2tree03.icn Rev.1.1 1997/04/30 windy Rev.1.2 1997/05/01 windy
# x2tree02.icn é≡ Recursiveì\æóæ╠üiÄ⌐ò¬Ä⌐Égé≡ùvæfé╔è▄é▐üjæ╬ë₧ÅCÉ│üB
# This file is in the public domain.
link jimage
procedure x2t(x)
# generator
# x2treeé╔è▄é▀é╜é⌐é┴é╜é¬üAéñé▄é¡éóé⌐é╚éóé╠é┼ èOÅoé╡üB
suspend "<" || type(x) || " " || string(serial(x)) || ">"
#ü¬listé╠ serial No
suspend " " || x2tree(x)
end
procedure x2tree(x)
# generator
# show the tree structure of x
static S # serial No ôoÿ^ùp
initial {
S := set([serial(x)]) # serial Noé≡ Sé╔ôoÿ^
}
n := *x # Ä}é╠ûûÆ[îƒÅoùp
every xx := !x do { # ì\æóæ╠é╠ùvæfé≡éPé┬ é├é┬ĵéΦÅoé╖
n -:= 1
case t := type(xx) of { # ì\æóæ╠é╠â^âCâvé╔éµéΦüA
"string" : suspend "+ " || left(t,7) || " " || jimage(xx)
#ü½list,set,tableé╚éτüAtypeé≡ÅæÅoé╡é─üAé╗é╠ÆåÉgé≡é▄é╜ë≡É═é╖éΘüB
"list" | "set" | "table" : {
if not member(S,m := serial(xx)) then { # ì─ïAì\æóé┼ é╚é»éΩé╬
# Sé╔è∙é╔ôoÿ^ì╧é▌é╚éτì─ïAì\æó
insert(S,m) # serial Noé≡ Sé╓ôoÿ^
suspend "+ <" || t || " " || string(m) || ">"
suspend (if n > 0 then "| " else " ") || # Rev.1.2 if...then
#ü¬Ä}é╠ôrÆå #ü¬Ä}é╠ûûÆ[ # else...é╠ÅτÆ╖ÅCÉ│
x2tree(xx) do delete(S,m)
# ì─ïAü¬ #ü¬ôoÿ^é≡ìφÅ£
}
else { # ì─ïAì\æó é╚éτé╬üAÅæé½Åoé╖é╞âLâèé¬û│éóé╠é┼æ┼Ä~é▀
return "+ <" || t || " " || string(m) || "> (Recursion)"
}
}
#ü½é╗é╠æ╝é╚éτüAtypeé╞Ælé≡Åæé½Åoé╖üB
default : suspend "+ " || left(t,7) || " " || image(xx)
}
}
end
# test driver
#procedure main()
# L1 := ["A","B"]
# L2 := ["C","D"]
# L3 := ["E","F"]
# put(L1,L2)
# put(L2,L3)
# put(L1,L3) # suspend doé¬ô¡éóé─éóéΘé⌐é╠âeâXâg
# put(L3,L1) # Recursiveé╠ stopperé¬ô¡éóé─éóéΘé⌐é╠âeâXâg
# every write(x2t(L1) \20) # \20é═üAâeâXâgé≡âhâWâbé╜Ä₧é╔üA20î┬é┼Ä~é▀éΘé╜é▀üB
#end
-----$ X2TREE03.ICN ( lines:58 words:257 ) -----------------<cut here
üiÅCÉ│ö┼é╔ì╖é╡æ╓éªüj
üiÆ╟ïLüFé┼éαüAé▒é╠âvâìâOâëâÇé╔é═üAé▄é╛Å¡é╚é¡é╞éαüAéRé┬é╠â~âXé¬éáéΦé▄é╖üB
é╟é▒é¬ûΓæΦé╚é╠é⌐ ìléªé─é▌é─ë║é│éóüB é╗é╠ÅCÉ│é═üAăé╠âVâèü[âYé┼üBüj
(Note: This program has at least 3 mistakes. Please find them. They will be
shown in the next guidebook.)
recur01.icné╠ linkÄwÆΦé≡ò╧éªé╜é╛é»é╠éαé╠é┼é╖üB
-----^ RECUR02.ICN ( date:97-04-30 time:09:43 ) ------------<cut here
# ì─ïAé≡è▄é▐ì\æóé╠ treeÅæÅoé╡
# recur02.icn 1997/04/30 windy
# This file is in the public domain.
link x2tree03 #ü⌐ì─ïAæ╬ë₧ö┼
procedure main()
L1 := ["A","B"]
L2 := ["C","D"]
L3 := ["E","F"]
put(L1,L2) # L1é╠ûûö÷é╔ L2é≡Æ╟ë┴
put(L2,L3) # L2é╠ûûö÷é╔ L3é≡Æ╟ë┴
put(L1,L3) # L1é╠ûûö÷é╔ L3é≡Æ╟ë┴
put(L3,L1) # L3é╠ûûö÷é╔ Ä⌐ò¬é╠Åπê╩é╠ L1é≡Æ╟ë┴üié▒é▒é┼ì─ïAé╞é╚éΘüBüj
every write(x2t(L1) \20)
#ü¬âeâXâgé≡â~âXé╡é╜é╞é½é╔üA20î┬é┼Ä~é▀éΘé╜é▀üB
end
-----$ RECUR02.ICN ( lines:17 words:51 ) -------------------<cut here
üiÅCÉ│ö┼é╔ì╖é╡æ╓éªüj
recur02 >recur02.txté╞é╡é╜Ä₧é╠îïë╩é┼é╖üB
-----^ RECUR02.TXT ( date:97-05-01 time:10:07 ) ------------<cut here
<list 1>
+ string "A"
+ string "B"
+ <list 2>
| + string "C"
| + string "D"
| + <list 3>
| + string "E"
| + string "F"
| + <list 1> (Recursion)
+ <list 3>
+ string "E"
+ string "F"
+ <list 1> (Recursion)
-----$ RECUR02.TXT ( lines:14 words:49 ) -------------------<cut here
òùé┬é⌐éó (TRA11936@biglobe.ne.jp/PFF01531@niftyserve.or.jp)
< Iconé╠WWWé═üAhttp://www.cs.arizona.edu/icon/index.html>
BGM: ë═éµéΦéαÆ╖é¡éΣéΘéΓé⌐é╔ü^Ä┬î┤öⁿûτÄq
(icon_219.txt 1997/04/30 PCVAN PIG)
üí Icon > IconÄGïLÆáüiéQéOüj dir2treeüiéPüj òùé┬é⌐éó
é╣é┴é⌐é¡üAtreeò\Īé╠âvâìâOâëâÇé≡ Åæé½é▄é╡é╜é╠é┼üAê╚æOé⌐éτ éΓéΦé╜é⌐é┴é╜
directoryé╠ treeò\ĪéαéΓé┴é─é▌é▄é╡éσéñüB
MS-DOSé╠üAdir /s âRâ}âôâhé┼üAdirectoryÅεò±é≡ ì─ïAôIé╔ ô╛éΘé▒é╞ é¬ é┼é½
é▄é╖üB é▒é╠Åεò±é≡ treeò\Īé╡é─é▌é▄é╖üB
MS-DOSé╠üAdir /s é┼üAăé╠éµéñé╚âfü[â^é¬ô╛éτéΩé▄é╖üB sub-directoryôαé╠
fileéΓ sub-directoryé╠Åεò±é¬üAÅçăé┼é─é½é▄é╖üB
d:\icon\lec24é¬ current directoryé╠Ä₧é╔ dir /s test_a é╞é╡é╜ Ä₧é╠ îïë╩
é┼é╖üB
-----^ TEST_A_D.TXT ( date:97-05-03 time:00:33 ) -----------<cut here
âhâëâCâu D: é╠â{âèâàü[âÇâëâxâïé═éáéΦé▄é╣é±.
â{âèâàü[âÇâVâèâAâïö╘ìåé═ 2727-1AF8
âfâBâîâNâgâèé═ D:\ICON\LEC24\TEST_A
. <DIR> 97-04-29 21:51 .
.. <DIR> 97-04-29 21:51 ..
TEST_B <DIR> 97-04-29 21:52 TEST_B
BBB TXT 10 97-04-29 21:56 BBB.TXT
TEST_CCC TXT 15 97-04-29 21:57 TEST_CCC.TXT
TEST_C <DIR> 97-04-29 21:55 TEST_C
AAA 6 97-04-29 21:56 AAA
3 î┬ 31 âoâCâgé╠âtâ@âCâïé¬éáéΦé▄é╖
âfâBâîâNâgâèé═ D:\ICON\LEC24\TEST_A\TEST_B
. <DIR> 97-04-29 21:52 .
.. <DIR> 97-04-29 21:52 ..
HHH TXT 10 97-04-29 21:59 HHH.TXT
TEST_D <DIR> 97-04-29 21:52 TEST_D
TEST_III TXT 15 97-04-29 22:00 TEST_III.TXT
GGG 6 97-04-29 21:59 GGG
3 î┬ 31 âoâCâgé╠âtâ@âCâïé¬éáéΦé▄é╖
âfâBâîâNâgâèé═ D:\ICON\LEC24\TEST_A\TEST_B\TEST_D
. <DIR> 97-04-29 21:52 .
.. <DIR> 97-04-29 21:52 ..
KKK TXT 10 97-04-29 22:01 KKK.TXT
TEST_LLL TXT 15 97-04-29 22:02 TEST_LLL.TXT
JJJ 6 97-04-29 22:01 JJJ
3 î┬ 31 âoâCâgé╠âtâ@âCâïé¬éáéΦé▄é╖
âfâBâîâNâgâèé═ D:\ICON\LEC24\TEST_A\TEST_C
. <DIR> 97-04-29 21:55 .
.. <DIR> 97-04-29 21:55 ..
EEE TXT 10 97-04-29 21:58 EEE.TXT
TEST_FFF TXT 15 97-04-29 21:58 TEST_FFF.TXT
DDD 6 97-04-29 21:58 DDD
3 î┬ 31 âoâCâgé╠âtâ@âCâïé¬éáéΦé▄é╖
êΩùùé╠âtâ@âCâïæìÉö:
12 î┬ 124 âoâCâgé╠âtâ@âCâïé¬éáéΦé▄é╖
11 ├▐¿┌╕─╪ 3,391,488 âoâCâgé╠ï≤é½é¬éáéΦé▄é╖
-----$ TEST_A_D.TXT ( lines:46 words:161 ) -----------------<cut here
é▒é╠Åεò±é≡ sub-directoryûêé╔üAÅçă listé╔é▄é╞é▀é─üAìXé╔üAé╗é╠ listé≡
ÉeÄqè╓îWé╔Å]é┴é─üAé┬é╚éóé┼éóé¡ò√Ä«é╞é╡é▄é╖üB
éóé½é╚éΦüAæSòöé╠ programé≡ ì∞éδéñé╞é╡é╜é╠é┼é╖é¬üAéφé»éφé⌐é▀ é╔é╚é┴é─
é╡é▄éóé▄é╡é╜é╠é┼üAè╚ÆPé╚Ä└î▒ programé≡ɵé╔ì∞é┴é─é▌éΘé▒é╞é╔é╡é▄é╡é╜üB
-----^ TEST220B.ICN ( date:97-05-03 time:00:01 ) -----------<cut here
# dir2treeÅKì∞
# MS-DOSé╠ "dir /s"é¬É╢ɼé╖éΘ sub-directoryûêé╠Åεò±é≡ listé╔èiö[é╡é─é¿é½
# é╗é╠ listé≡ linké╡é─éóé¡éΓéΦò√é╠Ä└î▒üBlinké╠é╜é▀é╠Åεò±é═ sub-directory
# Åεò±é╔è▄é▄éΩé─éóéΘé¬üAé╟éñéΓé┴é─ linké≡é╖éΘé⌐ é╞éóéñé▒é╞é┼üA tableé≡Äg
# é┴é─ listé╠ùvæfé╠ê╩Æué≡èoéªé─é¿é¡ò√Ä«é╠Ä└î▒é≡ìsé┴é╜üB é▒éΩé┼âCâPé╗éñüB
# Ä└ì█é╠âvâìâOâëâÇé═üAloopì\ɼé╔é╖éΘüB
# test220b.icn 1997/05/02 windy
# This file is in the public domain.
link x2tree03 # treeò\Ī
procedure main()
T := table()
L := []
# top directory "D0" ôoÿ^é╠û═ï[
LL := [] # directory data buffer
s := "D1" # directory nameÅεò±
LLL := [] # sub-directory data buffer
put(LLL,s) # sub-directoryé╠û═ï[
put(LL,"D0","A0",LLL,"A1") # sub-directoryùvæfé╠ LLé╓é╠ôoÿ^
put(L,LL) # ôoÿ^
insert(T,s,LLL) # tableôoÿ^ LLLé╠ÅΩÅèé≡èoéªé─é¿é¡é╜é▀
# Æåè╘é╠ directory "D1" ôoÿ^é╠û═ï[
LL := [] # directory data buffer
s := "D2" # directory nameÅεò±
LLL := [] # sub-directory data buffer
put(LLL,s) # sub-directoryé╠û═ï[
put(LL,"D1","B0",LLL,"B1") # sub-directoryùvæfé╠ LLé╓é╠ôoÿ^
put(\T[LL[1]] | L,LL) # ôoÿ^
insert(T,s,LLL) # tableôoÿ^ LLLé╠ÅΩÅèé≡èoéªé─é¿é¡é╜é▀
# ûûÆ[é╠ directory "D2" ôoÿ^é╠û═ï[
LL := [] # directory data buffer
put(LL,"D2","C0","C1") # sub-directoryùvæfé╠ LLé╓é╠ôoÿ^
put(\T[LL[1]] | L,LL) # ôoÿ^
write("L")
every write(x2t(L) \20)
write("T")
every write(x2t(T) \20)
#ü¬âeâXâgé≡â~âXé╡é╜é╞é½é╔üA20î┬é┼Ä~é▀éΘé╜é▀üB
end
-----$ TEST220B.ICN ( lines:43 words:159 ) -----------------<cut here
îïë╩é═ăé╠éµéñé╔é╚éΦé▄é╖üB é╚é±é╞é⌐üAé┬é╚é¬é┴é╜é▌é╜éóé┼é╖üB
âfü[â^ì\æóé╠ò\Ī programé═üAîïì\û≡é╔ùºé┐é▄é╖é╦üBüiÄ⌐ëµÄ⌐Ä^üj
-----^ TEST220B ( date:97-05-03 time:00:02 ) ---------------<cut here
L
<list 1>
+ <list 2>
+ string "D0"
+ string "A0"
+ <list 3>
| + string "D1"
| + <list 4>
| + string "D1"
| + string "B0"
| + <list 5>
| | + string "D2"
| | + <list 6>
| | + string "D2"
| | + string "C0"
| | + string "C1"
| + string "B1"
+ string "A1"
T
<table 1>
+ <list 5>
| + string "D2"
| + <list 6>
| + string "D2"
| + string "C0"
| + string "C1"
+ <list 3>
+ string "D1"
+ <list 4>
+ string "D1"
+ string "B0"
+ <list 5>
| + string "D2"
| + <list 6>
| + string "D2"
| + string "C0"
| + string "C1"
+ string "B1"
-----$ TEST220B ( lines:38 words:134 ) ---------------------<cut here
æ▒é½é═üAăë±é╔üB
òùé┬é⌐éó (TRA11936@biglobe.ne.jp/PFF01531@niftyserve.or.jp)
< Iconé╠WWWé═üAhttp://www.cs.arizona.edu/icon/index.html>
BGM: La Fiesta / Chick Corea
(icon_220.txt 1997/05/03 PCVAN PIG)
üí Icon > IconÄGïLÆáüiéQéPüj dir2treeüiéQüj òùé┬é⌐éó
directoryé╠ treeò\Ī programé╠æ▒é½é┼é╖üB Ä└î▒é¬üAéñé▄é¡éóé½é▄é╡é╜é╠é┼
ăé═üAÄ└ì█é╠ programé┼é╖üB
üEdir /s é╠âRâ}âôâhö¡ìsüAîïë╩é╠ĵéΦôⁿéΩ
üEîïë╩é╠ listé╓é╠ò╧è╖üAÉeÄqè╓îWé╔Å]é┴é─ link
üEîïë╩é╠ò\Īüiò╩é╠ procedure)
é╠ì\ɼé╔é╚é┴é─éóé▄é╖üB
-----^ DIR2TREE.ICN ( date:97-05-03 time:13:22 ) -----------<cut here
# âfâBâîâNâgâèü[é≡ treeò\Īé╖éΘüB
# dir2tree.icn Ver.1.1 1997/05/03 windy 1997/05/03 Ver1.2 windy âRâüâôâgÆ╟ë┴
# This file is in the public domain.
# Usage : dir2tree directory_name
# "dir /s" é≡ö¡ìsé╡é─ ô╛é╜ âfâBâîâNâgâèü[Åεò±é≡ tree ò\Īé╖éΘüB
#link x2tree04 # testùp
procedure main(args)
#######################
# directoryÅεò±é≡ô╛éΘüB
#######################
dir_name := if *args > 0 then args[1] else ""
tmp := "$$$tmp.$$$" # âeâôâ|âëâèâtâ@âCâïû╝É▌ÆΦ
# ü½è┬ï½ò╧Éöé╔üAâeâôâ|âëâèü[âfâBâîâNâgâèû╝é¬üAÉ▌ÆΦé╡é─éáéΩé╬âtâ@âCâïû╝
# é╠æOé╔Æ╟ë┴
if s := getenv("TMP") then tmp := s || "\\" || tmp
# âRâ}âôâhâëâCâôé╠ âfâBâîâNâgâèü[û╝ÄwÆΦ é≡éαé╞é╔üA"dir /s" âRâ}âôâh é≡
# ö¡ìsé╡é─ tmpé╓Åoù═
system("dir /s " || dir_name || " >" || tmp)
# directory data sample ü½é▒é±é╚âfü[â^é¬ tmpé╔èiö[é│éΩé▄é╖üB
#1 16
#âfâBâîâNâgâèé═ D:\ICON\LEC24\TEST_A
#
#. <DIR> 97-04-29 21:51 .
#.. <DIR> 97-04-29 21:51 ..
#TEST_B <DIR> 97-04-29 21:52 TEST_B
#BBB TXT 10 97-04-29 21:56 BBB.TXT
#TEST_CCC TXT 15 97-04-29 21:57 TEST_CCC.TXT
#TEST_C <DIR> 97-04-29 21:55 TEST_C
#AAA 6 97-04-29 21:56 AAA
# 3 î┬ 31 âoâCâgé╠âtâ@âCâïé¬éáéΦé▄é╖
#
#êΩùùé╠âtâ@âCâïæìÉö:
######################
# dir /s (dir_name)îïë╩é⌐éτüAdirectoryûêé╠Åεò±é≡ listé╓ ôoÿ^
######################
dir := open(tmp) | stop("cannot open " || tmp) # tmpâtâ@âCâïâIü[âvâô
L_dir := [] # directoryÅεò±ôoÿ^ùp list
T_dir := table() # sub-directory listÄQÅ╞ table
while line := read(dir) do {
# directoryÅεò±é≡ directoryûêé╔üAêΩÆU list(LL)é╔é▄é╞é▀é─üAôoÿ^é╖éΘüB
line ? {
#ü½listé╔é▄é╞é▀é╜ directoryÅεò±é≡ôoÿ^
if find("î┬") then put(\T_dir[c_dir] | L_dir,LL)
#ü¬tableé╔ c_diré¬æ╢ì▌é╖éΩé╬
if match(" ") then next # é▓é▌ìsé≡û│Äï
if match("êΩ") then break # "êΩùùé╠üDüDüD"é¬ùêé╜éτÅIéφéΦ
L := p_split() # lineé≡ " "é┼ò¬èäü¿[1]:èJÄnê╩Æu
# [2]:ùvæf
#ü½lineé╠éPö╘û┌é╠ùvæf
case L[1][2] of {
"âfâBâîâNâgâèé═" : { LL := [] # directory data buffer
# ü½lineé╠éQö╘û┌é╠ùvæfé╠èJÄnê╩Æu
c_dir := line[L[2][1] : 0]
put(LL,[c_dir])
#ü¬listé╔é╡é─ LLé╔Æ╟ë┴
}
"." : next # û│Äï
".." : put(LL[1],line) # é╗é╠ directoryÄ⌐Égé╠Åεò±üB
# âgâbâvé╠ directoryê╚èOé┼é═òKùv
# é╚éóé¬üAæSé─é╔é┬é½èiö[
default : { if find("<DIR>") # sub-directoryé╛é┴é╜éτ
then {
put(LL,LLL := [line]) # ôαùeé≡ bufferé╔Æ╟ë┴
insert(T_dir,c_dir || "\\" || L[1][2] ,LLL)
# ü¬sub-directoryû╝Å╠é≡ keyé╔é╡é─ tableé╓ôoÿ^
}
else put(LL,line) # Æ╩Åφ fileé╚éτé╗é╠é▄é▄Æ╟ë┴
}
} # end of case
} # end of line ?
} # end of while
close(dir)
remove(tmp) # delete tmp
#######################
# directoryÅεò±é╠ò\Ī
#######################
# every write(x2t(L_dir)) # listôαùeèmöFùpò\Ī
# stop()
every write(d2t(L_dir))
end
########################
# directory treeò\Ī
########################
procedure d2t(L)
# top directoryé╠û╝æOü^time_stampÅêù¥
L1 := get(L) # Lé╔é═éPî┬é╡é⌐ùvæfé¬û│éóüBé╗éΩé≡ĵéΦÅoé╖üB
L2 := get(L1) # é╗é╠é▄é╜ top (directory_name,time_stamp)é≡ĵéΦÅoé╖üB
suspend L2[1] || L2[2][14:-3] # top directoryé╠û╝æOé╞ time stamp
suspend " " || d2tree(L1) # treeë╗Åêù¥
# ü¬treeÅæÅoé╡Åëè·ê╩Æu
end
procedure d2tree(L)
# directoryé╠Åêù¥
# show the tree structure of directory
n := *L # Lé╠âTâCâYüiûûö÷ùvæfîƒÅoùpüj
every LL := !L do { # listé╠ùvæfé≡éPé┬é├é┬ĵéΦÅoé╖
n -:= 1 # ùvæfâJâEâôâ^ü|éP
case t := type(LL) of { # ùvæfé╠â^âCâvé╔éµéΦüA
"string" : suspend "+ " || LL # file
"list" : { # sub-directory
suspend "+ " || get(LL) # sub-directoryÄ⌐æ╠ò\Ī
LLL := get(LL) # sub-directoryé╠ÆåÉgé≡ĵéΦÅoé╡
get(LLL) # ɵô¬ùvæfé≡ô╟é▌ö≥é╬é╡
#ü½ì┼îπé╠ùvæfé┼é╚éóé╚éτ
suspend (if n > 0 then "| " else " ") || d2tree(LLL)
}
default : stop("error")
}
}
end
########################
# stringé≡ cé≡ïµÉ╪éΦé╔é╡é─ò¬èäé╡é─üAèJÄnê╩Æué╞ùvæfé≡ò╘é╖üB
########################
# ô«ì∞é═üAIconôⁿûσìuì└üiéVüj Iconé╠ô┴ÆÑüiéTüjâXâLâââôé≡ÄQìlé╔é╡é─ë║é│éóüB
procedure p_split(line,c)
/c := ' \t' # default
/line := &subject # default
list := [] # û▀éΦÆlùp list
line ? {
while tab(ps := upto(~c)) do
put(list,[ps,tab(pe := many(~c))])
}
return list
end
-----$ DIR2TREE.ICN ( lines:134 words:505 ) ----------------<cut here
üiâRâüâôâgÆ╟ë┴é╠é╜é▀ì╖é╡æ╓éªüj
üiÆ╟ïL é▒é╠ programé═ root directoryé╔é┬éóé─é═üAéñé▄é¡ô«é½é▄é╣é±üB
root é┼éαüAô«é¡éµéñé╔ÅCÉ│é╡é─é▌é─é¡é╛é│éóüB üiè╛üj
(Note This program does not work at root directory.
Please change this program to work at root directory.)
Æ╖é¡é╚éΦé▄é╡é╜é╠é┼üAîïë╩é═ăë±é╔üB
òùé┬é⌐éó (TRA11936@biglobe.ne.jp/PFF01531@niftyserve.or.jp)
< Iconé╠WWWé═üAhttp://www.cs.arizona.edu/icon/index.html>
BGM: La Fiesta / Chick Corea
(icon_221.txt 1997/05/03 PCVAN PIG)
üí Icon > IconÄGïLÆáüiéQéQüj dir2treeüiéRüj òùé┬é⌐éó
directoryé╠ treeò\Ī programé╠æ▒é½é┼é╖üB sub-directoryûêé╠ listé≡ÿAîï
é╡é▄é╖é╞üAăé╠éµéñé╚ listé¬é┼é½é▄é╖üB
æOë±é╠ programÆåé┼üAâRâüâôâgâAâEâgé╡é─éáéΘ listôαùeò\Īé≡ É╢é⌐é╡é╜é╞é½
é╠îïë╩é┼é╖üB Å«üAtestÄ₧é╔ linké╖éΘ x2tree04é═üAx2tree03é┼ èKæwûêé╠ ù±
é╠Éié▌é≡ Åké▀éΘÅCÉ│é≡é╡é╜éαé╠é┼é╖üB
é▒é╠ listé╠Æåé╔é═ ÅτÆ╖é╚Åεò±é¬ éáéΦé▄é╖é╠é┼ ò\Īprogramé┼ ìφé┴é─ ò\Īé╡
é▄é╖üB
-----^ TEST_A_L.TXT ( date:97-05-03 time:11:27 ) -----------<cut here
<list 2>
+<list 8>
+<list 9>
| +string "D:\ICON\LEC24\TEST_A"
| +string ".. <DIR> 97-04-29 21:51 .."
+<list 29>
| +string "TEST_B <DIR> 97-04-29 21:52 TEST_B"
| +<list 61>
| +<list 62>
| | +string "D:\ICON\LEC24\TEST_A\TEST_B"
| | +string ".. <DIR> 97-04-29 21:52 .."
| +string "HHH TXT 10 97-04-29 21:59 HHH.TXT"
| +<list 89>
| | +string "TEST_D <DIR> 97-04-29 21:52 TEST_D"
| | +<list 107>
| | +<list 108>
| | | +string "D:\ICON\LEC24\TEST_A\TEST_B\TEST_D"
| | | +string ".. <DIR> 97-04-29 21:52 .."
| | +string "KKK TXT 10 97-04-29 22:01 KKK.TXT"
| | +string "TEST_LLL TXT 15 97-04-29 22:02 TEST_LLL.TXT"
| | +string "JJJ 6 97-04-29 22:01 JJJ"
| +string "TEST_III TXT 15 97-04-29 22:00 TEST_III.TXT"
| +string "GGG 6 97-04-29 21:59 GGG"
+string "BBB TXT 10 97-04-29 21:56 BBB.TXT"
+string "TEST_CCC TXT 15 97-04-29 21:57 TEST_CCC.TXT"
+<list 50>
| +string "TEST_C <DIR> 97-04-29 21:55 TEST_C"
| +<list 146>
| +<list 147>
| | +string "D:\ICON\LEC24\TEST_A\TEST_C"
| | +string ".. <DIR> 97-04-29 21:55 .."
| +string "EEE TXT 10 97-04-29 21:58 EEE.TXT"
| +string "TEST_FFF TXT 15 97-04-29 21:58 TEST_FFF.TXT"
| +string "DDD 6 97-04-29 21:58 DDD"
+string "AAA 6 97-04-29 21:56 AAA"
-----$ TEST_A_L.TXT ( lines:35 words:195 ) -----------------<cut here
ÅτÆ╖é╚Åεò±é≡ìφé┴é╜îïë╩é═é▒éñé╚éΦé▄é╖üB
-----^ TEST_A_T.TXT ( date:97-05-03 time:11:29 ) -----------<cut here
D:\ICON\LEC24\TEST_A <DIR> 97-04-29 21:51
+ TEST_B <DIR> 97-04-29 21:52 TEST_B
| + HHH TXT 10 97-04-29 21:59 HHH.TXT
| + TEST_D <DIR> 97-04-29 21:52 TEST_D
| | + KKK TXT 10 97-04-29 22:01 KKK.TXT
| | + TEST_LLL TXT 15 97-04-29 22:02 TEST_LLL.TXT
| | + JJJ 6 97-04-29 22:01 JJJ
| + TEST_III TXT 15 97-04-29 22:00 TEST_III.TXT
| + GGG 6 97-04-29 21:59 GGG
+ BBB TXT 10 97-04-29 21:56 BBB.TXT
+ TEST_CCC TXT 15 97-04-29 21:57 TEST_CCC.TXT
+ TEST_C <DIR> 97-04-29 21:55 TEST_C
| + EEE TXT 10 97-04-29 21:58 EEE.TXT
| + TEST_FFF TXT 15 97-04-29 21:58 TEST_FFF.TXT
| + DDD 6 97-04-29 21:58 DDD
+ AAA 6 97-04-29 21:56 AAA
-----$ TEST_A_T.TXT ( lines:16 words:115 ) -----------------<cut here
é▒é╠ programé╛é»é┼üAÿAïxé¬é┬é╘éΩé─é╡é▄é┴é╜üB
òùé┬é⌐éó (TRA11936@biglobe.ne.jp/PFF01531@niftyserve.or.jp)
< Iconé╠WWWé═üAhttp://www.cs.arizona.edu/icon/index.html>
BGM: La Fiesta / Chick Corea
(icon_222.txt 1997/05/03 PCVAN PIG)
üí Icon > IconÄGïLÆá é▐é╖é╤ òùé┬é⌐éó
ÄGïLÆáé┼é═üAâeâLâXâgë≡É═é≡éΓéδéñé╞Ävé┴é─éóé╜é╠é┼é╖é¬üAûwé╟ generatoré╠
ë≡Éαé╔é╚é┴é─é╡é▄éóé▄é╡é╜üB
éSîÄéαÅIéφé┴é╜é▒é╞é┼é╖é╠é┼üAÄGïLÆáé═ é¿é╡é▄éóé╞é╡é▄é╖üBüiæSæRüAÉαû╛é╔
é╚é┴é─éóé╚éóüBüiè╛üjüj
ìíâVâèü[âYé┼é═üAÄäé═ generatorâTâïé╔é╚é┴é─é╡é▄éóé▄é╡é╜üB æOâVâèü[âYé╠
Iconô·ïLé┼ generatoré╠ÄgéóÉSÆné╠ù╟é│é≡ Æmé┴é─é╡é▄é┴é─é⌐éτüAéαéñ ùúéΩéτéΩ
é▄é╣é±üB
üyâCâPâCâPò]ë┐üz(Goal-directed evaluation)é╠ê╨ù═é═üAgeneratoré≡ Ägé┴é─
é▌é╚éóé╞ò¬é⌐éΦé▄é╣é±é╦üB
ë∩ÿbé╔Ägéñî╛ùté╔é╡é─éαüAé╗é╠Ænò√Ænò√é╠ î╛ùtüiò√î╛üjé┼é╚éóé╞ ò\éφé╣é╚éó
éαé╠é┴é─ éáéΦé▄é╖éµé╦üB
Ääé╠òΩìæîΩé╠öÄæ╜ò┘é┼é═üAæ╝é╠ò√î╛é╔é═é▌é⌐é»é╚éóüuÉiìsî`üvé╠ò\î╗é¬éáéΦé▄
é╖üB üuü`éµéΘüBüvé╞éóéñò\î╗é┼é╖üB
üuìsé½éµéΘüBüvüü ìsé½é┬é┬éáéΘüBìsé¡ôrÆåé┼éáéΘüB
é▒é╠ò\î╗é¬Ägéóé▒é╚é╣éΘé╞üAéáé╚é╜éαüAöÄæ╜ò┘é╠ÆBÉlé┼é╖üBüiÅ╬üj
Iconé╔éα é╗éñéóéñô╞ô┴é╠üyIconé┼é╚é»éΩé╬ò\éφé╣é╚éóüzò\î╗é¬ éáéΘé╞Ävéóé▄
é╖üBé▒éΩé═üAéáéΘÆ÷ôxüAé╗é╠âvâìâOâëâÇé╔üAé═é▄é┴é─é▌é╚éóé╞üAò¬é⌐éτé╚éóè┤èo
é╛é╞Ävéóé▄é╖üB
é│é─üAIconÄRé╠ÄⁿéΦé╠û╬é▌é≡ é│é▄éµé┴é─üAé╚é⌐é╚é⌐ âeâLâXâgë≡É═é╓é╠ôoéΦô╣
é╓ é╜é╟éΦé┬é»é▄é╣é±é¬üAăé╠âVâèü[âYé┼é═üAÉÑö±üAâeâLâXâgë≡É═é≡ éΓé┴é─é▌é▄
é╡éσéñüB
ăé╠âVâèü[âYé╠â^âCâgâïé═üAIconÄUòαô╣ é╞é╡éµéñé⌐é╞Ävéóé▄é╖üB Iconû└éóô╣
é╠ò√é¬ìçé┴é─éóéΘé╞Ävéóé▄é╖é¬üAé╗éΩé╢éßéáé±é▄éΦé┼é╖é╠é┼üBüiÅ╬üj
é┼é═üAé▄é╜üAé¿ë∩éóé╖éΘô·é▄é┼üB
òùé┬é⌐éó (TRA11936@biglobe.ne.jp/PFF01531@niftyserve.or.jp)
< Iconé╠WWWé═üAhttp://www.cs.arizona.edu/icon/index.html>
BGM: éóé╞é¿é╡éóâOâîâCü^Ä┬î┤öⁿûτÄq
BGD: é¿ü`éó é¿Æâ
(icon_223.txt 1997/05/03 PCVAN PIG)