pjn 02, PJN 02 PawełKopeć AdrianMakuch

background image

Przetwarzanie języka naturalnego

2

Temat: Zaawansowane typy danych i

ich persystencja

Zadania:

Data:

Autor: Paweł Kopeć

1 2

3

4

5

6

7

13 X 2014

Autor: Adrian Makuch

e e

e

m h

m

17:30-19:45


Zadanie 1. Tablice

Zadanie polegało na utworzeniu tablicy oraz wypisaniu jej na ekran monitora.


Zadanie 2. Hash

Program ma na celu pobranie od użytkownika wartości o typie klucz -> wartość i zapisanie

ich w tablicy hash

#!/usr/bin/perl -w
@tablica = ('ASK','Logika','PJN','Seminarium','GAIT');
foreach(@tablica){
print "$_,"
}
$, = ";";
print "\n";
print "@tablica";
$" = ',';
print "\n";
print "@tablica";
print "\n";

#!/usr/bin/perl
%tablica = ();
for($i=0;$i<5;$i++){
print "podaj hashtag i warto

ść

odzielone enterem\n";

my $pierwsza = <STDIN>;
my $druga = <STDIN>;
chomp ($pierwsza);
chomp($druga);
$tablica{$pierwsza} = $druga;
}
@hashe = keys(%tablica);
#chomp(@hashe);
foreach(@hashe){
print "$_---$tablica{$_}\n";
}

background image

Zadanie 3. Znajdź liczbę

Program jest rozwinięciem poprzedniego. Różnica jest taka, że pola klucz-wartość są

podawane jako jeden ciąg słów i należy je rozdzielić za pomocą wyrażeń regularnych.


Zadanie 4. Sprawdź istnienie

Program ma za zadanie przeanalizować pola w tablicy hashy za pomocą funkcji exist() oraz

defined().

Jeżeli warunek uwzględni funkcję exists() wówczas dla zdefiniowanych kluczy oraz dla undef
będzie zwrócone 1 natomiast jeżeli warunek uwzględni funkcję defined() to tylko dla
zdefiniowanych kluczy będzie zwrócone 1

#!/usr/bin/perl
%tablica = ();
for($i=0;$i<5;$i++){
print "podaj hashtag i warto

ść

odzielone kropka\n";

my $pobrane = <STDIN>;

chomp ($pobrane);
$pobrane =~ /(\D+)(\.)(\D+)/;
$tablica{$1} = $3;
}
@hashe = keys(%tablica);
#chomp(@hashe);
foreach(@hashe){
print "$_---$tablica{$_}\n";
}

#!/usr/bin/perl
my %plan = (
"Poniedzialek" => {
"ASK-WYK" => "07:30-09:45",
"ASK-LAB" => "14:30-16:45",
"PJN-lab" => "17:45-20:15"},
"Wtorek" => {
"Logika-WYK" => "07:30-09:45"},
"Sroda" => {
"PJN-WYK" => "11:00-13:15",
"Seminarium" => "14:00-16:15"},
"Czwartek" => "brak",
"Piatek" => {
"GAiTT-LAB"=>"10:00-12:00",
"GAiTT-wyklad"=>"18:00-20:15"},
"Sobota" => undef,
"Niedziela" => undef
);
print "Poniedziałek (exist): " . exists($plan{Poniedzialek})."\n";
print "Poniedziałek (defined): " .
defined($plan{Poniedzialek})."\n";
print "Sobota (exist): " .exists($plan{Niedziela})."\n";
print "Sobota (defined): " .defined($plan{Niedziela})."\n";

background image

Zadanie 5. Drzewa binarne

Program ma za zadanie utworzyć drzewo binarne, po czym zapisać jego strukturę do pliku

tekstowego.



#!/usr/bin/perl -w
use strict;
open(PLIK, ">plik.txt") || die "Nie mo

ż

na otworzy

ć

pliku";

