HW4.pdf

‫ﺑﺎﺳﻤﻪ ﺗﻌﺎﻟﯽ‬
‫ﻫﻮش ﻣﺼﻨﻮﻋﯽ )‪(۴٠-۴١٧‬‬
‫‪Artificial Intelligence‬‬
‫ﻣﺪرس‪ :‬دﮐﺘﺮ ﺳﻠﯿﻤﺎﻧﯽ‬
‫داﻧﺸﮑﺪهی ﻣﻬﻨﺪﺳﯽ ﮐﺎﻣﭙﯿﻮﺗﺮ‬
‫ﻣﻮﻋﺪ ارﺳﺎل‪ ٢٩:‬اردﯾﺒﻬﺸﺖ ‪١٣٩٢‬‬
‫ﺗﻤﺮﯾﻦ ﮐﺘﺒﯽ و ﻋﻤﻠﯽ ‪ -‬ﺷﻤﺎرهی ‪۴‬‬
‫• ﺑﻪ ازای ﻫﺮ روز ﺗﺎﺧﯿﺮ در ﺗﺤﻮﯾﻞ ﺗﻤﺮﯾﻦ )ﺣﺪاﮐﺜﺮ ‪ ٣‬روز( ‪ ١٠٪‬از ﻧﻤﺮهی آن ﮐﺎﺳﺘﻪ ﺧﻮاﻫﺪ ﺷﺪ‪.‬‬
‫• ﺟﻮاب ﺗﻤﺮﯾﻦﻫﺎی ﻋﻤﻠﯽ ﺧﻮد را ﻣﯽﺑﺎﯾﺴﺖ ﺑﻪ ﺻﻮرت ﯾﮏ ﻓﺎﯾﻞ ﻓﺸﺮده ﺑﺎ ﻧﺎم ‪ HW4-[STUDENT-ID].zip‬از‬
‫ﻃﺮﯾﻖ اﯾﻤﯿﻞ ﺑﺎ ﻣﻮﺿﻮع ]‪ HW4-[STUDENT-ID‬ﺑﻪ ‪ [email protected]‬ارﺳﺎل ﮐﻨﯿﺪ‪.‬‬
‫• ﺗﻤﺎم ﻓﺎﯾﻞﻫﺎی ارﺳﺎﻟﯽ در اﻧﺘﻬﺎ ﻣﻮرد ﺑﺮرﺳﯽ ﺗﻘﻠﺐ ﻗﺮار ﺧﻮاﻫﻨﺪ ﮔﺮﻓﺖ‪ .‬اﻣﮑﺎن ﮐﺸﻒ ﺗﻘﻠﺐ ﺣﺘﯽ ﺑﺎ ﺗﻐﯿﯿﺮات ﺑﺴﯿﺎر‬
‫ﻧﯿﺰ ﺗﻮﺳﻂ اﺑﺰارﻫﺎی ﻣﻮﺟﻮد اﻣﮑﺎنﭘﺬﯾﺮ اﺳﺖ‪.‬‬
‫ﺳﻮاﻻت ﺗﺌﻮری )‪ ۵۵‬ﻧﻤﺮه(‬
‫‪١‬‬
‫‪١.١‬‬
‫ﮐﻠﯿﺪﻫﺎی ﺑﺮق‬
‫در ﺳﺎﺧﺘﻤﺎﻧﯽ ‪ n‬ﻻﻣﭗ دارﯾﻢ )} ‪ (L = {l١ , l٢ , , ln‬ﮐﻪ ﻫﻤﮕﯽ در اﺑﺘﺪا ﺧﺎﻣﻮشاﻧﺪ‪ .‬اﯾﻦ ﺳﺎﺧﺘﻤﺎن ‪ m‬ﮐﻠﯿﺪ ﺑﺮق دارد‬
‫)} ‪ .(B = {b١ , b٢ , , bn‬ﮐﻠﯿﺪ ‪b j‬ﺑﻪ ﻻﻣﭗﻫﺎی ‪ Tj ⊂ L‬ﻣﺘﺼﻞ اﺳﺖ‪ .‬ﺑﺎ ﺗﻐﯿﯿﺮ وﺿﻌﯿﺖ ﻫﺮ ﮐﻠﯿﺪ ﺗﻤﺎم ﻻﻣﭗﻫﺎی ﻣﺘﺼﻞ ﺑﻪ‬
‫آن ﺗﻐﯿﯿﺮ وﺿﻌﯿﺖ ﻣﯽدﻫﻨﺪ‪ .‬دﻗﺖ ﮐﻨﯿﺪ ﮐﻪ ﻣﻤﮑﻦ اﺳﺖ ﯾﮏ ﻻﻣﭗ ﺑﻪ ﭼﻨﺪ ﮐﻠﯿﺪ ﻣﺘﺼﻞ ﺑﺎﺷﺪ‪ .‬ﻣﯽﺧﻮاﻫﯿﻢ ﺑﺎ ﻓﺸﺮدن دﻧﺒﺎﻟﻪ‬
‫ای از ﮐﻠﯿﺪﻫﺎ ﺗﻤﺎم ﻻﻣﭗﻫﺎ را روﺷﻦ ﮐﻨﯿﻢ‪.‬‬
‫‪ .١‬ﻧﺸﺎن دﻫﯿﺪ ﮐﺎﻓﯽ اﺳﺖ ﻫﺮ ﮐﻠﯿﺪ را ﺣﺪاﮐﺜﺮ ﯾﮏ ﺑﺎر ﺗﻐﯿﯿﺮ وﺿﻌﯿﺖ دﻫﯿﻢ ﺗﺎ ﺗﻤﺎم ﻻﻣﭗﻫﺎ روﺷﻦ ﺷﻮد‪ ٢) .‬ﻧﻤﺮه(‬
‫‪ .٢‬ﻧﺸﺎن دﻫﯿﺪ ﺗﺮﺗﯿﺐ ﻓﺸﺮدن ﮐﻠﯿﺪﻫﺎ اﻫﻤﯿﺘﯽ در ﻧﺘﯿﺠﻪ ﻧﺪارد‪ ٢) .‬ﻧﻤﺮه(‬
‫‪ .٣‬ﻣﺴﺌﻠﻪ را ﺑﻪ ﺻﻮرت ﯾﮏ ﻣﺴﺌﻠﻪی ارﺿﺎی ﻣﺤﺪودﯾﺖ ﻣﺪل ﮐﻨﯿﺪ‪) .‬ﻣﺘﻐﯿﺮﻫﺎ‪ ،‬داﻣﻨﻪی ﻣﺘﻐﯿﺮﻫﺎ و ﻣﺤﺪودﯾﺖﻫﺎ را ذﮐﺮ‬
‫ﮐﻨﯿﺪ( )‪ ۵‬ﻧﻤﺮه(‬
‫‪ .۴‬ﻓﺮض ﮐﻨﯿﺪ ﺑﻪ دﻟﯿﻞ اﺗﺼﺎﻻت رخ داده در ﺳﯿﻢﮐﺸﯽ ﺳﺎﺧﺘﻤﺎن اﮔﺮ ‪ ٣‬ﮐﻠﯿﺪ ﻣﺘﻮاﻟﯽ روﺷﻦ ﺑﺎﺷﺪ ﻻﻣﭗﻫﺎ ﻣﯽﺳﻮزﻧﺪ‪ .‬ﺑﺎ‬
‫اﻓﺰودن ﮐﻤﺘﺮﯾﻦ ﻣﺤﺪودﯾﺖﻫﺎ ﻣﺪل ﻗﺴﻤﺖ ﻗﺒﻞ را ﺑﻪ اﯾﻦ ﻣﺴﺌﻠﻪ ﺗﺒﺪﯾﻞ ﮐﻨﯿﺪ‪ ۴) .‬ﻧﻤﺮه(‬
‫‪٢.١‬‬
‫رﻧﮓآﻣﯿﺰی ﻧﻘﺸﻪ‬
‫ﻣﯽﺧﻮاﻫﯿﻢ ﻧﻘﺸﻪ اﺳﺘﺮاﻟﯿﺎ را ﺑﻪ ﺳﻪ رﻧﮓ ﻗﺮﻣﺰ‪ ،‬ﺳﺒﺰ و آﺑﯽ رﻧﮓآﻣﯿﺰی ﮐﻨﯿﻢ )ﺷﮑﻞ ‪ .(١‬اﻟﮕﺮﯾﺘﻢ ‪ AC-٣‬را ﺑﻪ ﮐﺎر ﮔﯿﺮﯾﺪ و‬
‫ﻧﺸﺎن دﻫﯿﺪ ﮐﻪ ﻣﯽﺗﻮان از اﯾﻦ ﻃﺮﯾﻖ ﻧﺎﺳﺎزﮔﺎری ﻣﻘﺪاردﻫﯽ ‪ WA = red‬و ‪ V = blue‬را ﺗﺸﺨﯿﺺ داد‪ ٨) .‬ﻧﻤﺮه(‬
‫‪١‬‬
‫ﺷﮑﻞ ‪ :١‬ﻧﻘﺸﻪ اﺳﺘﺮاﻟﯿﺎ‬
‫‪٣.١‬‬
‫ﻋﻤﻠﮕﺮ در ﻣﻨﻄﻖ ﮔﺰارهای‬
‫ﻣﯽداﻧﯿﻢ در ﻣﻨﻄﻖ ﮔﺰارهای ﻓﻘﻂ ﻋﻤﻠﮕﺮﻫﺎی → ‪ ¬, ∧, ∨, ↔,‬را دارﯾﻢ‪ .‬ﻋﻤﻠﮕﺮ ‪ ◦r‬را ﺑﻪ ﺻﻮرت زﯾﺮ ﺗﻌﺮﯾﻒ ﻣﯽﮐﻨﯿﻢ‪:‬‬
‫‪r‬‬
‫‪f‬‬
‫‪g‬‬
‫‪f ◦r g‬‬
‫‪٠‬‬
‫‪٠‬‬
‫‪٠‬‬
‫‪٠‬‬
‫‪٠‬‬
‫‪٠‬‬
‫‪١‬‬
‫‪٠‬‬
‫‪٠‬‬
‫‪١‬‬
‫‪٠‬‬
‫‪١‬‬
‫‪٠‬‬
‫‪١‬‬
‫‪١‬‬
‫‪١‬‬
‫‪١‬‬
‫‪٠‬‬
‫‪٠‬‬
‫‪٠‬‬
‫‪١‬‬
‫‪٠‬‬
‫‪١‬‬
‫‪١‬‬
‫‪١‬‬
‫‪١‬‬
‫‪٠‬‬
‫‪٠‬‬
‫‪١‬‬
‫‪١‬‬
‫‪١‬‬
‫‪١‬‬
‫ﺟﺪول ‪ :١‬ﺟﺪول درﺳﺘﯽ‬
‫ﺑﺎ اﺳﺘﻔﺎده از ﻋﻤﻠﮕﺮﻫﺎی ﻣﻨﻄﻖ ﮔﺰارهای و ‪ f ،r‬و ‪ g‬ﻋﺒﺎرﺗﯽ ﻫﻢارز ‪ f ◦r g‬ﺑﻨﻮﯾﺴﯿﺪ‪ .‬در ﯾﮏ ﺟﻤﻠﻪ ﺷﺮح دﻫﯿﺪ ﻋﻤﻠﮕﺮ ‪◦r‬‬
‫ﭼﻪ ﻣﯽﮐﻨﺪ؟ )‪ ۵‬ﻧﻤﺮه(‬
‫‪۴.١‬‬
‫درﺟﻪی درﺳﺘﯽ‬
‫ﻣﺸﺨﺺ ﮐﻨﯿﺪ ﻫﺮ ﯾﮏ از ﻋﺒﺎرات زﯾﺮ ﻫﻤﯿﺸﻪ درﺳﺖ‪ ،‬ﻫﻤﯿﺸﻪ ﻧﺎدرﺳﺖ ﯾﺎ در ﺑﻌﻀﯽ ﺣﺎﻻت درﺳﺖ و در ﺑﻌﻀﯽ ﻧﺎدرﺳﺖ‬
‫اﺳﺖ؟ اﮔﺮ در ﺑﻌﻀﯽ ﺣﺎﻻت درﺳﺖ و در ﺑﻌﻀﯽ ﻧﺎدرﺳﺖ اﺳﺖ ﺑﺮای ﺣﺎﻟﺖ درﺳﺖ و ﻧﺎدرﺳﺖ ﻣﺜﺎل ﺑﺰﻧﯿﺪ‪ .‬اﮔﺮ ﻫﻤﯿﺸﻪ‬
‫درﺳﺖ ﯾﺎ ﻫﻤﯿﺸﻪ ﻧﺎدرﺳﺖ اﺳﺖ ﺑﻪ وﺳﯿﻠﻪی ‪ resolution‬ﺛﺎﺑﺖ ﮐﻨﯿﺪ‪ ١٠) .‬ﻧﻤﺮه(‬
‫‪(( P → Q) ∧ ( R → S) ∧ ( P ∨ R)) → ( Q ∨ S) .١‬‬
‫‪(∀ x ∃yP( x, y)) → (∃ xP( x, x )) .٢‬‬
‫‪٢‬‬
‫‪۵.١‬‬
‫ﺷﺠﺮه ﻧﺎﻣﻪ‬
‫ﻣﯽﺧﻮاﻫﯿﻢ ﺑﺎ اﺳﺘﻔﺎده از ﻣﻨﻄﻖ ﻣﺮﺗﺒﻪ اول ﭘﺎﯾﮕﺎه داﻧﺸﯽ ﺑﺮای ﻧﮕﻬﺪاری رواﺑﻂ ﺧﺎﻧﻮادﮔﯽ ﺷﺶ ﻧﻔﺮ ﺑﻪ ﻧﺎمﻫﺎی ﻋﻠﯽ ‪(A)،‬‬
‫ﺣﺴﻦ)‪ ، (H‬ﺑﺎﺑﮏ)‪ ، (B‬ﺳﺎرا)‪ ، (S‬ﻣﺮﯾﻢ)‪ (M‬و ﻟﯿﻼ)‪ (L‬ﺑﺴﺎزﯾﻢ‪.‬‬
‫‪ .١‬ﺑﺎ اﺳﺘﻔﺎده از رواﺑﻂ ﯾﮕﺎﻧﯽ ‪ Male‬و ‪ Female‬ﻋﺒﺎراﺗﯽ ﻧﺸﺎندﻫﻨﺪه اﯾﻦ ﺣﻘﺎﯾﻖ ﮐﻪ ﻋﻠﯽ‪ ،‬ﺣﺴﻦ و ﺑﺎﺑﮏ ﻣﺮد و ﺳﺎرا‬
‫و ﻣﺮﯾﻢ و ﻟﯿﻼ زن ﻫﺴﺘﻨﺪ ﺑﻨﻮﯾﺴﯿﺪ‪ ١) .‬ﻧﻤﺮه(‬
‫‪ .٢‬ﺑﺎ اﺳﺘﻔﺎده از راﺑﻄﻪ دوﮔﺎﻧﯽ ‪ Child‬ﻣﺸﺨﺺ ﮐﻨﯿﺪ ﮐﻪ‪ :‬ﺣﺴﻦ و ﻟﯿﻼ ﻓﺮزﻧﺪان ﺑﺎﺑﮏ اﻧﺪ‪ .‬ﻟﯿﻼ دو ﻓﺮزﻧﺪ دارد‪ :‬ﻋﻠﯽ و‬
‫ﺳﺎرا‪ .‬ﻣﺮﯾﻢ ﻓﺮزﻧﺪ ﺳﺎراﺳﺖ‪ ٢) .‬ﻧﻤﺮه(‬
‫‪ .٣‬دو ﻓﺮﻣﻮل ﺑﻨﻮﯾﺴﯿﺪ ﮐﻪ دو راﺑﻄﻪی دوﮔﺎﻧﯽ ‪ Parent‬و ‪) Sibling‬ﺧﻮاﻫﺮ ﯾﺎ ﺑﺮادر ﺑﻮدن( را ﺑﻪ راﺑﻄﻪ ‪ Child‬ﻣﺮﺗﺒﻂ‬
‫ﮐﻨﺪ‪ ٢) .‬ﻧﻤﺮه(‬
‫‪ .۴‬ﻓﺮﻣﻮﻟﯽ ﺑﻨﻮﯾﺴﯿﺪ ﮐﻪ راﺑﻄﻪی دوﮔﺎﻧﯽ ‪) Relative‬ﺧﻮﯾﺸﺎوﻧﺪ( را ﺑﺎ رواﺑﻂ ‪ Parent‬و ‪ Child‬ﻣﺮﺗﺒﻂ ﺳﺎزد‪ ٢) .‬ﻧﻤﺮه(‬
‫‪ .۵‬ﯾﮏ ﺑﺎر ﺑﺎ اﺳﺘﻔﺎده از اﻟﮕﺮﯾﺘﻢ ‪ Chaining Forward‬و ﺳﭙﺲ ﺑﺎ اﺳﺘﻔﺎده از اﻟﮕﺮﯾﺘﻢ ‪ Chaining Backward‬ﺛﺎﺑﺖ‬
‫ﮐﻨﯿﺪ ﮐﻪ ﺣﺴﻦ و ﻣﺮﯾﻢ ﺧﻮﯾﺸﺎوﻧﺪ اﻧﺪ‪ ١٢) .‬ﻧﻤﺮه(‬
‫‪٢‬‬
‫ﺳﻮاﻻت ﻋﻤﻠﯽ )‪ ۴۵+١۵‬ﻧﻤﺮه(‬
‫ﺳﻮاﻻت زﯾﺮ را ﺑﺎ اﺳﺘﻔﺎده از زﺑﺎن ‪ Prolog‬ﺣﻞ ﻧﻤﺎﯾﯿﺪ‪ .‬دﻗﺖ ﺷﻮد ﮐﻪ اﺳﻢ و ﺗﺮﺗﯿﺐ ﭘﺎراﻣﺘﺮﻫﺎی ﺑﺮﻧﺎﻣﻪﻫﺎی ﺧﻮاﺳﺘﻪ ﺷﺪه ﺑﻪ‬
‫ﻫﻤﺎن ﺗﺮﺗﯿﺐ ﻣﺜﺎلﻫﺎ ﺑﺎﺷﺪ‪.‬‬
‫‪١.٢‬‬
‫ﻓﺸﺮده ﺳﺎزی )‪ ١٢‬ﻧﻤﺮه(‬
‫ﺑﺮﻧﺎﻣﻪای ﺑﻨﻮﯾﺴﯿﺪ ﮐﻪ ﯾﮏ ﻟﯿﺴﺖ را ﮔﺮﻓﺘﻪ و ﻓﺸﺮدهی آن را ﺑﻪ ﺻﻮرت ﻟﯿﺴﺘﯽ از ]‪ [n, c‬ﻫﺎ ﺑﺮﮔﺮداﻧﺪ ﮐﻪ ‪ n‬ﺗﻌﺪاد آﯾﺘﻢﻫﺎی‬
‫ﯾﮑﺴﺎن ‪ c‬اﺳﺖ ﮐﻪ در ﻟﯿﺴﺖ ورودی ﭘﺸﺖ ﺳﺮ ﻫﻢ آﻣﺪه اﻧﺪ‪ .‬ﺗﺮﺗﯿﺐ ﺑﺎﯾﺪ در ﺧﺮوﺟﯽ ﺣﻔﻆ ﺷﻮد‪ .‬ﻣﺜﺎل‪:‬‬
‫‪?- compress([x,x,x,y,y,z,w,w,w,w,x,x],X).‬‬
‫]]‪X = [[3,x],[2,y],[1,z],[4,w],[2,x‬‬
‫‪٢.٢‬‬
‫اﻋﺪاد ﻧﺴﺒﺖ ﺑﻪ ﻫﻢ اول )‪ ١٠‬ﻧﻤﺮه(‬
‫ﺑﺮﻧﺎﻣﻪای ﺑﻨﻮﯾﺴﯿﺪ ﮐﻪ دو ﻋﺪد را ﮔﺮﻓﺘﻪ و ﺑﮕﻮﯾﺪ ﮐﻪ ﻧﺴﺒﺖ ﺑﻪ ﻫﻢ اول اﻧﺪ ﯾﺎ ﺧﯿﺮ‪ .‬ﻣﺜﺎل‪:‬‬
‫‪?- coprime(93,56).‬‬
‫‪Yes‬‬
‫‪٣‬‬
‫‪٣.٢‬‬
‫ﺣﺪس ﮔﻠﺪﺑﺎخ )‪ ١١‬ﻧﻤﺮه(‬
‫ﺣﺪس ﮔﻠﺪﺑﺎخ ﻣﯽﮔﻮﯾﯿﺪ ﻫﺮ ﻋﺪد زوج ﺑﺰرﮔﺘﺮ از ‪ ٢‬را ﻣﯽﺗﻮان ﺑﻪ ﺷﮑﻞ ﻣﺠﻤﻮع دو ﻋﺪد اول ﻧﻮﺷﺖ‪ .‬ﺑﺮﻧﺎﻣﻪای ﺑﻨﻮﯾﺴﯿﺪ ﮐﻪ‬
‫ﯾﮏ ﻋﺪد زوج را ﮔﺮﻓﺘﻪ و دو ﻋﺪد اول ﮐﻪ ﻣﺠﻤﻮﻋﺸﺎن ﺑﺮاﺑﺮ ﺑﺎ ورودی اﺳﺖ را در ﺧﺮوﺟﯽ ﺑﺪﻫﺪ‪ .‬ﻣﺜﺎل‪:‬‬
‫‪?- goldbach(58,X,Y).‬‬
‫‪X = 5‬‬
‫‪Y = 53‬‬
‫‪۴.٢‬‬
‫درﺟﻪی رﺋﻮس )‪ ١٢‬ﻧﻤﺮه(‬
‫ﺑﺮﻧﺎﻣﻪای ﺑﻨﻮﯾﺴﯿﺪ ﮐﻪ ﮔﺮاﻓﯽ را ﺑﻪ ﺻﻮرت ]‪ (g([V1,V2,...],[e(V1,V3),...‬ﺑﮕﯿﺮد و درﺟﻪی رﺋﻮس آن را ﺑﻪ‬
‫ﺻﻮرت ﻟﯿﺴﺘﯽ از ]‪ [v, d‬ﻫﺎ ﺑﺪﻫﺪ ﮐﻪ ‪ v‬راس ﮔﺮاف و‪ d‬درﺟﻪی آن اﺳﺖ‪ .‬ﻣﺜﺎل‪:‬‬
‫‪?- degreelist(g([a,b,c,d],[e(a,b),e(b,c),e(b,d),e(a,d)]),X).‬‬
‫]]‪X = [[a,2],[b,3],[c,1],[d,2‬‬
‫‪۵.٢‬‬
‫ﻧﻮﻧﻮﮔﺮام )‪ ١۵‬ﻧﻤﺮه اﻣﺘﯿﺎزی(‬
‫ﻧﺎﻧﻮﮔﺮام ﻧﻮﻋﯽ ﺑﺎزی ﻓﮑﺮی اﺳﺖ ﺑﻪ اﯾﻦ ﺻﻮرت ﮐﻪ ﺗﻌﺪادی از ﺧﺎﻧﻪﻫﺎی ﺟﺪوﻟﯽ )در اﯾﻨﺠﺎ ‪ (۵ ∗ ۵‬رﻧﮓ ﺷﺪه در ﻧﻈﺮ ﮔﺮﻓﺘﻪ‬
‫ﻣﯽﺷﻮد و در ﮐﻨﺎر ﻫﺮ ﺳﻄﺮ و ﺳﺘﻮن ﺗﻌﺪاد ﺧﺎﻧﻪﻫﺎی ﭘﺸﺖ ﺳﺮ ﻫﻢ در آن ﺳﻄﺮ ﯾﺎ ﺳﺘﻮن ﮐﻪ رﻧﮓ ﺷﺪه اﻧﺪ ﻧﻮﺷﺘﻪ ﻣﯽﺷﻮد‪ .‬ﮐﺴﯽ‬
‫ﮐﻪ ﻣﯽﺧﻮاﻫﺪ ﻣﺴﺌﻠﻪ را ﺣﻞ ﮐﻨﺪ ﺑﺎﯾﺪ از روی اﻋﺪاد ﻧﻮﺷﺘﻪ ﺷﺪه ﮐﻨﺎر ﺳﻄﺮﻫﺎ و ﺳﺘﻮنﻫﺎ ﺧﺎﻧﻪﻫﺎی رﻧﮓ ﺷﺪه را ﺗﺸﺨﯿﺺ دﻫﺪ‪.‬‬
‫ﺑﻪ ﻋﻨﻮان ﻣﺜﺎل ﺷﮑﻞ ‪ ٢‬ﺟﺪول را ﻗﺒﻞ از ﺣﻞ ﺷﺪن و ﺷﮑﻞ ‪ ٣‬ﺟﺪول را ﺑﻌﺪ از ﺣﻞ ﺷﺪن ﻧﺸﺎن ﻣﯽدﻫﺪ‪:‬‬
‫ﺷﮑﻞ ‪ :٢‬ﺟﺪول ﻗﺒﻞ از ﺣﻞ‬
‫ﺷﮑﻞ ‪ :٣‬ﺟﺪول ﺑﻌﺪ از ﺣﻞ‬
‫‪۴‬‬
‫ﺑﺮﻧﺎﻣﻪای ﺑﻨﻮﯾﺴﯿﺪ ﮐﻪ ﺑﻪ ﺗﺮﺗﯿﺐ اﻋﺪاد ﮐﻨﺎر ﺳﻄﺮﻫﺎ و زﯾﺮ ﺳﺘﻮن ﻫﺎ را در ﻗﺎﻟﺐ دو ﻟﯿﺴﺖ ﺑﮕﯿﺮد و ﺧﺮوﺟﯽ را در ﻗﺎﻟﺐ ﯾﮏ‬
‫ﻟﯿﺴﺖ از ﺳﻄﺮﻫﺎ ﮐﻪ ﻫﺮ ﺳﻄﺮ ﺑﻪ ﺻﻮرت ﻟﯿﺴﺘﯽ از ’‪) ‘X‬ﺑﺮای ﺧﺎﻧﻪﻫﺎی ﭘﺮ( و ’‪) ‘.‬ﺑﺮای ﺧﺎﻧﻪﻫﺎی ﺧﺎﻟﯽ( اﺳﺖ ﺗﻮﻟﯿﺪ ﮐﻨﺪ‪.‬‬
‫در ﺻﻮرت وﺟﻮد ﺑﯿﺶ از ﯾﮏ ﺟﻮاب‪ ،‬ﯾﮏ ﺟﻮاب ﮐﺎﻓﯽ اﺳﺖ‪ .‬در زﯾﺮ ﻣﺜﺎل ورودی و ﺧﺮوﺟﯽ ﺑﺮای ﺷﮑﻞ ‪ ٢‬و ‪ ٣‬آﻣﺪه‬
‫اﺳﺖ‪:‬‬
‫‪?- nonogram([[1,1],[1,1,1],[3,1],[1,1,1],[1,1,1]],[[4],[1,1],[4],[],[5]],X).‬‬
‫]’‪X = [[‘.’,‘X’,‘.’,‘.’,‘X’],[‘X’,‘.’,‘X’,‘.’,‘X’],[‘X’,‘X’,‘X’,‘.’,‘X‬‬
‫]]’‪, [‘X’,‘.’,‘X’,‘.’,‘X’],[‘X’,‘.’,‘X’,‘.’,‘X‬‬
‫ﻣﻮﻓﻖ ﺑﺎﺷﯿﺪ‪.‬‬
‫‪۵‬‬