30

تحدي برمجي بسيط !

  • mino

برنامج يقوم بهذا الأمر أنظر للصورة :

http://im51.gulfup.com/rGfQ...

حيث تدخل كلمة أو جملة حيث يقوم بإظهار في السطر الأول الحرف الأخير فقط من الكلمة مباشرة في مكانه الأصلي حسب ترتيب حروف تلك الكلمة و بعدها في السطر الثاني نفس الأمر و لكن مع إظهار آخر حرفين و يقوم بفعل نفس الشيئ حتى آخر حرف .

لقد قمت ببرمجته بالباسكال و الجافا مثال :

Hi I am mino From Arabia
                       a
                      ia
                     bia
                    abia
                   rabia
                  Arabia
                  Arabia
                m Arabia
               om Arabia
              rom Arabia
             From Arabia
             From Arabia
           o From Arabia
          no From Arabia
         ino From Arabia
        mino From Arabia
        mino From Arabia
      m mino From Arabia
     am mino From Arabia
     am mino From Arabia
   I am mino From Arabia
   I am mino From Arabia
 i I am mino From Arabia
Hi I am mino From Arabia

رجاء جربوا حله بنفسكم بدون النظر إلى الكود المصدري .

البرنامج بالباسكال :

program projectarabia;
var
  i,j,k,n:integer;
  t:string;
begin
writeln('entree un mot :');
readln(t);
n:=length(t);
for i:=1 to n do
begin
for j:=n downto i+1 do
begin
write(' ');
end;
   for k:=i downto 0 do
   write(t[n-(k-1)]);
writeln;
end;
readln;
end.    

البرنامج بالجافا :

public class Mainclass {
public static void main(String[] args){
    int i,j,k,n;
    String t;
   char ch;
   System.out.println("entree un mot :");
   Scanner sc=new Scanner(System.in);
   t=sc.nextLine();
   n=t.length();
   for(i=1;i<=n;i++){
       for(j=n;j>=i+1;j--){
            System.out.print(" ");
       }
        for(k=i;k>0;k--){
            ch=t.charAt(n-k);
           System.out.print(ch);
       }
       System.out.println();
   }

}    
}

أتمنى رؤية طرق مختلفة عن طريقتي للحل .

يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

in perl:

$_ = "Hi I am mino From Arabia";
print "\n"," "x(y///c-$i), substr $_,-$i while ($i++<y///c);     

يبدو أن لغة البيرل معقدة بعض الشيئ

لقد حاولت اختصار الكود أكثر مايمكنني. عندي قناعة أنه يمكن توفير 10 حروف أخرى (دون المسافات) لكن لا ادري كيف :(

لا أظن بأنه يمكنك فعل هذا فالفراغات أمر ضروري

اقصد الفراغات بين ال tokens. يمكن توفير 4 حرف عن طريق حذفها.

لكن غير ذلك لا ادري ماذا افعل :(

printf"%*s\n",y///c,substr$_,-$i while $i++<y///c

أقصر بـ 11 حرف عن محاولتي الأولى. :)

صاحب السؤال لم يطلب ذلك في مثاله. غير ذلك المسافة حرف كغيرها ولا يصح أن تقسو عليها وتطالبني بحذفها :))

فقط لأنك مهتم كثيرا بجمالية الكود قلت في نفسي ربما يهتم أيضا بجمالية النتيجة ^_^

معيار الجمال هو تنفيذ المطلوب وليس ارضاء أصحاب الطرفيات ذات الخطوط الـ monospaced. ^_^

لكن شكرا على الملاحظة :)

بالبايثون

a= "I test from python"
print a
l=len(a)
for x in range(1,l+1):
    print len(a[0:l-x])*" "+a[l-x:l]

يبدو بأن لغة البيثون هي التي تمتلك أقصر و أنظف كود برمجي.

تحتاج إلى إضافة سطر آخر عبارة عن شرط لتجاوز الفراغات

لماذا ؟؟

http://im83.gulfup.com/0KGo...

لتجاوز التكرار الموضح في الصورة

الكود بعد التصليح :

a= "I test from python"
print a
l=len(a)
for x in range(1,l+1):
    if (a[l-x]==" "):
        continue
    print len(a[0:l-x])*" "+a[l-x:l]

شكرا جدا

برغم ان المثل اعلى لا يحتوى على الشرط و به تكرار :