my($trunk, $n);
while ($n++ < 20) { insert($trunk, int(rand(1000)))}
print PLIK "Pre order: "; pre_order($trunk); print PLIK "\n";
print PLIK "In order: "; in_order($trunk); print PLIK "\n";
print PLIK "Post order: "; post_order($trunk); print PLIK "\n";
close PLIK;
exit;
sub insert {

my($drzewo, $val) = @_;

unless ($drzewo) {

$drzewo = {};

$drzewo ->{VALUE} = $val;

$drzewo ->{LEFT} = undef;

$drzewo ->{RIGHT} = undef;

$_[0] = $drzewo;

return;

}
if ($drzewo ->{VALUE} > $val) {

insert($drzewo ->{LEFT}, $val)

}elsif ($drzewo ->{VALUE} < $val) {

insert($drzewo ->{RIGHT}, $val)

}else{

warn "dup insert of $val\n"
}

}
sub in_order {

my($drzewo) = @_;

return unless $drzewo;

in_order($drzewo ->{LEFT});
print PLIK $drzewo ->{VALUE}, " ";
in_order($drzewo ->{RIGHT});

}
sub pre_order {

my($drzewo) = @_;

return unless $drzewo;

print PLIK $drzewo ->{VALUE}, " ";

pre_order($drzewo ->{LEFT});

pre_order($drzewo ->{RIGHT});

}
sub post_order {

my($drzewo) = @_;

return unless $drzewo;
post_order($drzewo ->{LEFT});

post_order($drzewo ->{RIGHT});

print PLIK $drzewo ->{VALUE}, " ";

}

background image

Zadanie 7. Propozycja ćwiczenia

Implementacja prostego tłumacza dla paru słów. Zdanie dzielone jest na poszczególne słowa

następnie zapisywane w tablicy hash. Następnie słowo jest zamieniane na odpowiadające mu w
innym języku.

#!/usr/bin/perl -w
%polish2english = (

go => "id

ę

",

to => "do",

home => "domu"

regular => "regularne"

);

%english2polish = reverse %polish2english;
do{
print "Podaj zdanie do przetlumaczenia \n> ";
$line = <>;
if($line =~ /\w/){

$line =~ s/^\s*//;

$line =~ s/\s*$//;

@words = split /\s+/, $line;

foreach $word ( @words ){

if(exists($dutch2english{$word})){

print "$polish2english{$word} ";

}

elsif(exists($english2dutch{$word})){

print "$english2polish{$word} ";

}

else{

print "[$word] "; # unknown

}

}

print "\n";

}
}while($line =~ /\w/);


Wyszukiwarka

Podobne podstrony:
pjn-02 PJN-02-PawełKopeć-AdrianMakuch
ASK 02 PawelKopec AdrianMakuch
ASK 02 PawelKopec AdrianMakuch
pjn-01 PJN-01-PawełKopeć-AdrianMakuch
pjn 03, PJN 03 PawełKopeć AdrianMakuch
FIDE Trainers Surveys 2013 02 18, Adrian Mikhalchishin Rook and pawn against Queen
FIDE Trainers Surveys 2016 02 16 Adrian Mikhalchishin Same colour Bishops with the edge Pawn
FIDE Trainers Surveys 2014 02 28, Adrian Mikhalchishin Opening bluff
FIDE Trainers Surveys 2015 02 26 Adrian Mikhalchishin Capablanca s method of realization
ASK 06 PawelKopec AdrianMakuch
lab06 ASK 06 PawelKopec AdrianM Nieznany
lab01, ASK 01 PawelKopec AdrianMakuch
ASK 01 PawelKopec AdrianMakuch
ASK 04 PawelKopec AdrianMakuch
Adrian Żukowski CV 28 02 2017
Adrian Lara Rasa Środka Nocy 02 Szkarłat Północy
Adrian Kołodziej raport 02 Sukces w Marketingu Internetowym
Adrian Lara Rasa Środka Nocy 02 Szkatłat Północy
Lara Adrian 02 Kiss of Crimson

więcej podobnych podstron