| 
					
				 | 
			
			
				@@ -0,0 +1,79 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include <stdio.h> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include <stdlib.h> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include <string.h> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+typedef unsigned int uint; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+typedef char* string; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+uint getNumberOfDigits(uint number) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    uint counter = 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    while(number >= 10) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        number /= 10; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        counter++; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return counter; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+int convertNumberToDigits(uint number, char* buffer, uint bufferLength, const string* digits, uint dWidth, uint dHeight) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    uint digitAmount = getNumberOfDigits(number); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    uint lineLength = digitAmount * dWidth + 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    uint length = lineLength * dHeight; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if(length >= bufferLength) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    for(uint i = 0; i < digitAmount; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        uint digit = number % 10; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        uint offset = (digitAmount - 1 - i) * dWidth; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for(uint line = 0; line < dHeight; line++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            memcpy(buffer + offset + lineLength * line, digits[digit] + dWidth * line, dWidth); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        number /= 10; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    for(uint line = 1; line < dHeight; line++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        buffer[lineLength * line - 1] = '\n'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    buffer[length - 1] = '\0'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+int convertNumber(uint number, char* buffer, uint bufferLength) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const string digits[] = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return convertNumberToDigits(number, buffer, bufferLength, digits, 1, 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+void printSmallDigits(uint number) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    char buffer[128]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if(convertNumber(number, buffer, 128)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    puts(buffer); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+void printBigDigits(uint number) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const uint digitWidth = 3; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const uint digitHeight = 3; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const string digits[] = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        " _ | ||_|", // 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        "     |  |", // 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        " _  _||_ ", // 2 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        " _  _| _|", // 3 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        "   |_|  |", // 4 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        " _ |_  _|", // 5 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        " _ |_ |_|", // 6 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        " _   |  |", // 7 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        " _ |_||_|", // 8 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        " _ |_| _|" //  9 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    char buffer[128]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if(convertNumberToDigits(number, buffer, 128, digits, digitWidth, digitHeight)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    puts(buffer); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+int main() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    printSmallDigits(1234567890); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    printBigDigits(1234567890); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return EXIT_SUCCESS; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 |