GoGPT Best VPN GoSearch

ไอคอน Fav ของ OnWorks

gvpr - ออนไลน์ในคลาวด์

เรียกใช้ gvpr ในผู้ให้บริการโฮสต์ฟรีของ OnWorks ผ่าน Ubuntu Online, Fedora Online, โปรแกรมจำลองออนไลน์ของ Windows หรือโปรแกรมจำลองออนไลน์ของ MAC OS

นี่คือคำสั่ง gvpr ที่สามารถเรียกใช้ในผู้ให้บริการโฮสต์ฟรีของ OnWorks โดยใช้หนึ่งในเวิร์กสเตชันออนไลน์ฟรีของเรา เช่น Ubuntu Online, Fedora Online, โปรแกรมจำลองออนไลน์ของ Windows หรือโปรแกรมจำลองออนไลน์ของ MAC OS

โครงการ:

ชื่อ


gvpr - การสแกนรูปแบบกราฟและภาษาการประมวลผล

เรื่องย่อ


จีวีพีอาร์ [-icnqV?] [ -o ออกจากไฟล์ ] [ -a args ] [ 'โปรก' | -f โปรไฟล์ ] [ ไฟล์ ]

DESCRIPTION


จีวีพีอาร์ (ก่อนหน้านี้รู้จักกันในนาม จีพีอาร์) เป็นโปรแกรมแก้ไขกราฟสตรีมที่ได้รับแรงบันดาลใจจาก awk. มันคัดลอกอินพุต
กราฟเป็นผลลัพธ์ อาจเปลี่ยนโครงสร้างและคุณลักษณะ สร้างใหม่
กราฟหรือการพิมพ์ข้อมูลตามอำเภอใจ แบบจำลองกราฟนั้นจัดทำโดย
libcgraph(3). โดยเฉพาะอย่างยิ่ง, จีวีพีอาร์ อ่านและเขียนกราฟโดยใช้ภาษาจุด

โดยทั่วไป จีวีพีอาร์ ข้ามแต่ละกราฟอินพุต แทนด้วย $Gเยี่ยมชมแต่ละโหนดและขอบ
จับคู่กับกฎเพรดิเคตแอ็กชันที่ให้มาในโปรแกรมอินพุต กฎคือ
ประเมินเป็นลำดับ สำหรับแต่ละเพรดิเคตที่ประเมินเป็นจริง การกระทำที่สอดคล้องกันคือ
ดำเนินการ ระหว่างการเดินทาง โหนดปัจจุบันหรือขอบที่กำลังเยี่ยมชมจะแสดงด้วย $.

สำหรับกราฟอินพุตแต่ละรายการ จะมีกราฟย่อยเป้าหมาย แทนด้วย $T, เดิมว่างเปล่าและใช้
เพื่อสะสมเอนทิตีที่เลือกและกราฟผลลัพธ์ $Oใช้สำหรับการประมวลผลขั้นสุดท้ายแล้ว
เขียนเพื่อส่งออก โดยค่าเริ่มต้น กราฟผลลัพธ์คือกราฟเป้าหมาย กราฟผลลัพธ์
สามารถตั้งค่าในโปรแกรมหรือในความหมายที่จำกัด บนบรรทัดคำสั่ง

OPTIONS


รองรับตัวเลือกต่อไปนี้:

-a args
สตริง args ถูกแบ่งออกเป็นโทเค็นที่คั่นด้วยช่องว่างโดยแต่ละบุคคล
โทเค็นที่มีอยู่เป็นสตริงใน จีวีพีอาร์ โปรแกรม as อาร์จีวี[0],...,ARGV[ARGC-1].
อักขระช่องว่างภายในสตริงย่อยที่มีเครื่องหมายคำพูดเดี่ยวหรือคู่ หรือนำหน้าด้วย a
แบ็กสแลชจะถูกละเว้นเป็นตัวคั่น โดยทั่วไป อักขระแบ็กสแลชจะปิด
ความหมายพิเศษใดๆ ของอักขระต่อไปนี้ โปรดทราบว่าโทเค็นที่ได้มาจาก
หลาย -a ธงถูกต่อกัน

-c ใช้กราฟต้นทางเป็นกราฟผลลัพธ์

-i หาส่วนขยายกราฟย่อยที่เกิดจากโหนดของกราฟเอาต์พุตในบริบทของ
กราฟรากของมัน

-o ออกจากไฟล์
ทำให้เอาต์พุตสตรีมถูกเขียนไปยังไฟล์ที่ระบุ โดยค่าเริ่มต้น เอาต์พุต is
เขียนไป แย่.

-f โปรไฟล์
ใช้เนื้อหาของไฟล์ที่ระบุเป็นโปรแกรมเพื่อดำเนินการกับอินพุต ถ้า
โปรไฟล์ มีเครื่องหมายทับ ชื่อถูกใช้เป็นชื่อพาธของไฟล์
มิฉะนั้น, จีวีพีอาร์ จะใช้ไดเร็กทอรีที่ระบุในตัวแปรสภาพแวดล้อม
กฟปราพัท เพื่อค้นหาไฟล์. ถ้า -f ไม่ได้รับ จีวีพีอาร์ จะใช้อันแรกที่ไม่ใช่-
อาร์กิวเมนต์ option เป็นโปรแกรม

-q ปิดข้อความเตือน

-n ปิดการอ่านกราฟล่วงหน้า โดยค่าเริ่มต้น ตัวแปร $NG ถูกตั้งค่าเป็นกราฟถัดไป
ที่จะประมวลผล สิ่งนี้ต้องอ่านกราฟถัดไปก่อนประมวลผล
กราฟปัจจุบัน ซึ่งอาจบล็อกได้หากกราฟถัดไปสร้างขึ้นเพื่อตอบสนองต่อ
การดำเนินการบางอย่างที่เกี่ยวข้องกับการประมวลผลของกราฟปัจจุบัน

-V ทำให้โปรแกรมพิมพ์ข้อมูลเวอร์ชันและออก

-? ทำให้โปรแกรมพิมพ์ข้อมูลการใช้งานและออก

ตัวดำเนินการ


รองรับตัวถูกดำเนินการต่อไปนี้:

ไฟล์ ชื่อไฟล์ที่มี 1 กราฟขึ้นไปในภาษาดอท ถ้าไม่ -f ตัวเลือก
จะได้รับชื่อจะถูกลบออกจากรายการและใช้เป็นโปรแกรมป้อนข้อมูล
หากรายการไฟล์ว่างเปล่า สเตดิน จะถูกนำไปใช้.

โปรแกรม


A จีวีพีอาร์ โปรแกรมประกอบด้วยรายการของภาคแสดงการกระทำ ซึ่งมีรูปแบบใดรูปแบบหนึ่ง:

เริ่ม { การกระทำ }

บีอีจี_จี { การกระทำ }

N [ คำกริยา ] { การกระทำ }

E [ คำกริยา ] { การกระทำ }

END_G { การกระทำ }

END { การกระทำ }

โปรแกรมสามารถมีได้มากที่สุดอย่างละหนึ่งรายการ เริ่ม, END_G และ END ข้อ สามารถ
เป็นจำนวนใด ๆ ของ บีอีจี_จี, N และ E คำสั่งแรกใช้กับกราฟที่สองถึง
โหนดที่สามถึงขอบ สิ่งเหล่านี้ถูกแยกออกเป็นบล็อก บล็อกประกอบด้วย an
ไม่จำเป็น บีอีจี_จี คำชี้แจงและทั้งหมด N และ E งบต่อไป บีอีจี_จี คำสั่ง if
ใด ๆ. ความหมายระดับบนสุดของ จีวีพีอาร์ โปรแกรมคือ:

ประเมินผล เริ่ม ข้อ ถ้ามี
สำหรับแต่ละกราฟอินพุต G {
สำหรับแต่ละบล็อก {
ชุด G เป็นกราฟปัจจุบันและวัตถุปัจจุบัน
ประเมินผล บีอีจี_จี ข้อ ถ้ามี
สำหรับแต่ละโหนดและขอบใน G {
ตั้งค่าโหนดหรือขอบเป็นวัตถุปัจจุบัน
ประเมินผล N or E ข้อต่างๆ ตามความเหมาะสม
}
}
ชุด G เป็นวัตถุปัจจุบัน
ประเมินผล END_G ข้อ ถ้ามี
}
ประเมินผล END ข้อ ถ้ามี

