Orrialdeak

2016-03-31

25. astea | haiku, gehiago

Haiku jatorrian japonierazko olerki mota bat da, 5-7-5 silabako lerroetan antolatutako 17 silabek osatua. Emaniko esaldi bat haikua den ala ez frogartzen duen programa egin dezagun, hau da, 24. astea | haiku ariketari jarraipena demaiogun sarrerako katean hiru esaldien arteko banatzailerik ez dagoela.

24. astea | haiku ariketan bezala gure programaren lehen bertsioan ez da diptongorik emango sarrerako esaldi nagusian, baina programaren bigarren bertsioak diptongoekin lan egiteko gaitasuna izango du.


Lehen programa

 

Udazkena da,
milaka txori hegaz
bat izan ezik


Aztertu beharreko haikua string batean jasorik daukagu eta sarrera horrek haikuaren formalismoa betetzen duen izango da programaren emaitza. Hau da, sarrerako kateak hiru esaldi izan behar ditu eta esaldi bakoitzean 5, 7 eta 5 silaba hurrenez hurren.

Adibidez, hona hemen haiku desberdinak nola eman zaizkion gure programari:

    Udazkena  da,    milaka   txori   hegaz  bat  izan  ezik   
5, 7, 5 bokal eta 5, 7, 5 silaba --> sarrerako katea haiku bat da

   Udazkena  da,  XYZ  milaka   txori   hegaz  bat  izan  ezik   
5, 7, 5 bokal eta 5, 7, 5 silaba --> sarrerako katea haiku bat da

Bertan ikus daitekeenez, teklatuaren bitartez ematen den sarrerako datuaren ezaugarriak honako hauek dira:
  1. Diptongorik ez dagoela, eta ondorioz silabak zenbatzeko aski da bokalen kopurua ezagutzea
  2. Soberazko zuriuneak egon daitezke sarrerako kate nagusian, bai katearen aurretik zein atzetik zein hitzen artean
  3. Bokalik gabeko hitzak egon daitezke, adibidez XYZ hitza edo WMW hitza
  4. Sarrerako katea bat izanik, ez dago inolako banatzaile berezirik haikuaren hiru esaldien artean  


Sarrerako karaktere-katea irakurrita ondoko lanak eskatzen dira algoritmo hau jarraituz:
  1. Sarrerako esaldi nagusia txukundu, hau da, esaldiaren aurrean zein atzean soberan egon daitezkeen zuriuneak kendu eta hitzen artean soberan egon daitezkeen zuriuneak kendu (adibidez fnsEsaldiaTxukundu funtzioaren bitartez)
  2. Txukundutako esaldi nagusia garbitu, hots, txukundutako esaldiari bokalik gabeko hitzak kendu (adibidez fnsEsaldiaGarbitu funtzioaren bitartez)
  3. Esaldi nagusiaren bokal kopurua 17 ez bada mezua eta programa bukatu, esaldi nagusiaren bokal kopurua 17 bada hurrengo puntuetan adierazitako egin
  4. DM_sKate50 datu-motako 3 kate biltzeko arrayarekin lan eginez, esaldi nagusiaren hitzak arrayaren dagozkien posizioetara eraman (jarraian datozen irudietan kolore larrosaz adierazitakoa). Beraz, txukundu eta garbitutako katetik abiatuta: lehen 5 silabak osatzen dituzten hitzak arrayaren 1. posizioan kokatu, hurrengo 7 silabak osatzen dituzten hitzak arrayaren 2. posizioan kokatu, eta,  azkenengo 5 silabak osatzen dituzten hitzak arrayaren 3. posizioan kokatu:
    • 4.1.    Haikuaren lehenengo esaldia zehaztu (adibidez Haikuaren_1_Esaldia prozeduraren bitartez). Hainbat hitz eta guztien artean 5 bokal, errorerik ez badago lehenengo esaldi hori arrayaren lehen posizioan gorde. Errorea gertatu bada zein hitzetan suertatu den adierazi eta programa bukatu
    • 4.2.    Haikuaren bigarren esaldia zehaztu (adibidez Haikuaren_2_Esaldia prozeduraren bitartez). Hainbat hitz eta guztien artean 7 bokal, errorerik ez badago bigarren esaldi hori arrayaren bigarren posizioan gorde, eta, prozesatu gabe geratu den esaldiaren zatia haikuaren hirugarren esaldia denez hirugarren esaldi hori arrayaren hirugarren posizioan gorde. Errorea gertatu bada zein hitzetan suertatu den adierazi eta programa bukatu
    • 4.3.    Haikuaren esaldiak zehaztean errorerik ez bada gertatu, arrayaren edukia pantaialartu (adibidez HaikuaErakutsi prozeduraren bitartez) eta programa bukatu