https://img.bi/#/TyyocEY!Bo...

حل php

للمتبجحين بالحلول المعقدة للغتهم....

<?php
    $s='Hi I am mino From Arabia';$t='le';$h='s';$f=$h.'tr';$j=$h.'ub'.$f;$t=$f.$t.'n';$n="\n";$l=$t($s);for($i=1;$i<$l;$i++)$b.=$j($s,$l-$i).$n;echo"$s$n$b$s"; 
?>

حل آخر

<?php
    print p('Hi I am mino From Arabia');function p($L,$A=array()){$c='count';$s=strlen($L);$A[]=substr($L,-$c($A)-1);return$s==$c($A)?"$L\n".implode("\n",$A):p($L,$A);}
?>

صعوبة قراءة الكود في أي لغة برمجة

عيب وليس ميزة

نفسي أعرف غرضك من تعمد تعقيد الكود :)

عموماً

طريقتي النظيفة وبالـ PHP

http://im80.gulfup.com/JEuu...

<pre style="text-align: right;float: left;">
<?php
$str = "Hi I am mino From Arabia";
for ($i = 0;$i >= (strlen($str) * -1);$i--) {
    echo substr($str, $i)."\n";
}
?>

هل تعني أنّ هذا السباجيتي مقروء؟

http://i.imgur.com/pV0O2BF.jpg

<div id="HI">Hi I am mino From Arabia</div>
<script>
var str = 'Hi I am mino From Arabia';
var length = str.length;
for (var i = 0;i <= length;i++) {
document.getElementById('HI').innerHTML += ('&nbsp;'.repeat(length-i)) + str.substr(str.length-i) + '<br>';
}
String.prototype.repeat = function( num )
{
    return new Array( num + 1 ).join( this );
}
</script>

لا أعرف الجافا سكريبت و لكن هل جربته هل يعمل هذا الكود ؟

حسنا، كتبته وأنا آكل ^_^ لذلك هو يظهر هكذا

http://i.share.pho.to/28474...

ولجعله منسقا كما طلبت كان علي إجراء هذا التعديل

http://i.share.pho.to/6150d...

<div id="Hi">Hi I am mino From Arabia</div>
<script>
var str = 'Hi I am mino From Arabia';
var length = str.length;
for (var i = 0;i <= length;i++) {
if (str.substr(str.length-i).substr(0,1) == ' ') continue;
document.getElementById('Hi').innerHTML += '<div style="text-align:right">' + str.substr(str.length-i) + '</div>';
}
</script>

أحسنت ،عمل جيد الآن أصبح يظهر كما أريد .

بعد أن جربته يبدوا بأنه يعمل جيدا و لكنه لا يظهر جيدا ربما الأمر راجع إلى المتصفح.

<!DOCTYPE html>
<html>
<head>
<title>Home</title>
</head>
<body>
<div id="HI">Hi I am mino From Arabia</div>
<script>
var str = 'Hi I am mino From Arabia';
var length = str.length;
for (var i = 0;i <= length;i++) {
document.getElementById('HI').innerHTML += ('&nbsp;'.repeat(length-i)) + str.substr(str.length-i) + '<br>';
}
String.prototype.repeat = function( num )
{
    return new Array( num + 1 ).join( this );
}
</script>
</body>
</html>

بسبب الفراغات، حيث خانات الأحرف،الأرقام والرموز ليست متشابهة الطول والعرض في المتصفح، راجع الحل الثاني في ردي

ما رأيك لو غيرنا الشكل قليلاً :]

<?php
$str = 'Hi I am mino From Arabia';
$len = strlen($str);
echo '<pre>'.$str.'  '.$str."\r\n" ;
for($i=1;$i<$len;$i++){
    echo str_pad(substr($str,$len-$i),$len," - ", STR_PAD_LEFT). '  '.
    str_pad(ltrim(substr($str, $len - $i),' '), $len, ' - ',STR_PAD_RIGHT).
    '<br>';
}
echo $str.'  '.$str.'</pre>' ;
echo '<pre>' ;
for($i=1;$i<$len;$i++){
    echo str_pad(substr($str,0,$len-$i),$len," - ", STR_PAD_LEFT). '  '.
    str_pad(ltrim(substr($str,0, $len - $i),' '), $len, ' - ',STR_PAD_RIGHT).
    '<br>';
}
echo $str.'  '.$str.'</pre>' ;
?>

نعم عمل رائع ،في الواقع كنت أود وضع هذه الأشكال في مواضيع أخرى و ها أنت تسبقني .

تعديل على الكود علما أنه كارثة برمجية،لكنه يفي بالغرض

http://i.imgur.com/3q5RrZ3.png

<pre>
<?php
$str = 'Hi I am mino From Arabia';
$len = strlen($str);
echo '<pre>';
for($i=1;$i<$len;$i++){
    echo str_pad(substr(strrev($str),$len-$i),$len," ", STR_PAD_LEFT). ' : '.
    strrev(str_pad(ltrim(substr(strrev($str), $len - $i),' '), $len, ' ',STR_PAD_LEFT)).
    '<br>';
}
echo '<b>' . strrev($str).' : '.$str.'</b><br>' ;
for($i=1;$i<$len;$i++){
    echo strrev(str_pad(substr($str,0,$len-$i),$len," ", STR_PAD_RIGHT)). ' : '.
    str_pad(ltrim(substr($str,0, $len - $i),' '), $len, ' ',STR_PAD_RIGHT).
    '<br>';
}
echo '</pre>' ;

اخي الكريم خالد - في الحقيقه لقد كان لدي قليل من الوقت و انا اشارك في هذا النقاش لذلك لم اهتم بكتابه الكود بشكل صحيح - غير انه كما قلت

يفي بالغرض

شكراً لك اخي خالد . من الواضح انك من ذوي الخبره في الـPHP و الجافا :)

الحل الأول بلغة بايثون

s='Hi I am mino From Arabia'
l=len(s)
for i in range(1, l+1): print (" "*(l-i))+s[-i:]

ما أروع لغة البايثون ،يبدو بأنني سأبدأ بتعلمها.

في كلا الكودين في موضوعك توجد ثلاث حلقيات تكرار، هل لا بد منها ؟

كما ترى في مثالي بالجافاسكربت وأيضا بالـ php يمكن الحصول على نفس النتيجة بحلقية تكرار واحدة!

أو لنقل أني تجاوزت حلقية التكرار الثانية للفراغات، لكن لماذا 3 حلقيات تكرار ؟

للأسف هذا ما استطعت الوصول إليه دائما ما أصل إلى الحلول بالطرق الصعبة و الطويلة.

حسنا، العمل معتمد كليا على دالة substring، إذا وُجد مثلها في لغاتك المفضلة فيمكنك كتابة مثل ما كتبت

http://www.tutorialspoint.c...

لقد خدعتني ياستعمالك لهذه الدالة ،فأنا كتبت البرانمج من الصفر و شكرا على هذه الدالة فلم أكن أعرفها .

لقد خدعتني ياستعمالك لهذه الدالة

حسنا *_^ أليس هذا ما نفعله دائما في البرمجة ؟

هذا هو الكود بعد استعمال الدالة substring :

public class Mainclass {
public static void main(String[] args){
    int i,j,n,k;
    String t;
    System.out.println("entree un mot :");
    Scanner sc=new Scanner(System.in);
    t=sc.nextLine();
    n=t.length();
    k=n;
    for(i=1;i<=n;i++){
        k=k-1;
        for(j=n;j>=i+1;j--){
            System.out.print(" ");
        }
        System.out.println(t.substring(k));
    }
}    
}

هذا الحل بلغة الجافا

https://drive.google.com/fi...

وهذا الكود

public static void main(String[] args) {
    StringBuilder s = new StringBuilder("                          ");
    String c="Hi i am ahmed from algeria";
    System.out.println(c);
    for (int i = s.length()-1; i >= 0; i--) {
        s.replace(i, i+1,c.substring(i, i+1) );
        System.out.println(s);
    }
}

إذا قمت بتغيير عدد الفراغات فلن يعمل البرانمج يجب أن تجد حل شامل.

recursive methods: كود Java

public static String space(int i) {
    if(i == 1) {
        return "";
    }
    return " " + space(--i);
}

public static String sub(String str, int i) {
    if (str.length() == 0) {
        return "";
    }
    return  sub(str.substring(1), ++i)  + space(i) + str + "\n";
}

public static void main(String[] args) {
    System.out.print(sub("Hi I am mino From Arabia", 0));
}

لا أدري بالضبط كيف قمت بكتابة هذه الدالة التراجعية ،ولكنها تفي بالغرض .

-- In Haskell
import Data.List(tails)
let s = "Hi I am mino From Arabia" in mapM_ print$reverse$map(\x->(replicate((length s)-length x)' ')++x)$tails s 

اطول قليلا من نسختي في ال perl إلا أنها أجمل :D

ما هي لغة البرمجة المستعملة ؟

Haskell

آسف لم أرى Haskell

بالـ PHP ;)

$s = 'Hi I am MEDZ From Arabia';

for ( $i=0; $i<=mb_strlen($s); $i++) {

    if ( substr(substr($s, -$i), 0,1) == ' ' ) continue;

    echo '<div style="text-align:right;">'.substr($s, -$i).'</div>';

}

روبي

s = "hi i am mino from arabia"
puts s.length.times.map{|x|' '*x+s[x..s.length]}.reverse
s = "hi iam mino from arabia"
puts s.size.times.map{|x|' '*x+s[x..s.size]}.reverse

اصغر شئ :]

s = "hi iam mino from arabia"
puts (0..s.size).map{|x|' '*x+s[x..-1]}.reverse
'Hi I am mino From Arabia'=~/^.*(.+)$(??{printf"%*s\n",length,$1})/

67 بايت (perl). ~ ضحكات شريرة متقطعة~.

لو أحد عمل نسخة أقصر رجاء المراسلة. ربما يمكنني توفير بعض الحروف الأخرى.

ما فرحت به هو عين ما انتقد على البيرل ، أعني التعقيد البرمجي ، وصدقني لو رجعت إلى هذا الكود بعد ستة أشهر فلن تفهمه أنت نفسك فكيف بغيرك

اللغات البرمجة التي لاقت رواجا هي التي يكون كودها مقروءا كلغة البشر مع أشياء أخرى مثل قابلية التوسع والمحمولية والانتاجية والدعم

كما يقال، لغة بيرل لا يمكن قراءتها حتى من مبرمجها !

أشاركك أن زيادة الذكاء في البيرل عواقبها وخيمة أحيانا لكن نفس الكلام ينطبق على اللغات الأخرى كذلك (وان كانت بمقدار أقل).

يوجد بيرل معقد لكني لا أعد regex بسيط كالذي بالأعلى ضمنه.

تعقيد الكود لا يسمى ذكاء ، ربما في زمن مضى ولكن الآن إذا كتبت كودا معقدا بأي لغة برمجية فهذا يعد مشينا ، لأن البرمجة تطورت بشكل كبير واصبحت المشاريع الكبرى يشترك فيها مبرمجون كثر ، ويضطر كل مبرمج أحيانا ليقرأ ما كتبه الآخر ، ثم يأتي tester وعليه أيضا أن يقرأ ، ثم رئيس المشروع ، ثم مبرجو الصيانة من بعد

كما قلت ربما أنت بحكم خلفيتك عندك تصور مختلف لما هو معقد وما هو ليس كذلك.

أنا أرى فكرة استدعاء كود بيرل بعد كل خطوة من ال regex جميلة. طريقة سريعة وسلسة.

ولا تقلق لست مطور بيرل ولا يضطر أحد لقراءة إبداعاتي فيه (عدا سطر هنا وهناك على بعض المجتمعات التي أشارك فيها).

محاولتي بـ ++C

#include <iostream>
using namespace std;
char str[] = "Hi I am mino From Arabia";
int main()
{
    char *pstr;
    pstr = str + sizeof(str) - 1;
    cout << str << endl;
    while(pstr != str - 2)
    {
        for(int i=pstr - str; i>0 ; i--)
            cout << " ";
        cout << pstr << endl;
        --pstr;
    }
    return 0;
}

بدون دول

بعد التحسين

#include <iostream>
using namespace std;
char str[] = "Hi I am mino From Arabia";
int main()
{
     char *pstr = str + sizeof(str) - 1;
     int n = pstr - str;
     cout << str << endl;
     while(pstr != str - 2)
    {
         cout.width(n+1);
         cout << pstr-- << endl;
    }
    return 0;
}

تجاهل الفراغات

