17. kasu praktikoa: esku bakarrarekin idatzitako hitzak

     Jolaserako tartea ere hartu behar da noizean behin, dena ez da izango azalpena eta ariketa. Hona hemen, jolasa eta ariketa uztartzen dituen proposamen bat: gure ordenagailuetako ohiko teklatua erabiliz (QWERTY), eta mekanografiako
arauak aplikatuz, zein da esku bakarra erabiliz idatz dezakezun hitzik luzeena?
     Nahasmenik izan ez dadin, hauek dira mekanografiako arauen arabera ezkerreko eskuarekin idatz daitezkeen karaktereak: q w e r t a s d f g z x c v b. Hitzak: zerbeza, baztertze, area. Eskuineko eskuari dagozkionak, aldiz: y u i o p h j k l ñ n m. Hitzak: mihi, ukuilu.
    Ea nork topatzen duen luzeena. Gurea “berraztertze” da, 12 karakterekoa.
    Laguntza gisa, Perl script bat idatz dezakezue, teklatu bidez hitz bat jaso eta ezkerreko eskuaz, eskuinez edo biak erabilita idatzi dugun esango diguna.

Hona ataza hori burutzen duen programa:

qwerty.pl
 #!/usr/bin/perl
 # Sarrera: teklatu bidez idatzitako hitza
 # Irteera: ezkerreko eskuaz, eskubikoaz edo biak
 # erabilita idatzi den
 use warnings;
 use strict;
 print(“Idatzi hitz bat eta ondoren sakatu returnn”);
 my $lerro = <STDIN>;
 chomp($lerro);
 my $luzera = length($lerro);
 # ezkerreko eskuarekin soilik?
 if ($lerro =~ /^[qwertasdfgzxcvb]+$/i) {
      print(“Ezkerraz idatzitakoa. Luzera: $luzeran”);
 }
 # eskubiko eskuarekin soilik?
 elsif ($lerro =~ /^[yuiophjklñnm]+$/i) {
      print(“Eskubiaz idatzitakoa. Luzera: $luzeran”);
 }
 else {
      print(“Bi eskuak erabili dituzu!”);
 }

Jaitsi   qwerty.pl   fitxategia

     Topatu al duzu gurea baino hitz luzeagorik? Ea bada, oraingoan gu geu hitzak asmatzen aritu beharrean, sarrera gisa fitxategi bat pasatuko diogu programari eta berak bistaratu ditzala ezkerreko zein eskuineko eskuekin idatzitakoak. Baita alde bakoitzeko hitzik luzeenak ere.
     Programa hau ez da aurrekoa bezala di-da batean idaztekoa, eta komeni da aurretik algoritmoa ondo zehaztea:
1. Fitxategia ireki
2. Fitxategi amaiera ez den bitartean, irakurri $lerro
      2.1. $lerro string-ean aurkitzen duen hitz bakoitzeko
             2.1.1. Gorde hitza $hitza aldagaian
             2.1.1. Kalkulatu karaktere kopurua eta gorde:
                      $karKop = length($hitza);
             2.1.2. Baldin $hitza ezkerraz idatzitakoa, bistaratu mezua
                     2.1.2.1. Hitzik luzeena da?
                          if ($karKop > $ezkerLuze) orduan
                                   $ezkerLuze= $karKop;
                                   $ezkerHitz = $hitza;
             2.1.3. Bestela, baldin $hitza eskubiaz idatzia, bistaratu mezua
                     2.1.3.1. Hitzik luzeena da?
                          if ($karKop > $eskuinLuze) orduan
                                   $eskuinLuze = $karKop;
                                   $eskuinHitz = $hitza;
3. Bistaratu $ezkerHitz, $ezkerLuze eta $eskuinHitz, $eskuinLuze

Programa:

qwerty2.pl
 #!/usr/bin/perl
 # Sarrera: komando lerrotik fitxategi-izena
 # Irteera: bistaratu ezkerreko edo eskubiko eskuaz soilik
 # idatzitako hitzak, # eta hitzik luzeenak
 use warnings;
 use strict;
 open(Fitx, $ARGV[0]) ||
      die(“Ezin izan dut $ARGV[0]
 fitxategia zabaldu!n”);
 my $lerro;
 my $hitza;
 my $karKop;
 my $ezkerLuze = 0;
 my $eskuinLuze = 0;
 my $ezkerHitz;
 my $eskuinHitz;
 while($lerro = <Fitx>) {
      chomp($lerro);
      # baldintza: lerroko hitz bakoitzeko
      while ($lerro=~/(w+)/g){
                 $hitza = $1;   #hitza gorde
                 $karKop = length($hitza);
                 # ezkerrarekin?
                 if ($hitza =~/^[qwertasdfgzxcvb]+$/i) {
                      print(“Ezkerraz:t$hitzan”);
                      # ezkerraz idatzitako luzeena?
                      if ($karKop > $ezkerLuze) {
                        $ezkerLuze= $karKop;
                        $ezkerHitz = $hitza;
                      }
                 }
                 # eskuinarekin?
                 if ($hitza =~/^[yuiophjklñnm]+$/i) {
                      print(“Eskubiaz:t$hitzan”);
                      # eskuinaz idatzitako luzeena?
                      if ($karKop > $eskuinLuze) {
                        $eskuinLuze = $karKop;
                        $eskuinHitz = $hitza;
                      }
                 }
      }
 }
 print (“Ezkerraz idatzitako luzeena: $ezkerHitz.
         Karaktereak: $ezkerLuzen”);
 print (“Eskuinaz idatzitako luzeena: $eskuinHitz.
         Karaktereak: $eskuinLuzen”);

Jaitsi   qwerty2.pl   fitxategia

Utzi erantzuna

Zure e-posta helbidea ez da argitaratuko. Beharrezko eremuak * markatuta daude