การกระทำของ เริ่ม, บีอีจี_จี, END_G และ END อนุประโยคจะดำเนินการเมื่ออนุประโยคเป็น
ประเมิน สำหรับ N or E อนุประโยค ทั้งเพรดิเคตหรือการกระทำอาจถูกละเว้น ถ้ามี
ไม่มีภาคแสดงที่มีการกระทำ การกระทำจะดำเนินการกับทุกโหนดหรือขอบเช่น
เหมาะสม. หากไม่มีการดำเนินการใดๆ และเพรดิเคตประเมินเป็นจริง ค่าที่เกี่ยวข้อง
โหนดหรือขอบถูกเพิ่มลงในกราฟเป้าหมาย

บล็อคจะถูกประเมินตามลำดับที่เกิดขึ้น ภายในบล็อก the N ข้อ
(E ตามลำดับ) จะได้รับการประเมินตามลำดับที่เกิดขึ้น หมายเหตุ แม้ว่า
ว่าภายในบล็อก N or E อนุประโยคอาจสอดประสานกัน ขึ้นอยู่กับลำดับการข้ามผ่าน

เพรดิเคตและการกระทำเป็นลำดับของคำสั่งในภาษาซีที่รองรับโดย
ด่วน(3) ห้องสมุด. ความแตกต่างเพียงอย่างเดียวระหว่างภาคแสดงและการกระทำก็คืออดีต
ต้องมีประเภทที่อาจตีความได้ว่าจริงหรือเท็จ ที่นี่ C . ปกติ
มีการปฏิบัติตามอนุสัญญาซึ่งถือว่าค่าที่ไม่ใช่ศูนย์เป็นจริง ซึ่งจะรวมถึง
สตริงที่ไม่ว่างเปล่าและการอ้างอิงที่ไม่ว่างเปล่าไปยังโหนด ขอบ ฯลฯ อย่างไรก็ตาม หากสตริงสามารถ
จะถูกแปลงเป็นจำนวนเต็ม ค่านี้จะถูกใช้

นอกเหนือจากประเภทฐาน C ปกติ (ถือเป็นโมฆะ, int, ถัง, ลอย, ยาว, ไม่ได้ลงนาม และ สอง),
จีวีพีอาร์ ให้ เชือก เป็นคำพ้องสำหรับ ถ่าน*และประเภทตามกราฟ node_t, ขอบ_t,
กราฟ_t และ obj_tส่วน obj_t สามารถมองได้ว่าเป็น supertype ของคอนกรีตอีก 3 ชนิด
ประเภท; ประเภทฐานที่ถูกต้องจะคงอยู่แบบไดนามิก นอกจากประเภทฐานเหล่านี้แล้ว
เฉพาะนิพจน์ประเภทอื่นที่รองรับเท่านั้นคืออาร์เรย์ (เชื่อมโยง)

ค่าคงที่เป็นไปตามไวยากรณ์ C แต่สตริงอาจอ้างอิงด้วย "... " or '...'. จีวีพีอาร์
ยอมรับความคิดเห็น C ++ เช่นเดียวกับความคิดเห็นประเภท cpp อย่างหลังถ้าบรรทัดขึ้นต้นด้วย
อักขระ '#' ส่วนที่เหลือของบรรทัดจะถูกละเว้น

คำสั่งอาจเป็นการประกาศฟังก์ชัน ตัวแปรหรืออาร์เรย์ หรือคำสั่งปฏิบัติการ
คำแถลง. สำหรับการประกาศมีขอบเขตเดียว การประกาศอาร์เรย์มีรูปแบบ:

ชนิด แถว [ type0 ]

ที่ไหน type0 เป็นทางเลือก หากมีการจัดหา parser จะบังคับให้อาร์เรย์ทั้งหมด
ตัวห้อยมีประเภทที่ระบุ ถ้าไม่ได้ให้มา วัตถุทุกประเภทสามารถ
ใช้เป็นตัวห้อย เช่นเดียวกับในภาษา C จะต้องประกาศตัวแปรและอาร์เรย์ โดยเฉพาะอย่างยิ่ง an
ตัวแปรที่ไม่ได้ประกาศจะถูกตีความว่าเป็นชื่อของแอตทริบิวต์ของโหนด ขอบ หรือ
กราฟขึ้นอยู่กับบริบท

คำสั่งปฏิบัติการสามารถเป็นอย่างใดอย่างหนึ่งต่อไปนี้:

{ [ คำสั่ง ... ] }
การแสดงออก // อย่างธรรมดา คือ = การแสดงออก
ถ้า( การแสดงออก ) คำสั่ง [ อื่น คำสั่ง ]
สำหรับ( การแสดงออก ; การแสดงออก ; การแสดงออก ) คำสั่ง
สำหรับ( แถว [ คือ ]) คำสั่ง
ฟอร์ ( แถว [ คือ ]) คำสั่ง
ในขณะที่ ( การแสดงออก ) คำสั่ง
สวิตช์ ( การแสดงออก ) กรณี งบ
ทำลาย [ การแสดงออก ]
ต่อ [ การแสดงออก ]
กลับ [ การแสดงออก ]
รายการในวงเล็บเป็นตัวเลือก

ในรูปแบบที่สองของ สำหรับ คำสั่งและ สำหรับ คำสั่งตัวแปร คือ ถูกตั้งค่าเป็น
แต่ละค่าที่ใช้เป็นดัชนีในอาร์เรย์ที่ระบุและที่เกี่ยวข้อง คำสั่ง is
ประเมิน สำหรับดัชนีตัวเลขและสตริง ค่าดัชนีจะถูกส่งคืนโดยเพิ่มขึ้น
(ลดลง) ลำดับตัวเลขหรือพจนานุกรมสำหรับ สำหรับ (สำหรับตามลำดับ) ใช้ได้เลย
สำหรับการเรียงลำดับ

คำจำกัดความของฟังก์ชันสามารถปรากฏในเครื่องหมายเท่านั้น เริ่ม ประโยค