Programaren irteerak jarraian erakusten dira:

Algoritmoaren 3. urratsa gogoratuz silabak/bokalak 19≠5+7+5 direnez, esaldi nagusia ez da haiku bat

Hurrengo hiru irteeretan esaldi nagusiaren silabak 17 dira guztira, baina beti ez da gordetzen 5+7+5 banaketa:

Sarrera haiku bat da eta arrayaren hiru elementuak bete daitezke, lehen bi elementuen silabak/bokalak 5+7=12 dira eta ondorioz hirugarren elementuaren silaba/bokal kopurua 5 izango da, guztira 5+7+5=17

Sarrera ez da haiku bat arrayaren 1. elementua ezin delako egoki bete 7 silaba baitira

Sarrera ez da haiku bat eta arrayaren 2. elementuak huts egiten duelako 5+8≠5+7


Hau duzu StringArrayHaikuDiptongorikEz.exe lehen bertsioaren programa exekutagarria. Eta hauxe da lehen bertsioaren iturburu-programa:
 [esteka hau oraindik ez dabil]



Bigarren programa

 

Udaberriko
euria da hodeien
negar alaia


Baina, diptongoak ditugunean bokalen kopurua ez dator bat silaben kopuruarekin. Horregatik jarraian erakusten diren haiku hauek okertzat emango ditu aurreko algoritmoa darabilen programak: 

   XYZ  Neguko   hotza  goimendiko    elurra,     zure babesa   
5, 8, 5 bokal eta 5, 7, 5 silaba --> sarrerako katea haiku bat da

   Ni zoraturik     haizeak darabilzu   XYZ   adatsa      dantzan
5, 8, 5 bokal eta 5, 7, 5 silaba --> sarrerako katea haiku bat da

Haizearekin     zure    adatsa    dantzan   ni   liluratuz   
6, 7, 5 bokal eta 5, 7, 5 silaba --> sarrerako katea haiku bat da

   XYZ  Inaurria beltz   langilea ere beltz XYZ  denak esklabu  
6, 7, 5 bokal eta 5, 7, 5 silaba --> sarrerako katea haiku bat da

    Udaberriko  XYZ  euria  da   hodeien    negar  alaia  XYZ   
5, 9, 6 bokal eta 5, 7, 5 silaba --> sarrerako katea haiku bat da

Hemen dituzu euskarazko sei diptongoak [au] [eu] [ai] [ei] [oi] [ou] eta programaren bigarren bertsioak elkarketa hauek aintzakotzat hartuko ditu.

Bigarren programa honetan lehen bertsioaren algoritmo bera erabil datiteke, baina hitzaren silabak zenbatzean ezin daiteke onartu bokalen kopuruarekin bat datorrenik. Horregatik, hitz edo esaldi baten silabak zenbatzeko urratsak hauek dira:
  1. Hitzaren bokalak zenbatu iBokalKopurua lortuz
  2. Hitzaren diptongoak bilatu iDiptongoKopurua eskuratuz
  3. Hitzak dituen silaba kopurua kalkulatu kenketa hau burutuz: iBokalKopurua-iDiptongoKopurua  

Hau duzu StringArrayHaikuDiptongorikBai.exe bigarren bertsioaren programa exekutagarria. Eta hauxe da bigarren bertsioaren iturburu-programa:
 [esteka hau oraindik ez dabil]

25. astea | haiku, jarraipena

Haiku jatorrian japonierazko olerki mota bat da, 5-7-5 silabako lerroetan antolatutako 17 silabek osatua. Emaniko esaldi bat haikua den ala ez frogartzen duen programa egin dezagun, hau da, 24. astea | haiku ariketari jarraipena demaiogun sarrerako datua (hiru esaldi) array batean irakurriz.

24. astea | haiku ariketan bezala gure programaren lehen bertsioan ez da diptongorik emango sarrerako esaldietan, baina programaren bigarren bertsioak diptongoekin lan egiteko gaitasuna izango du.



Lehen programa

 

Udazkena da,
milaka txori hegaz
bat izan ezik


Aztertu beharreko haikuaren hiru esaldiak array batean jasotzen dira teklatuaren bitartez, horretarako prozedura hau erabiltzen delarik:

Teklatuaren bitartez ematen diren hiru esaldietan diptongorik ez dagoela suposatuko da. Arrayaren hiru elementuak irakurri ondoren (jarraian erakusten diren irudietan kolore laranjaz adierazitakoa) ondoko lanak egingo dira:
  1. Sarrerako esaldiak txukundu, hau da, esaldiaren aurrean zein atzean soberan egon daitezkeen zuriuneak kendu eta hitzen artean soberan egon daitezkeen zuriuneak kendu (irudietan kolore horiz adierazitakoa)
  2. Hiru esaldiak txukundu ondoren pantailaren erdian idatzi bata bestearen azpian (irudietan kolore urdinez adierazitakoa)
  3. Esaldiek haiku bat osatzen duten ala ez erabaki esaldi bakoitzaren silabak zenbatuz, horretarako diptongorik ez dagoenez aski da bokalak zenbatzea (irudietan kolore urdinez adierazitakoa), aukera bi dira:
    • Sarreko esaldia haiku bat bada  Haiku bat da  mezua pantailaratuko da
    • Sarreko esaldia haiku bat ez bada  Ez da haiku bat mezua pantailaratuko da eta horrez gain zergatia(k) ere adieraziko d(ir)a

Adibidez, hona hemen sarrera desberdinak:
   Udazkena   da,        milaka   txori hegaz         bat  izan  ezik   
5, 7, 5 bokal eta 5, 7, 5 silaba --> sarrerako kateak haiku bat dira

   Uda etgero        milaka   txori  zeruan         hego   aldera   
6, 8, 5 bokal eta 6, 8, 5 silaba --> sarrerako kateak ez dira haiku bat


Programaren irteerak jarraian erakusten dira:

Sarrerako kateek haiku bat osatzen dute silabak/bokalak 5+7+5 direlako

Sarrerako kateek ez dute haiku bat osatzen silabak/bokalak 6+7+5 direlako

 Sarrerako kateek haiku bat osatzen dute silabak 5+7+5 direlako, baina programa honek diptongoak ez ditu desberdintzen eta bokal guztiak zenbatuz 5+9+6 silaba/bokal aurkitu ditu


Hau duzu ArrayHaikuDiptongorikEz.exe lehen bertsioaren programa exekutagarria. Eta hauxe da lehen bertsioaren iturburu-programa:


Bigarren programa

 

Udaberriko
euria da hodeien
negar alaia


Baina, diptongoak ditugunean bokalen kopurua ez dator bat silaben kopuruarekin. Horregatik jarraian erakusten diren haiku hauek okertzat emango ditu aurreko algoritmoa darabilen programak: 

   Neguko  hotza        goimendiko    elurra,           zure babesa   
5, 8, 5 bokal eta 5, 7, 5 silaba --> sarrerako kateak haiku bat dira

   Haizearekin       zure    adatsa    dantzan         ni  liluratuz   
6, 7, 5 bokal eta 5, 7, 5 silaba --> sarrerako kateak haiku bat dira

   Inaurria beltz        langilea ere   beltz          denak esklabu  
6, 7, 5 bokal eta 5, 7, 5 silaba --> sarrerako kateak haiku bat dira

    Udaberriko       euria  da      hodeien           negar  alaia    
5, 9, 6 bokal eta 5, 7, 5 silaba --> sarrerako kateak haiku bat dira

Hemen dituzu euskarazko sei diptongoak [au] [eu] [ai] [ei] [oi] [ou] eta programaren bigarren bertsioak elkarketa hauek aintzakotzat hartuko ditu.

Bigarren programa honetan lehen bertsioaren algoritmo bera erabil datiteke, baina hitzaren silabak zenbatzearen emaitza ezin daiteke onartu bokalen kopuruarekin bat datorrenik. Horregatik, hitz edo esaldi baten silabak zenbatzeko urratsak hauek dira:
  1. Hitzaren bokalak zenbatu iBokalKopurua lortuz
  2. Hitzaren diptongoak bilatu iDiptongoKopurua eskuratuz
  3. Hitzak dituen silaba kopurua kalkulatu kenketa hau burutuz: iBokalKopurua-iDiptongoKopurua  

Bigarren programaren irteerak jarraian erakusten dira non aurrekoarekiko berrikuntza kolore larrosaz adierazita datorren:

 Diptongoak aurkitu dira eta ondorioz sarrerako kateek haiku bat osatzen dute silabak 5+7+5 direlako

Diptongorik ez da aurkitu eta sarrerako kateek ez dute haiku bat osatzen

Hau duzu ArrayHaikuDiptongorikBai.exe bigarren bertsioaren programa exekutagarria. Eta hauxe da bigarren bertsioaren iturburu-programa: