एक प्रोग्राम लिखें जो ASCII कला के साथ लंबे विभाजन की कल्पना करता है। इनपुट में दो पूर्णांक, एक अंश और एक भाजक होता है, जो आपकी पसंद के इनपुट प्रारूप का उपयोग करता है।
उदाहरण:
1234 ÷ 56:
22
----
56|1234
112
---
114
112
---
2
1002012 201 12:
83501
-------
12|1002012
96
---
42
36
--
60
60
--
12
12
--
0 ÷ 35
0
-
35|0
नियम:
- प्रोग्रामिंग भाषा के डिवीजन ऑपरेटर के उपयोग की अनुमति है।
- बड़े पूर्णांक समर्थन का उपयोग करने की भी अनुमति है।
- स्थिरता के लिए:
- यदि भागफल शून्य है, तो डाइविंग बोर्ड के अंत में एक भी शून्य प्रिंट करें।
- यदि शेष शून्य है, तो इसे प्रिंट न करें।
- किसी भी नंबर पर अग्रणी शून्य प्रिंट न करें।
- अंतिम छोर पर स्थित अतिरिक्त स्थानों और दाईं ओर अनुगामी स्थानों की अनुमति है।
- सबसे कम पात्रों के साथ समाधान जीतता है।
सीमाएं:
- 0 <= अंश <= 10 72 - 1
- 1 <= भाजक <= 9999999
इसका तात्पर्य है कि आउटपुट कभी भी 80 कॉलम से अधिक चौड़ा नहीं होगा।
परीक्षण सूट और नमूना कार्यान्वयन:
आप अपने प्रोग्राम का परीक्षण करने के लिए long-Division.c ( gist ) का उपयोग कर सकते हैं । यह वास्तव में सी प्रोग्राम के साथ एक बैश स्क्रिप्ट है। टेस्ट सूट में अपने कार्यक्रम को लागू करने के लिए इसे ट्वीक करें। संदर्भ कार्यान्वयन को देखने के लिए नीचे दिए गए C कोड को देखें। कृपया मुझे बताएं कि क्या नमूना कार्यक्रम या परीक्षण सूट के साथ कोई समस्या है।
$ ./long-division.c 10 7
1
--
7|10
7
--
3
$ ./long-division.c
PASS 1234 ÷ 56
PASS 1002012 ÷ 12
PASS 1 ÷ 1
--- snip ---
Score: 35 / 35
All tests passed!
संपादित करें: अनुरोध के अनुसार, मैंने परीक्षण सूट इनपुट और अपेक्षित आउटपुट को पाठ फ़ाइलों ( जीआईएसटी ) में डाल दिया । नमूना उपयोग (बैश):
cat input | while read nd; do
./program $nd |
sed 's/\s*$//' | sed -e :a -e '/^\n*$/{$d;N;};/\n$/ba'
done > output
diff -u expected output
अजीब सीड कमांड प्रोग्राम आउटपुट से नईलाइन और स्पेस को पीछे छोड़ते हैं।