#include <iostream>
using namespace std;
char str[] = "Hi I am mino From Arabia";
int main()
{
     char *pstr = str + sizeof(str) - 1;
     int n = pstr - str;
     cout << str << endl;
     while(pstr-- != str - 2)
    {
         if(pstr[0] == ' ') continue;
         cout.width(n+1);
         cout << pstr << endl;
    }
     return 0;
}

الحل بتاعي PHP بس ماعرفت اسوي الفراغات بين الاحرف.

<?php

$name = 'Hi I am mino From Arabia';

$strlen = strlen($name);

for($i=0; $i<=$strlen; $i++){
    echo substr($name, $i, $strlen).'<br>';
}

?>

راجع الحلول الأخرى بالـ php وستجد الطريقة، وأيضا ^_^

Arabia I/O هو مجتمع عربي، رجاءً شارك باللغة العربية الفصحى فقط.

وهذا بــ PHP . ونفس الفكره ايضا بأى لغه :))

المشكله ليست فى اللغه ... المشكله فيمن يستخدم اللغه إما يعقدها ويجعل الاخرون يكرهونها .. أو العكس :))

http://i.imgur.com/djMispk.png

#include <stdio.h>
i;main(n){char s[]="Hi I am mino From Arabia";n=sizeof s;while(i++<n)printf("%*s\n",n,s+n-i);}

بـالسي واكتفي بهذا القدر :D

بعض التعديل ليعمل بشكل صحيح ^-^

#include <stdio.h>
void main(){
    char s[] = "Hi I am mino From Arabia";
    int i=0,n = sizeof(s);
    while(i++<n)
        printf("%*s\n",n,s+n-i);
}

أخي من أين تأتي الفراغات؟

لم يلزمه تعديلات. الكود صحيح ويعمل على أي كومبيلر موافق لمعيار C89. مثال سطر أوامر لعمل الكومبيل:

gcc a.c -std=c89 -o a.exe && a

على عكس الكود بتاعك ^-^ (void main غير معيارية).

بالنسبة للمسافات اقرأ ال manpage بتاعت printf (أو انظر هنا: http://en.cppreference.com/... ابحث عن نجمة *)

لم يلزم التعديل

  • شيفرتك Code غير واضحة، يفضل تنسيق الشيفرة

  • كودك غير أمن بسبب إستخدامك argc كـ n

الكود صحيح ويعمل على أي كومبيلر موافق لمعيار C89.

لو ذكرت ذلك كان أفضل

ماذا عن المعايير الجديدة؟

على عكس الكود بتاعك ^-^ (void main غير معيارية).

كتبتُ void main لأنك لم تكتب return 0 (السبب الذي منعت لأجله كتابت void)

بالنسبة للمسافات اقرأ ال manpage بتاعت printf

شكرا لك

يبدو أن كائن cout أنساني دالة printf

  • هدفي كان استخدام حروف قليلة قدر الإمكان.

  • لا مانع من تغيير قيمة argc. ليست فكرة جيدة في أغلب الأحيان لكنها وفرت حرفا في كودي. معطيات main دائما قابلة للتعديل.

  • المعيارت الأحدث لا تستخدم في الـ code golf (برمجة تمرين بأقل عدد من الحروف) لأنها كما لاحظت تحتاج عدد أكبر من الحروف

  • عذر أقبح من ذنب :D الـ C89 يسمح بترك ال return مع جعل سلوك البرنامج غير معرف (لكن بما ان البرنامج انتهى فمن يبالي). من أول ال C99 يمكن تركها وتعوض ضمنيا بـ return 0 أي أنه لا يوجد مبرر لإستخدام void في أي إصدار كان (لاحظت رابطك بالأسفل; يستثني من ذلك النظم التي تفتقد إلى نظام تشغيل تعود return إليه)

VBA

Dim TheTex As String

Dim TheLe, StrtFrom As Long

StrtFrom = 1

TheTex = "Hi I am mino From Arabia"

TheLe = Len(TheTex)

    While StrtFrom <= TheLe
            AreaShow = AreaShow & vbNewLine & Right(TheTex, StrtFrom)
            StrtFrom = StrtFrom + 1
    Wend

ألا يوجد هنا من يُجرب بسويفت؟

حاولت، لكن لم استطيع P:

ماهو مترجم الباسكال الذي استخدمته؟

استخدمت بيئة التطويير Lazarus الذي يستعمل مترجم free pascal .

<?php

echo "<pre>";

echo $string = "We Are Future Programmers."; $array = str_split($string); // spilting the string in array // loop for the lines equal the length of my string for($i=strlen($string); $i >= 0; $i--){ //loop for check every character for ($x=0; $x <= strlen($string); $x++) { // check if the character in reverse equal the line number if($x >= $i && $x < strlen($string)){ echo $array[$x]; } else{ echo " "; } } echo "";

}

