[تحدي] الترقيم بوساطة الحروف

عمار الخوالدة • منذ 6 سنوات

السلام عليكم ورحمة الله وبركاته،
 

هذا تحدٍ برمجي يهدف إلى تنشيط التفكير، فمع كثرة حلك للمشاكل باستخدام البرمجة تزداد خبرتك.
 

كيف أشارك؟

  • يمكنك المشاركة بأي لغة برمجة تتقنها
  • لا داعي لوجود واجهة رسومية، استقبل المدخلات عن طريق std input
  • اطرح الكود كإجابة على هذا السؤال واستخدم أدوات المحرر في عالم البرمجة لادخال الكود بشكل منظم.

 

السؤال:

اكتب برنامجا يستقبل عددا صحيحا integer ثم يطبع النتيجة على شكل أحرف كما في ترقيم الأعمدة في برنامج Excel، مثال:
1 ==> A
2==> B

وعند الوصول إلى Z سيتابع البرنامج على النمط الآتي:
 

AA
AB
AC

 

وهكذا.

وإليك بعض المدخلات للتجربة عليها:

 

input output
27 AA
703 AAA
332 LT

 

* توضيح للنتيجة الأولى:

تم ادخال 27 إلى البرنامج، ويجب أن يطبع البرنامج "AA" ، فعندما يبدأ الترقيم في الأحرف من الرقم 1 ( بحيث حرف A يمثل الرقم 1 و B يمثل 2 ...إلخ) فعدد أحرف اللغة الانجليزية 26، بالتالي فالرقم 26 سيقابله الحرف Z ، لكن بما أن برنامج إكسل لا يحتوي على 26 عمود فقط بل يحتوي على أكثر من ذلك بكثير، فإن الرقم 27 سيمثل "AA" كما أن 28 سيمثل "AB" وهكذا.

كلمات دليلية: excel question

ساعد بالإجابة

"إن في قضاء حوائج الناس لذة لا يَعرفها إلا من جربها، فافعل الخير مهما استصغرته فإنك لا تدري أي حسنة تدخلك الجنة."

الإجابات (6)

1337r00t • منذ 6 سنوات
def culc_me(x):
    string = ""
    while x > 0:
        x, culc_him = divmod(x - 1, 26)
        string = chr(65 + culc_him) + string
    return string
##############
print(culc_me(1337)) # 1337 => AYK

 

Drphp • منذ 6 سنوات
function getNameFromNumber($num) {
    $numeric = ($num - 1) % 26;
    $letter = chr(65 + $numeric);
    $num2 = intval(($num - 1) / 26);
    if ($num2 > 0) {
        return getNameFromNumber($num2) . $letter;
    } else {
        return $letter;
    }
}

 

هذي بالبي اتش بي وتمت تجربتها

Ali Alzahrani • منذ 6 سنوات

هذه بلغة Swift 4 مدعومة بالواجهات الرسومية 

@IBAction func printlaction(_ sender: Any) {
        let textN : Int = Int (number_textfield.text!)!
        reslut.text = String (printEXCL_Letter(index: textN))
    }
    

    func printEXCL_Letter(index : Int) -> String {
        
        let letters = ["a", "b", "c","d", "e", "f","g", "h", "i","j", "k", "l","m", "n", "o","p", "q", "r","s", "t", "u","v","w" ,"x", "y","z"]
        
        var index = index;
        index -= 1
        let index_div = index / 26
        
        if (index_div > 0){
            return printEXCL_Letter(index: index_div) + letters[index % 26];
        }
        else {
            return letters[index % 26]
        }
    }

 

فؤاد المالكي • منذ 6 سنوات

جافا:

String fun(long i)
{
   return i-- <= 0 ? "" : (char) ('A' + i % 26) + fun(i / 26);
}

 

Hasan Sidawi • منذ 6 سنوات

باستخدام لغة جافا:

public static void main(String[] args) {
        
        Scanner s = new Scanner(System.in);
        
        System.out.println("Enter a number between 1 and 26: ");
        int input = s.nextInt();
        
        int count = 0; 
        char first = 'A';
        
        while (input > 26){
            input = input-26;
            count++;
            first = (char)(count+64);
        }
        
        char letter = (char)(input+64);
        String fullLetters = Character.toString(letter);
        if (count > 0)
            fullLetters = Character.toString(first)+Character.toString(letter);
        
        System.out.printf("The representation of the number entered is %s\n", fullLetters);
        
}

 

xlmnxp • منذ 6 سنوات

تجربة بدون إستخدام معامل باقي القسمة. في لغة الجافاسكربت

/* ECMASCRIPT 5 */
function columns_writer(num){
  var map = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
	var calc = function (number,result){
  	if (result == null) result = [0];
    
		if (result[result.length - 1] > 26){
    	result[result.length - 1] -= 26;
      result[result.length] = 1;
    }
    
  	if (number < 26){
    	var res = "";
      for (i = 0; i < result.length; i++) {
				res += map[result[i] - 1]
			}
      
      return res + map[number - 1];
    }else{
    	result[result.length - 1] += 1; 
      return calc (number - 26, result)	
    }
  }
  
	document.write(calc(num) + "<br/>");
}



columns_writer(27);
columns_writer(332);
columns_writer(703);
columns_writer(23456);

 

لايوجد لديك حساب في عالم البرمجة؟

تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !