بسم الله
نتيجة السؤال الأول هي -262
وقد تمكن ثلاثة مشتركين من الوصول للحل وهم
abdou001 بلغة ++C
zetrix بلغة #C
مصطفى 36a2 بلغة JAVA
ولقد تحصل كل منهم على 300 نقطة ولهم أن يضعوا أكوادهم وإلا اخترنا أحد الأكواد ووضعانه هنا
بالتوفيق في السؤال القادم
بسم الله
نتيجة السؤال الأول هي -262
وقد تمكن ثلاثة مشتركين من الوصول للحل وهم
abdou001 بلغة ++C
zetrix بلغة #C
مصطفى 36a2 بلغة JAVA
ولقد تحصل كل منهم على 300 نقطة ولهم أن يضعوا أكوادهم وإلا اخترنا أحد الأكواد ووضعانه هنا
بالتوفيق في السؤال القادم
تم تعديل هذه المشاركة بواسطة أحمد أبو عبد البر في 13 سبتمبر 2013 في 16:35
إذا رأيتموني غبت فأطلت الغياب فربما أكون قد انتقلت عن الدنيا إلى الآخرة
فما أحوجني إلى دعوة صالحة من أخ لي كريم
أول برنامج عربي للمحاسبة والتجارة وإدراة المخازن يعمل على اللينكس والماك والويندوز
تم الحل بلغة c++
الحل بلغة ++c
#include <iostream>#include <fstream>#include <windows.h>using namespace std;/////////////////////////////////////////////////void init(int **(&array));void read(int **(&array));int horizontally(int **(&array));int vertically(int **(&array));int diagonally1(int **(&array));int diagonally2(int **(&array));int getMinNum(int **(&array));/////////////////////////////////////////////////int main(){int **array;init(array);read(array);cout << getMinNum(array) << endl;return 0;}/////////////////////////////////////////////////int getMinNum(int **(&array)){int min1( horizontally(array) );int min2( vertically(array) );int min3( diagonally1(array) );int min4( diagonally2(array) );int min;min = min1 < min2 ? min1 : min2;min = min3 < min ? min3 : min;min = min4 < min ? min4 : min;return min;}/////////////////////////////////////////////////void init(int **(&array)){array = new int* [20];for(int i=0;i<20;i++) array = new int[20];}////////////////////////////////////////////void read(int **(&array)){ifstream file("array.txt",ios::in);if(!file) { cerr << "cannot open " << "array.txt \n"; exit(1); }for(int i=0;i<20;i++) for(int j=0;j<20;j++) { file >> array[j]; }}//////////////////////////////////////////////int horizontally( int **(&array)){int min = **array;for(int i=1;i<4;i++) min -= (*array); int count; for(int row = 0;row <20;row++) for(int column = 0 ;column <=16 ;column++) { count = array[row][column]; for(int n = column+1; n < column+4 ; n++) count -= array[row][n]; if(count < min) min = count; } for(int row = 19 ;row >= 0;row--) for(int column = 19 ;column >= 3 ;column--) { count = array[row][column]; for(int n = column-1; n >= column-3 ; n--) count -= array[row][n]; if(count < min) min = count; } return min;}////////////////////////////////////////////////////////int vertically(int **(&array)){int min = **array;for(int i=1;i<4;i++) min -= *array;int count; for(int column = 0 ;column <20 ;column++) for(int row = 0; row <= 16;row++) { count = array[row][column]; for(int n = row+1; n < row+4 ; n++) count -= array[n][column]; if(count < min) min = count; }for(int column = 19 ;column >= 0;column--) for(int row = 19 ;row >= 3 ;row--) { count = array[row][column]; for(int n = row-1; n >= row-3 ; n--) count -= array[n][column]; if(count < min) min = count; } return min;}///////////////////////////////////////////////////////////int diagonally1(int **(&array)){int min = **array;for(int i=1;i<=3;i++) min -= array;int count;for(int row =0;row <= 16 ; row++) for(int column = 0;column<=16;column++) { count = array[row][column]; for(int n=1;n <= 3;n++) count -= array[row+n][column+n]; if(count < min) min = count; }for(int row =19;row >=3 ; row--) for(int column = 19;column >= 3 ;column--) { count = array[row][column]; for(int n=1;n <= 3;n++) count -= array[row-n][column-n]; if(count < min) min = count; } return min;}///////////////////////////////////////////////////////int diagonally2(int **(&array)){int min = (*array)[19];for(int n=1;n<=3;n++) min -= array[n][19-n];int count;for(int row =0;row <= 16 ; row++) for(int column = 19;column >= 3;column--) { count = array[row][column]; for(int n=1;n <= 3;n++) count -= array[row+n][column-n]; if(count < min) min = count; }for(int row =19;row >=3 ; row--) for(int column = 0;column <= 16 ;column++) { count = array[row][column]; for(int n=1;n <= 3;n++) count -= array[row-n][column+n]; if(count < min) min = count; } return min;}abdou001 كتب:تم الحل بلغة c++
تم تصحيح الخطأ
إذا رأيتموني غبت فأطلت الغياب فربما أكون قد انتقلت عن الدنيا إلى الآخرة
فما أحوجني إلى دعوة صالحة من أخ لي كريم
أول برنامج عربي للمحاسبة والتجارة وإدراة المخازن يعمل على اللينكس والماك والويندوز
//------------------------------------------
//Language : C#
//Full Name : Abdelalim ZERKANI
//Result: -262
//------------------------------------------
public int getMinNum(int[,] mat)
{
int min = mat[0,0];
for (int row = 0; row < 20; row++)
for (int col = 0; col < 20; col++)
{
if (col + 3 < 20)
{
int sum = mat[row, col] - mat[row, col + 1] - mat[row, col + 2] - mat[row, col + 3];
if (sum < min)
min = sum;
sum = mat[row, col+3] - mat[row, col + 2] - mat[row, col + 1] - mat[row, col];
if (sum < min)
min = sum;
}
if (row + 3 < 20)
{
//MessageBox.Show("row: "+row+" col: "+col+"\nmat: "+mat.GetLength(0)+"; "+mat.GetLength(1));
int sum = mat[row, col] - mat[row + 1, col] - mat[row + 2, col] - mat[row + 3, col];
if (sum < min)
min = sum;
sum = mat[row + 3, col] - mat[row + 2, col] - mat[row + 1, col] - mat[row, col];
if (sum < min)
min = sum;
}
if (row + 3 < 20 && col + 3 < 20)
{
int sum = mat[row, col] - mat[row + 1, col + 1] - mat[row + 2, col + 2] - mat[row + 3, col + 3];
if (sum < min)
min = sum;
sum = mat[row+3, col+3] - mat[row + 2, col + 2] - mat[row + 1, col + 1] - mat[row, col];
if (sum < min)
min = sum;
}
}
return min;
}
public int[,] LoadMatrixFromFile(string path)
{
string[] file = File.ReadAllLines(path);
int[,] mat = new int[20, 20];
//Foreach line in the text
for (int count = 0; count < file.GetLength(0); count++)
{
//Foreach character in the text
int j = 0;
for (int i = 0; i < file[count].Length; i+=3)
{
string strNbr="";
strNbr += file[count];
strNbr += file[count][i+1];
mat[count, j] = Convert.ToInt32(strNbr);
j++;
}
}
return mat;
}
الحمد لله :)
import java.util.Scanner;public class FirstQuestion { private static int size=20; public static void main(String[]args){ Scanner s=new Scanner(System.in); int x[][]=new int[size][size]; for(int i=0;i<size;i++) { for(int j=0;j<size;j++) { x[j]=s.nextInt(); } } System.out.println(getMinNum(x)); } public static int getMinNum(int x[][]){ int min=0; int subMin=0; for(int i=0;i<size;i++) { for(int j=0;j<size-3;j++) { subMin=x[j]; for(int k=1;k<4;k++)subMin-=x[j+k]; if(subMin<min) min=subMin; subMin=x[j+3]; for(int k=1;k<4;k++)subMin-=x[j+3-k]; if(subMin<min) min=subMin; } } for(int i=0;i<size-3;i++) { for(int j=0;j<size;j++) { subMin=x[j]; for(int k=1;k<4;k++)subMin-=x[i+k][j]; if(subMin<min) min=subMin; subMin=x[i+3][j]; for(int k=1;k<4;k++)subMin-=x[i+3-k][j]; if(subMin<min) min=subMin; } } for(int i=0;i<size-3;i++) { for(int j=0;j<size-3;j++) { subMin=x[j]; for(int k=1;k<4;k++)subMin-=x[i+k][j+k]; if(subMin<min) min=subMin; subMin=x[i+3][j+3]; for(int k=1;k<4;k++)subMin-=x[i+3-k][j+3-k]; if(subMin<min) min=subMin; } } for(int i=4;i<size;i++) { for(int j=0;j<size-3;j++) { subMin=x[j]; for(int k=1;k<4;k++)subMin-=x[i-k][j+k]; if(subMin<min) min=subMin; subMin=x[i-3][j+3]; for(int k=1;k<4;k++)subMin-=x[i-3+k][j+3-k]; if(subMin<min) min=subMin; } } return min; }}السلام عليكم ورحمة الله وبركاته
هذا الكود مكتوب بلغة فيجوال بيسك 6
اعتقد انه قصير بما يكفى
Option Explicit
Dim splitarray() As String
Dim ar(1 To 400) As Integer
Dim u, min, inc, x, j As Integer
Dim st, st1 As String
Private Sub cmd_split_Click()
Dim i As Integer
splitarray = Split("08 02 22 97 38 15 00 40 00 75 04 05 07 78 52 12 50 77 91 08 " _
& "49 99 40 17 81 18 57 60 87 17 40 98 43 69 48 04 56 62 00 " _
& "81 49 31 73 55 79 14 29 93 71 40 67 53 88 30 03 49 13 36 65 " _
& "52 70 95 23 04 60 11 42 69 24 68 56 01 32 56 71 37 02 36 91 " _
& "88 36 68 87 57 62 20 72 03 46 33 67 46 55 12 32 63 93 53 69 " _
& "04 52 08 83 97 35 99 16 07 97 57 32 16 26 26 79 33 27 98 66 " _
& "22 31 16 71 51 67 63 89 41 92 36 54 22 40 40 28 66 33 13 80 " _
& "24 47 32 60 99 03 45 02 44 75 33 53 78 36 84 20 35 17 12 50 " _
& "32 98 81 28 64 23 67 10 26 38 40 67 59 54 70 66 18 38 64 70 " _
& "67 26 20 68 02 62 12 20 95 63 94 39 63 08 40 91 66 49 94 21 " _
& "24 55 58 05 66 73 99 26 97 17 78 78 96 83 14 88 34 89 63 72 " _
& "21 36 23 09 75 00 76 44 20 45 35 14 00 61 33 97 34 31 33 95 " _
& "78 17 53 28 22 75 31 67 15 94 03 80 04 62 16 14 09 53 56 92 " _
& "16 39 05 42 96 35 31 47 55 58 88 24 00 17 54 24 36 29 85 57 " _
& "86 56 00 48 35 71 89 07 05 44 44 37 44 60 21 58 51 54 17 58 " _
& "19 80 81 68 05 94 47 69 28 73 92 13 86 52 17 77 04 89 55 40 " _
& "20 69 36 41 72 30 23 88 34 62 99 69 82 67 59 85 74 04 36 16 " _
& "20 73 35 29 78 31 90 01 74 31 49 71 48 86 81 16 23 57 05 54 " _
& "04 42 16 73 38 25 39 11 24 94 72 18 08 46 29 32 40 62 76 36 " _
& "01 70 54 71 83 51 54 69 16 92 33 48 61 43 52 01 89 19 67 48", " ")
min = 0
u = 0
For i = 0 To UBound(splitarray)
ar(i + 1) = splitarray(i)
Next i
For j = 1 To 400
For inc = 1 To 8
x = Choose(inc, -21, -20, -19, 1, 21, 20, 19, -1)
If j + 3 * x > 0 And j + 3 * x <= 400 Then
u = ar(j) - ar(j + x) - ar(j + 2 * x) - ar(j + 3 * x)
If u < min Then
min = u
st = ar(j) & " - " & ar(j + x) & " - " & ar(j + 2 * x) & " - " & ar(j + 3 * x)
st1 = j & " - " & j + x & " - " & j + 2 * x & " - " & j + 3 * x
End If
End If
Next inc
Next j
MsgBox " the smallest Value is " & min & " " & vbCrLf & vbCrLf & "the Numbers in Array " & st & vbCrLf & vbCrLf & "the Numbers orders in Array " & st1, , "Smallest"
End Subتم تعديل هذه المشاركة بواسطة أحمد أبو عبد البر في 15 سبتمبر 2013 في 22:39
استعمل محرر الأكواد في المرة القادمة
المشار إليه بالرمز <>
إذا رأيتموني غبت فأطلت الغياب فربما أكون قد انتقلت عن الدنيا إلى الآخرة
فما أحوجني إلى دعوة صالحة من أخ لي كريم
أول برنامج عربي للمحاسبة والتجارة وإدراة المخازن يعمل على اللينكس والماك والويندوز