Installing kydpdict

Installing 3rd part software that isn’t in official repository/tree in linux distributions is often problematic. Here is the guide how to install dictionary frontend – Kydpdict in gentoo:

  1. Log as root (su)
  2. Create directory /usr/local/overlays/mysiar (*or other in /usr/local)
  3. Download http://www.synowiec.org/mysiar-portage.sh (wget http://www.synowiec.org/mysiar-portage.sh)
  4. Give it right to run and run it (chmod o+x mysiar-portage.sh && ./mysiar-portage.sh)
  5. Add line PORTDIR_OVERLAY=”/usr/local/overlays/mysiar” to /etc/make.conf
  6. Sync portage tree (emerge –sync)
  7. Try emerge kydpdict
  8. If it fail saying that Manifest point file that doesn’t exist, remove that entry from Manifest and try to emerge again
  9. Copy dictionary files from your windows version and rename them to lowercast characters

I hope that this guide was helpful.

UPDATE:
Added step 5. (2006-09-16)

Discussion Join the discussion (0 comments)

Gentoo installation

Last Saturday I finished installation and configuration of Gentoo distribution. My previous major operating system was also Linux flavour. It was OpenSUSE. Despite it worked well, there were several areas to improve:

  • support of Geforce2 MX400 nvidia graphic card and HP 710C printer was problematic, it was definitely downgrade in compare to older releases of SUSE,
  • package repositories miss a lot of applications that I use daily,
  • installation of programs that are outside of repositories is weird,
  • in general, doing things like downloading KDE 4 sources and building them require too much IMO manual work; Yast isn’t helpful in that case,

So why I choose to try Gentoo (not Debian for e.g.):

  • it’s different; almost all Linux distributions are build around packaging, of course they have different formats or dependencies system, but the philosophy is the same: “pack it”; while Gentoo provide recipes how to build it,
  • it has well-written documentation,
  • I’m on a holiday so compile time doesn’t really matter;
  • it is the most popular OS among finalists of Polish Olympics in Informatics,

Thoughts after installation

I’m satisfied with gentoo distribution. Portage (gentoo “package” system) works well. It extremely easy to install an older version of a program or an unstable one. Moreover, the configuration took as much time as in SUSE. SUSE GUIs are nice, but they don’t speed up your work.

Hassles:

  • during the installation you’re encouraged to use tool mirrorselect; It use “space” to select and enter to “end” program. However It doesn’t metion anything about using “space” and doesn’t prompt if you doesn’t select anything. A typical user (not *NIX) might be confused.
  • two hassles with portage, while I try install nvidia-driver opengl was required to one of the packet and installation stop; another was audacity which require wxGTK 2.4.x but not 2.6.x which is default, error messages was unhelpful;
  • searching packages information takes too much time(“emerge -s” and “emerge –searchdesc”), it should use suffix trees as indexes;
  • There is no one package in portage tree that I use frequently – kydpdict.
Discussion Join the discussion (2 comments)

3 ostatnie dni

Omówienie zadań i wykładu 2006-07-25
Dzień 6

1. Podciągi

Mamy dane dwa ciągi liter. Mamy znaleźć najkrótszy niewspólny podciąg.

ababa
abbab

Bierzemy ostatnią literę ciągu pierwszego i szukamy jej ostatniego występowaniu w ciągu drugim. Wtedy problem sprowadzamy do znalezienia najkrótszego wspólnego ciągu pomiędzy pierwszym zmniejszonym o jeden i drugim zmniejszonym do ostatniego wystąpienia tej litery.

Teraz liczymy tą metodą dynamicznie dla każdego prefiksu ciągu pierwszego.

Klasa: dynamik
Złożoność: O(n^2)

2. Bajtocji

Dane są wektory. Znajdź sumę wektorów, która jest “najdłuższa”.

Sortujemy wektory po kątach. Opłaca się dodawać wektory tylko takie które będą odchylone o 90 i mniej stopni od wektora wypadkowego. Kolejno rozpatrujemy półpłaszczyzny, których oś przechodzi przez ośrodek układu współrzędnych. Rozpatrujemy półpłaszczyzny, dla każdego wektora i ćwiartek układu współrzędnych.

Klasa: geometria obliczeniowa

3. Gra

