Ktoś kiedyś dawno temu (a na pewno przed zeszłorocznym wyjazdem na żagle) dał mi zagadkę: w jakim polskim słowie występuje najwięcej spółgłosek pod rząd? I to takich spółgłosek, z których każda odpowiada osobnej głosce? Rozwiązaniem miało być słowo bezwzględny. Postanowiłem to jednak zweryfikować. Troszkę zmieniłem założenie, wyszukałem po prostu słowo o największej liczbie spółgłosek, przy czym dwuznaki połączyłem w jedno. W celu wykonania eksperymentu potrzebne są:
- lista słów w języku polskim (np. z SJP.pl)
- umiejętność programowania
- 30-45 minut.
#!/usr/bin/perl
use utf8;
use diagnostics -trace;
use strict;
use warnings FATAL => 'all';
use feature qw(say);
sub get_type($$$) {
my ($word, $diphthongs, $i) = @_;
if (grep { $_->{index} eq $i } @$diphthongs) {
return 'C' #pierwszy znak dwuznaku
} elsif (grep { $_->{index} eq $i - 1 } @$diphthongs) {
return 'X' #drugi znak dwuznaku
} elsif (substr($word, $i, 1) =~ m/[aeiouyąęó]/) {
return 'V' #samogłoska
} else {
return 'C' #spółgłoska
}
}
sub longest_consonant_substring($) {
my ($word) = @_;
my @doubles = map { { two => substr($word, $_, 2), index => $_ } } 0 .. length($word) - 2;
my @diphthongs = grep { $_->{two} =~ m/[scdr]z|d[żź]|ch/ } @doubles;
my @types = grep { $_ ne 'X' } map { get_type($word, \@diphthongs, $_) } 0 .. length($word) - 1;
my ($record, $current) = (0, 0);
foreach (@types) {
if ($_ eq 'C') {
$current++;
$record = $current if $current > $record;
} else {
$current = 0;
}
}
return $record;
}
binmode(STDOUT, ":utf8");
open (FILE, "<:encoding(UTF-8)", "slowa-utf8.txt");
my $record = 0;
while (my $line = <FILE>) {
$line =~ s/\n//;
my $result = longest_consonant_substring($line);
say "$result: $line" and $record = $result if $result >= $record;
}
Programik przez chwilę pomełł słownik i wypluł wynik, który potwierdził wynik zagadki, ale dał też wiele nowych ciekawych słów, w których występuje ciąg 5 kolejnych spółgłosek. Voilà, oto lista po ręcznym odfiltrowaniu innych form tych samych wyrazów i ewentualnych wyrazów pochodnych:angstrem, bezwzględny, kontrchwyt, kontrplan, kontrprojekt, kontrpropaganda, kontrpropozycja, kontrpróba, kontrsztab, kontrświadczenie, nadskrwiański, najpstrokaciej, najwstrętniej, najwzględniej, nawarstwcie, odwarstwcie, postscriptum, pozezdrski, pyzdrski, rozwarstwcie, uwarstwcie, wielowarstwkaPotem przeszukałem jeszcze raz słownik, nie uwzględniając dwuznaków. Wynik: cztery słowa zawierają ciągi 7 kolejnych spółgłosek:
opierzchłszy, rozpierzchłszy, spierzchłszy, zmierzchłszyZ kolei samotnym rekordzistą w liczbie kolejnych samogłosek (5) jest nieauerowski. Nie pytajcie o znaczenie :)
Język angielski jest jeszcze dziwniejszy. Rekordziści spółgłoskowi:
borschts, latchstring, tsktskingRekordziści samogłoskowi:
cooeeing, cooeying, miaouing, queueingSpółgłoski po niemiecku:
Borschtsch, Angstschrei, Harschschnee, Angstschweiß, Angstschwelle, Dirndlschmuck, Dirndlschnaps, Deutschschweiz, Grätschschritt, Gesichtsschmerz, Gesichtsschnitt, Welschschweizer, selbstschließend, selbstschmierend, selbstschreibend, Ehrfurchtsschauer, Gerichtsschreiber, Fastnachtsschlager, Gesichtsschlagader, Unterrichtsschritt, Geschichtsschreiber, Glückwunschschreiben, UnterrichtsschwesterSamogłoski po niemiecku:
Teeeier, zweieiigCzekam na propozycje kolejnych zabaw ze słownikiem!
Panie Humormatyku (z sadystyczną premedytacją używam wymierającego wołacza)!
OdpowiedzUsuńMiałem okazję zadać Tobie oraz Perlowi pracę słownikową, jednak w wyniku autorskiego majstrowania we wpisie, mój komentarz zanikł jak wołacz, a nawet bardziej. Jestem zły, bardzo zły i mam bardzo ostre kły! Trzeba będzie przebłagać lub przekupić, trudna rada w tej mierze...
Źle, niedobrze, ach, fatalnie. Niniejszym błagalnie zwracam się ku Ojcowskiej światłości, ach, ukój swą złość!
OdpowiedzUsuńKiedyś graliśmy w podobną grę słowną: chodziło o znalezienie najdłuższego słowa, gdzie wszystkie litery występują w porządku alfabetycznym...
OdpowiedzUsuń