Skip to content

Instantly share code, notes, and snippets.

@k-payl
k-payl / gist:5581647
Created May 15, 2013 04:28
15 мая
1)В графе, заданном списком смежных вершин найти диаметр
2)Задан ориентированный граф списком рёбер. Найти любой цикл.
3)В графе найти все мосты.(граф задан списками смежности)
4)В графе найти все точки сочленения.(граф задан списками смежности)
(define (BFS a b prosm route queue G)
(if (empty? queue)
#f
(let* ((wave (filter (lambda(x)(and (= x b) (= 0 (list-ref x prosm)))) (list-ref (- a 1) G))))
(if (empty? wave)
#f
(if (belong-to-queue? b wave)
route
(map
(define (main filename)
#lang racket
(define (intersect-line-segment L point1 point2)
(if (<= (* (+ (* (car L) (car point1))(* (cadr L) (cadr point1))(caddr L))(+ (* (car L) (car point2))(* (cadr L) (cadr point2)) (caddr L))) 0)
#t
#f))
(define (intersect-line-pol P L)
(define (iter pred P)
(if (empty? P)
%----------symm-----------------
symm(List) :- iter(List, []).
iter(L, L):-!.
iter([_|L], L):-!.
iter([H|T], Akk) :- iter(T, [H|Akk]).
%---------------reverse------------
reverse_main(L1, L2) :- reverse_iter(L1, L2, []).
reverse_iter([], L2, L2):-!.
addHead(_,[],[]).
addHead(N, [H1|T1], [[N|H1]|T2]) :- addHead(N, T1, T2).
subset(L, Set) :- iter(L,Set,[]).
iter([],Set,Akk) :- sort(Set, Set1), sort(Akk, Akk1), Akk1=Set1.
iter([H|T],Set,Akk) :- addHead(H, T, Newlst) , append(Newlst,Akk, Akk1), iter(T, Set,Akk1).
comp(El1, El2, CompFunc) :- call(CompFunc, El1, El2).
filterOdd([], []).
filterOdd([H|T], Akk) :- nechetn(H), !, filterOdd(T, Akk1), Akk = [H|Akk1].
filterOdd([_|T], Akk) :- filterOdd(T, Akk).
nechetn(X) :- X mod 2 =:= 1.
filter([], [],_).
try([],X,Y,0) :- X = [];Y = [].
try([H|T],[],[],C):-write(T),write([]),write([H]),try(T, [], [H], C1), C is C1+1.
try([H1|T1],[],[H3|T3],C):- H1 < H3, try(T1, [], [H1|[H3|T3]], C1), C is C1+1.
try([H1|T1],[],[H3|T3],C):- H3 < H1, try([H1|T1], H3, T3, C1), C is C1+1.
try([H1|T1], [H2|T2], L3, C) :- H1 < H2, L=[H1|[H2|T2]], try(T1, L, L3, C1), C is C1+1.%1->2
try([H1|T1], L2, [H3|T3], C) :- H1 < H3, L=[H1|[H3|T3]], try(T1, L2, L, C1), C is C1+1.%1->3
try([H1|T1], [H2|T2], L3, C) :- H2 < H1, L=[H2|[H1|T1]], try(L, T2, L3, C1), C is C1+1.%2->1
try(L1, [H2|T2], [H3|T3], C) :- H2 < H3, L=[H2|[H3|T3]], try(L1, T2, L, C1), C is C1+1.%2->3
gcd' :: Int -> Int -> Int
gcd' a b = if (b/=0) then gcd' b (mod a b) else a
isPrime :: Integer -> Bool
isPrime a = if a==1 then False else iter a 2
iter a n = if (n * n > a) then True else
if (mod a n)==0 then False else iter a (n+1)
data TCard = Card Mast CardRang deriving (Eq, Ord, Show)
data Mast = Piki | Bubi | Kresti | Chervi deriving(Eq, Ord, Show)
data CardRang = C2 | C3 | C4 | C5 | C6 | C7 | C8 | C9 | C10 | Valet | Dama | Korol | Tyz deriving(Eq, Ord, Show)
{-
--prepared
isMinor :: TCard -> Bool
isMinor (Card _ b) = b <= C10
sameSuit :: TCard -> TCard -> Bool
sameSuit (Card m1 _) (Card m2 _) = m1 == m2
@k-payl
k-payl / copy-strings
Created December 10, 2013 08:57
Алгорифм маркова. Копирует две строки
"A!A" -> "!AA"
"B!A" -> "!AB"
"C!A" -> "!AC"
"A!B" -> "!BA"
"B!B" -> "!BB"
"C!B" -> "!BC"
"A!C" -> "!CA"
"B!C" -> "!CB"
"C!C" -> "!CC"