Kuxazululiwe: thola indawo yeyunithi yezinhlamvu engaphansi kweyunithi yezinhlamvu

Kulungile, ake siqale ukuthi ungayithola kanjani iyunithi yezinhlamvu engaphansi kochungechunge ku-Haskell.

Haskell iwulimi lokuhlela olusebenza kahle olwaziwa ngezinga lalo eliphezulu lokufinyela kanye ne-syntax ecacile. Umsebenzi owodwa ovamile lapho usebenza neyunithi yezinhlamvu ukuthola umucu ongaphansi kweyunithi yezinhlamvu ezinkulu - okungukuthi, ukukhomba indawo lapho kuvela khona ukulandelana kwezinhlamvu ezithile.

Ngale njongo, singasebenzisa imisebenzi emibili ye-Haskell eyakhelwe ngaphakathi: `isPrefixOf` kanye `nemisila`. `isPrefixOf` ihlola ukuthi uhlu luyisiqalo solunye uhlu, futhi `imisila` ikhiqiza zonke izingxenye zokugcina zohlu. Sizophinda sisebenzise umsebenzi othi `elemIndex` kusuka kokuthi `Data.List` ukuze sithole inkomba yokuvela kokuqala kwento ethile.

Nasi isixazululo esilula senkinga:

import Data.List

findSubstring :: String -> String -> Maybe Int
findSubstring substr str = 
    elemIndex True $ map (isPrefixOf substr) (tails str)

Ukusebenza kweKhodi

Umsebenzi othi `findSubstring` uthatha ama-agumenti amabili, `substr` kanye ``str`, amelela uchungechunge oluncane esilufunayo kanye neyunithi yezinhlamvu esibheke kuyo, ngokulandelana.

  • Okokuqala, `tails str` ikhiqiza zonke iziphetho ezingaba khona ze `str`. Isibonelo, uma kunikezwe iyunithi yezinhlamvu ethi โ€œsawubonaโ€, `imisila` ingakhiqiza [โ€œsawubonaโ€, โ€œsawubonaโ€, โ€œlloโ€, โ€œloโ€, โ€œoโ€, โ€œโ€].
  • Okulandelayo, `imephu (isPrefixOf substr)` isebenzisa umsebenzi othi `isPrefixOf substr` engxenyeni ngayinye yohlu ekhiqizwe `imisila str`. Lokhu kuveza uhlu lwamanani e-Boolean, ngalinye libonisa ukuthi `substr` iyisiqalo se-elementi ehambisanayo ohlwini lwangempela.
  • Ekugcineni, `i-elemIndex True` isesha lolu hlu Lweziphuphuthekisiwe ukuze ithole isenzeko sokuqala sokuthi `Iqiniso`, elihambisana nendawo yokuthi `substr` kokuthi `str`, bese ilubuyisela lugoqwe ngohlobo lwedatha oluthi `Mhlawumbe`.

Imisebenzi Esemqoka Nemitapo yolwazi

Idatha.Uhlu Iwumtapo wezincwadi we-Haskell ogcwele imisebenzi ewusizo yokukhohlisa uhlu. Phakathi kwezinye izinto, ithekelisa `isPrefixOf`, `tails`, kanye `elemIndex` imisebenzi esiyisebenzise esixazululweni sethu.

Umsebenzi `isPrefixOf` ubaluleke kakhulu kwisixazululo sethu. Ngokuhlola ukuthi ingabe uchungechunge lwethu oluncane esiqondiswe kulo luyisiqalo sohlu oluncane ngalunye, luhlola ngokuyisisekelo yonke indawo engaba khona yokuqala yochungechunge lwethu oluncane phakathi kweyunithi yezinhlamvu yoqobo.

Extrapolations kanye Okuhlukile

Le ndlela elula ingakhishwa ukuze kwenziwe imisebenzi eyinkimbinkimbi kakhulu, njengokuthola konke ukwenzeka kweyunithi yezinhlamvu engaphansi, ukufaka uchungechunge oluncane ngolunye uchungechunge, noma ukuhlephula uchungechunge lube izingcezu ngokusekelwe ku-delimiter.

Njengesibonelo, ukuze umiselele zonke izenzeko zochungechunge oluncane, ungasebenzisa `ukuhlanganisa` kusuka kokuthi Idatha.Uhlu ukuze ujoyine izingcezu ezitholwe ekwephuleni iyunithi yezinhlamvu yoqobo ezindaweni zochungechunge oluncane oluqondiwe.

Naphezu kokulula kwayo okungokwemvelo nokuzwakalayo, indlela ka-Haskell yokucubungula izintambo ibonisa amandla ohlelo olusebenzayo ekubhekaneni nemisebenzi evamile ngendlela ehlanzekile, efundekayo, futhi emfushane.

Okuthunyelwe okuhlobene:

Shiya amazwana