Gra słupkowa. Jest n słupków na każdym ai kamieni. Gracze kolejno biorą dowolna niezerową naturalną liczbę kamieni o najwyżej k kolorach.

Grę tę można sprowadzić do gry nim. W nimie sytuacja jest przegrana gdy xor liczb jest równy 0.

Reprezentujemy liczby kamieni w postaci binarnej i zliczamy wszystkie jedynki na tych samych pozycjach. Jeśli istnieje conajmniej jeden wiersz w którym liczba jedynek nie jest podzielna przez k+1, istnieje strategia wygrywająca. Trzeba teraz wykonać ruch który zmieni sumę jedynek tak aby każda była podzielna przez k+1.

Istnieje problem jak znaleźć ruch wygrywający. Szukamy nastarszego bitu, których liczb nie jest podzielna prze k+1. Jeśli zamienimy ten bit na 0 to możemy ustawić bity młodsze dowolnie.

Klasa: teoria gier
Złożoność: O(n*k) k -> ilosc różnych bitów

Wykład do zadania trójkat

Mamy dany zbiór punktów. Chcemy znaleźć trójkąt o najwiekszym polu, którego wieszołki są na danych punktach.

Odrzucamy punkty, które nie są na otoczce wypukłej.

Lemat 1:
Każdy trójkąt lokalnie najlepszy przecina trójkąt globalnie najlepszy.

(TOLEARN: wyszukiwanie ternalne)

Omówienie zadań i wykład 2006-07-27
Dzień 7

1. Wstążki

Mamy dany podzielony materiał i chcemy podzielic go na n możliwie największych kawałków.

Rozwiązanie: wyszukiwanie binarne

2. Wycieczka

Mamy daną szachownicę n*4. Należy obliczyć na ile sposobów można dojść z lewego górnego pola do lewego dolnego, nie przechodząc żadnego pola dwa razy.

Próbujemy wyprowadzić wzór rekurencyjny
An+1 = An+2Bn+2Cn+Dn+En+1
Bn+1 = An+2Bn+2Cn+Dn+En+1
Cn+1 = An+Cn+Bn+Fn+1
Dn+1 = An+2Bn+Dn+1
En+1 = 2Cn+En+q
Fn+1 = An+Fn
Znając te wzory można napisać rozwiązanie o złożoności O(n). Rozwiązanie w czasie logarytmicznym można otrzymać stosując macierz.

An
Bn
Cn
Dn
En
Fn
1
=
1 2 2 1 1 0 1
1 2 1 1 0 0 1
1 1 1 1 0 0 1
1 2 0 1 0 0 1
0 0 2 0 1 0 1
1 0 0 0 0 1 0
0 0 0 0 0 0 1
*
v1

v1 = M*v0
vn = Mn*v0

Teraz problem ten można sprowadzić do mnożenia macierzy w czasie O(lgn). Korzystamy z łączności mnożenia.

Wykład:
String matching

x[1..m] – wzorzec
y[1..n] – tekst
n>m
szukamy wzorca w tekście
1. Algorytm naiwny.
2. KMP

P[0] = -1; t = -1;
for i=1 to n
while t>=0 and x[t+1] != x[i]
t=P[t];
t++; P[i] = t;

i = 0; j = 0;
while i<=n-m
while j&lt=m and x[j+1]==y[i+j]
j++;
if j==m then return WYSTAPIENIE;
shift = j-P[j];
i=i+shift; j=max(0, P[j]);

Zadanie szablony z OI:
liczymy P[] ….

repeat forever
read(symbol)
while j>-1 and x[]
j = P’[j]
if j==m
write 1
j=P(m)
else
write 0

Omówienie zadań z zawodów drużynowych 2006-07-29

1. Jasnowidz
2. Mecz
łatwe

3. Przedziały
Mamy dane przedziały. Znaleźć najdłuższy ciąg przedziałów się zawierających.

Sortujemy względem początków, a dalej jak zadanie góra na poprzednim contesteście.

4. Drugi

Znajdź drugi po największym elemencie porównań. Mamy ograniczoną liczbę porównań.

Rozwiązanie: drzewo turniejowe.

5. Rozwiązywanie gier

