From 6a410ccc1c53d71aeddf6d9b73a11a978bd12f14 Mon Sep 17 00:00:00 2001 From: Krystian Madra Date: Wed, 27 Jun 2018 10:00:39 +0200 Subject: [PATCH] Cleaning new branch --- 01-Pierścień-Zn.md | 21 --- 02-Wielomiany.md | 19 --- App.java | 196 ------------------------- MainApp.class | Bin 4170 -> 0 bytes MainApp.java | 331 ------------------------------------------- 5 files changed, 567 deletions(-) delete mode 100644 01-Pierścień-Zn.md delete mode 100644 02-Wielomiany.md delete mode 100644 App.java delete mode 100644 MainApp.class delete mode 100644 MainApp.java diff --git a/01-Pierścień-Zn.md b/01-Pierścień-Zn.md deleted file mode 100644 index 93c5417..0000000 --- a/01-Pierścień-Zn.md +++ /dev/null @@ -1,21 +0,0 @@ -## Zadanie - -Napisać algorytm, który dla danego `n ∈ ℕ` znajdzie wszystkie: - - 1. elementy odwracalne - 2. dzielniki zera - 3. elementy nilpotentne - 4. elementy idempotentne - -w pierścieniu `{ℤ/nℤ, +, ⋅}`. - -Termin: 31.05 - -### Przykłady: - -> Input: `4` -> Output: `[[1,3], [0,2], [0,2], [0,1]]` - -> Input: `6` -> Output: `[[1,5], [0,2,3,4], [0], [0,1,3,4]]` - diff --git a/02-Wielomiany.md b/02-Wielomiany.md deleted file mode 100644 index 4e9830d..0000000 --- a/02-Wielomiany.md +++ /dev/null @@ -1,19 +0,0 @@ -## Zadanie - -Napisać program, który dla danego pierścienia współczynników `R = ℤ/nℤ, n ∈ ℕ` oraz wielomianów `f,g ∈ R[x] ` zmiennej `x ` znajdzie: - -1. iloczyn `f⋅g ∈ R[x]` -2. klasę reszty `f ∈ R[x]/(g)` -3. największy wspólny dzielnik `nwd(f,g)` korzystając z algorytmu Euklidesa. - -**Uwaga**: wielomiany są podawane jako ciąg współczynników **od wyrazu wolnego, do współczynnika wiodącego**. - -Termin: 07.06 - -### Przykłady: - -> Input: `2, [1,1,1,0,1], [0,1,1]` (i.e. `f = 1 + x + x² + x⁴, g = x² + x`) -> Output: `[[0,1,0,0,1,1,1], [1,1], [1,1]]` - -> Input: `6, [2,1,0,2,1,3], [1,0,0,5]` -> Output: `[[3,1,0,5,0,1,4,5,5], [5,2,1], DivisionError]` diff --git a/App.java b/App.java deleted file mode 100644 index 33e4924..0000000 --- a/App.java +++ /dev/null @@ -1,196 +0,0 @@ -//package com.madrakrystian.algebra; - -import java.util.InputMismatchException; -import java.util.Scanner; -import java.util.Stack; - -public class App { - -// napisać algorytm, który dla danego n ∈ ℕ znajdzie wszystkie: -// -// elementy odwracalne -// dzielniki zera -// elementy nilpotentne -// elementy idempotentne -// w pierścieniu {ℤ/nℤ, +, ⋅}. - -// Przykłady: -// -// Input: 4 -// Output: [[1,3], [0,2], [0,2], [0,1]] -// -// Input: 6 -// Output: [[1,5], [0,2,3,4], [0], [0,1,3,4]] - - - // czytanie inputu z System.in - static Scanner reader = new Scanner(System.in); - - public static void main(String[] args) { - - // ograniczenie 1000 (!) - int number = 1; - - do{ - System.out.println("Enter a number (must be 0 1000 || number < 0); - - // nasza liczba - System.out.println("Input: " + number); - - /* for debug - System.out.println("1. Reversible numbers: " + reversible(number)); - - System.out.println("2. Zero divisors: " + zeroDivisors(number)); - - System.out.println("3. Nilpotent numbers: " + nilpotent(number)); - - System.out.println("4. Idempotent numbers: " + idempotent(number)); - */ - - // na potrzeby tworzenia programu potrzebna byla jakas dynamiczna struktura danych, po zrobieniu mozna zamienic w tablice - Stack> output = new Stack>(); - - // dodanie stosow do nadstosu (dla duzych liczb output staje sie nieczytelny - polecam odkomentowac "for debug") - output.push(reversible(number)); - output.push(zeroDivisors(number)); - output.push(nilpotent(number)); - output.push(idempotent(number)); - - // output taki jak w specyfikacji - System.out.println("Output: " + output); - - // zamkniecie reader'a - reader.close(); - } - - // algorytm nwd (pomocnicza funkcja) - public static int nwd(int a, int b) { - - while(a != b) { - if (a < b) { - b -= a; - } - else a -=b; - } - return a; - } - - // 1. elementy odwracalne - public static Stack reversible(int number) { - - Stack reversibleNumbers = new Stack(); - - int temp; - - for (int i = 1; i zeroDivisors(int number) { - - Stack zeroDivisors = new Stack(); - - // 0 (element neutralny dodawania) zawsze jest swoim dzielnikiem - zeroDivisors.push(0); - - int temp; - - for(int i = 1; i nilpotent(int number) { - - Stack nilpotentNumbers = new Stack(); - - // 0 (element neutralny dodawania) zawsze spelnia warunek nilpotentnosci - nilpotentNumbers.push(0); - - int temp, tempPow; - - for(int i = 2; i idempotent(int number) { - - Stack idempotentNumbers = new Stack(); - - // 0 (element neutralny dodawania) zawsze spelnia warunek idempotentnosci - idempotentNumbers.push(0); - - int temp; - - for(int i = 1; i$5#)kC#{`gRuBaX3nDkIR)GGMAn$1@}CeZ_n#Gtwy+di#p;#Nj>hoFT8^9)hXh zUIWVSFb;vL;Z!=kH=7>MWXDqRG*z~=4s;7tjAfJiM|G|fP+A7MyN%I6Zb7oJr<5+H za_LkeUQA`_gqux3)-^Bw2SjB@luHt+6zJed9_#u9z z;vxK4#ZT~46({g8!!R@%8`hmE>LYqy#UnVb;87Ki;c_aSg6jaW!_*_Qq)Fa5`Ry zhw^%1qBt&R_n?QUZHk5npZxAckBUvWT*XO=QQdst-Mu@HCG?!!GZjCRQ)~BTlkr0# zGGSs!4;>xP$0xE!Lwr(tT9PW0(xt+m^Q}%E+tslx*!sBJhQYe=V#$43ZtPU?W!ZG&+IdhHCzFcj@q*l&7s+F5?}<(s z+uor=dV;j7yGRNx5i~b}@XGY?w_H5o>a1~6$K-~QhHjbdGI<5+TUtNAl6+6=nUUhC zk?>USN{q(y+v$~~rMtCj9({u>U7TUc$RzQN=tY(TJ)cS(h^I@`?r7jQ zmcn@`m%2g3a?+_Z%a}8f&K3xz&loZ4=Y9gt5hbG^D-uDuJ=xs2gx4mkZ#lB=Os-Up zY-O1XiziwSU=7cOjXdJ$u}m?(seETGV*5pYHM1A&o!T_S%ZA{UY+c5n8x{BxVy38l zl;>d;HJ!C@wr@EDTmLldF~|Ii%h91|_KmTMGjQ~ufwMnQF%8!=lvt&!Lk(0;!QCHo zpA)%&dkPhgp(^0EPr);T$_^#q_N#pF@c2E|H$M)IUEAZR4>TM-Y_Y|q$(Cf zPtN^mQnfF9E?enZveLGEWz$(tPw=cK=8Vibk{w>Z_hGDz_`Lzg6smp;-xR8QC%tng z=iUoA7X$(UCna3VB>sLHHD^#uEb40Or{Iswpn=^KR!m{#qPYME1I}fWwT%>t$l)fx zGJ{~u%M}5yAte{rHk6?NqFSCDXcvW`Ta8Ya+7#o zyu@3D4RWX7AT5Au-f-&SMFXDzpEX!Ti4C}vv#r>QFiUzHuIIhtCbT0?QjL;UM>so9 zGTll#-9w(-hfW?qTktTh!c*9WQ`nAI(1j_U1+TMqo@43!0}JWf=)vFEzfX<-!#<(l zdf~+lq7^raYcL>sa8L~3W-*LGkwIJ>!;rWQ32_fb#Bq#@6G(|?aacT$93#nyQ^<;6 zV^W;KUGxB$g>R0ky$Uu9CKEm4Kdo%#A78H`;pdnS7oDe=oL^N{xvFZ8e6KQ;DA-07 zW@{-j1S$C`0_WippQ7kL|PE7x~6p7rdOLzi;Mz9kr*eG2u)F0bzl2OE1QZQ|tIKf|ZE*4$|g9=_ktuLt<{ zAZmDN@N>VKd0$w^>p~lE3mf>}!OMX}(F@xJtfoiX7+eFL;(=~CwTpC-PD#5O?bc{P zEf{UenMOa<%0_D`30@l9c!nf@ey?4^Vz&~}^-2YV--6n@uO z@>ZnmRuq-A@*-`WVnKX`Zv6^P?AKtLTz{3EevN#6l{}rse*DI8xe2Zd@L71&Nbk?1 zf)T9#l!dWEUJa}uuCvftVWCs41rJ7>Mon=3^*L}}Cpf?3Z->{p8|RjSQ%k+PZCHBm zpdE?kCQX~2LCYTd*5)>b?QLr&D0asAAC5>!>e`yM=4iM%nl#5hXe&p439W%ys4(+= z_#^RugZcg@BY%sLzsbyg+wh?dj?YkGZocn41OxTc8(xJhZ}yP^(wjya4U&3|P0gdh z+!Js%zhF4?f$as(n$&Bc=fFEO`e(A>FZ?C+4p!n_!;lAdiKWj(k+&>M|D#s4T}>yT zS`oLM(q_+kWZ>FtQ@wZXEGc%dqyKA{;J8Nhs0*bPlSWP9*u`mWY?r~ZqiM?uW5d_BT4?m905m}7sF%$ z!-2wz=@T~82p1YeB|<{QI`&~vjVnYAufEmTBmC$S4d@pER_Y)t^J*LtAr!@0+$k=_ zy+Y#+ybTYDc03|B@+Za>cvf7AUy7K4XcX?63s8tC#3!ivj4WZlN|sy6IEl0|XIxEI zY#`SBiD1#CwOZi!r|E`;R|bF#=46Cp;O_ow(!1`f?^w-Vmo8(LY250 ujpACv9|vqoE%Rb8YoA$l*Bdr~sxyf8pGNyMHn2D>zaLdn`g+5{zW)OW+?$R7 diff --git a/MainApp.java b/MainApp.java deleted file mode 100644 index da718f8..0000000 --- a/MainApp.java +++ /dev/null @@ -1,331 +0,0 @@ -import java.io.BufferedReader; -import java.io.IOException; -import java.io.StringReader; -import java.util.Arrays; -import java.util.Scanner; -import java.util.Stack; - -public class MainApp { - - // czytanie inputu z System.in - static Scanner reader = new Scanner(System.in); - - public static void main(String[] args) { - - // liczniki indeksow wielomianow - int counterFirst = 0, counterSecond = 0; - - // wielomiany + pomocniczme stosy - int polyOne[]; - Stack p1 = new Stack(); - int polyTwo[]; - Stack p2 = new Stack(); - - // wspolczynnik n - int n=1; - - - String str; - String input; - - char temp; - - input = args[0]; - - BufferedReader read = new BufferedReader( - new StringReader(input)); - - // od poczatku pierwszego wielomianu '[' - int i = 3; - try { - if ((str = read.readLine()) != null) { - - if (str.length() > 0) { - n = Character.getNumericValue(str.charAt(0)); - } - temp = str.charAt(i); - while(temp != ']') { - - if(temp != ',') { - p1.push(Character.getNumericValue(temp)); - counterFirst++; - } - i++; - temp = str.charAt(i); - } - - // przejscie do drugiej tablicy (zakladamy ze wielomiany oddzielone sa spacja) - i += 3; - temp = str.charAt(i); - - while(temp != ']') { - - if(temp != ',') { - p2.push(Character.getNumericValue(temp)); - counterSecond++; - } - i++; - temp = str.charAt(i); - } - - // inicjalizacja tablic - polyOne = new int[counterFirst]; - polyTwo = new int[counterSecond]; - - // wypelnianie tablic - for(int j=polyOne.length-1; j>=0; j--) { - - polyOne[j] = p1.pop(); - } - - for(int j=polyTwo.length-1; j>=0; j--) { - polyTwo[j] = p2.pop(); - } - - - // wyswietl wielomiany - System.out.println("f:" + Arrays.toString(polyOne)); - System.out.println("g:" + Arrays.toString(polyTwo)); - - // 1. - System.out.println("1. iloczyn f*g: "); - int res[] = modTheTab(polynomialsMultiplication(polyOne, polyTwo),n); - System.out.println(Arrays.toString(res)); - - // 2. - System.out.println("2. klasa reszty: "); - res = polynomialsDivide(polyOne,polyTwo,n); - if(res != null){ - System.out.println(Arrays.toString(res)); - } - - // 3. - System.out.println("3. nwd: "); - res = nwd(polyOne,polyTwo,n); - System.out.println(Arrays.toString(res)); - - reader.close(); - } - - } catch(IOException e) { - e.printStackTrace(); - } - - //input - /* - do{ - System.out.println("Podaj n: "); - // wpisz liczbe - n = reader.nextInt(); - - }while(n > 1000 || n <= 0); - - - System.out.println("Pierwszy wielomian: "); - polyOne = fillPolynomial(); - - System.out.println("Drugi wielomian: "); - polyTwo = fillPolynomial(); - */ - - - reader.close(); - } - - - // uzupelnianie tablicy - public static int[] fillPolynomial() { - - // zmienna pomocnicza - int temp = 0; - - System.out.println("Podaj liczbe wyrazow w wielomianie: "); - temp = reader.nextInt(); - - int[] tab = new int[temp]; - - // uzupelnianie pierwszego wielomianu - System.out.println("Podaj kolejne wyrazy wielomianu po przycisku enter"); - - for(int i=0; i= ptd) { - - // modulo dla ujemnych - if(polyOne[pod]<0) { - polyOne[pod] = mod + polyOne[pod]; - } - - // szukany mnoznik - temp = multiplier(polyOne[pod], polyTwo[ptd], mod); - - // przesuniecie tablicy - tempTab = polynomialShift(tempTab,i); - - // mnozenie wielomianow - tempTab = polynomialMultiplication(tempTab, temp); - - tempTab = modTheTab(tempTab, mod); - - // odejmowanie wielomianow - polyOne = polynomialsSubstraction(polyOne,tempTab); - - // zmiejszamy stopien pierwszego wielomianu - pod--; - - // zwiekszamy liczbe przesuniec drugiej tablicy - i++; - - } - result = Arrays.copyOf(polyOne, i-1); - - return result; - } - - // 3. - public static int[] nwd(int polyOne[], int polyTwo[], int mod) { - - if(polyTwo.length == 0) { - return polyOne; - } - if(polyOne.length >= polyTwo.length) { - return nwd(polyTwo, polynomialsDivide(polyOne,polyTwo,mod),mod); - } - else { - return nwd(polyTwo, polynomialsDivide(polyTwo,polyOne,mod),mod); - } - } - -} \ No newline at end of file