Guest User

Untitled

a guest
Oct 15th, 2012
46
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
D 2.26 KB | None | 0 0
  1. import std.stdio, std.algorithm, std.array, std.string, std.conv, std.format;
  2.  
  3. void main() {
  4.     char letter;
  5.     char[] deck = uninitializedArray!(char[])(50);
  6.     char[] deck_negative;
  7.     char[] deck_positive;
  8.     int minNeg = 0;
  9.     int maxNeg = 0;
  10.     int minPos = 0;
  11.     int maxPos = 0;
  12.     char[] input;
  13.     int[] numbers;
  14.     size_t size = 0;
  15.     size_t size_negative = 0;
  16.  
  17.     while(readln(input)){
  18.         try{
  19.             formattedRead(input, "%c:%(%d,%)\n",&letter, &numbers);
  20.         }
  21.         catch{
  22.             formattedRead(input, "%c:%(%d,%)",&letter, &numbers);
  23.         }
  24.         for(int i = 0; i < numbers.length; i++){
  25.  
  26.             if(numbers[i] >= 0){
  27.                 if(numbers[i] < minPos){
  28.                     minPos = numbers[i];
  29.                 }
  30.                 if(numbers[i] > maxNeg){
  31.                     maxPos = numbers[i];
  32.                 }
  33.                 if(numbers[i] > deck_positive.length){
  34.                     deck_positive.length = numbers[i]+10;
  35.                 }
  36.                 deck_positive[numbers[i]] = letter;
  37.             }
  38.             else{
  39.                 if(-numbers[i] < minNeg){
  40.                     minNeg = -numbers[i];
  41.                 }
  42.                 if(-numbers[i] > maxNeg){
  43.                     maxNeg = -numbers[i];
  44.                 }
  45.                 if(-numbers[i] > deck_negative.length){
  46.                     deck_negative.length = -numbers[i]+ 10;
  47.                 }
  48.                 deck_negative[-numbers[i]] = letter;
  49.             }
  50.         }
  51.     }
  52.  
  53.     auto app = appender(deck);
  54.     int a = 0;
  55.     try{
  56.         deck_negative = deck_negative[minNeg..maxNeg+1];
  57.         foreach(int i, char c; deck_negative){
  58.             if(c != ' '){
  59.                 //app.put(c);
  60.                 deck[a] = c;
  61.                 a++;
  62.             }
  63.         }
  64.     }
  65.     catch{
  66.         ;
  67.     }
  68.     try{
  69.         deck_positive = deck_positive[minPos..maxPos+1];
  70.         foreach(int i, char c; deck_positive){
  71.             if(c != ' '){
  72.                 //app.put(c);
  73.                 deck[a] = c;
  74.                 a++;
  75.             }
  76.         }
  77.     }
  78.     catch{;}
  79.  
  80.     //deck.length = size_negative+size;
  81.     foreach(int i, char c; deck){
  82.         if(i > 0){
  83.             write(c);
  84.         }
  85.     }
  86. }
Advertisement
Add Comment
Please, Sign In to add comment