├── 10 класс ├── 1 четверть │ ├── 09.11.2020 CW │ │ └── p1.ml │ ├── 2020-09-21 HW │ │ ├── p1.ml │ │ └── p3.ml │ ├── 2020-09-28 HW │ │ └── p1.ml │ ├── 2020-11-09 CW │ │ └── p1.ml │ ├── 2020-11-16 CW │ │ ├── p1.ml │ │ └── p2.ml │ └── 2020-11-23 CW │ │ ├── p1.ml │ │ └── p2.ml └── 2 полугодие │ ├── 2021-02-22 HW │ ├── p1.py │ └── p2-5.py │ ├── 2021-03-29 Контрольная │ ├── p1.ml │ ├── p2.ml │ └── x.txt │ └── Codeforces │ ├── 1501b.py │ ├── 1513c.cpp │ ├── 1513c.py │ ├── 48a.py │ ├── 522a.py │ ├── 959a.py │ └── 996a.py ├── 2021-10 ├── 2021-02-22 HW │ ├── p1.py │ └── p2-5.py ├── 2021-03-29 Контрольная │ ├── p1.ml │ ├── p2.ml │ └── x.txt └── Codeforces │ ├── 1360e.py │ ├── 1513c-2.py │ ├── 1513c.cpp │ ├── 1513c.exe │ ├── 1513c.ml │ ├── 1513c.py │ ├── 522a.py │ └── 959a.py ├── 2021-summer ├── 2021-02-22 HW │ ├── p1.py │ └── p2-5.py ├── 2021-03-29 Контрольная │ ├── p1.ml │ ├── p2.ml │ └── x.txt └── Codeforces │ ├── 1513c-2.py │ ├── 1513c.cpp │ ├── 1513c.exe │ ├── 1513c.py │ ├── 522a.py │ └── 959a.py ├── 8 класс ├── 2019.04.03 │ ├── p1.ml │ ├── p1a.ml │ ├── p1b.ml │ ├── p2.ml │ └── p3.ml ├── 2019.04.05 │ ├── p3.ml │ └── setochka.ml ├── CW 2019.04.10 │ ├── p1.ml │ └── p2.ml ├── CW 2019.04.19 │ ├── p1.ml │ └── p2.ml ├── CW 2019.05.10 │ └── kmp.ml ├── HW to 2019.04.09 │ ├── p2.ml │ ├── p3.ml │ ├── p4.ml │ └── p5.ml ├── HW to 2019.04.19 │ ├── p1.ml │ └── p2.ml ├── HW to 2019.05.10 │ ├── p1.ml │ └── p2.ml └── Контрольная 2019-04-27 │ ├── p1.ml │ ├── p2.ml │ ├── p3.ml │ └── p4.ml └── 9 класс ├── 1 четверть ├── CW 09-10-2019 │ ├── in.txt │ ├── out.txt │ ├── p1.ml │ └── p2.ml ├── CW 11-09-2019 │ ├── p1.ml │ └── p2.ml ├── CW 23-09-2019 │ ├── file.txt │ ├── p1.ml │ ├── p2.ml │ ├── p3.ml │ └── p6.ml ├── HW to 07-10-2019 │ ├── p1.ml │ └── p2.ml ├── HW to 11-09-2019 │ ├── p2.ml │ ├── p3.ml │ └── p4.ml ├── HW to 16-09-2019 │ ├── p1.ml │ ├── p2.ml │ └── p3.ml ├── HW to 16-10-2019 │ └── p6.ml └── HW to 28-09-2019 │ ├── file.txt │ ├── p1.ml │ ├── p2.ml │ ├── p4.ml │ ├── p4.txt │ └── p6.ml ├── 2 четверть ├── CW 2019-11-06 │ └── p1.ml ├── CW 2019-11-20 │ └── p1.ml ├── CW 2019-12-11 │ └── p1.ml ├── HW 2019-11-11 │ └── p1.ml └── HW 2019-12-11 │ ├── p1.ml │ ├── p2.ml │ ├── p3.ml │ └── p4.ml ├── 3 четверть ├── CW 02.03.2020 │ ├── p1.5.ml │ └── p1.ml ├── CW 19.02.2020 │ └── p1.ml ├── CW 22.01.2020 │ ├── p1.ml │ ├── p2.ml │ ├── p2v2.ml │ └── p4.ml ├── CW 26.02.2020 │ └── p1.ml ├── HW to 04.03.2020 │ └── p1.ml ├── HW to 12.02.2020 │ └── p1.ml ├── HW to 15.01.2020 │ └── p1.ml ├── HW to 19.02.2020 │ └── p1.ml └── HW to 27.01.2020 │ └── p1.ml └── 4 четверть ├── HW to 01.04.2020.txt ├── HW to 18.05.2020 ├── p1.py ├── p2.py ├── p3.py └── p4.py └── HW to 20.05.2020 ├── p1.py ├── p1.txt ├── p2.py ├── p2.txt ├── p4.py └── p4.txt /10 класс/1 четверть/09.11.2020 CW/p1.ml: -------------------------------------------------------------------------------- 1 | type tree = Tree of tree list;; 2 | 3 | let check_for_correct s = 4 | let i = ref 0 in 5 | begin 6 | for k=0 to (String.length s)-1 do 7 | if !i<0 then failwith "Incorrect form"; 8 | match s.[k] with 9 | |'(' -> i:=!i+1 10 | |')' -> i:=!i-1 11 | |_ -> failwith "Why isn't it a brace?" 12 | done; 13 | if !i <> 0 then failwith "Incorrect form #2" 14 | end 15 | ;; 16 | 17 | let parse s = 18 | check_for_correct s; 19 | let rec func n s = 20 | if n >= String.length s then ([],n) else 21 | match s.[n] with 22 | | '(' -> let (tl,n) = func (n+1) s in 23 | if s.[n] = ')' then 24 | let (tl2,n) = func (n+1) s in (Tree tl::tl2,n) 25 | else failwith "Error" 26 | |')' -> ([],n) 27 | |_ -> failwith "Here's not a brace" 28 | in 29 | func 0 s 30 | ;; 31 | 32 | let rec string_of_tree t = 33 | match t with 34 | | [] -> "" 35 | | Tree a::b -> "("^(string_of_tree a)^")"^(string_of_tree b) 36 | ;; 37 | 38 | print_string (string_of_tree (fst (parse "(())")));; 39 | print_newline();; 40 | -------------------------------------------------------------------------------- /10 класс/1 четверть/2020-09-21 HW/p1.ml: -------------------------------------------------------------------------------- 1 | (*Я тут для любого O сделал, так что это и вторая задача тоже *) 2 | 3 | let last_num n = 4 | (string_of_int n).[(String.length (string_of_int n))-1] 5 | ;; 6 | 7 | let char_of_int2 n = 8 | match n with 9 | | 0 -> '0' 10 | | 1 -> '1' 11 | | 2 -> '2' 12 | | 3 -> '3' 13 | | 4 -> '4' 14 | | 5 -> '5' 15 | | 6 -> '6' 16 | | 7 -> '7' 17 | | 8 -> '8' 18 | | 9 -> '9' 19 | | _ -> failwith "Unmatched integer" 20 | ;; 21 | 22 | let main o n = 23 | let a = ref 0 and b = ref 0 in 24 | for i=1 to n do 25 | if i*i <= n then 26 | (if (last_num (i*i)) = char_of_int2 o then 27 | a:=!a+1); 28 | b:=!b+1 29 | done; 30 | (float_of_int !a)/.(float_of_int !b) 31 | ;; 32 | 33 | print_float (main 0 1000);; 34 | print_newline();; 35 | -------------------------------------------------------------------------------- /10 класс/1 четверть/2020-09-21 HW/p3.ml: -------------------------------------------------------------------------------- 1 | let rec main n = 2 | if n = 0 then 1. 3 | else ((365.-.(float_of_int n)+.1.)/.365.)*.(main (n-1));; 4 | 5 | print_float (1. -. (main (read_int())));; 6 | print_newline();; 7 | -------------------------------------------------------------------------------- /10 класс/1 четверть/2020-09-28 HW/p1.ml: -------------------------------------------------------------------------------- 1 | let main m n = 2 | let x = ref 0 and t = ref true in 3 | for i=m to n do 4 | t:=true; 5 | if i=1 6 | then t := false; 7 | for j=2 to i-1 do 8 | if i mod j = 0 9 | then t := false 10 | done; 11 | if !t then x := !x + 1 12 | done; 13 | (float_of_int !x)/.(float_of_int (n-m+1)) 14 | ;; 15 | 16 | let m = 3 and n = 14;; 17 | print_float (main m n);; 18 | -------------------------------------------------------------------------------- /10 класс/1 четверть/2020-11-09 CW/p1.ml: -------------------------------------------------------------------------------- 1 | type tree = Tree of tree list;; 2 | 3 | let check_for_correct s = 4 | let i = ref 0 in 5 | begin 6 | for k=0 to (String.length s)-1 do 7 | if !i<0 then failwith "Incorrect form"; 8 | match s.[k] with 9 | |'(' -> i:=!i+1 10 | |')' -> i:=!i-1 11 | |_ -> failwith "Why isn't it a brace?" 12 | done; 13 | if !i <> 0 then failwith "Incorrect form #2" 14 | end 15 | ;; 16 | 17 | let parse s = 18 | check_for_correct s; 19 | let rec func n s = 20 | if n >= String.length s then ([],n) else 21 | match s.[n] with 22 | | '(' -> let (tl,n) = func (n+1) s in 23 | if s.[n] = ')' then 24 | let (tl2,n) = func (n+1) s in (Tree tl::tl2,n) 25 | else failwith "Error" 26 | |')' -> ([],n) 27 | |_ -> failwith "Here's not a brace" 28 | in 29 | func 0 s 30 | ;; 31 | 32 | let rec string_of_tree t = 33 | match t with 34 | | [] -> "" 35 | | Tree a::b -> "("^(string_of_tree a)^")"^(string_of_tree b) 36 | ;; 37 | 38 | print_string (string_of_tree (fst (parse "(())")));; 39 | print_newline();; 40 | -------------------------------------------------------------------------------- /10 класс/1 четверть/2020-11-16 CW/p1.ml: -------------------------------------------------------------------------------- 1 | type 'a tree = Leaf | Node of ('a tree) * ('a tree) * 'a;; 2 | 3 | let rec mem t n = 4 | match t with 5 | | Leaf -> false 6 | | Node (t1,t2,x) -> if x=n then true else (mem t1 n) || (mem t2 n) 7 | ;; 8 | 9 | let t = Node ((Node (Leaf,Leaf,1)),(Node (Leaf,Leaf,3)),2);; 10 | Printf.printf "%b\n" (mem t 1);; 11 | Printf.printf "%b\n" (mem t 0);; 12 | -------------------------------------------------------------------------------- /10 класс/1 четверть/2020-11-16 CW/p2.ml: -------------------------------------------------------------------------------- 1 | type 'a tree = Leaf | Node of ('a tree) * ('a tree) * 'a;; 2 | 3 | let rec add t n = 4 | match t with 5 | | Leaf -> Node (Leaf, Leaf, n) 6 | | Node t1 t2 m -> if n=m then t else if n true 6 | | (t1,Leaf) -> is_bamboo t1 7 | | (Leaf,t2) -> is_bamboo t2 8 | | _ -> false 9 | ;; 10 | -------------------------------------------------------------------------------- /10 класс/1 четверть/2020-11-23 CW/p2.ml: -------------------------------------------------------------------------------- 1 | type 'a tree = Leaf | Node of ('a tree)*('a tree)*'a;; 2 | 3 | let rec is_balanced t = 4 | match t with 5 | | (Leaf, Leaf) -> true 6 | | (Leaf, Node (t1,t2,n)) -> if t1=Leaf && t2=Leaf then true else false 7 | | (Node (t1,t2,n), Leaf) -> if t1=Leaf && t2=Leaf then true else false 8 | | (t1,t2) -> is_balanced t1 && is_balances t2 9 | ;; 10 | -------------------------------------------------------------------------------- /10 класс/2 полугодие/2021-02-22 HW/p1.py: -------------------------------------------------------------------------------- 1 | from re import fullmatch 2 | s = input() 3 | r = "[2-7][02468]" 4 | b = fullmatch(r,s) 5 | if b: 6 | print("Yes") 7 | else: 8 | print("No") -------------------------------------------------------------------------------- /10 класс/2 полугодие/2021-02-22 HW/p2-5.py: -------------------------------------------------------------------------------- 1 | # Тут сборная солянка из 2-5 (не вижу смысла на 4 файла разделять) 2 | 3 | from re import fullmatch 4 | s = input() 5 | r = "-?(([1-9][0-9]*)|0)+[.]?(([0-9]*[1-9])|0)?|[.](([0-9]*[1-9])|0)$" 6 | b = fullmatch(r,s) 7 | if b: 8 | print("Yes") 9 | else: 10 | print("No") -------------------------------------------------------------------------------- /10 класс/2 полугодие/2021-03-29 Контрольная/p1.ml: -------------------------------------------------------------------------------- 1 | let f = open_in "x.txt";; 2 | 3 | let read_in f = 4 | let rec func f n = 5 | try 6 | let x = input_line f in func f (n+1) 7 | with 8 | End_of_file -> n 9 | in 10 | func f 0 11 | ;; 12 | 13 | print_int (read_in f);; 14 | 15 | close_in f;; 16 | print_newline() 17 | -------------------------------------------------------------------------------- /10 класс/2 полугодие/2021-03-29 Контрольная/p2.ml: -------------------------------------------------------------------------------- 1 | let f = open_in "x.txt";; 2 | 3 | let deg n m= 4 | int_of_float ((float n)**(float m)) 5 | ;; 6 | 7 | let split l = 8 | let rec func l n = 9 | match l with 10 | | hd::tl -> func tl (n+(hd*(deg 10 (List.length tl)))) 11 | | [] -> n 12 | in 13 | func l 0 14 | ;; 15 | 16 | let int_of_char_n c = 17 | int_of_string (String.make 1 c) 18 | ;; 19 | let char_to_int_list l = 20 | List.map int_of_char_n l 21 | ;; 22 | 23 | let string_to_int_list s = 24 | let status = ref false and l = ref [] and lm = ref [] in 25 | begin 26 | for i = 0 to (String.length s)-1 do 27 | match s.[i] with 28 | |'0'|'1'|'2'|'3'|'4'|'5'|'6'|'7'|'8'|'9' -> (status:=true; l:=!l@[(s.[i])]) 29 | | _ -> if !status then (lm:=!lm@[(split (char_to_int_list !l))]; l:=[]; status:= false) 30 | done; 31 | !lm 32 | end 33 | ;; 34 | 35 | let rec read_in f = 36 | let rec read_inn l = 37 | try 38 | let x = input_line f in (print_string x; print_int (List.length l); read_inn (l@[x])) 39 | with 40 | End_of_file -> l 41 | in 42 | let w = read_inn [] in print_int (List.length w); w 43 | ;; 44 | 45 | let split_to_string l = 46 | let rec func l s = 47 | match l with 48 | | hd::tl -> func tl (s^hd) 49 | | [] -> s 50 | in 51 | func l "" 52 | ;; 53 | 54 | let l = string_to_int_list (split_to_string (read_in f));; 55 | 56 | List.iter (Printf.printf "%s;") (read_in f);; 57 | -------------------------------------------------------------------------------- /10 класс/2 полугодие/2021-03-29 Контрольная/x.txt: -------------------------------------------------------------------------------- 1 | 1111 2 | 2222 3 | 3333 4 | 4444 5 | 5555 6 | 6666 7 | 7777 8 | -------------------------------------------------------------------------------- /10 класс/2 полугодие/Codeforces/1501b.py: -------------------------------------------------------------------------------- 1 | l=[] 2 | for i in range(int(input())): 3 | l.append([int(input()), input()]) 4 | 5 | def iter(l): 6 | lst = list(map(int, l[1].rsplit(' '))) 7 | n=l[0] 8 | ans=['0']*n 9 | t=0 10 | for i in range(n): 11 | t=lst[i] 12 | if t>i: 13 | for i in range(min(i+1, t)): 14 | ans[i]='1' 15 | else: 16 | for i in range(i-t+1, i+1): 17 | ans[i]='1' 18 | return(ans) 19 | 20 | def main(l): 21 | for t in l: 22 | s=" ".join(iter(t)) 23 | print(s) 24 | 25 | main(l) -------------------------------------------------------------------------------- /10 класс/2 полугодие/Codeforces/1513c.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | using namespace std; 3 | 4 | 5 | 6 | int main(){ 7 | 8 | } -------------------------------------------------------------------------------- /10 класс/2 полугодие/Codeforces/1513c.py: -------------------------------------------------------------------------------- 1 | l=[] 2 | n = int(input()) 3 | for i in range(n): 4 | l.append(input()) 5 | 6 | def parse_string(s): 7 | p = s.rsplit(' ') 8 | return ([p[0], p[1]]) 9 | 10 | def apply(s): 11 | ans='' 12 | for c in s: 13 | ans = ans + str((int(c)+1)) 14 | return(ans) 15 | 16 | def main(n, m): 17 | for i in range(m): 18 | n=apply(n) 19 | return(len(n)) 20 | 21 | for i in range(len(l)): 22 | t=parse_string(l[i]) 23 | print(main(t[0], int(t[1]))) -------------------------------------------------------------------------------- /10 класс/2 полугодие/Codeforces/48a.py: -------------------------------------------------------------------------------- 1 | def bool_fun(s1,s2): 2 | if s1=='rock': 3 | if s2=='paper': 4 | return(2) 5 | else: 6 | return(1) 7 | elif s1=='paper': 8 | if s2=='rock': 9 | return(1) 10 | else: 11 | return(2) 12 | else: 13 | if s2=='paper': 14 | return(1) 15 | else: 16 | return(2) 17 | 18 | def main(s1,s2,s3): 19 | if (s1!=s2 and s2!=s3 and s3!=s1) or s1==s2==s3: 20 | return('?') 21 | elif s1==s2: 22 | if bool_fun(s1, s3)==2: 23 | return('S') 24 | else: 25 | return('?') 26 | elif s1==s3: 27 | if bool_fun(s1,s2)==2: 28 | return('M') 29 | else: 30 | return('?') 31 | elif s2==s3: 32 | if bool_fun(s2, s1)==2: 33 | return('F') 34 | else: 35 | return('?') 36 | 37 | s1=input() 38 | s2=input() 39 | s3=input() 40 | print(main(s1, s2, s3)) -------------------------------------------------------------------------------- /10 класс/2 полугодие/Codeforces/522a.py: -------------------------------------------------------------------------------- 1 | l=[] 2 | for i in range(int(input())): 3 | l.append(input()) 4 | 5 | def parse_string(s): 6 | t=s.rsplit(' ') 7 | return((t[0].lower(),t[2].lower())) 8 | 9 | list_of_names=[] 10 | for s in l: 11 | t=parse_string(s) 12 | if not (t[1] in list_of_names): 13 | list_of_names.append(t[1]) 14 | list_of_names.append(parse_string(l[len(l)-1])[0]) 15 | 16 | graph=[[]] * len(list_of_names) 17 | dict={} 18 | 19 | for i in range(len(list_of_names)): 20 | dict[list_of_names[i]]=i 21 | print(list_of_names[i]) 22 | 23 | def create_graph(l): 24 | for s in l: 25 | t=parse_string(s) 26 | graph[dict[t[1]]].append(t[0]) 27 | 28 | print(list_of_names) 29 | print(dict) 30 | create_graph(l) 31 | print(graph) 32 | -------------------------------------------------------------------------------- /10 класс/2 полугодие/Codeforces/959a.py: -------------------------------------------------------------------------------- 1 | n=int(input()) 2 | if n%2==0: 3 | print('Mahmoud') 4 | else: 5 | print('Ehab') -------------------------------------------------------------------------------- /10 класс/2 полугодие/Codeforces/996a.py: -------------------------------------------------------------------------------- 1 | n=int(input()) 2 | i=0 3 | t=0 4 | while n!=0: 5 | if n>=100: 6 | t=divmod(n,100)[0] 7 | n=n-100*t 8 | i=i+t 9 | elif n>=20: 10 | t=divmod(n,20)[0] 11 | n=n-20*t 12 | i=i+t 13 | elif n>=10: 14 | t=divmod(n,10)[0] 15 | n=n-10*t 16 | i=i+t 17 | elif n>=5: 18 | t=divmod(n,5)[0] 19 | n=n-5*t 20 | i=i+t 21 | else : 22 | i=i+n 23 | n=0 24 | print(i) -------------------------------------------------------------------------------- /2021-10/2021-02-22 HW/p1.py: -------------------------------------------------------------------------------- 1 | from re import fullmatch 2 | s = input() 3 | r = "[2-7][02468]" 4 | b = fullmatch(r,s) 5 | if b: 6 | print("Yes") 7 | else: 8 | print("No") -------------------------------------------------------------------------------- /2021-10/2021-02-22 HW/p2-5.py: -------------------------------------------------------------------------------- 1 | # Тут сборная солянка из 2-5 (не вижу смысла на 4 файла разделять) 2 | 3 | from re import fullmatch 4 | s = input() 5 | r = "-?(([1-9][0-9]*)|0)+[.]?(([0-9]*[1-9])|0)?|[.](([0-9]*[1-9])|0)$" 6 | b = fullmatch(r,s) 7 | if b: 8 | print("Yes") 9 | else: 10 | print("No") -------------------------------------------------------------------------------- /2021-10/2021-03-29 Контрольная/p1.ml: -------------------------------------------------------------------------------- 1 | let f = open_in "x.txt";; 2 | 3 | let read_in f = 4 | let rec func f n = 5 | try 6 | let x = input_line f in func f (n+1) 7 | with 8 | End_of_file -> n 9 | in 10 | func f 0 11 | ;; 12 | 13 | print_int (read_in f);; 14 | 15 | close_in f;; 16 | print_newline() 17 | -------------------------------------------------------------------------------- /2021-10/2021-03-29 Контрольная/p2.ml: -------------------------------------------------------------------------------- 1 | let f = open_in "x.txt";; 2 | 3 | let deg n m= 4 | int_of_float ((float n)**(float m)) 5 | ;; 6 | 7 | let split l = 8 | let rec func l n = 9 | match l with 10 | | hd::tl -> func tl (n+(hd*(deg 10 (List.length tl)))) 11 | | [] -> n 12 | in 13 | func l 0 14 | ;; 15 | 16 | let int_of_char_n c = 17 | int_of_string (String.make 1 c) 18 | ;; 19 | let char_to_int_list l = 20 | List.map int_of_char_n l 21 | ;; 22 | 23 | let string_to_int_list s = 24 | let status = ref false and l = ref [] and lm = ref [] in 25 | begin 26 | for i = 0 to (String.length s)-1 do 27 | match s.[i] with 28 | |'0'|'1'|'2'|'3'|'4'|'5'|'6'|'7'|'8'|'9' -> (status:=true; l:=!l@[(s.[i])]) 29 | | _ -> if !status then (lm:=!lm@[(split (char_to_int_list !l))]; l:=[]; status:= false) 30 | done; 31 | !lm 32 | end 33 | ;; 34 | 35 | let rec read_in f = 36 | let rec read_inn l = 37 | try 38 | let x = input_line f in (print_string x; print_int (List.length l); read_inn (l@[x])) 39 | with 40 | End_of_file -> l 41 | in 42 | let w = read_inn [] in print_int (List.length w); w 43 | ;; 44 | 45 | let split_to_string l = 46 | let rec func l s = 47 | match l with 48 | | hd::tl -> func tl (s^hd) 49 | | [] -> s 50 | in 51 | func l "" 52 | ;; 53 | 54 | let l = string_to_int_list (split_to_string (read_in f));; 55 | 56 | List.iter (Printf.printf "%s;") (read_in f);; 57 | -------------------------------------------------------------------------------- /2021-10/2021-03-29 Контрольная/x.txt: -------------------------------------------------------------------------------- 1 | 1111 2 | 2222 3 | 3333 4 | 4444 5 | 5555 6 | 6666 7 | 7777 8 | -------------------------------------------------------------------------------- /2021-10/Codeforces/1360e.py: -------------------------------------------------------------------------------- 1 | n=int(input()) 2 | l=[] 3 | """l=[[]]*n 4 | for i in range(n): 5 | for j in range(int(input())): 6 | l[i]+=[list(input())]""" 7 | for _ in range(n): 8 | g=[] 9 | for _ in range(int(input())): 10 | g.append(list(input())) 11 | l.append(g) 12 | 13 | print(l) 14 | def check(l): 15 | b=True 16 | for i in range(len(l)-1): 17 | for j in range(len(l)-1): 18 | if l[i][j]=='1' and l[i+1][j]=='0' and l[i][j+1]=='0': 19 | b=False 20 | return(b) 21 | 22 | def print_normal(b): 23 | if b: 24 | print("YES") 25 | else: 26 | print("NO") 27 | 28 | for t in l: 29 | print_normal(check(t)) -------------------------------------------------------------------------------- /2021-10/Codeforces/1513c-2.py: -------------------------------------------------------------------------------- 1 | """import time 2 | l=[] 3 | n = int(input()) 4 | for i in range(n): 5 | l.append(input())""" 6 | 7 | def parse_string(s): 8 | p = s.rsplit(' ') 9 | return ([p[0], p[1]]) 10 | 11 | def generate_str(n,m): 12 | l=[] 13 | for i in range(0,m): 14 | l.append(len(str(n+i))) 15 | return(l) 16 | 17 | def generate_matrix(m): 18 | l=[] 19 | for i in range(10): 20 | l.append(generate_str(i,m)) 21 | return(l) 22 | 23 | mtr=generate_matrix(2*(10**5)) 24 | 25 | def main(s, m): 26 | n=0 27 | for c in s: 28 | n=n+(mtr[(int(c))][m]) 29 | return(n) 30 | 31 | print(main("12",100)) -------------------------------------------------------------------------------- /2021-10/Codeforces/1513c.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | using namespace std; 3 | 4 | int main(){ 5 | cout << "Hello, World" << endl; 6 | } -------------------------------------------------------------------------------- /2021-10/Codeforces/1513c.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Gadjib/ocamlhomeworks/e90f79de89f4720c4cf1c17caee4d8da8a31b7bd/2021-10/Codeforces/1513c.exe -------------------------------------------------------------------------------- /2021-10/Codeforces/1513c.ml: -------------------------------------------------------------------------------- 1 | let generate_str n m= 2 | let l = ref [] in 3 | begin 4 | for i = 0 to m do 5 | l:=!l@[String.length(string_of_int(n+i))] 6 | done; 7 | !l; 8 | end 9 | ;; 10 | 11 | let generate_matr m = 12 | let l = ref [] in 13 | begin 14 | for i = 0 to 9 do 15 | l:=!l@[(generate_str i m)] 16 | done; 17 | !l 18 | end 19 | ;; 20 | 21 | let matr = generate_matr(2*(int_of_float(10.**5.)));; -------------------------------------------------------------------------------- /2021-10/Codeforces/1513c.py: -------------------------------------------------------------------------------- 1 | l=[] 2 | n = int(input()) 3 | for i in range(n): 4 | l.append(input()) 5 | 6 | def parse_string(s): 7 | p = s.rsplit(' ') 8 | return([p[0], p[1]]) 9 | 10 | def parse_to_list(n): 11 | ll=list(str(n)) 12 | l=list(map(int, ll)) 13 | return(l) 14 | 15 | def parse_elements(l): 16 | lans=[] 17 | for i in range(len(l)): 18 | lans=lans+(parse_to_list(l[i])) 19 | return(lans) 20 | 21 | def apply_funcs(n, m): 22 | l=parse_to_list(n) 23 | for i in range(m): 24 | l=list(map(lambda x: x+1, l)) 25 | l=parse_elements(l) 26 | l1=list(map(str,l)) 27 | s="".join(l1) 28 | return(len(s)) 29 | 30 | for i in range(len(l)): 31 | t=parse_string(l[i]) 32 | print(apply_funcs(int(t[0]), int(t[1]))) -------------------------------------------------------------------------------- /2021-10/Codeforces/522a.py: -------------------------------------------------------------------------------- 1 | l=[] 2 | for i in range(int(input())): 3 | l.append(input()) 4 | 5 | def parse_string(s): 6 | t=s.rsplit(' ') 7 | return((t[0].lower(),t[2].lower())) 8 | 9 | list_of_names=[] 10 | for s in l: 11 | t=parse_string(s) 12 | if not (t[1] in list_of_names): 13 | list_of_names.append(t[1]) 14 | list_of_names.append(parse_string(l[len(l)-1])[0]) 15 | 16 | graph=[[]] * len(list_of_names) 17 | dict={} 18 | 19 | for i in range(len(list_of_names)): 20 | dict[list_of_names[i]]=i 21 | print(list_of_names[i]) 22 | 23 | def create_graph(l): 24 | for s in l: 25 | t=parse_string(s) 26 | graph[dict[t[1]]].append(t[0]) 27 | 28 | print(list_of_names) 29 | print(dict) 30 | create_graph(l) 31 | print(graph) 32 | -------------------------------------------------------------------------------- /2021-10/Codeforces/959a.py: -------------------------------------------------------------------------------- 1 | n=int(input()) 2 | if n%2==0: 3 | print('Mahmoud') 4 | else: 5 | print('Ehab') -------------------------------------------------------------------------------- /2021-summer/2021-02-22 HW/p1.py: -------------------------------------------------------------------------------- 1 | from re import fullmatch 2 | s = input() 3 | r = "[2-7][02468]" 4 | b = fullmatch(r,s) 5 | if b: 6 | print("Yes") 7 | else: 8 | print("No") -------------------------------------------------------------------------------- /2021-summer/2021-02-22 HW/p2-5.py: -------------------------------------------------------------------------------- 1 | # Тут сборная солянка из 2-5 (не вижу смысла на 4 файла разделять) 2 | 3 | from re import fullmatch 4 | s = input() 5 | r = "-?(([1-9][0-9]*)|0)+[.]?(([0-9]*[1-9])|0)?|[.](([0-9]*[1-9])|0)$" 6 | b = fullmatch(r,s) 7 | if b: 8 | print("Yes") 9 | else: 10 | print("No") -------------------------------------------------------------------------------- /2021-summer/2021-03-29 Контрольная/p1.ml: -------------------------------------------------------------------------------- 1 | let f = open_in "x.txt";; 2 | 3 | let read_in f = 4 | let rec func f n = 5 | try 6 | let x = input_line f in func f (n+1) 7 | with 8 | End_of_file -> n 9 | in 10 | func f 0 11 | ;; 12 | 13 | print_int (read_in f);; 14 | 15 | close_in f;; 16 | print_newline() 17 | -------------------------------------------------------------------------------- /2021-summer/2021-03-29 Контрольная/p2.ml: -------------------------------------------------------------------------------- 1 | let f = open_in "x.txt";; 2 | 3 | let deg n m= 4 | int_of_float ((float n)**(float m)) 5 | ;; 6 | 7 | let split l = 8 | let rec func l n = 9 | match l with 10 | | hd::tl -> func tl (n+(hd*(deg 10 (List.length tl)))) 11 | | [] -> n 12 | in 13 | func l 0 14 | ;; 15 | 16 | let int_of_char_n c = 17 | int_of_string (String.make 1 c) 18 | ;; 19 | let char_to_int_list l = 20 | List.map int_of_char_n l 21 | ;; 22 | 23 | let string_to_int_list s = 24 | let status = ref false and l = ref [] and lm = ref [] in 25 | begin 26 | for i = 0 to (String.length s)-1 do 27 | match s.[i] with 28 | |'0'|'1'|'2'|'3'|'4'|'5'|'6'|'7'|'8'|'9' -> (status:=true; l:=!l@[(s.[i])]) 29 | | _ -> if !status then (lm:=!lm@[(split (char_to_int_list !l))]; l:=[]; status:= false) 30 | done; 31 | !lm 32 | end 33 | ;; 34 | 35 | let rec read_in f = 36 | let rec read_inn l = 37 | try 38 | let x = input_line f in (print_string x; print_int (List.length l); read_inn (l@[x])) 39 | with 40 | End_of_file -> l 41 | in 42 | let w = read_inn [] in print_int (List.length w); w 43 | ;; 44 | 45 | let split_to_string l = 46 | let rec func l s = 47 | match l with 48 | | hd::tl -> func tl (s^hd) 49 | | [] -> s 50 | in 51 | func l "" 52 | ;; 53 | 54 | let l = string_to_int_list (split_to_string (read_in f));; 55 | 56 | List.iter (Printf.printf "%s;") (read_in f);; 57 | -------------------------------------------------------------------------------- /2021-summer/2021-03-29 Контрольная/x.txt: -------------------------------------------------------------------------------- 1 | 1111 2 | 2222 3 | 3333 4 | 4444 5 | 5555 6 | 6666 7 | 7777 8 | -------------------------------------------------------------------------------- /2021-summer/Codeforces/1513c-2.py: -------------------------------------------------------------------------------- 1 | import time 2 | """l=[] 3 | n = int(input()) 4 | for i in range(n): 5 | l.append(input()) 6 | """ 7 | def generate_str(n,m): 8 | l=[] 9 | for i in range(0,m): 10 | l.append(len(str(n+i))) 11 | return(l) 12 | 13 | def generate_matrix(m): 14 | l=[] 15 | for i in range(10): 16 | l.append(generate_str(i,m)) 17 | return(l) 18 | 19 | t=time.time() 20 | mtr=generate_matrix(2*(10**5)) 21 | print((time.time()) - t) -------------------------------------------------------------------------------- /2021-summer/Codeforces/1513c.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | using namespace std; 3 | 4 | int main(){ 5 | cout << "Hello, World" << endl; 6 | } -------------------------------------------------------------------------------- /2021-summer/Codeforces/1513c.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Gadjib/ocamlhomeworks/e90f79de89f4720c4cf1c17caee4d8da8a31b7bd/2021-summer/Codeforces/1513c.exe -------------------------------------------------------------------------------- /2021-summer/Codeforces/1513c.py: -------------------------------------------------------------------------------- 1 | l=[] 2 | n = int(input()) 3 | for i in range(n): 4 | l.append(input()) 5 | 6 | def parse_string(s): 7 | p = s.rsplit(' ') 8 | return([p[0], p[1]]) 9 | 10 | def parse_to_list(n): 11 | ll=list(str(n)) 12 | l=list(map(int, ll)) 13 | return(l) 14 | 15 | def parse_elements(l): 16 | lans=[] 17 | for i in range(len(l)): 18 | lans=lans+(parse_to_list(l[i])) 19 | return(lans) 20 | 21 | def apply_funcs(n, m): 22 | l=parse_to_list(n) 23 | for i in range(m): 24 | l=list(map(lambda x: x+1, l)) 25 | l=parse_elements(l) 26 | l1=list(map(str,l)) 27 | s="".join(l1) 28 | return(len(s)) 29 | 30 | for i in range(len(l)): 31 | t=parse_string(l[i]) 32 | print(apply_funcs(int(t[0]), int(t[1]))) -------------------------------------------------------------------------------- /2021-summer/Codeforces/522a.py: -------------------------------------------------------------------------------- 1 | l=[] 2 | for i in range(int(input())): 3 | l.append(input()) 4 | 5 | def parse_string(s): 6 | t=s.rsplit(' ') 7 | return((t[0].lower(),t[2].lower())) 8 | 9 | list_of_names=[] 10 | for s in l: 11 | t=parse_string(s) 12 | if not (t[1] in list_of_names): 13 | list_of_names.append(t[1]) 14 | list_of_names.append(parse_string(l[len(l)-1])[0]) 15 | 16 | graph=[[]] * len(list_of_names) 17 | dict={} 18 | 19 | for i in range(len(list_of_names)): 20 | dict[list_of_names[i]]=i 21 | print(list_of_names[i]) 22 | 23 | def create_graph(l): 24 | for s in l: 25 | t=parse_string(s) 26 | graph[dict[t[1]]].append(t[0]) 27 | 28 | print(list_of_names) 29 | print(dict) 30 | create_graph(l) 31 | print(graph) 32 | -------------------------------------------------------------------------------- /2021-summer/Codeforces/959a.py: -------------------------------------------------------------------------------- 1 | n=int(input()) 2 | if n%2==0: 3 | print('Mahmoud') 4 | else: 5 | print('Ehab') -------------------------------------------------------------------------------- /8 класс/2019.04.03/p1.ml: -------------------------------------------------------------------------------- 1 | print_string "*\n *\n *\n *\n *\n*\n";; -------------------------------------------------------------------------------- /8 класс/2019.04.03/p1a.ml: -------------------------------------------------------------------------------- 1 | print_string "*\n *\n *\n *\n *\n *\n *\n *\n *\n *\n*\n";; -------------------------------------------------------------------------------- /8 класс/2019.04.03/p1b.ml: -------------------------------------------------------------------------------- 1 | open String;; 2 | 3 | let string_n n = 4 | let s = ref "" in 5 | begin 6 | for i = 1 to n do 7 | s:=!s^" "; 8 | done; 9 | s:=!s^"*"; 10 | !s; 11 | end 12 | ;; 13 | 14 | let main n = 15 | let s = ref "" in 16 | begin 17 | for i = 1 to n do 18 | s:=!s^(string_n i)^"\n" 19 | done; 20 | for i = n-1 downto 1 do 21 | s:=!s^(string_n i)^"\n"; 22 | done; 23 | !s; 24 | end 25 | ;; 26 | 27 | print_string (main (read_int()));; -------------------------------------------------------------------------------- /8 класс/2019.04.03/p2.ml: -------------------------------------------------------------------------------- 1 | let string_n n = 2 | let s = ref "" in 3 | begin 4 | for i = 1 to n do 5 | s:=!s^"*"; 6 | done; 7 | !s; 8 | end 9 | ;; 10 | 11 | let main n = 12 | let s = ref "" in 13 | begin 14 | for i = 1 to n do 15 | s:=!s^(string_n n)^"\n"; 16 | done; 17 | !s; 18 | end; 19 | ;; 20 | 21 | print_string (main (read_int()));; -------------------------------------------------------------------------------- /8 класс/2019.04.03/p3.ml: -------------------------------------------------------------------------------- 1 | let str m n = 2 | let s = ref "" in 3 | begin 4 | for i = 1 to m/2-n/2 do 5 | s:=!s^" "; 6 | done; 7 | for i = 1 to n do 8 | s:=!s^"*"; 9 | done; 10 | for i = 1 to m/2-n/2 do 11 | s:=!s^" "; 12 | done; 13 | s:=!s^"\n"; 14 | !s; 15 | end 16 | ;; 17 | 18 | let main n = 19 | let s = ref "" in 20 | begin 21 | for i = 1 to n/2+1 do 22 | s:=!s^(str n (2*i-1)); 23 | done; 24 | for i = n/2 downto 1 do 25 | s:=!s^(str n (2*i-1)); 26 | done; 27 | !s; 28 | end 29 | ;; 30 | 31 | print_string (main 6);; -------------------------------------------------------------------------------- /8 класс/2019.04.05/p3.ml: -------------------------------------------------------------------------------- 1 | type tree = Braces of tree | Star;; 2 | 3 | let n_spaces n = 4 | let s = ref "" in 5 | begin 6 | for i = 1 to n do 7 | s:=!s^" " 8 | done; 9 | !s; 10 | end 11 | ;; 12 | 13 | let rec main t n = 14 | match t with 15 | |Star -> "*" 16 | |Braces t1 -> "(\n"^(n_spaces (3*n))^(main t1 (n+1))^(n_spaces (3*n))^")\n" 17 | ;; 18 | 19 | print_string (main (Braces (Braces Star)) 0);; -------------------------------------------------------------------------------- /8 класс/2019.04.05/setochka.ml: -------------------------------------------------------------------------------- 1 | let nstr n = 2 | let s = ref "" in 3 | begin 4 | s:=!s^"*"; 5 | for i = 1 to n do 6 | s:=!s^" "; 7 | done; 8 | s:=!s^"*\n"; 9 | !s; 10 | end 11 | ;; 12 | 13 | 14 | let print_elt() = 15 | let s = ref "" in 16 | begin 17 | for i = 1 to 6+1 do 18 | s:=!s^"*"; 19 | done; 20 | s:=!s^"\n"; 21 | for i = 1 to 5 do 22 | s:=!s^(nstr 5); 23 | done; 24 | for i = 1 to 7 do 25 | s:=!s^"*"; 26 | done; 27 | s:=!s^"\n"; 28 | !s; 29 | end; 30 | ;; 31 | 32 | print_string (print_elt());; 33 | 34 | -------------------------------------------------------------------------------- /8 класс/CW 2019.04.10/p1.ml: -------------------------------------------------------------------------------- 1 | type tree = N of int*tree*tree | L;; 2 | 3 | let rec lkp t = 4 | match t with 5 | |L -> [] 6 | |N (n,t1,t2) -> (lkp t1)@[n]@(lkp t2) 7 | ;; 8 | 9 | let rec klp t = 10 | match t with 11 | |L -> [] 12 | |N (n,t1,t2) -> [n]@(klp t1)@(klp t2) 13 | ;; 14 | 15 | let rec lpk t = 16 | match t with 17 | |L -> [] 18 | |N (n,t1,t2) -> (lpk t1)@[n]@(lpk t2) 19 | ;; 20 | 21 | let t = N (1,(N(3,L,L)),(N(5,(N(7,L,L)),(N(6,L,L)))));; 22 | List.iter (Printf.printf "%d;") (klp t);; 23 | print_newline();; -------------------------------------------------------------------------------- /8 класс/CW 2019.04.10/p2.ml: -------------------------------------------------------------------------------- 1 | type tree = N of int*tree*tree | L;; 2 | 3 | let rec dt t l = 4 | match l with 5 | |[] -> t 6 | |hd::tl -> match t with 7 | |L -> failwith "Incorrect way" 8 | |N (n,t1,t2) -> if hd = 1 then dt t1 tl else dt t2 tl; 9 | ;; 10 | 11 | let pop_fst l = 12 | match l with 13 | |[] -> failwith "Incorrect popping" 14 | |hd::tl -> tl; 15 | ;; 16 | 17 | let get_fst l = 18 | match l with 19 | |[] -> failwith "Incorrect getting" 20 | |hd::tl -> hd; 21 | ;; 22 | 23 | let main t = 24 | let rec f (tr:tree) l q w = 25 | match t with 26 | |L -> failwith "It's impossible" 27 | |N (n,t1,t2) -> q:=(pop_fst !q); if t1<>L then q:=!q@[(w@[1])]; 28 | if t1<>L then q:=!q@[(w@[1])]; f (dt t (get_fst !l)) q (get_fst !l) 29 | -------------------------------------------------------------------------------- /8 класс/CW 2019.04.19/p1.ml: -------------------------------------------------------------------------------- 1 | type tree = N of int*tree*tree | L;; 2 | 3 | let main n = 4 | let t = ref L and 5 | rec f t n = 6 | if n = 0 then Lef else f -------------------------------------------------------------------------------- /8 класс/CW 2019.04.19/p2.ml: -------------------------------------------------------------------------------- 1 | type tree = L | N of int*tree*tree;; 2 | 3 | let add_tree t t1 = 4 | let tt = ref t 5 | and rec f tt t1 = 6 | match !tt with 7 | |L -> t1 8 | |N (n,L,L) -> N(n,L,t1) 9 | |N (n,t11,t12) -> tt:=add_tree !tt t12 10 | in 11 | f tt t1; 12 | !tt; 13 | ;; 14 | 15 | let main n = 16 | let rec bambook t n = 17 | if n = 0 then t else bambook (add_tree t (N(n,L,L))) (n-1) 18 | in 19 | bambook L n 20 | ;; 21 | 22 | let rec print_tree t = 23 | match t with 24 | |L -> print_string "L" 25 | |N (n,t1,t2) -> print_string ("N ("^(string_of_int n)^","); print_tree t1; print_tree t2; print_string ")"; 26 | ;; 27 | 28 | print_tree (main 5);; -------------------------------------------------------------------------------- /8 класс/CW 2019.05.10/kmp.ml: -------------------------------------------------------------------------------- 1 | open String;; 2 | 3 | 4 | 5 | let automat str = 6 | let s = ref 0 in 7 | begin 8 | for i = 0 to (length str)-1 do 9 | -------------------------------------------------------------------------------- /8 класс/HW to 2019.04.09/p2.ml: -------------------------------------------------------------------------------- 1 | type tree = Braces of tree | Star;; 2 | 3 | let rec print_braces t = 4 | match t with 5 | |Star -> print_string "*" 6 | |Braces t1 -> print_string "(" ;print_braces t1;print_string ")"; 7 | ;; 8 | 9 | print_braces (Braces (Braces (Braces Star)));; 10 | print_newline();; -------------------------------------------------------------------------------- /8 класс/HW to 2019.04.09/p3.ml: -------------------------------------------------------------------------------- 1 | let str n c = 2 | let s = ref "" in 3 | begin 4 | for i = 1 to n do 5 | s:=!s^" "; 6 | done; 7 | s:=!s^(String.make 1 c); 8 | !s; 9 | end 10 | ;; 11 | 12 | let main n = 13 | let s = ref "" in 14 | begin 15 | for i = 0 to n-1 do 16 | s:=!s^(str (3*i) '(')^"\n"; 17 | done; 18 | s:=!s^(str (3*n) '*')^"\n"; 19 | for i = n-1 downto 0 do 20 | s:=!s^(str (3*i) ')')^"\n"; 21 | done; 22 | !s; 23 | end 24 | ;; 25 | 26 | print_string (main 3);; -------------------------------------------------------------------------------- /8 класс/HW to 2019.04.09/p4.ml: -------------------------------------------------------------------------------- 1 | type tree = Braces of tree | Star;; 2 | 3 | let str n c = 4 | let s = ref "" in 5 | begin 6 | for i = 1 to n do 7 | s:=!s^" "; 8 | done; 9 | s:=!s^(String.make 1 c); 10 | !s; 11 | end 12 | ;; 13 | 14 | let main m n = 15 | let s = ref "" in 16 | begin 17 | for i = 0 to m-1 do 18 | s:=!s^(str (n*i) '(')^"\n"; 19 | done; 20 | s:=!s^(str (n*m) '*')^"\n"; 21 | for i = m-1 downto 0 do 22 | s:=!s^(str (n*i) ')')^"\n"; 23 | done; 24 | !s; 25 | end 26 | ;; 27 | 28 | print_string (main 3 8);; -------------------------------------------------------------------------------- /8 класс/HW to 2019.04.09/p5.ml: -------------------------------------------------------------------------------- 1 | type comma = Braces of comma*comma | Star;; 2 | 3 | let str n c = 4 | let s = ref "" in 5 | begin 6 | for i = 1 to n do 7 | s:=!s^" "; 8 | done; 9 | s:=!s^(String.make 1 c)^"\n"; 10 | !s; 11 | end 12 | ;; 13 | 14 | let main t = 15 | let rec f t n = 16 | match t with 17 | |Star -> str (4*n) '*' 18 | |Braces (t1,t2) -> (str (4*n) '(')^(f t1 (n+1))^(f t2 (n+1))^(str (4*n) ')' ) 19 | in 20 | f t 0 21 | ;; 22 | 23 | print_string (main (Braces ((Braces (Star,Star)),Star)));; -------------------------------------------------------------------------------- /8 класс/HW to 2019.04.19/p1.ml: -------------------------------------------------------------------------------- 1 | type tree = N of int*tree*tree | L;; 2 | 3 | let rec lkp t = 4 | match t with 5 | |L -> [] 6 | |N (n,t1,t2) -> (lkp t1)@[n]@(lkp t2) 7 | ;; 8 | 9 | let main t = 10 | let l = lkp t in if (List.sort compare l) = l then true else false 11 | ;; 12 | 13 | let t = N (3,(N(1,L,L)),(N(7,(N(5,L,L)),(N(8,L,L)))));; 14 | Printf.printf "%b" (main t);; 15 | List.iter (Printf.printf "%d;") (lkp t);; 16 | print_newline();; -------------------------------------------------------------------------------- /8 класс/HW to 2019.04.19/p2.ml: -------------------------------------------------------------------------------- 1 | type tree = N of int*tree*tree | L;; 2 | 3 | let rec main t n = 4 | match t with 5 | |L -> false 6 | |N (x,t1,t2) -> if x = n then true else (main t1 n) || (main t2 n) 7 | ;; 8 | 9 | let t = N (3,(N(1,L,L)),(N(7,(N(5,L,L)),(N(8,L,L)))));; 10 | Printf.printf "%b\n" (main t 5);; 11 | Printf.printf "%b\n" (main t 4);; -------------------------------------------------------------------------------- /8 класс/HW to 2019.05.10/p1.ml: -------------------------------------------------------------------------------- 1 | open Graphics;; 2 | open_graph " 700x500";; 3 | 4 | type tree = B of int*tree*tree | L;; 5 | 6 | let draw_v n i j = 7 | draw_rect i j 16 16; 8 | moveto (i+6) (j+3); 9 | draw_string (string_of_int n); 10 | ;; 11 | 12 | let linefromto i1 j1 i2 j2 = 13 | moveto i1 j1; 14 | lineto i2 j2; 15 | ;; 16 | 17 | let rec draw_tree t i j x = 18 | match t with 19 | |L -> () 20 | |B (n,t1,t2) -> ( 21 | match x with 22 | |0 -> () 23 | |1 -> linefromto (i+8) (j+16) (i+33) (j+41) 24 | |2 -> linefromto (i+8) (j+16) (i-17) (j+41) 25 | |_ -> failwith "Некорректно вызвана функция draw_tree" 26 | ); 27 | draw_v n i j; 28 | draw_tree t1 (i-25) (j-41) 1; 29 | draw_tree t2 (i+25) (j-41) 2; 30 | ;; 31 | 32 | let t = B (1,B (2,B (4,L,L),B (5,L,L)),B (3,L,L));; 33 | draw_tree t 400 300 0;; 34 | read_key();; -------------------------------------------------------------------------------- /8 класс/HW to 2019.05.10/p2.ml: -------------------------------------------------------------------------------- 1 | open Graphics;; 2 | open Array;; 3 | open_graph " 700x500";; 4 | 5 | let draw_v n i j = 6 | draw_rect i j 16 16; 7 | moveto (i+6) (j+3); 8 | draw_string (string_of_int n); 9 | ;; 10 | 11 | let draw_r n1 n2 i j o = 12 | draw_v n1 i j; 13 | draw_v n2 (i+o) j; 14 | ;; 15 | 16 | let init_p p = 17 | sort compare p 18 | ;; 19 | 20 | let draw_p p = 21 | let a = init_p p in 22 | begin 23 | -------------------------------------------------------------------------------- /8 класс/Контрольная 2019-04-27/p1.ml: -------------------------------------------------------------------------------- 1 | type t = Br of t*t | L;; 2 | 3 | let rec string_of_t t = 4 | match t with 5 | |L -> "L" 6 | |Br (t1,t2) -> "Br ("^(string_of_t t1)^","^(string_of_t t2)^")" 7 | ;; 8 | 9 | let t = Br(Br(L,L),L);; 10 | print_string (string_of_t t);; -------------------------------------------------------------------------------- /8 класс/Контрольная 2019-04-27/p2.ml: -------------------------------------------------------------------------------- 1 | type t = Br of t*t | L;; 2 | 3 | let str n c = 4 | let s = ref "" in 5 | begin 6 | for i = 1 to n do 7 | s:=!s^" "; 8 | done; 9 | s:=!s^(String.make 1 c)^"\n"; 10 | !s; 11 | end 12 | ;; 13 | 14 | let main t = 15 | let rec f t n = 16 | match t with 17 | |L -> str (4*n) '.' 18 | |Br (t1,t2) -> (str (3*n) '*')^(f t1 (n+1))^(f t2 (n+1)) 19 | in 20 | f t 0 21 | ;; 22 | 23 | print_string (main (Br ((Br (L,L)),L)));; -------------------------------------------------------------------------------- /8 класс/Контрольная 2019-04-27/p3.ml: -------------------------------------------------------------------------------- 1 | open List;; 2 | 3 | type t2 = B of t2 list;; 4 | 5 | let rec main t = 6 | match t with 7 | |B [] -> print_string "B[]" 8 | |B (hd::tl) -> print_string "B["; main hd; print_string ";"; 9 | for i = 0 to (length tl)-1 do main (nth tl i) done; print_string "]" 10 | ;; 11 | 12 | let t = B [ B [B[];B[]];B[];B[]];; 13 | main t;; 14 | print_newline();; -------------------------------------------------------------------------------- /8 класс/Контрольная 2019-04-27/p4.ml: -------------------------------------------------------------------------------- 1 | open List;; 2 | 3 | type t2 = B of t2 list;; 4 | 5 | let str n c = 6 | let s = ref "" in 7 | begin 8 | for i = 1 to n do 9 | s:=!s^" "; 10 | done; 11 | s:=!s^(String.make 1 c)^"\n"; 12 | !s; 13 | end 14 | ;; 15 | 16 | let main t = 17 | let rec f t n = 18 | match t with 19 | |B [] -> print_string (str (3*n) '*') 20 | |B (hd::tl) -> print_string (str (3*n) '*'); f hd (n+1); 21 | for i = 0 to (length tl)-1 do f (nth tl i) (n+1); done 22 | in 23 | f t 0 24 | ;; 25 | 26 | let t = B [ B [B[];B[]];B[];B[]];; 27 | main t;; 28 | print_newline();; -------------------------------------------------------------------------------- /9 класс/1 четверть/CW 09-10-2019/in.txt: -------------------------------------------------------------------------------- 1 | Если вы видите этот текст, то его автор уже мёртв. Вчера, 08.10.2019, его автор пошёл на скучную лекцию по астрофизике и теперь его убьёт толстый и злой бородатый дядька. До свидания. Goodbye, World! 2 | -------------------------------------------------------------------------------- /9 класс/1 четверть/CW 09-10-2019/out.txt: -------------------------------------------------------------------------------- 1 | Если вы видите этот текст, то его автор уже мёртв. Вчера, 08.10.2019, его автор пошёл на скучную лекцию по астрофизике и теперь его убьёт толстый и злой бородатый дядька. До свидания. Goodbye, World! 2 | -------------------------------------------------------------------------------- /9 класс/1 четверть/CW 09-10-2019/p1.ml: -------------------------------------------------------------------------------- 1 | let in_file_name = Sys.argv.(1);; 2 | let out_file_name = Sys.argv.(2);; 3 | 4 | let f_in = open_in in_file_name;; 5 | let f_out = open_out out_file_name;; 6 | 7 | let rec read_in f = 8 | try 9 | let x = input_line f in (x^"\n"^(read_in f)) 10 | with 11 | End_of_file -> "";; 12 | 13 | let write_out f1 f2 = output_string f2 (read_in f1);; 14 | 15 | write_out f_in f_out;; -------------------------------------------------------------------------------- /9 класс/1 четверть/CW 09-10-2019/p2.ml: -------------------------------------------------------------------------------- 1 | let in_file_name = Sys.argv.(1);; 2 | let out_file_name = Sys.argv.(2);; 3 | 4 | let f_in = open_in_bin in_file_name;; 5 | let f_out = open_out_bin out_file_name;; 6 | 7 | let rec read_in f = 8 | try 9 | let x = input_line f in (x^"\n"^(read_in f)) 10 | with 11 | End_of_file -> "";; 12 | 13 | let write_out f1 f2 = output_string f2 (read_in f1);; 14 | 15 | write_out f_in f_out;; -------------------------------------------------------------------------------- /9 класс/1 четверть/CW 11-09-2019/p1.ml: -------------------------------------------------------------------------------- 1 | (* Мат ожидание чисел от 10 до 99 *) 2 | 3 | let sumnum n = 4 | if not (n<100 && n>9) then failwith "Error: too many numbers"; 5 | (n mod 10)+((n/10) mod 10) 6 | ;; 7 | 8 | let expictation() = 9 | let sum = ref 0. in 10 | begin 11 | for i = 10 to 99 do 12 | sum:=!sum+.(1./.90.)*.(float(sumnum i)); 13 | done; 14 | !sum; 15 | end; 16 | ;; 17 | 18 | print_float (expictation());; 19 | print_newline();; 20 | -------------------------------------------------------------------------------- /9 класс/1 четверть/CW 11-09-2019/p2.ml: -------------------------------------------------------------------------------- 1 | (* Мат ожидание чисел от 100 до 999 *) 2 | 3 | let sumnum n = 4 | if not (n<1000 && n>99) then failwith "Error: too many numbers"; 5 | (n mod 10)+((n/10) mod 10)+((n/100) mod 10) 6 | ;; 7 | 8 | let expictation() = 9 | let sum = ref 0. in 10 | begin 11 | for i = 100 to 999 do 12 | sum:=!sum+.(1./.900.)*.(float(sumnum i)); 13 | done; 14 | !sum; 15 | end; 16 | ;; 17 | 18 | print_float (expictation());; 19 | print_newline();; 20 | -------------------------------------------------------------------------------- /9 класс/1 четверть/CW 23-09-2019/file.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Gadjib/ocamlhomeworks/e90f79de89f4720c4cf1c17caee4d8da8a31b7bd/9 класс/1 четверть/CW 23-09-2019/file.txt -------------------------------------------------------------------------------- /9 класс/1 четверть/CW 23-09-2019/p1.ml: -------------------------------------------------------------------------------- 1 | let f = open_in "file.txt";; 2 | 3 | let rec v_read_file() = 4 | try 5 | let x = input_line f in 1 + (v_read_file()) 6 | with 7 | End_of_file -> 0 8 | ;; 9 | 10 | let p = v_read_file();; 11 | 12 | print_int p;; 13 | 14 | close_in f;; 15 | print_newline();; -------------------------------------------------------------------------------- /9 класс/1 четверть/CW 23-09-2019/p2.ml: -------------------------------------------------------------------------------- 1 | open String;; 2 | 3 | let f = open_in "file.txt";; 4 | 5 | let rec v_read_file n = 6 | try 7 | let x = input_line f in if length n < length x then v_read_file x else v_read_file n 8 | with 9 | End_of_file -> n 10 | ;; 11 | 12 | let s = v_read_file "";; 13 | print_string s;; 14 | 15 | close_in f;; 16 | print_newline();; -------------------------------------------------------------------------------- /9 класс/1 четверть/CW 23-09-2019/p3.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Gadjib/ocamlhomeworks/e90f79de89f4720c4cf1c17caee4d8da8a31b7bd/9 класс/1 четверть/CW 23-09-2019/p3.ml -------------------------------------------------------------------------------- /9 класс/1 четверть/CW 23-09-2019/p6.ml: -------------------------------------------------------------------------------- 1 | open Unix;; 2 | 3 | let f = open_out_bin "file.txt";; 4 | 5 | (*let to_utf_8 n f = if (int_of_float ((2.**32.)-1)) lxor (int_of_float ((2.**7.)-1)) = 0 then output_byte f (n land 0xFF) else 6 | (if (int_of_float ((2.**32.)-1)) lxor (int_of_float ((2.**15.)-1)) = 0 then output_byte f ((n land (0xFF lsl 8)) lsr 8); 7 | output_byte f (n land 0xFF) else 8 | (if (int_of_float ((2.**32.)-1)) lxor (int_of_float ((2.**23.)-1)) = 0 then output_byte f ((n land (0xFF lsl 16)) lsr 16); 9 | output_byte f ((n land (0xFF lsl 8)) lsr 8); 10 | output_byte f (n land 0xFF) 11 | else (output_byte f ((n land (0xFF lsl 24)) lsr 24); 12 | output_byte f ((n land (0xFF lsl 16)) lsr 16); 13 | output_byte f ((n land (0xFF lsl 8)) lsr 8); 14 | output_byte f (n land 0xFF))));; 15 | 16 | to_utf_8 48 f;; 17 | *) 18 | 19 | let utf8 n = 20 | if n < 128 then [n] else 21 | let rec f x y = 22 | if ((1 lsl (8-x)) > y) then [(((1 lsl x) - 1) lsl (8 - x)) lor y] 23 | else (0b10000000 lor (y mod 64))::(f (x+1) (y lsr 6)) 24 | in 25 | List.rev (f 1 n) 26 | ;; 27 | 28 | let rec write_alphabet n i = 29 | if i = 0 then close_out f 30 | else (List.iter (fun x -> output_byte f x) (utf8 n); write_alphabet (n+1) (i-1)) 31 | ;; 32 | 33 | write_alphabet 1040 64;; 34 | close_out f;; 35 | -------------------------------------------------------------------------------- /9 класс/1 четверть/HW to 07-10-2019/p1.ml: -------------------------------------------------------------------------------- 1 | open String;; 2 | 3 | let main s = 4 | let k = ref 0 and d = ref 0 and m = ref "" in 5 | begin 6 | for i = 0 to (length s)-1 do 7 | match s.[i] with 8 | | '.' -> let n = int_of_string !m in 9 | if n >= 0 && n < 255 10 | then 11 | begin 12 | k := (n lor (!k lsl 8)); 13 | d := !d+1; 14 | m := "" 15 | end 16 | else failwith "IP is incorrect (1)" (*Цыферка для отладки*) 17 | | a -> m := !m^(make 1 a); 18 | done; 19 | if !d = 3 20 | then 21 | let n = int_of_string !m in 22 | if n >= 0 && n < 255 23 | then n lor (!k lsl 8) 24 | else failwith "IP is incorrect (2)"; 25 | else failwith "IP is incorrect (3)"; 26 | end 27 | ;; 28 | 29 | print_int (main (read_line()));; 30 | -------------------------------------------------------------------------------- /9 класс/1 четверть/HW to 07-10-2019/p2.ml: -------------------------------------------------------------------------------- 1 | open String;; 2 | 3 | let main n = 4 | if not (n >= 0 && n < (int_of_float (2.**32.))) then failwith "Number is incorrect"; 5 | let ans = ref "" and a = ref n in 6 | begin 7 | for i = 0 to 3 do 8 | let t = (string_of_int (!a land 0b11111111)) in 9 | if i = 3 then ans := t^(!ans) 10 | else ans := "."^t^(!ans); 11 | a := !a lsr 8; 12 | done; 13 | !ans 14 | 15 | end 16 | ;; 17 | 18 | print_string (main (read_int()));; 19 | print_newline();; 20 | -------------------------------------------------------------------------------- /9 класс/1 четверть/HW to 11-09-2019/p2.ml: -------------------------------------------------------------------------------- 1 | open String;; 2 | 3 | let if_glas c = 4 | match c with 5 | | 'a' -> 1 6 | | 'e' -> 1 7 | | 'i' -> 1 8 | | 'o' -> 1 9 | | 'u' -> 1 10 | | 'y' -> 1 11 | | _ -> 0 12 | ;; 13 | 14 | let colglas s = 15 | let sum = ref 0 in 16 | begin 17 | for i = 0 to (length s) - 1 do 18 | sum:=!sum+(if_glas s.[i]) 19 | done; 20 | float !sum; 21 | end 22 | ;; 23 | 24 | let expectation s = 25 | (colglas s)/.(float (length s)) 26 | ;; 27 | 28 | print_float (expectation (read_line()));; 29 | print_newline();; 30 | -------------------------------------------------------------------------------- /9 класс/1 четверть/HW to 11-09-2019/p3.ml: -------------------------------------------------------------------------------- 1 | open String;; 2 | 3 | let if_glas c = 4 | match c with 5 | | 'a' -> 1 6 | | 'e' -> 1 7 | | 'i' -> 1 8 | | 'o' -> 1 9 | | 'u' -> 1 10 | | 'y' -> 1 11 | | _ -> 0 12 | ;; 13 | 14 | let colglas s = 15 | let sum = ref 0 in 16 | begin 17 | for i = 0 to (length s) - 2 do 18 | sum:=!sum+((if_glas s.[i]) land (if_glas s.[i+1])) 19 | done; 20 | float !sum; 21 | end 22 | ;; 23 | 24 | let expectation s = 25 | (colglas s)./(float (length s)) 26 | ;; 27 | 28 | print_float (expectation (read_line()));; 29 | print_newline();; 30 | -------------------------------------------------------------------------------- /9 класс/1 четверть/HW to 11-09-2019/p4.ml: -------------------------------------------------------------------------------- 1 | open String;; 2 | 3 | let sum_to_list s = 4 | let rec f s l n = 5 | if s = "" then l else 6 | begin 7 | if s.[0] = ' ' then f (sub s 1 ((length s)-1)) l@[n] 0 else f (sub s 1 ((length s)-1)) l (n+1); 8 | end; 9 | in f s [] 0 10 | ;; 11 | 12 | let expectation s = 13 | let sum = ref 0. in 14 | begin 15 | for i = 0 to 16 | -------------------------------------------------------------------------------- /9 класс/1 четверть/HW to 16-09-2019/p1.ml: -------------------------------------------------------------------------------- 1 | let unst n = 2 | let i = ref 1 in 3 | begin 4 | while (10.**(float !i)) < (float n) do 5 | i:=!i+1; 6 | done; 7 | !i-1; 8 | end 9 | ;; 10 | 11 | let first_number n = 12 | (n - (n mod (int_of_float (10.**(float (unst n))))))/(int_of_float (10.**(float (unst n)))) 13 | ;; 14 | 15 | let expictation () = 16 | let sum = ref 0. in 17 | begin 18 | for i = 1 to 999 do 19 | sum:=!sum+.(1./.999.)*.(float (first_number i)); 20 | done; 21 | !sum 22 | end 23 | ;; 24 | 25 | print_float (expictation());; 26 | -------------------------------------------------------------------------------- /9 класс/1 четверть/HW to 16-09-2019/p2.ml: -------------------------------------------------------------------------------- 1 | let unst n = 2 | let i = ref 1 in 3 | begin 4 | while (10.**(float !i)) < (float n) do 5 | i:=!i+1; 6 | done; 7 | !i-1; 8 | end 9 | ;; 10 | 11 | let first_number n = 12 | (n - (n mod (int_of_float (10.**(float (unst n))))))/(int_of_float (10.**(float (unst n)))) 13 | ;; 14 | 15 | let expictation n = 16 | let sum = ref 0. in 17 | begin 18 | for i = 1 to n do 19 | sum:=!sum+.(1./.(float n))*.(float (first_number i)); 20 | done; 21 | !sum 22 | end 23 | ;; 24 | 25 | print_float (expictation (read_int()));; 26 | -------------------------------------------------------------------------------- /9 класс/1 четверть/HW to 16-09-2019/p3.ml: -------------------------------------------------------------------------------- 1 | let unst n = 2 | let i = ref 1 in 3 | begin 4 | while (10.**(float !i)) < (float n) do 5 | i:=!i+1; 6 | done; 7 | !i-1; 8 | end 9 | ;; 10 | 11 | let number n i = 12 | let m = (n mod (int_of_float (10.**(float i)))) in 13 | (m - (m mod (int_of_float (10.**(float (unst m))))))/(int_of_float (10.**(float (unst m)))) 14 | ;; 15 | 16 | let biggest_num n = 17 | let ans = ref 0 in 18 | begin 19 | for i = 1 to (unst n) do 20 | if (number n i) > !ans then ans:=(number n i) 21 | done; 22 | !ans 23 | end 24 | ;; 25 | 26 | let expictation n = 27 | let sum = ref 0. in 28 | begin 29 | for i = 1 to n do 30 | sum:=!sum+.(1./.(float n))*.(float (biggest_num i)); 31 | done; 32 | !sum 33 | end 34 | ;; 35 | 36 | print_float (expictation (read_int())); 37 | -------------------------------------------------------------------------------- /9 класс/1 четверть/HW to 16-10-2019/p6.ml: -------------------------------------------------------------------------------- 1 | type prefix = Q of prefix*prefix | A of int;; 2 | 3 | let rec matching l p = 4 | match l with 5 | | [] -> failwith "Нинада мне никаких пустых спискав я нимагу так" 6 | | hd::[] -> (match p with 7 | | Q (q1,q2) -> (if hd = 0 then (match q1 with 8 | | A (i) -> i 9 | |_ -> failwith "Вы шо нинада задавать списак по катораму нидайти до канца" ) 10 | else (match q2 with 11 | | A (i) -> i 12 | |_ -> failwith "Вы шо нинада задавать списак по катораму нидайти до канца" )) 13 | | A (i) -> failwith "Вы шо нинада задавать списак по катораму нидайти до канца") 14 | | hd::tl -> (match p with 15 | | Q (q1,q2) -> (if hd = 0 then matching tl q1 else matching tl q2) 16 | | _ -> failwith "Вы шо нинада задавать списак по катораму нидайти до канца") 17 | ;; 18 | 19 | let p = Q ((A 5),(Q (A 10),Q((A 21),(A 30))));; -------------------------------------------------------------------------------- /9 класс/1 четверть/HW to 28-09-2019/file.txt: -------------------------------------------------------------------------------- 1 | АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюяѐё -------------------------------------------------------------------------------- /9 класс/1 четверть/HW to 28-09-2019/p1.ml: -------------------------------------------------------------------------------- 1 | let f = open_in "file.txt";; 2 | 3 | let rec v_read_file() = 4 | try 5 | let x = input_line f in 1 + (v_read_file()) 6 | with 7 | End_of_file -> 0 8 | ;; 9 | 10 | let p = v_read_file();; 11 | 12 | print_int p;; 13 | 14 | close_in f;; 15 | print_newline();; -------------------------------------------------------------------------------- /9 класс/1 четверть/HW to 28-09-2019/p2.ml: -------------------------------------------------------------------------------- 1 | open String;; 2 | 3 | let f = open_in "file.txt";; 4 | 5 | let rec v_read_file n = 6 | try 7 | let x = input_line f in if length n < length x then v_read_file x else v_read_file n 8 | with 9 | End_of_file -> n 10 | ;; 11 | 12 | let s = v_read_file "";; 13 | print_string s;; 14 | 15 | close_in f;; 16 | print_newline();; -------------------------------------------------------------------------------- /9 класс/1 четверть/HW to 28-09-2019/p4.ml: -------------------------------------------------------------------------------- 1 | let f = open_in_bin "p4.txt";; 2 | 3 | let main f = 4 | let rec func f n b = 5 | try 6 | let i = input_byte f in 7 | match i with 8 | | 176 -> if b then func f (n+1) false else func f n false 9 | | 208 -> func f n true 10 | | _ -> func f n false 11 | with 12 | End_of_file -> n 13 | in func f 0 false 14 | ;; 15 | 16 | print_int (main f);; 17 | -------------------------------------------------------------------------------- /9 класс/1 четверть/HW to 28-09-2019/p4.txt: -------------------------------------------------------------------------------- 1 | Знайка шёл гулять на речку 2 | Перепрыгнул через овечку 3 | -------------------------------------------------------------------------------- /9 класс/1 четверть/HW to 28-09-2019/p6.ml: -------------------------------------------------------------------------------- 1 | open Unix;; 2 | 3 | let f = open_out_bin "file.txt";; 4 | 5 | (*let to_utf_8 n f = if (int_of_float ((2.**32.)-1)) lxor (int_of_float ((2.**7.)-1)) = 0 then output_byte f (n land 0xFF) else 6 | (if (int_of_float ((2.**32.)-1)) lxor (int_of_float ((2.**15.)-1)) = 0 then output_byte f ((n land (0xFF lsl 8)) lsr 8); 7 | output_byte f (n land 0xFF) else 8 | (if (int_of_float ((2.**32.)-1)) lxor (int_of_float ((2.**23.)-1)) = 0 then output_byte f ((n land (0xFF lsl 16)) lsr 16); 9 | output_byte f ((n land (0xFF lsl 8)) lsr 8); 10 | output_byte f (n land 0xFF) 11 | else (output_byte f ((n land (0xFF lsl 24)) lsr 24); 12 | output_byte f ((n land (0xFF lsl 16)) lsr 16); 13 | output_byte f ((n land (0xFF lsl 8)) lsr 8); 14 | output_byte f (n land 0xFF))));; 15 | 16 | to_utf_8 48 f;; 17 | *) 18 | 19 | let utf8 n = 20 | if n < 128 then [n] else 21 | let rec f x y = 22 | if ((1 lsl (8-x)) > y) then [(((1 lsl x) - 1) lsl (8 - x)) lor y] 23 | else (0b10000000 lor (y mod 64))::(f (x+1) (y lsr 6)) 24 | in 25 | List.rev (f 1 n) 26 | ;; 27 | 28 | let rec write_alphabet n i = 29 | if i = 0 then close_out f 30 | else (List.iter (fun x -> output_byte f x) (utf8 n); write_alphabet (n+1) (i-1)) 31 | ;; 32 | 33 | write_alphabet 1040 64;; 34 | close_out f;; 35 | -------------------------------------------------------------------------------- /9 класс/2 четверть/CW 2019-11-06/p1.ml: -------------------------------------------------------------------------------- 1 | type prefix = N of prefix*prefix | L of char;; 2 | 3 | let rec add_to_list c l = 4 | match l with 5 | | [] -> [(c,1)] 6 | | hd::tl -> if fst hd = c then [c,((snd hd)+1)]@tl else hd::(add_to_list c tl) 7 | ;; 8 | 9 | let create_list p = 10 | let rec f p l = 11 | match p with 12 | | L c -> add_to_list c l 13 | | N (p1,p2) -> f p1 (f p2 l) 14 | in 15 | f p [] 16 | ;; 17 | 18 | let print_dec (x,y) = 19 | print_string ("("^(String.make 1 x)^","^(string_of_int y)^")") 20 | ;; 21 | 22 | let p = N ((N ((L 'a'),(L 'b'))),N ((N ((L 'a'),(L 'b'))),(L 'a')));; 23 | List.iter print_dec (create_list p);; 24 | print_newline();; 25 | -------------------------------------------------------------------------------- /9 класс/2 четверть/CW 2019-11-20/p1.ml: -------------------------------------------------------------------------------- 1 | open String;; 2 | 3 | let rec to_dec n = 4 | match (n<0,n<=1) with 5 | | (true,false) -> failwith "Input data is incorrect: n < 0" 6 | | (false,true) -> string_of_int n 7 | | (false,false) -> (to_dec (n/2)) ^ (string_of_int (n mod 2)) 8 | | _ -> "" 9 | ;; 10 | 11 | let string_to_list s = 12 | let rec f s l = 13 | if s = "" then l else f (sub s 1 ((length s)-1)) (l@[int_of_string (sub s 0 1)]) 14 | in 15 | f s [] 16 | ;; 17 | 18 | let create_zero_list n = 19 | if n = 0 then [] else 20 | begin 21 | let l = ref [] in 22 | begin 23 | for i = 1 to n do 24 | l:=!l@[0] 25 | done 26 | end; 27 | !l 28 | end 29 | ;; 30 | 31 | let rec serialize l d v = 32 | (*match (vd) with 33 | | (true,false) -> failwith "Input data is incorrect: v (create_zero_list (v-d))@l@(string_to_list (to_dec v))*) 35 | | _ ->*) (create_zero_list (v-d))@l@(string_to_list (to_dec v)) 36 | ;; 37 | 38 | List.iter (Printf.printf "%d;") (serialize [1;0;1;1;1] 3 0);; 39 | print_newline();; 40 | -------------------------------------------------------------------------------- /9 класс/2 четверть/CW 2019-12-11/p1.ml: -------------------------------------------------------------------------------- 1 | (* Паталогическая сортировка *) 2 | type color = White of int*int | Grey of int*int | Black of int*int;; 3 | 4 | let l = [White (1,4);White (3,2);White (4,2);White (4,3)];; 5 | 6 | let top_sort l = 7 | -------------------------------------------------------------------------------- /9 класс/2 четверть/HW 2019-11-11/p1.ml: -------------------------------------------------------------------------------- 1 | type 'a prefix = P of ('a prefix) * ('a prefix) | L of 'a;; 2 | 3 | let sort_list l = List.sort (fun (_,a) (_,b) -> compare a b) l;; 4 | 5 | let rec huff l = 6 | let f l = 7 | match l with 8 | | [] -> failwith "Error: list is empty" 9 | | hd::[] -> l 10 | | (p1,h1)::(p2,h2)::tl -> huff ((P (p1,p2),h1+h2)::tl) 11 | in 12 | f (sort_list l) 13 | ;; 14 | 15 | let rec prefix_to_string p = 16 | match p with 17 | | L (c) -> String.make 1 c 18 | | P (p1,p2) -> "!-("^(prefix_to_string p1)^","^(prefix_to_string p2)^")" 19 | ;; 20 | 21 | List.iter (fun (h1,h2) -> print_string ("("^(prefix_to_string h1)^","^(string_of_int h2)^")")) (huff [(L 'a',12);(L 'b',4);(L 'c',30)]);; 22 | print_newline();; 23 | -------------------------------------------------------------------------------- /9 класс/2 четверть/HW 2019-12-11/p1.ml: -------------------------------------------------------------------------------- 1 | (* По м.с. напечатать кол-во рёбер *) 2 | 3 | open Array;; 4 | 5 | let m = [| [| 0; 1; 1; 0; 0; 0 |]; 6 | [| 0; 0; 0; 1; 0; 1 |]; 7 | [| 0; 0; 0; 0; 0; 1 |]; 8 | [| 0; 0; 0; 0; 1; 0 |]; 9 | [| 0; 0; 0; 0; 0; 0 |]; 10 | [| 0; 0; 0; 0; 1; 0 |]; 11 | |] 12 | ;; 13 | 14 | let count_edges m = 15 | let ans = ref 0 in 16 | begin 17 | for i = 0 to (length m)-1 do 18 | for j = 0 to (length m)-1 do 19 | ans:=!ans+((m.(i)).(j)); 20 | done 21 | done; 22 | !ans; 23 | end 24 | ;; 25 | 26 | print_int (count_edges m);; 27 | print_newline();; 28 | -------------------------------------------------------------------------------- /9 класс/2 четверть/HW 2019-12-11/p2.ml: -------------------------------------------------------------------------------- 1 | (* По м.с. найти вершины без входных рёбер *) 2 | 3 | open Array;; 4 | 5 | let m = [| [| 0; 1; 1; 0; 0; 0 |]; 6 | [| 0; 0; 0; 1; 0; 1 |]; 7 | [| 0; 0; 0; 0; 0; 1 |]; 8 | [| 0; 0; 0; 0; 1; 0 |]; 9 | [| 0; 0; 0; 0; 0; 0 |]; 10 | [| 0; 0; 0; 0; 1; 0 |]; 11 | |] 12 | ;; 13 | 14 | let make_list n = 15 | let rec f n l = 16 | if n = 0 then [0]@l else [n]@(f (n-1) l); 17 | in 18 | f n [] 19 | ;; 20 | 21 | let rec rm_el n l = 22 | match l with 23 | | [] -> [] 24 | | hd::tl -> if hd = n then tl else hd::(rm_el n tl) 25 | ;; 26 | 27 | let find_sad_edge m = 28 | let l = ref (make_list ((length m)-1)) in 29 | begin 30 | for i = 0 to (length m)-1 do 31 | for j = 0 to (length m)-1 do 32 | if (m.(i)).(j) = 1 then l:=(rm_el j !l) 33 | done 34 | done; 35 | !l; 36 | end 37 | ;; 38 | 39 | List.iter (Printf.printf "%d;") (find_sad_edge m);; 40 | print_newline();; 41 | -------------------------------------------------------------------------------- /9 класс/2 четверть/HW 2019-12-11/p3.ml: -------------------------------------------------------------------------------- 1 | (* Про каждую вершину сказать количество входных и исходных рёбер *) 2 | 3 | open Array;; 4 | 5 | let m = [| [| 0; 1; 1; 0; 0; 0 |]; 6 | [| 0; 0; 0; 1; 0; 1 |]; 7 | [| 0; 0; 0; 0; 0; 1 |]; 8 | [| 0; 0; 0; 0; 1; 0 |]; 9 | [| 0; 0; 0; 0; 0; 0 |]; 10 | [| 0; 0; 0; 0; 1; 0 |]; 11 | |] 12 | ;; 13 | 14 | let fst3 (a,b,c) = a and snd3 (a,b,c) = b and thd3 (a,b,c) = c;; 15 | 16 | let create_list n = 17 | let rec f n l = 18 | if n = 0 then l@[(0,0,0)] else (f (n-1) l)@[(n,0,0)]; 19 | in 20 | f n [] 21 | ;; 22 | 23 | let rec increase_in_list n d l = 24 | match l with 25 | | [] -> failwith "Error: this number doesn't exist" 26 | | hd::tl -> if fst3 hd = n then match d with 27 | | 1 -> (n,((snd3 hd)+1),(thd3 hd))::tl 28 | | 2 -> (n,(thd3 hd),((snd3 hd)+1))::tl 29 | | _ -> failwith "Error" 30 | else hd::(increase_in_list n d tl) 31 | ;; 32 | 33 | let print_dec3 (a,b,c) = 34 | print_string ("("^(string_of_int a)^","^(string_of_int b)^","^(string_of_int c)^")\n") 35 | ;; 36 | 37 | let count_all m = 38 | let l = ref (create_list ((length m)-1)) in 39 | begin 40 | for i = 0 to (length m)-1 do 41 | for j = 0 to (length m)-1 do 42 | if (m.(i)).(j) = 1 then (l := increase_in_list i 1 !l; l := increase_in_list j 2 !l) 43 | done; 44 | done; 45 | !l 46 | end 47 | ;; 48 | 49 | let rec print_counted_list l = 50 | match l with 51 | | [] -> () 52 | | hd::tl -> print_string ("Ребро "^(string_of_int (fst3 hd))^": Входящих - "^(string_of_int(snd3 hd))^", исходящих - "^(string_of_int (thd3 hd))^"\n"); print_counted_list tl; 53 | ;; 54 | 55 | print_counted_list (count_all m);; 56 | -------------------------------------------------------------------------------- /9 класс/2 четверть/HW 2019-12-11/p4.ml: -------------------------------------------------------------------------------- 1 | (* По списку и с/с напечатать int *) 2 | 3 | let main n l = 4 | let rec f d n x l = 5 | match l with 6 | | [] -> x 7 | | hd::tl -> f (d-1) n (x+(hd*(int_of_float ((float n)**(float d))))) tl 8 | in 9 | f ((List.length l)-1) n 0 l 10 | ;; 11 | 12 | let l = [1;0;1];; 13 | print_int (main 2 l);; 14 | print_newline();; 15 | -------------------------------------------------------------------------------- /9 класс/3 четверть/CW 02.03.2020/p1.5.ml: -------------------------------------------------------------------------------- 1 | type lambda = Var of string | Ayy of lambda*lambda | Abs of string*lambda;; 2 | 3 | let rec print_lambda lam = 4 | match lam with 5 | | Var s -> print_string s 6 | | Ayy (l1,l2) -> print_string "("; print_lambda l1; print_string " "; print_lambda l2; print_string ")" 7 | | Abs (s,l) -> print_string ("(₴" ^ s ^ "."); print_lambda l; print_string ")" 8 | ;; 9 | 10 | let l = Ayy ((Abs ("xyz", Var "xyz")), Var "xyz");; 11 | print_lambda l;; 12 | print_newline();; 13 | -------------------------------------------------------------------------------- /9 класс/3 четверть/CW 02.03.2020/p1.ml: -------------------------------------------------------------------------------- 1 | (* Разобратб эту хрень *) 2 | 3 | type lambda = Var of string | Ayy of lambda*lambda | Abs of string*lambda;; 4 | 5 | let parse s = 6 | let rec f s l = 7 | match s.[0] with 8 | | " 9 | -------------------------------------------------------------------------------- /9 класс/3 четверть/CW 19.02.2020/p1.ml: -------------------------------------------------------------------------------- 1 | (* Разменять сумму *) 2 | 3 | let a = [1;2;5;10];; 4 | 5 | let rec return_max n l = 6 | match l with 7 | | [] -> failwith "I'm sorry, but your number is less than every numbers in your list" 8 | | hd::[] -> if n > hd then hd else return_max n [] 9 | | hd1::hd2::tl -> if n > hd1 then hd1 else (if hd1 > n && hd2 < n then hd2 else return_max n (hd2::tl)) 10 | ;; 11 | 12 | for i = 11 downto 2 do 13 | print_int (return_max i (List.rev a)); 14 | print_newline(); 15 | done;; 16 | 17 | (*let main n b = 18 | let ar = List.rev (List.sort b) in 19 | let rec f n a = *) 20 | 21 | 22 | -------------------------------------------------------------------------------- /9 класс/3 четверть/CW 22.01.2020/p1.ml: -------------------------------------------------------------------------------- 1 | (* Число разбиений *) 2 | 3 | let rec count_partitions n = 4 | let ans = ref 0 in 5 | begin 6 | for i = 1 to n - 1 do 7 | ans:=!ans+(count_partitions i) 8 | done; 9 | !ans+1 10 | end 11 | ;; 12 | 13 | print_int (count_partitions (read_int()));; 14 | print_newline();; 15 | -------------------------------------------------------------------------------- /9 класс/3 четверть/CW 22.01.2020/p2.ml: -------------------------------------------------------------------------------- 1 | open Array;; 2 | 3 | let print_array a = 4 | print_string "[["; 5 | for i = 0 to (length a)-1 do 6 | if a.(i) = 0 && not (i=(length a)-1) then print_string "][" else 7 | begin 8 | print_int a.(i); 9 | print_string ";" 10 | end 11 | done; 12 | print_string "]]" 13 | ;; 14 | 15 | 16 | let rec main n = 17 | match n with 18 | | 0 -> [||] 19 | | 1 -> [|1|] 20 | | a -> let ans = ref [||] in 21 | begin 22 | for i = 1 to n do 23 | if i<>n then 24 | ans:= Array.append (Array.append !ans (Array.append [|i|] (main (n-i)))) [|0|] 25 | else 26 | (ans:= Array.append !ans (Array.append [|i|] (main (n-i)))); 27 | print_string "Now array is:"; 28 | print_array !ans; 29 | print_newline(); 30 | done; 31 | !ans; 32 | end 33 | ;; 34 | 35 | print_array (main (read_int()));; 36 | print_newline();; 37 | -------------------------------------------------------------------------------- /9 класс/3 четверть/CW 22.01.2020/p2v2.ml: -------------------------------------------------------------------------------- 1 | let rec count n p l k = 2 | if n = k then 3 | begin 4 | List.iter (fun x -> print_int x; print_string " ") (n::l); 5 | print_string "\n" 6 | end 7 | else 8 | begin 9 | if p = 0 then 10 | () 11 | else 12 | begin 13 | count p (p-1) ((n-p)::l) k; 14 | count n (p-1) l k 15 | end 16 | end 17 | ;; 18 | 19 | let main n = 20 | let rec f n p l k = 21 | if k = n then 22 | print_int k 23 | else 24 | begin 25 | count n p l k; 26 | f n p l (k+1); 27 | end 28 | in 29 | f n (n-1) [] 0 30 | ;; 31 | 32 | main (read_int());; 33 | print_newline();; 34 | -------------------------------------------------------------------------------- /9 класс/3 четверть/CW 22.01.2020/p4.ml: -------------------------------------------------------------------------------- 1 | let print_int_list l = 2 | print_string "["; 3 | for i = 0 to (List.length l)-2 do 4 | print_int (List.nth l i); 5 | print_string "; "; 6 | done; 7 | print_int (List.nth l ((List.length l)-1)); 8 | print_string "]\n" 9 | ;; 10 | 11 | let rec step n m h = 12 | if n > 0 then 13 | for i = 1 to m do 14 | step (n-i) i (i::h) 15 | done 16 | else 17 | begin 18 | if n = 0 then 19 | print_int_list h; 20 | end 21 | ;; 22 | 23 | let x = read_int();; 24 | 25 | step x x [];; 26 | 27 | print_newline();; 28 | -------------------------------------------------------------------------------- /9 класс/3 четверть/CW 26.02.2020/p1.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Gadjib/ocamlhomeworks/e90f79de89f4720c4cf1c17caee4d8da8a31b7bd/9 класс/3 четверть/CW 26.02.2020/p1.ml -------------------------------------------------------------------------------- /9 класс/3 четверть/HW to 04.03.2020/p1.ml: -------------------------------------------------------------------------------- 1 | type lyambda = Var of string | App of lyambda*lyambda | Abs of string*lyambda;; 2 | 3 | let parse s = 4 | let ss = s^" " in 5 | let rec parse_var n v = 6 | match ss.[n] with 7 | | '.' | ')' | ' ' -> (Var v,n) 8 | | x -> parse_var (n+1) (v^(String.make 1 x)) 9 | and parsee n = 10 | match ss.[n] with 11 | | '(' -> if n+1 < String.length ss && ss.[n+1] = '\\' then 12 | let (Var v,k) = parse_var (n+2) "" in 13 | if ss.[k] = '.' then 14 | let (v2,k2) = parsee (k+1) in 15 | if ss.[k2] = ')' then 16 | (Abs (v,v2),k2+1) 17 | else 18 | failwith "Error 1" 19 | else 20 | failwith "Error 2" 21 | else 22 | let (v,k) = parsee (n+1) in 23 | if ss.[k] = ' ' then 24 | let (v2,k2) = parsee (k+1) in 25 | if ss.[k2] = ')' then 26 | (App (v,v2), k2+1) 27 | else 28 | failwith "Error 3" 29 | else 30 | failwith "Error 4" 31 | | _ -> let (v,k) = parse_var n "" in (v,k) in 32 | parsee 0 33 | ;; 34 | 35 | let rec lyambda_to_string l = 36 | match l with 37 | | Var s -> s 38 | | App (l1,l2) ->"("^(lyambda_to_string l1)^" "^(lyambda_to_string l2)^")" 39 | | Abs (s,ll) ->"\\"^s^".("^(lyambda_to_string ll)^")" 40 | ;; 41 | 42 | let l = fst (parse "((\\x.(\\y.z)) ab)");; 43 | print_string (lyambda_to_string l);; 44 | print_newline();; 45 | -------------------------------------------------------------------------------- /9 класс/3 четверть/HW to 12.02.2020/p1.ml: -------------------------------------------------------------------------------- 1 | let rec main n l = 2 | match ((n<0),(n=0)) with 3 | | (true,false) -> 0 4 | | (false,true) -> 1 5 | | _ -> 6 | match l with 7 | | [] -> 0 8 | | hd::tl -> (main (n-hd) l) + (main n tl) 9 | ;; 10 | 11 | let m = 228 and c = [2;5] in 12 | print_int (main m c);; 13 | -------------------------------------------------------------------------------- /9 класс/3 четверть/HW to 15.01.2020/p1.ml: -------------------------------------------------------------------------------- 1 | open List;; 2 | open Unix;; 3 | exception Found of int list;; 4 | 5 | let check n = 6 | let rec check_1 d m u l = 7 | match l with 8 | | [] -> true 9 | | hd::tl -> if hd = d-1 || hd = m || hd = u+1 then false else check_1 (d-1) m (u+1) tl 10 | in 11 | let rec func c p = 12 | if c >= n then raise (Found p) 13 | else 14 | for i = 0 to (n-1) do 15 | if check_1 i i i p then func (c+1) ([i]@p) 16 | done 17 | in 18 | try 19 | func 0 []; None 20 | with 21 | Found l -> Some l 22 | ;; 23 | 24 | let create_matrixxx n = 25 | Array.make_matrix n n ". " 26 | ;; 27 | 28 | let replace_in_matrix t l = 29 | let lt = Array.length t in 30 | for i = 0 to lt-1 do 31 | t.(i).(nth l i) <- "F " 32 | done 33 | ;; 34 | 35 | let string_of_int_array_array a = 36 | let ans = ref "" in 37 | begin 38 | for i = 0 to (Array.length a)-1 do 39 | for j = 0 to (Array.length a)-1 do 40 | ans:=!ans^(a.(i).(j)); 41 | done; 42 | ans:=!ans^"\n"; 43 | done; 44 | !ans 45 | end 46 | ;; 47 | 48 | let the_nearest_function_to_main_but_not_main l = 49 | let a = create_matrixxx (List.length l) in 50 | begin 51 | replace_in_matrix a l; 52 | string_of_int_array_array a; 53 | end 54 | ;; 55 | 56 | let main x = 57 | match check x with 58 | | None -> print_string "No.\n" 59 | | Some l -> print_string ("Yes. For example, this:\n"^(the_nearest_function_to_main_but_not_main l)) 60 | ;; 61 | 62 | let x = read_int();; 63 | 64 | let t = (gettimeofday());; 65 | main (x);; 66 | print_float (gettimeofday()-.t);; 67 | print_newline();; 68 | -------------------------------------------------------------------------------- /9 класс/3 четверть/HW to 19.02.2020/p1.ml: -------------------------------------------------------------------------------- 1 | open Array;; 2 | 3 | let count n = 4 | let ans = init (length n+1) (fun _ -> make (length n.(0)+1) 0) in 5 | let rec f1 x y = 6 | if x >= (length n.(0)) then 7 | 0 8 | else 9 | if n.(y-1).(x) then 10 | (1 + ans.(y-1).(x+1)) 11 | else 12 | f1 (x+1) y 13 | in 14 | let rec f2 x y = 15 | if y > (length n) then 16 | () 17 | else 18 | if x < 0 then 19 | f2 (length n.(0)-2) (y+1) 20 | else 21 | if x < (length n.(0)-2) then 22 | if n.(y-1).(x) || n.(y-1).(x+1) then 23 | (ans.(y).(x) <- 1+(ans.(y-1).(x+2)); 24 | f2 (x-1) y) 25 | else 26 | begin 27 | let a1 = ans.(y-1).(x+2) 28 | and a2 = f1 (x+2) y in 29 | ans.(y).(x) <- max a1 a2; 30 | f2 (x-1) y 31 | end 32 | else 33 | if n.(y-1).(x) || (x <> (length n.(0) - 1) && n.(y-1).(x+1)) then 34 | (ans.(y).(x) <- 1; 35 | f2 (x-1) y) 36 | else 37 | (ans.(y).(x) <- 0; 38 | f2 (x-1) y) 39 | in 40 | f2 (length n.(0) - 1) 1; 41 | ans.(length n).(0) 42 | ;; 43 | 44 | let m = [| [|false;false;false;false;true;false|]; 45 | [|false;false;false;true;false;false|]; 46 | [|false;false;false;false;true;false|]; |] 47 | ;; 48 | 49 | print_int (count m);; 50 | print_newline();; 51 | -------------------------------------------------------------------------------- /9 класс/3 четверть/HW to 27.01.2020/p1.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Gadjib/ocamlhomeworks/e90f79de89f4720c4cf1c17caee4d8da8a31b7bd/9 класс/3 четверть/HW to 27.01.2020/p1.ml -------------------------------------------------------------------------------- /9 класс/4 четверть/HW to 01.04.2020.txt: -------------------------------------------------------------------------------- 1 | I. 2 | \x.x 3 | \y.y 4 | \t.t 5 | \x.z 6 | infinity 7 | infinity 8 | 9 | II. 10 | True 11 | \x.x 12 | \f.\x.x 13 | \x.\y.x 14 | 15 | III. 16 | \f.f 17 | \f.f 18 | \f.f 19 | 20 | IV. 21 | \f.\x.f (f x) 22 | \f.\x.f (f (f x)) 23 | 6 (мне лень расписывать) 24 | -------------------------------------------------------------------------------- /9 класс/4 четверть/HW to 18.05.2020/p1.py: -------------------------------------------------------------------------------- 1 | def catalan(n): 2 | if n >= 2: 3 | ans = ((2*((n*2)-1))/(n+1))*catalan(n-1) 4 | return int(ans) 5 | else: 6 | return 1 7 | 8 | for i in range(15): 9 | print(catalan(i)) -------------------------------------------------------------------------------- /9 класс/4 четверть/HW to 18.05.2020/p2.py: -------------------------------------------------------------------------------- 1 | def str(n,x): 2 | s='-'*x 3 | i=int((x/2)-(n/2)) 4 | j=int((x/2)+(n/2)) 5 | s = s[:i] + '*' + s[i+1:] 6 | s = s[:j] + '*' + s[j+1:] 7 | return(s) 8 | 9 | def main(n): 10 | for i in range(1,int(n/2),2): 11 | print(str(i,n)) 12 | for i in range(int((n/2)-1),1,-2): 13 | print(str(i,n)) 14 | 15 | main(25) 16 | -------------------------------------------------------------------------------- /9 класс/4 четверть/HW to 18.05.2020/p3.py: -------------------------------------------------------------------------------- 1 | from prettytable import PrettyTable 2 | 3 | n=10 4 | m=12 5 | t = PrettyTable() 6 | 7 | t.field_names=list(range(n+1)) 8 | 9 | def CreateList(n,m): 10 | s=[n] 11 | for i in range(2,m): 12 | s=s+[i*n] 13 | return(s) 14 | 15 | for i in range(m+1): 16 | t.add_row(CreateList(i,m)) 17 | 18 | print(t) 19 | -------------------------------------------------------------------------------- /9 класс/4 четверть/HW to 18.05.2020/p4.py: -------------------------------------------------------------------------------- 1 | st = 'System Of A Down' 2 | subs = "Of" 3 | 4 | 5 | def main(s, su): 6 | for i in range(len(s) - len(su) + 1): 7 | if s[i:(i + len(su))] == su: 8 | return i 9 | else: 10 | return "There's no substring" 11 | 12 | 13 | print(main(st, subs)) 14 | -------------------------------------------------------------------------------- /9 класс/4 четверть/HW to 20.05.2020/p1.py: -------------------------------------------------------------------------------- 1 | import re 2 | 3 | with open("p1.txt") as f: 4 | content = f.readlines() 5 | for x in content: 6 | g = re.match(r'^([0-9]+.[0-9]+.[0-9]+.)(.+)$', x) 7 | if g: 8 | print(x) -------------------------------------------------------------------------------- /9 класс/4 четверть/HW to 20.05.2020/p1.txt: -------------------------------------------------------------------------------- 1 | Строка 1 2 | 127.0.0.1 Строка 2 3 | 192.168.0.1 Строка 3 4 | Строка 4 5 | 6 | -------------------------------------------------------------------------------- /9 класс/4 четверть/HW to 20.05.2020/p2.py: -------------------------------------------------------------------------------- 1 | import re 2 | 3 | with open("p2.txt") as f: 4 | content = f.readlines() 5 | 6 | EMAIL_REGEX = r"""(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9]))\.){3}(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9])|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])""" 7 | D = {} 8 | for x in content: 9 | tokens = x.strip().split(' ') 10 | if re.match(EMAIL_REGEX, tokens[0]): 11 | email = tokens[0] 12 | name = tokens[1] 13 | surname = tokens[2] 14 | else: 15 | name = tokens[0] 16 | surname = tokens[1] 17 | email = None 18 | if surname not in D or not D[surname]: 19 | D[surname] = name 20 | 21 | print(D) -------------------------------------------------------------------------------- /9 класс/4 четверть/HW to 20.05.2020/p2.txt: -------------------------------------------------------------------------------- 1 | ilya@timeforscience.ru Илья Чистяков 2 | aapotyomkin@gmail.com Андрей Потёмкин 3 | Илья Смоленский 4 | Кирилл Рогушкин -------------------------------------------------------------------------------- /9 класс/4 четверть/HW to 20.05.2020/p4.py: -------------------------------------------------------------------------------- 1 | # Не очень понял, как вернуть тройку, поэтому напечатаю их 2 | 3 | with open("p4.txt") as f: 4 | content = f.readlines() 5 | L = [] 6 | for x in content: 7 | tokens = x.strip().split(' ') 8 | if len(tokens) == 1: 9 | print('-', tokens[0], '-') 10 | elif len(tokens) == 2: 11 | print(tokens[0], tokens[1], '-') 12 | elif len(tokens) == 3: 13 | print(tokens[0], tokens[1], tokens[2]) 14 | else: 15 | raise ("Input data is incorrect") 16 | -------------------------------------------------------------------------------- /9 класс/4 четверть/HW to 20.05.2020/p4.txt: -------------------------------------------------------------------------------- 1 | Илья 2 | Цыганенко Паша 3 | Травин Александр Юрьевич 4 | Ващенков Алексей 5 | Лёня --------------------------------------------------------------------------------