From 88d62dfcbc07104ad703cf6f738d2e4bf322a87e Mon Sep 17 00:00:00 2001 From: Luka Darsalia Date: Tue, 1 Nov 2022 04:15:48 +0400 Subject: [PATCH] =?UTF-8?q?55=20=E1=83=90=E1=83=9B=E1=83=9D=E1=83=AA?= =?UTF-8?q?=E1=83=90=E1=83=9C=E1=83=90=20=E1=83=97=E1=83=90=E1=83=95?= =?UTF-8?q?=E1=83=98=E1=83=A1=E1=83=98=20=E1=83=90=E1=83=9B=E1=83=9D?= =?UTF-8?q?=E1=83=AE=E1=83=A1=E1=83=9C=E1=83=98=E1=83=97=20=E1=83=93?= =?UTF-8?q?=E1=83=90=20=E1=83=90=E1=83=AE=E1=83=A1=E1=83=9C=E1=83=98?= =?UTF-8?q?=E1=83=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .DS_Store | Bin 6148 -> 0 bytes problem-set/Sorted.java | 47 +++++++++++++++++++++++++++++++ problem-set/Sorted.md | 44 +++++++++++++++++++++++++++++ problem-set/problem-solutions.md | 5 +++- 4 files changed, 95 insertions(+), 1 deletion(-) delete mode 100644 .DS_Store create mode 100644 problem-set/Sorted.java create mode 100644 problem-set/Sorted.md diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index c0b533cf321c55f983d88a5ebb687567a8812782..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHKO>YuG7=EWkSwtg;Hfc;uHt|X;&?+{)Af+)J)TC5Bs6n<%>ZZ#MVHY?M63+S` z{0mnV! zn7~P`?3TeZU`-Zu7_|mbD5Dd!F)yohjiJ*LRf*Tjr*rEik1xRA)KlvA@MZXWq*ocQ zliy(dbA`*htnedNc(?M$3SXc}O6MGQ*a7rx&{N(@Ch25yy-y%nL=Bhlg-gcM>&?Hnj>^1?Cl4)x`qe{|6Vp|K~}zWEHRqTqy-a zrqOEDF(q@iE=-Q^S{MEf&c^*_8WjbJxsFwaui_23GPJpz0oDx8G@=G(e*}~aHn9r) HRRw+k6mbM8 diff --git a/problem-set/Sorted.java b/problem-set/Sorted.java new file mode 100644 index 0000000..adef325 --- /dev/null +++ b/problem-set/Sorted.java @@ -0,0 +1,47 @@ +/* + * File: Sorted.java + */ + +import acm.program.*; + +public class Sorted extends ConsoleProgram { + + public void run() { + /** + * Reads number of input-numbers, creates array of that size and write + * every number in it + */ + int n = readInt(); + + int numbers[] = new int[n]; + for (int i = 0; i < n; i++) { + numbers[i] = readInt(); + } + + // Prints the answer + if (isSorted(numbers)) { + println("sorted"); + } else { + println("not sorted"); + } + } + + /** + * Pre Condition - input numbers are already in numbers array + * + * Post Condition - tells us if the array is sorted or not + * + * @param numbers + * array of int's + * @return boolean, true if array is sorted, otherwise false + */ + private boolean isSorted(int numbers[]) { + for (int i = 1; i < numbers.length; i++) { + if (numbers[i] < numbers[i - 1]) { + return false; + } + } + return true; + } + +} diff --git a/problem-set/Sorted.md b/problem-set/Sorted.md new file mode 100644 index 0000000..48ef7e7 --- /dev/null +++ b/problem-set/Sorted.md @@ -0,0 +1,44 @@ +$\text{\color{silver} პრობლემა:}$ + +კონსოლიდან შეგყვავს n და შემდეგ n ცალი მთელი რიცხვი, გაარკვიეთ შეყვანილი რიცხვები +არის თუ არა ზრდადობით დალაგებული. თუკი არის დაბეჭდეთ “sorted” თუ არა მაშინ +დაბეჭდეთ “not sorted”. + + +$\text{\color{silver} პრობლემის ამოხსნის გზები:}$ + + +1. წავიკითხოთ პირველი რიცხვი n, რომელიც აღნიშნავს შემომავალი რიცხვების რაოდენობას. შევქმნათ n ზომის int-ების მასივი, რომელშიც 0-დან n-1-მდე ჩავწერთ შემომავალ რიცხვებს. ამის შემდგომ შეგვეძლება მოცემულ მასივს `for` ციკლით გადავუყვეთ 1-დან n-მდე და ვნახოთ სრულდება თუ არა ზრდადობით დალაგებულობის პირობა. მასივი ზრდადობითაა დალაგებული თუ სრულდება შემდეგი პირობა $\forall\ a;i \ | \ 1\le i < n \implies a[i-1] \le a[i]$. შესაბამისად, თუ ეს პირობა დაირღვა რომელიმე i-სთვის, მასივი არაა დალაგებული. + +$\scriptsize \it იხ. \ კოდი \ Sorted.java \ ფაილში.$ + +$\text{\color{#CD5C5C} შენიშვნა}$: ყურადღება მიაქციეთ ინდექსებს, რადგან თუ შეგეშლებათ, `ArrayIndexOutOfBoundsException` ერორს ამოგიგდებთ. + +
+ +2. ასევე შეგვიძლია მასივის შექმნის გარეშე გავაკეთოთ იგივე. თუ ზემოთ მოცემულ ზრდადობით დალაგებულობის ფორმალურ განმარტებას დავუკვირდებით, ყოველთვის ორი მეზობელი წევრის შედარება გვიწევს. შესაბამისად, ორი ცვლადი რომ გვქონდეს, `prev` და `next`, მხოლოდ მათი შედარება მოგვიწევს ყოველჯერზე. თავიდან ხელით მოგვიწევს პირველი რიცხვის prev-ად შეყვანა. ამის შემდეგ კი `for` ციკლით გადავუყვებით ჩვეულებრივ. შესაბამისად მეხსიერება დაიზოგება. + +```Java +public void run(){ + int n = readInt(); + + int prev = readInt(); + int next = 0; + boolean isSorted = true; + + for(int i = 0; i < n-1; i++){ + next = readInt(); + if(prev > next) { + isSorted = false; + } + prev = next; + } + + // Prints the answer + if (isSorted) { + println("sorted"); + } else { + println("not sorted"); + } +} +``` \ No newline at end of file diff --git a/problem-set/problem-solutions.md b/problem-set/problem-solutions.md index 80ced21..1ff457f 100644 --- a/problem-set/problem-solutions.md +++ b/problem-set/problem-solutions.md @@ -95,4 +95,7 @@ * [კოდი](problem-set/Prime.java) 32. AllPrimes * [ახსნა](problem-set/AllPrimes.md) - * [კოდი](problem-set/AllPrimes.java) \ No newline at end of file + * [კოდი](problem-set/AllPrimes.java) +55. Sorted + * [ახსნა](problem-set/Sorted.md) + * [კოდი](problem-set/Sorted.java) \ No newline at end of file