?>

<?php

echo "<pre>";

echo $string = "We Are Future Programmers."; $array = str_split($string); // spilting the string in array // loop for the lines equal the length of my string for($i=strlen($string); $i >= 0; $i--){ //loop for check every character for ($x=0; $x <= strlen($string); $x++) { // check if the character in reverse equal the line number if($x >= $i && $x < strlen($string)){ echo $array[$x];

    }
    else{
        echo " ";
    }

}
    echo "<br>";

}

?>

عليك وضع أربع فراغات قبل كل سطر لكي يظهر الكود جيدا من اليسار إلى اليمين.

<?php

echo "<pre>";    

echo $string = "We Are Future Programmers.";
$array = str_split($string); // spilting the string in array
// loop for the lines equal the length of my string
for($i=strlen($string); $i >= 0; $i--){
//loop for check every character
for ($x=0; $x <= strlen($string); $x++) {
// check if the character in reverse equal the line number
if($x >= $i && $x < strlen($string)){
echo $array[$x];
}
else{
echo " ";
}
}
echo "";

}

?>

<?php

echo "<pre>";       

echo $string = "We Are Future Programmers.";

$array = str_split($string); // spilting the string in array

// loop for the lines equal the length of my string         

for($i=strlen($string); $i >= 0; $i--){

//loop for check every character        







for ($x=0; $x <= strlen($string); $x++) {       







    // check if the character in reverse equal the line number        







    if($x >= $i && $x < strlen($string)){        





        echo $array[$x];          




    }    




    else{          





        echo " ";         



    }           




}          




    echo "<br>";       

}

?>

تجربتي مع C++ :)

#include "stdafx.h"
#include <iostream>
#include <string>

using namespace std;


  int _tmain(int argc, _TCHAR* argv[])
  {
int i;
int s;
string str;
cout << "Enter Your Name: ";
getline(cin, str);
cout << "Your Name: " << str << endl;

int n = str.length();
for (i = n; i >= 0; i--)
{
    int s=0;
    while (s++ < i)
        cout << " ";

    for (s = i; s <= n; s++)
        cout << str[s];
    cout << endl;
}
cout << endl;
system("PAUSE");
return 0;
  }

بعد حل مشكلة الفراغات

#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;



int _tmain(int argc, _TCHAR* argv[])
{
int i;
int s;
string str;
cout << "Enter Your Name: ";
getline(cin, str);
cout << "Your Name: " << str << endl;

int n = str.length();
for (i = n; i >= 0; i--)
{
    cout.width(i + 1); 
    if (str[i] == ' ') continue;
    for (s = i; s <= n; s++){
        cout << str[s];
    }
    cout << endl;
}
cout << endl;
system("PAUSE");
return 0;
}

باستخدام لغتي المفضلة Lua وبكل بساطة: لتجربة الكود الصقه في: http://www.lua.org/demo.html

m = "Hi I am Mustafa From Arabia"
itr = #m-1   
for i=1,#m do
   s=string.sub(m, -i)
   space = string.rep(" ", itr)
   print(space..s)
   itr = itr - 1
end

لة جميلة و واضحة جدا.

إذا الجائزة من نصيـبي ^^

من أجمل اللغات حتى الآن بالنسبة لي. للأسف ليس لها صيت بين مجتمعنا العربي.

تابع هذا المجتمع للاطلاع على المزيد: https://arabia.io/lua

إنها تشبه إلى حد ما لغة الباسكال و لكن أكثر بساطة.

لا استخدمها إلا في برمجة سكربتات CS2D هه

و هل برمجة هذا النوع من السكريبتات صعب و ما هو المستوى البرمجي الذي تحتاجه أعطني مثال .

شخصياً قمت بتطوير 8 تطبيقات على الـ iOS والأندرويد باستخدام لوا Lua ومنصة CoronaLabs.com للأسف هذه اللغة مهملة من الكثير رغم بساطتها