นิพจน์รวมถึงนิพจน์ C ปกติ การเปรียบเทียบสตริงโดยใช้ == และ != รักษา
ตัวถูกดำเนินการทางขวามือเป็นรูปแบบสำหรับวัตถุประสงค์ในการจับคู่นิพจน์ทั่วไป รูปแบบ
ใช้ ครับ(1) ไวยากรณ์รูปแบบการจับคู่ไฟล์ (เพื่อความเท่าเทียมกันของสตริงอย่างง่าย ให้ใช้ strcmp
ฟังก์ชัน

จีวีพีอาร์ จะพยายามใช้นิพจน์เป็นสตริงหรือค่าตัวเลขตามความเหมาะสม ทั้งคู่
การร่ายแบบ C และเทมเพลตฟังก์ชันจะทำให้ทำการแปลงได้ ถ้าเป็นไปได้

นิพจน์ประเภทกราฟิก (เช่น กราฟ_t, โหนด_t, ขอบ_t, obj_t) อาจตามด้วย a
การอ้างอิงภาคสนามในรูปแบบของ .พร้อมชื่อ. ค่าผลลัพธ์คือค่าของแอตทริบิวต์
ชื่อ พร้อมชื่อ ของวัตถุที่กำหนด นอกจากนี้ ในบางบริบทที่ไม่ได้ประกาศ
ตัวระบุที่ไม่ได้แก้ไขจะถือเป็นชื่อแอตทริบิวต์ โดยเฉพาะอย่างยิ่ง ตัวระบุดังกล่าว
แสดงถึงคุณสมบัติของโหนดหรือขอบปัจจุบันตามลำดับใน N และ E อนุประโยคและ
กราฟปัจจุบันใน บีอีจี_จี และ END_G ข้อ

ตามปกติใน libcgraph(3) โมเดล คุณลักษณะเป็นค่าสตริง นอกจากนี้, จีวีพีอาร์
รองรับแอตทริบิวต์หลอกบางอย่างของออบเจ็กต์กราฟ ไม่จำเป็นต้องมีค่าสตริง เหล่านี้
สะท้อนคุณสมบัติที่แท้จริงของวัตถุกราฟและผู้ใช้ไม่สามารถตั้งค่าได้

หัว : node_t
หัวของขอบ

หาง : node_t
หางของขอบ

พร้อมชื่อ : เชือก
ชื่อของขอบ โหนด หรือกราฟ ชื่อของขอบมีรูปแบบ "<หาง‐
ชื่อ>[]"ที่ไหน เป็น "->"หรือ"--"ขึ้นอยู่กับ
ไม่ว่ากราฟจะถูกกำกับหรือไม่ ส่วนวงเล็บ [] จะปรากฏขึ้นก็ต่อเมื่อ
edge มีคีย์ที่ไม่สำคัญ

องศา : int
indegree ของโหนด

นอกระดับ : int
outdegree ของโหนด

ระดับ : int
ระดับของโหนด

ราก : กราฟ_t
กราฟรากของวัตถุ รูทของกราฟรูทคือตัวมันเอง

ผู้ปกครอง : กราฟ_t
กราฟหลักของกราฟย่อย พาเรนต์ของกราฟรูทคือ NULL

n_edges : int
จำนวนขอบในกราฟ

n_nodes : int
จำนวนโหนดในกราฟ

กำกับการแสดง : int
จริง (ไม่ใช่ศูนย์) ถ้ากราฟกำกับอยู่

เข้มงวด : int
จริง (ไม่ใช่ศูนย์) ถ้ากราฟเข้มงวด

สร้างขึ้นใน ฟังก์ชั่น


ฟังก์ชันต่อไปนี้สร้างขึ้นใน จีวีพีอาร์. ฟังก์ชันเหล่านั้นส่งคืนการอ้างอิงไปยังกราฟ
วัตถุกลับมา NULL ในกรณีที่ล้มเหลว

กราฟ และ กราฟย่อย
กราฟ(s : เชือก, t : เชือก): กราฟ_t
สร้างกราฟชื่อ s และประเภทที่ระบุโดยสตริง t.
ละเว้นตัวอักษร U, D, S, N มีการตีความแบบไม่มีทิศทาง
กำกับ เข้มงวด และไม่เข้มงวด ตามลำดับ ถ้า t ว่างเปล่า, กำกับ, ไม่ใช่-
สร้างกราฟที่เข้มงวด

รองลงมา(g : กราฟ_t, s : เชือก): กราฟ_t
สร้าง subgraph ใน graph g ด้วยชื่อ s. ถ้ามีซับกราฟอยู่แล้ว ก็คือ
กลับ

isSubg(g : กราฟ_t, s : เชือก): กราฟ_t
ส่งกลับกราฟย่อยในกราฟ g ด้วยชื่อ s, ถ้ามันมีอยู่, หรือ NULL มิฉะนั้น.

Fstsubg(g : กราฟ_t): กราฟ_t
ส่งกลับกราฟย่อยแรกในกราฟ gหรือ NULL ถ้าไม่มีอยู่

nxtsubg(sg : กราฟ_t): กราฟ_t
ส่งคืน subgraph ถัดไปหลังจาก sgหรือ NULL.

คือไดเร็กต์(g : กราฟ_t): int
คืนค่า true if และ only if g เป็นผู้กำกับ

เข้มงวด(g : กราฟ_t): int
คืนค่า true if และ only if g เข้มงวด

โหนด(g : กราฟ_t): int
ส่งกลับจำนวนโหนดใน g.

ขอบ(g : กราฟ_t): int
ส่งกลับจำนวนขอบใน g.

โหนด
ปม(sg : กราฟ_t, s : เชือก): node_t
สร้างโหนดในกราฟ g ของชื่อ s. หากมีโหนดดังกล่าวอยู่แล้ว โหนดดังกล่าวจะถูกส่งคืน

โหนดย่อย(sg : กราฟ_t, n : node_t): node_t
แทรกโหนด n ลงในหมวดย่อย g. ส่งคืนโหนด

โหนด(g : กราฟ_t): node_t
ส่งคืนโหนดแรกในกราฟ gหรือ NULL ถ้าไม่มีอยู่

nxtnode(n : node_t): node_t
ส่งคืนโหนดถัดไปหลังจาก n ในกราฟรากหรือ NULL.

nxtnode_sg(sg : กราฟ_t, n : node_t): node_t
ส่งคืนโหนดถัดไปหลังจาก n in sgหรือ NULL.

เป็นโหนด(sg : กราฟ_t, s : เชือก): node_t
ค้นหาโหนดใน (ย่อย) graph sg ของชื่อ s. หากมีโหนดดังกล่าวอยู่ โหนดนั้นจะถูกส่งคืน
มิฉะนั้น, NULL จะถูกส่งกลับ

คือโหนดย่อย(sg : กราฟ_t, n : node_t): int
คืนค่าที่ไม่ใช่ศูนย์ถ้า node n อยู่ใน (ย่อย) กราฟ sgหรือศูนย์อย่างอื่น

ระดับของ(sg : กราฟ_t, n : node_t): int
ส่งกลับค่า indegree ของโหนด n ใน (ย่อย) กราฟ sg.

นอกระดับของ(sg : กราฟ_t, n : node_t): int
ส่งกลับค่า outdegree ของโหนด n ใน (ย่อย) กราฟ sg.

องศาของ(sg : กราฟ_t, n : node_t): int
ส่งกลับระดับของโหนด n ใน (ย่อย) กราฟ sg.

ขอบ
ขอบ(t : node_t, h : node_t, s : เชือก): ขอบ_t
สร้างขอบด้วยโหนดหาง t, หัวโหนด h และชื่อ s ในกราฟรูท ถ้า
กราฟไม่มีทิศทาง ความแตกต่างระหว่างโหนดส่วนหัวและส่วนท้ายไม่สำคัญ
หากขอบดังกล่าวมีอยู่แล้วจะถูกส่งคืน

edge_sg(sg : กราฟ_t, t : node_t, h : node_t, s : เชือก): ขอบ_t
สร้างขอบด้วยโหนดหาง t, หัวโหนด h และชื่อ s ใน (ย่อย) กราฟ sg (และทั้งหมด
กราฟหลัก) หากกราฟไม่มีทิศทาง ความแตกต่างระหว่างหัวกับหาง
โหนดไม่สำคัญ หากขอบดังกล่าวมีอยู่แล้วจะถูกส่งคืน

ย่อย(g : กราฟ_t, e : ขอบ_t): ขอบ_t
ใส่ขอบ e ลงในหมวดย่อย g. ส่งกลับขอบ

คือEdge(t : node_t, h : node_t, s : เชือก): ขอบ_t
มองหาขอบที่มีโหนดหาง t, หัวโหนด h และชื่อ s. ถ้ากราฟเป็น
ไม่มีทิศทาง ความแตกต่างระหว่างโหนดส่วนหัวและส่วนท้ายนั้นไม่สำคัญ ถ้าเช่น
ขอบมีอยู่ก็จะถูกส่งกลับ มิฉะนั้น, NULL จะถูกส่งกลับ

isEdge_sg(sg : กราฟ_t, t : node_t, h : node_t, s : เชือก): ขอบ_t
มองหาขอบที่มีโหนดหาง t, หัวโหนด h และชื่อ s ใน (ย่อย) กราฟ sg. หาก
กราฟไม่มีทิศทาง ความแตกต่างระหว่างโหนดส่วนหัวและส่วนท้ายไม่สำคัญ
หากมีขอบดังกล่าวอยู่ก็จะถูกส่งคืน มิฉะนั้น, NULL จะถูกส่งกลับ

คือ Subedge(g : กราฟ_t, e : ขอบ_t): int
คืนค่าที่ไม่ใช่ศูนย์ถ้า edge e อยู่ใน (ย่อย) กราฟ sgหรือศูนย์อย่างอื่น

อ้วน(n : node_t): ขอบ_t
คืนค่า outedge แรกของโหนด n ในกราฟรูท

fstout_sg(sg : กราฟ_t, n : node_t): ขอบ_t
คืนค่า outedge แรกของโหนด n ใน (ย่อย) กราฟ sg.

ไม่เป็นไร(e : ขอบ_t): ขอบ_t
ส่งกลับ outedge ถัดไปหลังจาก e ในกราฟรูท

nxtout_sg(sg : กราฟ_t, e : ขอบ_t): ขอบ_t
ส่งกลับ outedge ถัดไปหลังจาก e ในกราฟ sg.

ฟสติน(n : node_t): ขอบ_t
คืนค่า inedge แรกของโหนด n ในกราฟรูท

fstin_sg(sg : กราฟ_t, n : node_t): ขอบ_t
คืนค่า inedge แรกของโหนด n ในกราฟ sg.

เอ็นซิน(e : ขอบ_t): ขอบ_t
คืนค่า inedge ถัดไปหลังจาก e ในกราฟรูท

nxtin_sg(sg : กราฟ_t, e : ขอบ_t): ขอบ_t
คืนค่า inedge ถัดไปหลังจาก e ในกราฟ sg.

ปิด(n : node_t): ขอบ_t
คืนค่าขอบแรกของโหนด n ในกราฟรูท

fstedge_sg(sg : กราฟ_t, n : node_t): ขอบ_t
คืนค่าขอบแรกของโหนด n ในกราฟ sg.

nxtedge(e : ขอบ_t, node_t): ขอบ_t
คืนค่าขอบถัดไปหลังจาก e ในกราฟรูท

nxtedge_sg(sg : กราฟ_t, e : ขอบ_t, node_t): ขอบ_t
คืนค่าขอบถัดไปหลังจาก e ในกราฟ sg.

OPP(e : ขอบ_t, node_t): node_t
ส่งคืนโหนดบนขอบ e ไม่เท่ากับ n. ส่งกลับค่า NULL if n ไม่ใช่โหนดของ
e. สิ่งนี้มีประโยชน์เมื่อใช้ ปิด และ nxtedge เพื่อแจกแจงเพื่อนบ้านของ
n.

กราฟ I / O
เขียน(g : กราฟ_t): ถือเป็นโมฆะ
พิมพ์ g ในรูปแบบจุดบนกระแสข้อมูลขาออก

เขียนG(g : กราฟ_t, ชื่อ : เชือก): ถือเป็นโมฆะ
พิมพ์ g ในรูปแบบดอทลงในไฟล์ ชื่อ.

fwriteG(g : กราฟ_t, fd : int): ถือเป็นโมฆะ
พิมพ์ g ในรูปแบบจุดบนสตรีมเปิดแสดงด้วยจำนวนเต็ม fd.

อ่านG(ชื่อ : เชือก): กราฟ_t
ส่งคืนกราฟที่อ่านจากไฟล์ ชื่อ. กราฟควรอยู่ในรูปแบบจุด ถ้าไม่
กราฟสามารถอ่านได้ NULL จะถูกส่งกลับ

FreadG(fd : int): กราฟ_t
ส่งคืนกราฟถัดไปที่อ่านจากสตรีมเปิด fd. คืนสินค้า NULL ที่ส่วนท้ายของไฟล์

กราฟ เบ็ดเตล็ด
ลบ(g : กราฟ_t, x : obj_t): ถือเป็นโมฆะ
ลบวัตถุ x จากกราฟ g. ถ้า g is NULL, ฟังก์ชันใช้กราฟรากของ
x. ถ้า x เป็นกราฟหรือกราฟย่อย ปิด เว้นแต่ x ถูกล็อค.

อยู่ใน(g : กราฟ_t, x : obj_t): int
คืนค่าจริง if x อยู่ในหมวดย่อย g.

โคลนG(g : กราฟ_t, s : เชือก): กราฟ_t
สร้างโคลนของกราฟ g ที่ชื่อว่า s. ถ้า s คือ "" กราฟที่สร้างขึ้นมี
ชื่อเดียวกับ g.

โคลน(g : กราฟ_t, x : obj_t): obj_t
สร้างโคลนของวัตถุ x ในกราฟ g. โดยเฉพาะอย่างยิ่ง วัตถุใหม่มีเหมือนกัน
แอตทริบิวต์ชื่อ/ค่าและโครงสร้างเป็นวัตถุดั้งเดิม ถ้าวัตถุที่มี
คีย์เดียวกับ x มีอยู่แล้ว คุณลักษณะของมันถูกซ้อนทับโดยพวกของ x และ
วัตถุถูกส่งกลับ หากขอบถูกลอกแบบ จุดปลายทั้งสองจะถูกลอกแบบโดยปริยาย
ถ้ากราฟถูกโคลน โหนด ขอบ และกราฟย่อยทั้งหมดจะถูกโคลนโดยปริยาย ถ้า x
เป็นกราฟ g อาจจะ NULLซึ่งในกรณีนี้วัตถุที่ลอกแบบจะเป็นรูทใหม่
กราฟ. ในกรณีนี้การโทรจะเท่ากับ โคลนG(x,"").

สำเนา(g : กราฟ_t, x : obj_t): obj_t
สร้างสำเนาของวัตถุ x ในกราฟ gโดยที่วัตถุใหม่มีชื่อ/ค่าเหมือนกัน
คุณลักษณะที่เป็นวัตถุดั้งเดิม ถ้าวัตถุที่มีคีย์เดียวกับ x แล้ว
มีอยู่ คุณลักษณะของมันถูกซ้อนทับโดยพวกของ x และวัตถุจะถูกส่งกลับ บันทึก
ว่านี่คือสำเนาตื้น ถ้า x เป็นกราฟ ไม่มีโหนด ขอบ หรือกราฟย่อยใดๆ
จะถูกคัดลอกลงในกราฟใหม่ ถ้า x เป็นขอบ จุดปลายจะถูกสร้างขึ้นถ้า
จำเป็น แต่จะไม่ถูกโคลน ถ้า x เป็นกราฟ g อาจจะ NULLซึ่งในกรณีนี้
วัตถุที่ลอกแบบจะเป็นกราฟรูทใหม่

สำเนาA(สิ่งอำนวยความสะดวก : obj_t, TGT : obj_t): int
คัดลอกแอตทริบิวต์ของวัตถุ สิ่งอำนวยความสะดวก คัดค้าน TGT, เขียนทับค่าแอตทริบิวต์ใด ๆ
TGT เบื้องต้นอาจมี

ชักจูง(g : กราฟ_t): ถือเป็นโมฆะ
ขยาย g ไปยังส่วนขยายของกราฟย่อยที่เกิดจากโหนดในกราฟราก

มี Attr(สิ่งอำนวยความสะดวก : obj_t, พร้อมชื่อ : เชือก): int
คืนค่าที่ไม่ใช่ศูนย์ถ้า object สิ่งอำนวยความสะดวก มีคุณลักษณะที่มีชื่อเป็น พร้อมชื่อ. คืนค่า 0
มิฉะนั้น.

isAtr(g : กราฟ_t, ชนิด : เชือก, พร้อมชื่อ : เชือก): int
คืนค่าที่ไม่ใช่ศูนย์หากแอตทริบิวต์ พร้อมชื่อ ถูกกำหนดไว้ใน g สำหรับวัตถุของ
กำหนด ชนิด. สำหรับโหนด ขอบ และกราฟ ชนิด ควรเป็น "N", "E" และ "G"
ตามลำดับ มันจะคืนค่า 0 มิฉะนั้น

อายุ(สิ่งอำนวยความสะดวก : obj_t, พร้อมชื่อ : เชือก): เชือก
ส่งคืนค่าแอตทริบิวต์ พร้อมชื่อ ในวัตถุ สิ่งอำนวยความสะดวก. สิ่งนี้มีประโยชน์สำหรับกรณีเหล่านั้น
เมื่อ พร้อมชื่อ ขัดแย้งกับหนึ่งในคำหลักเช่น "หัว" หรือ "ราก" ถ้า
ยังไม่ได้ประกาศแอตทริบิวต์ในกราฟ ฟังก์ชันจะเริ่มต้นด้วย
ค่าเริ่มต้นของ "" เพื่อหลีกเลี่ยงปัญหานี้ เราควรใช้ มี Attr or isAtr ฟังก์ชัน
เพื่อตรวจสอบว่าแอตทริบิวต์มีอยู่

ชุด(สิ่งอำนวยความสะดวก : obj_t, พร้อมชื่อ : เชือก, ความคุ้มค่า : เชือก): int
ตั้งค่าแอตทริบิวต์ พร้อมชื่อ ในวัตถุ สิ่งอำนวยความสะดวก ไปยัง ความคุ้มค่า. คืนค่า 0 เมื่อสำเร็จ
ความล้มเหลวไม่เป็นศูนย์ ดู อายุ ครีมมาสคาโปนชีส ด้านบน

รับDflt(g : กราฟ_t, ชนิด : เชือก, พร้อมชื่อ : เชือก): เชือก
ส่งกลับค่าเริ่มต้นของแอตทริบิวต์ พร้อมชื่อ ในวัตถุใน g ของที่ให้มา ชนิด. สำหรับ
โหนด ขอบ และกราฟ ชนิด ควรเป็น "N", "E" และ "G" ตามลำดับ ถ้า
ยังไม่ได้ประกาศแอตทริบิวต์ในกราฟ ฟังก์ชันจะเริ่มต้นด้วย
ค่าเริ่มต้นของ "" เพื่อหลีกเลี่ยงปัญหานี้ เราควรใช้ isAtr ฟังก์ชั่นการตรวจสอบ
ว่าแอตทริบิวต์มีอยู่

setDflt(g : กราฟ_t, ชนิด : เชือก, พร้อมชื่อ : เชือก, ความคุ้มค่า : เชือก): int
ตั้งค่าเริ่มต้นของแอตทริบิวต์ พร้อมชื่อ ไปยัง ความคุ้มค่า ในวัตถุใน g ของที่ให้มา
ชนิด. สำหรับโหนด ขอบ และกราฟ ชนิด ควรเป็น "N", "E" และ "G" ตามลำดับ
คืนค่า 0 เมื่อสำเร็จ ไม่ใช่ศูนย์เมื่อล้มเหลว ดู รับDflt ครีมมาสคาโปนชีส ด้านบน

fstAttr(g : กราฟ_t, ชนิด : เชือก): เชือก
ส่งกลับชื่อของแอตทริบิวต์แรกของวัตถุใน g ของที่ให้มา ชนิด. สำหรับ
โหนด ขอบ และกราฟ ชนิด ควรเป็น "N", "E" และ "G" ตามลำดับ ถ้ามี
ไม่มีแอตทริบิวต์ สตริง "" ถูกส่งกลับ

nxtAttr(g : กราฟ_t, ชนิด : เชือก, พร้อมชื่อ : เชือก): เชือก
ส่งคืนชื่อแอตทริบิวต์ถัดไปของวัตถุใน g ของที่ให้มา ชนิด หลังจากที่
คุณลักษณะ พร้อมชื่อ. อาร์กิวเมนต์ พร้อมชื่อ ต้องเป็นชื่อของแอตทริบิวต์ที่มีอยู่ มัน
โดยทั่วไปจะเป็นค่าส่งคืนของการเรียกครั้งก่อนหน้าไปยัง fstAttr or nxtAttr. สำหรับ
โหนด ขอบ และกราฟ ชนิด ควรเป็น "N", "E" และ "G" ตามลำดับ ถ้ามี
ไม่มีแอตทริบิวต์เหลืออยู่ สตริง "" จะถูกส่งคืน

เปรียบเทียบ(g : กราฟ_t, n : node_t): กราฟ_t
ส่งคืนองค์ประกอบที่เชื่อมต่อของกราฟ g ที่มีโหนด n, เป็นอักษรย่อของ
g. กราฟย่อยประกอบด้วยโหนดเท่านั้น ใช้ได้เลย ชักจูง เพื่อเพิ่มขอบ NS
ฟังก์ชั่นล้มเหลวและส่งคืน NULL if n ไม่ได้อยู่ใน g. การเชื่อมต่อขึ้นอยู่กับ
กราฟแสดงทิศทางแบบไม่มีทิศทางของ g.

ชนิดของ(obj : obj_t): เชือก
ส่งคืนตัวบ่งชี้ประเภทของ obj. สำหรับโหนด ขอบ และกราฟ จะส่งกลับ
"N", "E" และ "G" ตามลำดับ

ล็อค(g : กราฟ_t, v : int): int
ใช้การล็อกกราฟบนกราฟรูท ถ้าจำนวนเต็ม v เป็นบวก กราฟคือ
ตั้งไว้เพื่อเรียกอนาคตไปยัง ลบ ไม่มีผลในทันที ถ้า v เป็นศูนย์ the
ปลดล็อคกราฟแล้ว หากมีการเรียกให้ลบกราฟในขณะนั้น
ล็อค กราฟถูกปิด ถ้า v เป็นลบ ไม่มีอะไรทำ ในทุกกรณี
ค่าล็อคก่อนหน้านี้จะถูกส่งกลับ

Strings
วิ่ง(เอฟเอ็มที : เชือก, ...): เชือก
ส่งกลับสตริงที่เกิดจากการจัดรูปแบบค่าของนิพจน์
เกิดขึ้นภายหลัง เอฟเอ็มที ตามที่ printf(3) รูปแบบ เอฟเอ็มที

กซบ(Str : เชือก, ลูบ : เชือก): เชือก

กซบ(Str : เชือก, ลูบ : เชือก, ตัวแทน : เชือก): เชือก
รับคืน Str ด้วยการจับคู่สตริงย่อยทั้งหมด ลูบ ลบหรือแทนที่โดย ตัวแทน,
ตามลำดับ

ด้านล่าง(Str : เชือก, ลูบ : เชือก): เชือก

ด้านล่าง(Str : เชือก, ลูบ : เชือก, ตัวแทน : เชือก): เชือก
รับคืน Str ด้วยการจับคู่สตริงย่อยซ้ายสุด ลูบ ลบหรือแทนที่โดย ตัวแทน,
ตามลำดับ อักขระ '^' และ '$' สามารถใช้ที่จุดเริ่มต้นและจุดสิ้นสุด
ของ ลูบ เพื่อยึดรูปแบบไว้ที่จุดเริ่มต้นหรือจุดสิ้นสุดของ Str.

ย่อย(Str : เชือก, รหัสประจำตัว : int): เชือก

ย่อย(Str : เชือก, รหัสประจำตัว : int, len : int): เชือก
ส่งกลับสตริงย่อยของ Str เริ่มต้นที่ตำแหน่ง รหัสประจำตัว ต่อท้ายสตริงหรือ
ยาว lenตามลำดับ การจัดทำดัชนีเริ่มต้นที่ 0 ถ้า รหัสประจำตัว เป็นลบหรือ รหัสประจำตัว is
มากกว่าความยาวของ Strเกิดข้อผิดพลาดร้ายแรง ในทำนองเดียวกันในวินาที
กรณีถ้า len เป็นลบหรือ รหัสประจำตัว + len มากกว่าความยาวของ Str, ถึงแก่ชีวิต
เกิดข้อผิดพลาด

strcmp(s1 : เชือก, s2 : เชือก): int
ให้ฟังก์ชัน C มาตรฐาน strcmp(3)

ความยาว(s : เชือก): int
ส่งกลับความยาวของสตริง s.

ดัชนี(s : เชือก, t : เชือก): int

รินเดกซ์(s : เชือก, t : เชือก): int
ส่งคืนดัชนีของอักขระในสตริง s โดยที่สำเนาซ้ายสุด (ขวาสุด)
ของสตริง t สามารถพบได้หรือ -1 if t ไม่ใช่สตริงย่อยของ s.

การจับคู่(s : เชือก, p : เชือก): int
ส่งคืนดัชนีของอักขระในสตริง s ตรงซ้ายสุดของแพทเทิร์น
p สามารถพบได้หรือ -1 หากไม่มีสตริงย่อยของ s ที่ตรงกัน p.

ท็อปเปอร์(s : เชือก): เชือก
ส่งคืนเวอร์ชันของ s ด้วยตัวอักษรที่แปลงเป็นตัวพิมพ์ใหญ่

ต่ำกว่า(s : เชือก): เชือก
ส่งคืนเวอร์ชันของ s ด้วยตัวอักษรที่แปลงเป็นตัวพิมพ์เล็ก

ศีล(s : เชือก): เชือก
ส่งคืนเวอร์ชันของ s เหมาะสมที่จะใช้เป็นตัวระบุในไฟล์ดอท

HTML(g : กราฟ_t, s : เชือก): เชือก
ส่งคืนเวอร์ชัน ``magic'' ของ s เป็นสตริง HTML โดยทั่วไปจะใช้เพื่อ
แนบป้ายกำกับที่เหมือน HTML กับวัตถุกราฟ โปรดทราบว่าสตริงที่ส่งคืนอยู่ใน
g. โดยเฉพาะอย่างยิ่ง มันจะเป็นอิสระเมื่อ g ถูกปิดและทำหน้าที่เป็นสตริง HTML
จะต้องใช้กับวัตถุของ g. นอกจากนี้ โปรดทราบว่าวงเล็บมุม
คำพูดไม่ควรเป็นส่วนหนึ่งของ s. สิ่งเหล่านี้จะถูกเพิ่มหาก g เขียนด้วยคอนกรีต DOT
จัดรูปแบบ

ishtml(s : เชือก): int
คืนค่าที่ไม่ใช่ศูนย์ if และ only if s เป็นสตริง HTML

xของ(s : เชือก): เชือก
ส่งคืนสตริง "x" ถ้า s มีรูปแบบ "x,y" โดยที่ทั้งสอง x และ y เป็นตัวเลข

คุณ(s : เชือก): เชือก
ส่งคืนสตริง "y" ถ้า s มีรูปแบบ "x,y" โดยที่ทั้งสอง x และ y เป็นตัวเลข

ของ(s : เชือก): เชือก
ส่งคืนสตริง "llx,lly" ถ้า s มีรูปแบบ "llx,lly,คุณ,อูริ"ซึ่งทั้งหมด llx,
lly, คุณและ อูริ เป็นตัวเลข

คุณของ(s)
คุณของ(s : เชือก): เชือก ส่งคืนสตริง "คุณ,อูริ" ถ้า s มีรูปแบบ
"llx,lly,คุณ,อูริ"ซึ่งทั้งหมด llx, lly, คุณและ อูริ เป็นตัวเลข

สแกน(s : เชือก, เอฟเอ็มที : เชือก, ...): int
สแกนสตริง s, ดึงค่าตามค่า สแกน(3) รูปแบบ เอฟเอ็มทีส่วน
ค่าจะถูกเก็บไว้ในที่อยู่ต่อไปนี้ เอฟเอ็มที, ที่อยู่ที่มีรูปแบบ &v,
ที่ไหน v เป็นตัวแปรที่ประกาศเป็นประเภทที่ถูกต้อง ส่งกลับจำนวนรายการ
สแกนสำเร็จแล้ว

แยก(s : เชือก, ขึ้น : แถว, Seps : เชือก): int

แยก(s : เชือก, ขึ้น : แถว): int

สัญญาณ(s : เชือก, ขึ้น : แถว, Seps : เชือก): int

สัญญาณ(s : เชือก, ขึ้น : แถว): int
การขอ แยก ฟังก์ชั่นแบ่งสตริง s ลงในทุ่งนาในขณะที่ สัญญาณ ฟังก์ชัน
แบ่งสตริงเป็นโทเค็น ฟิลด์ประกอบด้วยอักขระที่ไม่ใช่ตัวคั่นทั้งหมด
ระหว่างอักขระตัวคั่นสองตัวหรือจุดเริ่มต้นหรือจุดสิ้นสุดของสตริง ดังนั้น a
ฟิลด์อาจเป็นสตริงว่าง โทเค็นเป็นสตริงย่อยที่ไม่ว่างเปล่าสูงสุด
ที่มีตัวคั่น อักขระตัวคั่นคืออักขระที่ระบุใน
Seps การโต้แย้ง. ถ้า Seps ไม่ได้ระบุ ค่าเริ่มต้นคือ " \t\n" NS
ฟังก์ชันส่งคืนจำนวนฟิลด์หรือโทเค็น

ฟิลด์และโทเค็นถูกเก็บไว้ในอาร์เรย์อาร์กิวเมนต์ อาร์เรย์ต้องเป็น เชือก-
มีค่าและหากระบุประเภทดัชนีจะต้องเป็น int. รายการถูกจัดทำดัชนี
โดยจำนวนเต็มต่อเนื่องกัน เริ่มที่ 0 ค่าใดๆ ที่เก็บอยู่ในอาร์เรย์จะ
ถูกเขียนทับ หรือยังคงมีอยู่หลังจากที่ฟังก์ชันส่งคืน

I / O
พิมพ์(...): ถือเป็นโมฆะ
พิมพ์( ด่วน, ... ) พิมพ์การแสดงสตริงของอาร์กิวเมนต์แต่ละรายการในทางกลับกันไปยัง
แย่ตามด้วยขึ้นบรรทัดใหม่

printf(เอฟเอ็มที : เชือก, ...): int

printf(fd : int, เอฟเอ็มที : เชือก, ...): int
พิมพ์สตริงที่เกิดจากการจัดรูปแบบค่าของนิพจน์ต่อไปนี้
เอฟเอ็มที ตามที่ printf(3) รูปแบบ เอฟเอ็มที. คืนค่า 0 เมื่อสำเร็จ โดยค่าเริ่มต้น มัน
พิมพ์บน แย่. ถ้าจำนวนเต็มไม่จำเป็น fd จะได้รับ, เอาต์พุตถูกเขียนบน
เปิดสตรีมที่เกี่ยวข้องกับ fd.

scanf(เอฟเอ็มที : เชือก, ...): int

scanf(fd : int, เอฟเอ็มที : เชือก, ...): int
สแกนค่าจากสตรีมอินพุตตาม scanf(3) รูปแบบ เอฟเอ็มทีส่วน
ค่าจะถูกเก็บไว้ในที่อยู่ต่อไปนี้ เอฟเอ็มที, ที่อยู่ที่มีรูปแบบ &v,
ที่ไหน v เป็นตัวแปรที่ประกาศเป็นประเภทที่ถูกต้อง โดยค่าเริ่มต้น จะอ่านจาก
สเตดิน. ถ้าจำนวนเต็มไม่จำเป็น fd จะได้รับ อินพุตถูกอ่านจากสตรีมเปิด
ที่เกี่ยวข้องกับ fd. ส่งกลับจำนวนรายการที่สแกนสำเร็จ

โอเพ่นฟ(s : เชือก, t : เชือก): int
เปิดไฟล์ s เป็นสตรีม I/O อาร์กิวเมนต์สตริง t ระบุว่าไฟล์เป็น
เปิด อาร์กิวเมนต์เหมือนกับฟังก์ชัน C เปิด(3). ส่งคืน an
จำนวนเต็มแสดงถึงสตรีมหรือ -1 เมื่อมีข้อผิดพลาด

ตามปกติแล้ว สตรีม 0, 1 และ 2 ได้เปิดเป็น .แล้ว สเตดิน, แย่และ สตเดอร์,
ตามลำดับ ตั้งแต่ จีวีพีอาร์ อาจใช้ สเตดิน ในการอ่านกราฟอินพุต ผู้ใช้ควร
หลีกเลี่ยงการใช้สตรีมนี้

ปิดF(fd : int): int
ปิดสตรีมเปิดที่แสดงด้วยจำนวนเต็ม fd. สตรีม 0, 1 และ 2 ไม่สามารถ
ปิด. คืนค่า 0 เมื่อสำเร็จ

อ่าน L(fd : int): เชือก
ส่งคืนบรรทัดถัดไปที่อ่านจากอินพุตสตรีม fd. ส่งคืนสตริงว่าง ""
ที่ส่วนท้ายของไฟล์ โปรดทราบว่าอักขระขึ้นบรรทัดใหม่จะเหลืออยู่ในสตริงที่ส่งคืน

คณิตศาสตร์
ประสบการณ์(d : สอง): สอง
ส่งกลับ e ไปยัง dพลังที

เข้าสู่ระบบ(d : สอง): สอง
ส่งคืนล็อกธรรมชาติของ d.

ตร.ว(d : สอง): สอง
คืนค่ารากที่สองของ double d.

ธาร(d : สอง, x : สอง): สอง
รับคืน d ยกขึ้นเป็น xพลังที

เกวียน(d : สอง): สอง
ส่งกลับค่าโคไซน์ของ d.

บาป(d : สอง): สอง
ส่งกลับค่าไซน์ของ d.

อาทาน2(y : สอง, x : สอง): สอง
ส่งกลับอาร์คแทนเจนต์ของ y / x ในช่วง -pi ถึง pi

นาที(y : สอง, x : สอง): สอง
ส่งกลับค่าต่ำสุดของ y และ x.

MAX(y : สอง, x : สอง): สอง
ส่งกลับค่าสูงสุดของ y และ x.

ที่สมาคม อาร์เรย์
# ขึ้น : int
ส่งกลับจำนวนองค์ประกอบในอาร์เรย์ ขึ้น.

รหัสประจำตัว in ขึ้น : int
คืนค่า 1 หากตั้งค่าสำหรับ index รหัสประจำตัว ในอาร์เรย์ ขึ้น. คืนค่า 0
มิฉะนั้น.

ยกเลิกการตั้งค่า(v : แถว, รหัสประจำตัว): int
ลบรายการที่จัดทำดัชนีโดย รหัสประจำตัว. คืนค่า 1 หากมีรายการอยู่ มิฉะนั้น 0

ยกเลิกการตั้งค่า(v : แถว): ถือเป็นโมฆะ
กำหนดค่าเริ่มต้นอาร์เรย์อีกครั้ง

เบ็ดเตล็ด
ทางออก(v : int): ถือเป็นโมฆะ
สาเหตุที่ จีวีพีอาร์ เพื่อออกด้วยรหัสทางออก v.

ระบบ(cmd : เชือก): int
ให้ฟังก์ชัน C มาตรฐาน ระบบ(3). มันรัน cmd ในเปลือกของผู้ใช้
สภาพแวดล้อม และส่งคืนสถานะการออกของเชลล์

ทั้งหมด- สอง
ส่งกลับค่าสุ่มหลอกสองเท่าระหว่าง 0 ถึง 1

เส้นใย- int

เส้นใย(v : int): int
ตั้งเมล็ดพันธุ์สำหรับเครื่องกำเนิดตัวเลขสุ่ม อาร์กิวเมนต์ที่เป็นทางเลือกให้เมล็ด
หากไม่ระบุ เวลาปัจจุบันจะถูกใช้ ค่าเมล็ดก่อนหน้าจะถูกส่งกลับ
เส้นใย ควรโทรก่อนโทรไป ทั้งหมด.

สีx(สี : เชือก, เอฟเอ็มที : เชือก): เชือก
แปลสีจากรูปแบบหนึ่งเป็นอีกรูปแบบหนึ่ง NS สี อาร์กิวเมนต์ควรเป็นสี
ในการแสดงสตริงที่รู้จักอย่างใดอย่างหนึ่ง NS เอฟเอ็มที ค่าควรเป็นหนึ่งใน
"RGB", "RGBA", "HSV" หรือ "HSVA" สตริงว่างถูกส่งกลับเมื่อมีข้อผิดพลาด

สร้างขึ้นใน ตัวแปร


จีวีพีอาร์ ให้ตัวแปรพิเศษในตัวบางตัว ซึ่งค่าจะถูกตั้งค่าโดยอัตโนมัติโดย
จีวีพีอาร์ ขึ้นอยู่กับบริบท ยกเว้นตามที่ระบุไว้ ผู้ใช้ไม่สามารถแก้ไขค่าของตนได้

$ : obj_t
หมายถึงวัตถุปัจจุบัน (โหนด ขอบ กราฟ) ขึ้นอยู่กับบริบท มันไม่ใช่
พร้อมใช้งานใน เริ่ม or END ข้อ

$F : เชือก
เป็นชื่อของไฟล์อินพุตปัจจุบัน

$G : กราฟ_t
หมายถึงกราฟปัจจุบันที่กำลังประมวลผล ไม่มีใน เริ่ม or END
ข้อ

$NG : กราฟ_t
หมายถึงกราฟถัดไปที่จะประมวลผล ถ้า $NG คือ NULL กราฟปัจจุบัน $G คือ
กราฟสุดท้าย โปรดทราบว่าหากอินพุตมาจาก stdin กราฟสุดท้ายจะไม่เป็น
กำหนดจนกว่าท่ออินพุตจะปิด ไม่มีใน เริ่ม or END
ข้อหรือถ้า -n ใช้ธง

$O : กราฟ_t
หมายถึงกราฟเอาท์พุท ก่อนการข้ามผ่านของกราฟ จะมีการเริ่มต้นไปยังเป้าหมาย
กราฟ. หลังจากข้ามผ่านและอื่นๆ END_G การกระทำ หากอ้างถึงกราฟที่ไม่ว่างเปล่า
กราฟนั้นถูกพิมพ์ลงบนกระแสข้อมูลขาออก ใช้ได้เฉพาะใน N, E และ END_G
ข้อ ผู้ใช้อาจตั้งค่ากราฟเอาต์พุตได้

$T : กราฟ_t
หมายถึงกราฟเป้าหมายปัจจุบัน เป็น subgraph ของ $G และมีเฉพาะใน
N, E และ END_G ข้อ

$tgtชื่อ : เชือก
หมายถึงชื่อของกราฟเป้าหมาย โดยค่าเริ่มต้น จะถูกตั้งค่าเป็น "gvpr_result". ถ้า
ใช้หลายครั้งในระหว่างการดำเนินการของ จีวีพีอาร์, ชื่อจะต่อท้ายด้วย an
จำนวนเต็ม. ตัวแปรนี้อาจกำหนดโดยผู้ใช้

$tvroot : node_t
ระบุโหนดเริ่มต้นสำหรับความลึก (โดยตรงหรือไม่มีทิศทาง) ก่อนหรือกว้าง-
การข้ามผ่านครั้งแรกของกราฟ (cf. $tvtype ด้านล่าง). ค่าเริ่มต้นคือ NULL สำหรับ
แต่ละกราฟอินพุต หลังจากการข้ามผ่านที่รูทที่กำหนด ถ้าค่าของ $tvroot
เปลี่ยนไปแล้ว การข้ามผ่านใหม่จะเริ่มด้วยค่าใหม่เป็น $tvroot. นอกจากนี้ set
$ทีวีถัดไป ด้านล่าง

$ทีวีถัดไป : node_t
ระบุโหนดเริ่มต้นถัดไปสำหรับความลึก (โดยตรงหรือไม่มีทิศทาง) ก่อนหรือ
การข้ามผ่านแบบกว้างครั้งแรกของกราฟ (cf. $tvtype ด้านล่าง). หากการข้ามผ่านเสร็จสิ้น
และ $tvroot ไม่ได้รับการรีเซ็ต แต่ $ทีวีถัดไป ได้ตั้งไว้แต่ไม่ได้ใช้ นี่
โหนดจะถูกใช้เป็นตัวเลือกต่อไปสำหรับ $tvroot. ค่าเริ่มต้นคือ NULL สำหรับ
แต่ละกราฟอินพุต

$tvedge : ขอบ_t
สำหรับ BFS และ DFS traversals ค่านี้จะถูกกำหนดเป็น edge ที่ใช้ในการมาถึงปัจจุบัน
โหนดหรือขอบ ที่จุดเริ่มต้นของการข้ามผ่านหรือสำหรับการข้ามประเภทอื่น
มูลค่าคือ NULL.

$tvtype : ทีวีประเภท_t
บ่งบอกว่า จีวีพีอาร์ ข้ามกราฟ ใช้ค่าคงที่ได้เพียงค่าเดียว
ด้วยคำนำหน้า "TV_" ที่อธิบายไว้ด้านล่าง TV_แบน เป็นค่าเริ่มต้น

ในไลบรารีกราฟพื้นฐาน ซีกราฟ(3) ขอบในกราฟที่ไม่มีทิศทางจะได้รับ
ทิศทางโดยพลการ ใช้สำหรับการข้ามผ่าน เช่น TV_fwd, ต้องใช้
ขอบตรง

อาร์จีซี : int
หมายถึงจำนวนอาร์กิวเมนต์ที่ระบุโดย -a args อาร์กิวเมนต์บรรทัดคำสั่ง

อาร์จีวี : เชือก แถว
หมายถึงอาร์เรย์ของอาร์กิวเมนต์ที่ระบุโดย -a args อาร์กิวเมนต์บรรทัดคำสั่ง NS
iอาร์กิวเมนต์ได้รับโดย อาร์จีวี[i].

สร้างขึ้นใน ค่าคงที่


มีค่าคงที่สัญลักษณ์หลายอย่างที่กำหนดโดย จีวีพีอาร์.

NULL : obj_t
การอ้างอิงวัตถุ null เทียบเท่ากับ 0

TV_แบน : ทีวีประเภท_t
การข้ามผ่านที่เรียบง่ายและแบนราบ โดยมีวัตถุกราฟที่เข้าชมในลำดับที่ดูเหมือนไม่มีกฎเกณฑ์

ทีวี_เน : ทีวีประเภท_t
การข้ามผ่านที่เข้าชมโหนดทั้งหมดก่อน จากนั้นจึงไปที่ขอบทั้งหมด

TV_th : ทีวีประเภท_t
การข้ามผ่านซึ่งเข้าไปที่ขอบทั้งหมดก่อน จากนั้นจึงไปที่โหนดทั้งหมด

TV_dfs : ทีวีประเภท_t
TV_postdfs : ทีวีประเภท_t
TV_prepostdfs : ทีวีประเภท_t
การข้ามผ่านของกราฟโดยใช้การค้นหาเชิงลึกครั้งแรกบนพื้นฐานที่ไม่มีทิศทาง
กราฟ. เพื่อทำการสำรวจ จีวีพีอาร์ จะตรวจสอบค่าของ $tvroot. ถ้าสิ่งนี้มี
ค่าเดียวกับที่เคยมีมา (เมื่อเริ่มต้น ค่าก่อนหน้าจะถูกเตรียมข้อมูลเบื้องต้น
ไปยัง NULL.) จีวีพีอาร์ จะมองหาโหนดที่ไม่ได้เยี่ยมชมและข้ามผ่านการเชื่อมต่อ
ส่วนประกอบ. ในทางกลับกัน ถ้า $tvroot มีการเปลี่ยนแปลงส่วนประกอบที่เชื่อมต่อจะ
ไปเที่ยวโดยถือว่ายังไม่เคยไปหรือถ้า $tvroot is NULLที่
การข้ามผ่านจะหยุด โปรดทราบว่าการใช้ TV_dfs และ $tvrootสามารถสร้างได้
วงอนันต์

โดยค่าเริ่มต้น การข้ามผ่านจะทำในการสั่งซื้อล่วงหน้า นั่นคือมีการเยี่ยมชมโหนดมาก่อน
ขอบที่มองไม่เห็นทั้งหมด สำหรับ TV_postdfsขอบที่ไม่ได้เยี่ยมชมทั้งหมดของโหนดคือ
เยี่ยมชมก่อนโหนด สำหรับ TV_prepostdfs, มีการเยี่ยมชมโหนดสองครั้งก่อนและ
หลังจากขอบที่มองไม่เห็นทั้งหมด

TV_fwd : ทีวีประเภท_t
TV_postfwd : ทีวีประเภท_t
TV_prepostfwd : ทีวีประเภท_t
การข้ามผ่านของกราฟโดยใช้การค้นหาเชิงลึกครั้งแรกบนกราฟที่ตามมาเท่านั้น
ส่วนโค้งไปข้างหน้า ทางเลือกของรากสำหรับการข้ามผ่านจะเหมือนกับที่อธิบายไว้สำหรับ
TV_dfs ข้างต้น. ลำดับการมาเยี่ยมต่าง ๆ ที่ระบุโดย TV_fwd, TV_postfwd
และ TV_prepostfwd เหมือนกับที่ระบุโดยเส้นทางที่คล้ายคลึงกัน
TV_dfs, TV_postdfs และ TV_prepostdfs.

ทีวี_รอบ : ทีวีประเภท_t
ทีวี_โพสต์เรฟ : ทีวีประเภท_t
TV_prepostrev : ทีวีประเภท_t
การข้ามผ่านของกราฟโดยใช้การค้นหาเชิงลึกครั้งแรกบนกราฟที่ตามมาเท่านั้น
ส่วนโค้งย้อนกลับ ทางเลือกของรากสำหรับการข้ามผ่านจะเหมือนกับที่อธิบายไว้สำหรับ
TV_dfs ข้างต้น. ลำดับการมาเยี่ยมต่าง ๆ ที่ระบุโดย ทีวี_รอบ, ทีวี_โพสต์เรฟ
และ TV_prepostrev เหมือนกับที่ระบุโดยเส้นทางที่คล้ายคลึงกัน
TV_dfs, TV_postdfs และ TV_prepostdfs.

TV_bfs : ทีวีประเภท_t
การข้ามผ่านของกราฟโดยใช้การค้นหาแบบกว้างๆ บนกราฟโดยไม่สนใจขอบ
ทิศทาง. ดูรายการบน TV_dfs ข้างต้นสำหรับบทบาทของ $tvroot.

ตัวอย่าง


จีวีพีอาร์ -i 'ไม่มี[สี=="สีน้ำเงิน"]' ไฟล์. gv

สร้างกราฟย่อยที่เกิดจากโหนดของโหนดทั้งหมดที่มีสีน้ำเงิน

จีวีพีอาร์ -c 'N[สี=="สีน้ำเงิน"]{สี = "สีแดง"}' ไฟล์. gv

ทำให้โหนดสีน้ำเงินทั้งหมดเป็นสีแดง

เริ่ม { int n, e; int ทีโอที_n = 0; int สิริ = 0; }
บีอีจี_จี {
n = nโหนด($G);
e = ขอบ($G);
printf ("%NS โหนด %d ขอบ %s\n", n, e, $G.ชื่อ);
ทีโอที_n += n;
สิริ += e;
}
END { printf ("%NS โหนด %d ขอบ รวม\n", โทท_เอ็น, สิริ) }

เวอร์ชั่นของโปรแกรม gc.

จีวีพีอาร์ -c ""

เทียบเท่ากับ Nope.

บีอีจี_จี { กราฟ_t g = กราฟ ("ผสาน", "NS"); }
E {
node_t h = โคลน(g,$.head);
node_t t = โคลน(g,$.tail);
ขอบ_t e = ขอบ(t,h,"");
e.น้ำหนัก = e.น้ำหนัก + 1;
}
END_G { $O = g; }

สร้างกราฟอินพุตเวอร์ชันที่เข้มงวด โดยที่แอตทริบิวต์น้ำหนักของขอบ
ระบุจำนวนขอบจากกราฟอินพุตที่ขอบแสดง

เริ่ม {node_t n; int องศา[]}
อี{องศา[หัว]++; องศา[หาง]++; }
END_G {
สำหรับ (องศา[n]) {
printf ("องศา[%s] = %d\n", น.ชื่อ องศา[n]);
}
}

คำนวณองศาของโหนดที่มีขอบ

เริ่ม {
int i, เยื้อง;
int เห็น[สตริง];
ถือเป็นโมฆะ ปริญญ์ (นานาชาติ คต) {
สำหรับ (i = 0; i < ซีเอ็นที; ผม++) printf (" ");
}
}
บีอีจี_จี {

$tvtype = TV_prepostfwd;
$tvroot = โหนด($,ARGV[0]);
}
N {
if (เห็น[$.name]) เยื้อง--;
อื่น {
prInd(เยื้อง);
พิมพ์ ($.ชื่อ);
เห็น[$.name] = 1;
เยื้อง++;
}
}

พิมพ์การข้ามผ่านของกราฟเชิงลึกเป็นอันดับแรก โดยเริ่มจากโหนดที่ชื่อ
อาร์จีวี[0]เป็นรายการที่เยื้อง

และพวกเรา


กฟปราพัท
รายการไดเร็กทอรีที่คั่นด้วยเครื่องหมายโคลอนเพื่อค้นหาไฟล์ที่ระบุโดย
ตัวเลือก -f จีวีพีอาร์ มีรายการเริ่มต้นในตัว ถ้า กฟปราพัท ไม่ได้กำหนดไว้
ใช้รายการเริ่มต้น ถ้า กฟปราพัท เริ่มต้นด้วยเครื่องหมายทวิภาค รายการจะถูกสร้างขึ้นโดย
ท้าย กฟปราพัท ไปที่รายการเริ่มต้น ถ้า กฟปราพัท ลงท้ายด้วยโคลอน รายการคือ
เกิดขึ้นจากการต่อท้ายรายการเริ่มต้นไปที่ กฟปราพัท. มิฉะนั้น, กฟปราพัท ใช้สำหรับ
รายการ.

ในระบบ Windows ให้แทนที่ ``colon'' ด้วย ``semicolon'' ในย่อหน้าก่อนหน้า

ใช้ gvpr ออนไลน์โดยใช้บริการ onworks.net


เซิร์ฟเวอร์และเวิร์กสเตชันฟรี

ดาวน์โหลดแอพ Windows & Linux

คำสั่ง Linux

Ad




×
โฆษณา
❤️ช้อป จอง หรือซื้อที่นี่โดยไม่เสียค่าใช้จ่าย ช่วยให้บริการต่างๆ ฟรี