یہ مضمون صفوں میں شامل مسائل پر غور کرے گا (اور، زیادہ حد تک، آزاد تجزیہ فراہم کرے گا)۔ ہم درج ذیل شعبوں میں اپنی صلاحیتوں کو بہتر بنائیں گے۔
ایک جہتی صفوں میں شامل مسائل
سلسلہ جاری رکھیں
کاموں کی اس سیریز میں آپ کو یہ کرنے کی ضرورت ہوگی:- پیٹرن کا تعین کریں جس کے مطابق یہ یا وہ عددی ترتیب بنتی ہے۔
- ایک فنکشن لکھیں جو دیے گئے ترتیب کے پہلے N عناصر کو ایک عدد صف کے طور پر بناتا ہے اور ارے کے عناصر کو اسکرین پر دکھاتا ہے۔
1, 2, 3, 4, 5…
مرحلہ 1: پیٹرن کی شناخت کریں۔ یہاں سب کچھ ابتدائی ہے - یہ قدرتی اعداد کا ایک سلسلہ ہے۔ مرحلہ 2: ایک فنکشن لکھیں جو دی گئی قطار کے پہلے N عناصر کو ایک صف کی شکل میں بنائے:
public class Main {
public static void main(String[] args) {
System.out.println(Arrays.toString(createArrayOfIntegers(10)));
// Output: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
}
public static int[] createArrayOfIntegers(int n) {
int[] array = new int[n];
for (int i = 1; i <= n; i++) {
array[i-1] = i;
}
return array;
}
}
اسی طرح، ایسے فنکشنز لکھنا ضروری ہے جو درج ذیل سلسلے کو جاری رکھیں:
A. 2, 4, 6, 8, 10...
B. 1, 3, 5, 7, 9...
C. 1, 4, 9, 16, 25...
D. 1, 8, 27, 64, 125...
E. 1, -1, 1, -1, 1, -1...
F. 1, -2, 3, -4, 5, -6...
G. 1, -4, 9, -16, 25....
H. 1, 0, 2, 0, 3, 0, 4....
I. 1, 2, 6, 24, 120, 720...
J. 1, 1, 2, 3, 5, 8, 13, 21…
عناصر کی تلاش کریں۔
کاموں کی اس سیریز میں، تیار شدہ صف میں ایک عنصر تلاش کرنا ضروری ہے جس میں کچھ خصوصیات ہوں۔ مثال کے طور پر، زیادہ سے زیادہ قدر والا عنصر۔ ظاہر کرنے کے لیے، آئیے ایک فنکشن کے لیے کوڈ لکھتے ہیں جو ایک ارے لیتا ہے اور ارے میں زیادہ سے زیادہ عنصر کے انڈیکس کا تعین کرتا ہے، اور پھر اس عنصر کو اس کے انڈیکس کے ساتھ کنسول میں آؤٹ پٹ کرتا ہے۔ میں یہ بھی ظاہر کروں گا کہ کس طرح، کلاس کا استعمال کرتے ہوئے،java.util.concurrent.ThreadLocalRandom
آپ بے ترتیب عناصر پر مشتمل ایک دی گئی لمبائی کی ایک عددی صف کو تیزی سے تیار کر سکتے ہیں:
public class Main {
public static void main(String[] args) {
int[] array = generateRandomIntArray(10);
findMax(array);
/*
Output:
Generated random array: [50551934, -551646189, 410352642, 1822778873, -1744293692, -1140287711, 878876868, -2116893120, -797503442, -703924530]
Max element is [1822778873] with index [3]
*/
}
public static int[] generateRandomIntArray(int n) {
int[] array = ThreadLocalRandom.current().ints().limit(n).toArray();
System.out.println("Generated random array: " + Arrays.toString(array));
return array;
}
public static void findMax(int[] array) {
int maxIndex = 0;
int max = array[maxIndex];
for (int i = 1; i < array.length; i++) {
if (array[i] > max) {
max = array[i];
maxIndex = i;
}
}
System.out.println(String.format("Max element is [%d] with index [%d]", max, maxIndex));
}
}
اب کام خود کرتے ہیں۔ بے ترتیب عددی عناصر کی ایک صف سے ہمیں تلاش کرنے کی ضرورت ہے:
- زیادہ سے زیادہ.
- کم از کم
- اوسط
- زیادہ سے زیادہ اور کم سے کم عناصر کے درمیان عناصر کی تعداد۔
- پہلا پرائم نمبر۔
- آخری پرائم نمبر۔
- صف میں پرائم نمبرز کی تعداد۔
چھانٹنا
مسائل کے اس سلسلے میں، آپ کو مختلف ترتیب دینے والے الگورتھم کا استعمال کرتے ہوئے عددی عناصر کی ایک صف کو ترتیب دینے کی ضرورت ہے۔ انٹرنیٹ پر مختلف الگورتھم پر کافی مواد موجود ہیں۔ پہلے الگورتھم کے جوہر کو سمجھنے کی کوشش کریں، اور پھر خود اسے نافذ کرنے کی کوشش کریں۔ پہلے کاغذ پر (بلاک ڈایاگرام، سیڈوکوڈ، جو بھی آپ کے لیے مناسب ہو)، اور پھر IDEA میں۔ نفاذ کے لیے الگورتھم:- بلبلے کی ترتیب؛
- انتخاب کی ترتیب؛
- اندراج کی ترتیب؛
- ضم ترتیب.
دو جہتی صفوں میں شامل مسائل
میٹرکس کھینچیں۔
کاموں کی اگلی سیریز میں، یہ ضروری ہے کہ (کنسول میں آؤٹ پٹ) دو جہتی صفوں (میٹریس) کو ایک خاص طریقے سے تیار کیا جائے: وہ ٹاسک کے ذریعہ بیان کردہ پیٹرن کے مطابق ہوں۔ میں آپ کو ایک مثال دیتا ہوں۔ ہمیں فارم کا میٹرکس بنانے اور ظاہر کرنے کی ضرورت ہےm*n
( m
قطاروں کی تعداد کہاں ہے، اور n
قطار میں عناصر کی تعداد ہے):
1, 2, 3, 4
5, 6, 7, 8
9,10,11,12
آئیے ایک ایسا فنکشن لکھیں جو ہمارے لیے سب کچھ کرے گا، اور ایک فنکشن بھی فراہم کرے گا جو کنسول میں میٹرکس کو خوبصورتی سے آؤٹ پٹ کرے گا (آپ کو یہ مفید معلوم ہو سکتا ہے):
public class Main {
public static void main(String[] args) {
createAndDrawMatrix(3, 4);
}
public static void createAndDrawMatrix(int m, int n) {
int[][] matrix = new int[m][n];
int value = 1;
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
matrix[i][j] = value;
value ++;
}
}
printMatrix(matrix);
}
public static void printMatrix(int[][] matrix) {
for (int[] array : matrix) {
for (int anInt : array) {
System.out.print(String.format("%3d", anInt));
}
System.out.println();
}
}
}
m*n
اب کام: فارم کا میٹرکس دکھائیں : 4, 3, 2, 1 8, 7, 6, 5, 12,11,10, 9 ----------- 1, 4, 7 2, 5, 8 3, 6, 9 ----------- 9, 8, 7 6, 5, 4 3, 2, 1 ----------- 12,11,10, 9 8, 7, 6, 5, 4, 3, 2, 1
عناصر کی تلاش کریں۔
اس سیکشن میں، میٹرکس کے مختلف حصوں میں مختلف عناصر کی تلاش کو لاگو کرنا ضروری ہے: ایک مخصوص کالم میں یا مخصوص قطار میں۔ آئیے فرض کریں کہ ہمارے پاس فارم کا میٹرکس ہے: -1 2 -3 4 -5 6 -7 8 -9 10 -11 12 -13 14 -15 16 -17 18 -19 20 -21 22 -23 24 -25 26 -27 28 -29 30 -31 32 -33 34 -35
مثال کے طور پر، آئیے تیسری قطار میں منفی عناصر کی تعداد تلاش کریں:
public class Main {
public static void main(String[] args) {
int [][] matrix = {
{ -1, 2, -3, 4, -5, 6, -7},
{ 8, -9, 10, -11, 12, -13, 14},
{-15, 16, -17, 18, -19, 20, -21},
{ 22, -23, 24, -25, 26, -27, 28},
{-29, 30, -31, 32, -33, 34, -35}
};
findNegativeCountInRow(matrix, 3);
}
private static void findNegativeCountInRow(int[][] matrix, int rowNumber) {
int negativeCount = 0;
for (int element : matrix[rowNumber]){
if (element < 0) {
negativeCount ++;
}
}
System.out.println("Matrix: ");
printMatrix(matrix);
System.out.println(String.format("Has %d negative elements in #%d row ", negativeCount, rowNumber));
}
public static void printMatrix(int[][] matrix) {
for (int[] array : matrix) {
for (int anInt : array) {
System.out.print(String.format("%5d", anInt));
}
System.out.println();
}
}
}
مرکزی طریقہ پر عمل کرنے کے نتیجے میں، کنسول میں درج ذیل آؤٹ پٹ ہوں گے:
Matrix:
-1 2 -3 4 -5 6 -7
8 -9 10 -11 12 -13 14
-15 16 -17 18 -19 20 -21
22 -23 24 -25 26 -27 28
-29 30 -31 32 -33 34 -35
Has 3 negative elements in #3 row
اب کام۔ کسی بھی عجیب کے لیے، فارم کا n
میٹرکس پرنٹ کریں :n*n
1, -2, 3,
-4, 5, -6,
7, -8, 9
اس میٹرکس سے اخذ کرتے ہیں:
- تمام منفی عناصر؛
- سٹرنگ میں تمام منفی عناصر
i
؛ - کالم میں تمام منفی عناصر
j
؛ - تمام ترچھی عناصر (اوپری بائیں کونے سے شروع)؛
- تمام ترچھی عناصر (نیچے بائیں کونے سے شروع ہونے والے)۔
سمندری جنگ
ستارے کے ساتھ آخری سیکشن: کوئی ٹپس یا مثالیں نہیں۔ میٹرکس سمندری جنگ کے کھیل کو پروگرام کرنے کے لیے مثالی ہیں۔ اس کھیل کی پروگرامنگ کے مراحل میں سے ایک کھیل کے میدان میں جہازوں کی جگہ کا تعین ہے۔ اگر آپ ان مسائل کی ایک بڑی تعداد کو حل کرتے ہیں، تو یقین رکھیں کہ آپ بحری جنگ سے نمٹنے کے قابل ہو جائیں گے۔ لہذا، صفر پر مشتمل 10x10 میٹرکس دیا گیا ہے۔ چلو مان لیتے ہیں کہ یہ بحری جنگ کھیلنے کا میدان ہے۔ اس فیلڈ میں، 0 ایک خالی سیل ہے، 1 ایک جہاز یا جہاز کا حصہ ہے۔ فنکشنز لکھیں، جن میں سے ہر ایک، سمندری جنگ کے کھیل کے اصولوں کے مطابق، انہیں تصادفی طور پر رکھتا ہے:- 10 سنگل ڈیک جہاز؛
- 10 ڈبل ڈیک کوربلز؛
- 5 تین ڈیکر جہاز؛
- سمندری جنگ کے کھیل کے لیے تمام جہازوں کا بندوبست کرتا ہے (4 سنگل ڈیک، 3 ڈبل ڈیک، 2 تھری ڈیک، 1 فور ڈیک)۔
GO TO FULL VERSION