سهل (أنت تعرف لعبة cs2d صح؟)

للأسف لا اعرفها.

للأسف لم ألعبها من قبل ، ولم أكن أعرفها قبل اليوم .

جربتموها؟

لا ،رأيت بعض الفيديوهات ولم تعجبني اللعبة كثيرا.

هي للأجهزة الضعيفة لكن رغم ذلك فجمهورها كبير ، عدد سيرفراتها أكثر من 138

بالمناسبة جرب سيرفر IRAN TOWN

السلام عليكم، الحل بلغة C++ :

include

using namespace std;

int main()

{

char txt [25]="Hi I am mino From Arabia"; int i,o=0;
for(i=23 ; i>=0 ; i--)
{int a=i, v=0;
    do {cout<<" ";v++;}while(v<=i);
    do {cout<<txt[a];a++;} while(a<25);cout<<endl;}
system("pause");
return 0;

}

السلام عليكم

هذا ماستطعت الوصول إليه السي شارب:

{

        string arabia = "i am ghani from arabia";
        for (int i = arabia.Length-1; i >0; i--) {
            string sub = arabia.Substring (i,arabia.Length - i);
            if (arabia [i]!=' ') 
                Console.WriteLine (sub.PadLeft(arabia.Length,' ')); 
        }

بتعديل بسيط :

{

        string arabia = "i am ghani from arabia";
        for (int i = arabia.Length-1; i >0; i--) {
            string sub = arabia.Substring (i,arabia.Length - i);
            if (arabia [i]!=' ') Console.WriteLine (sub.PadLeft(arabia.Length,' ')); 
        }
        Console.WriteLine (arabia);

++by c

include

using namespace std;

int main()

{ int m;

string k = " hi i am m";

for(int i=9;i>=0;i--) {for(int j=i;j>=0;j--) cout<<" ";

cout<<k[i];m=i; while(m!=9) {m++;cout<<k[m]; };cout<<endl;}

}

قاعد اقلب المواضيع القديمة فوجدت هذا الموضوع الجميل

وأحببت مشاركتكم بلغتي المفضلة lua

w = "Hi I am Waseem From Arabia"

for i=#w,1 , -1 do

print (string.rep(" ", i)..string.sub(w, i))

end

لتجربة الكود

http://www.lua.org/cgi-bin/...

رغم أن التحدي قديم، لكني كنت أبحث عن تحديات لأتمرن عليها، فوقعت على هذا التحدي.

وهذا حللته بلغة السي، وقد جعلت النص الذي سيعرض، هو ما سيمرر كمعاملات إلى البرنامج ليصبح أكثر مرونة:

/*By the name of Allah
 * this program is completed in: 24/2/1436
 * By mujahid
 */ 

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main (int argc,char **argv){
    if(argc<2){
        printf("Print your text!\n");
        return -1;
    }
    size_t len=0;
    for(size_t i=1;i<argc;i++)
        len+=strlen(argv[i]);
    len+=argc-2;
    char *txt=malloc(len+1),*txt2=malloc(len+2);
    if(txt==NULL||txt2==NULL){
        printf("Error in memory!\n");
        return -1;
    }
    *txt=0;*txt=0;
    int i1=1;
    do{
        strcat(txt,argv[i1]);
        strcat(txt," ");
    }
    while(++i1<argc);
    txt[strlen(txt)-1]=0;
    printf("%s\n",txt);
    len=strlen(txt);
    for(int i=len-1;i>=0;i--){
        for(int i3=0;i3<len;i3++){
            if(i3<i){
                strncat(txt2," ",1);
            }
            else{
                strncat(txt2,txt+i3,1);
            }
        }
        printf("%s\n",txt2);
        *txt2=0;
    }
    free(txt2);free(txt);
    return 0;
}

عليك وضع أربع فراغات قبل كل سطر لكي يظهر الكود جيدا من اليسار إلى اليمين.

-2

شكرا

تم اضافة الكود

لا شكر على واجب

حل ب php

<?php

$str = 'Hi I am mino From Arabia';
$len = strlen($str);
echo '<pre>'.$str."\r\n" ;
for($i=1;$i<$len;$i++){
    echo str_pad(substr($str,$len-$i),$len," ", STR_PAD_LEFT)."\r\n";
}
echo $str.'</pre>' ;

?>

جميل، نسيت تماما str_pad