Stany gry reprezentuja wierzchołki. Krawędzie możliwe ruchy. Dwóch graczy wykonuję na przemian ruchy. Przegrywa ten który nie może wykonać ruchu.

Przeliczamy dla każdego wierzchołka w ilu ruchach można wygrać lub przegrać. Wykonujemy to tablicując grę od tyłu.

6. Hodowcy drzew

Mamy dwa ciągi określone wzorem rekurencyjnym.

a0 = 1;
b0 = 0
an+1 = 3*an+bn
bn+1 = 5*an

Mamy policzyc wartości an, i bn mod 1000000 dla bardzo dużych n (1000000 cyfr). Nawet korzystając z macierzy czas rozwiązania nie być akceptowalne.

Va = 10^18
exist a,b a Va = VB
Va+1 = Mv1%10^9
VB+1 = Mv0%10^9
Va+k = VB+k
Va+(a)%T = Vn
T = b-a

a) v1, v2, v3 …
v(2^r)
O(b)
b)Vn = V2n
O(b)
c) a<20

T=3*10^8
T=3/10*D

7. Drogi jednokierunkowe

Mamy dany graf z krawedziami jednokierunkowymi i dwu.

Znajdz maksymalna liczbe krawedzi, ktore mozna zamienic z dwukierunkowych na jednokierunkowe, aby silna spojnosc krawedzi byla zachowana.

Jedyne krawedzie których ukierunkować się nie da to mosty.

Etapy algorytmu:
a) znajdujemy mosty,
b) krawędzie kierujemy DFS takie, które można przejść tylko w jedna stronę,
tzw. nie da się dojść do tego miejsca w inny sposób,

Discussion Join the discussion (0 comments)

Dzień 5 omówienie i wykład

Omówienie zadań i wykład 2006-07-24
Dzień 5

1. Kwadrat

Dla danego ciągu liczb naturalnych. Znajdź jak najdłuższy spójny podciąg, którego iloczyn daje kwadrat liczby całkowitej.

Rozkład wszystkich liczb na czynniki pierwsze. Jeśli suma wystąpień wszystkich czynników jest parzysta, to na pewno dany iloczyn jest dobry.

Liczymy dla każdego prefiksu, bitowe odwzorowania parzystości iloczynu tego prefiksu. Sortujemy te prefiksy i szukamy powtórzeń. Wybieramy, te prefiksy których różnica długości jest największa.

Złożoność: O(n*m) m – liczba liczb pierwszych

2. Dinozaury

Mamy daną siatkę z płotami. Liczymy ile jest zamkniętych obszarów.

Rozwiązanie a:
DFS lub BFS przechodzimy całą planszę i szukamy ile razy musimy wywoływać po raz ponownie funkcję. Jest to ilość zamkniętych obszarów. Rozwiązanie jest to trudne w implementacji z uwagi na pamięć.

Rozwiązanie b:
v – liczba wierzchołków
e – liczba krawędzi
f – liczba ścian
Wzór Eulera: (działa dla grafów planarnych)
v+f = 2+e

Żeby wyeliminować problem obszarów otwartych do boków umieszczamy wszystko w dużym równoległoboku i na końcu odejmuje 1 od liczby ścian.

3. Przekładanie kart

Mamy talie kart. Karta to liczba. Przekładamy karty w specyficzny sposób. Karty są stopniowo układane na stos, tak aby suma punktów na stosie była jak najczęściej podzielna przez 100.

Permutacje kart, można wyrazić jako skok pomiędzy kolejnymi elementami.

Jakiś trik z policzeniem optymalnego przełożenia dla prefiksów, a potem dynamicznie liczyć rozwiązania dla dłuższych podciągów.

Wykład:
1. Algorytm Shella (sortowanie).
O złożoności: O(n*lg^2(n))
2. Grafy planarne
Graf planarny to graf płaski, który można narysować bez przecięć.
n – liczba wierzchołków
m – liczba krawędzi
3f=2n
n+2/3m>=k
m>=3n-6
Fakty:
a) każdy graf planarny ma wierzchołek stopnia mniejszego ni? 5,
b) każdy graf planarny jest 5 kolorowalny,
c) graf K5, K3.3 nie są grafem planarnymi i nie są homograficznymi podgrafami grafu planarnego,

Discussion Join the discussion (0 comments)