10×10 のマス目がある。
      
      マス目にそって、矩形が3つある。
      
      ちょうど2つの矩形に含まれているマス目の数を計算せよ。
      
      例えば右図の黒丸(●)が、「ちょうど2つの矩形に含まれているマス目」である。
    
      入力は
      
      5,1-7,9/3,2-8,6/0,5-9,5
      
      こんな感じ。
      
      スラッシュ区切りで3つの矩形が並んでいる。
      
      各矩形は、左上のマスの座標と右下のマスの座標をハイフンでつないだもの。
      
      左上のマスも右下のマスも、矩形の内側になることに注意。
      
      座標はコンマ区切りで x, y の順。
    
出力は簡単。2つの矩形に含まれているマス目の数を 10進数で出せば良い。
      先ほどの入力の場合、
      
      15
      
      と出力すればよい。
    
| # | 入力 | 期待 | 状況へのリンク | 
|---|---|---|---|
| 0 | 
          5,1-7,9/3,2-8,6/0,5-9,5
         | 
        
          15
         | 
        リンク | 
| 1 | 
          0,0-9,9/0,0-9,9/0,0-9,9
         | 
        
          0
         | 
        リンク | 
| 2 | 
          0,0-9,9/0,0-0,9/1,0-9,9
         | 
        
          100
         | 
        リンク | 
| 3 | 
          2,5-7,6/0,5-7,7/2,0-8,6
         | 
        
          0
         | 
        リンク | 
| 4 | 
          1,9-4,9/4,9-7,9/0,3-7,4
         | 
        
          1
         | 
        リンク | 
| 5 | 
          6,1-6,9/5,0-7,4/5,1-7,2
         | 
        
          6
         | 
        リンク | 
| 6 | 
          4,0-9,8/5,1-6,8/0,2-9,7
         | 
        
          28
         | 
        リンク | 
| 7 | 
          2,8-8,9/7,9-8,9/8,3-8,9
         | 
        
          2
         | 
        リンク | 
| 8 | 
          3,3-9,4/0,1-8,4/1,2-8,9
         | 
        
          12
         | 
        リンク | 
| 9 | 
          2,1-8,3/0,1-3,7/8,3-8,4
         | 
        
          7
         | 
        リンク | 
| 10 | 
          5,4-6,9/0,0-6,0/5,3-9,8
         | 
        
          10
         | 
        リンク | 
| 11 | 
          1,1-9,7/1,1-3,8/3,8-7,9
         | 
        
          22
         | 
        リンク | 
| 12 | 
          2,4-6,7/3,2-7,8/1,0-9,4
         | 
        
          24
         | 
        リンク | 
| 13 | 
          0,2-1,5/8,1-8,3/1,8-6,8
         | 
        
          0
         | 
        リンク | 
| 14 | 
          5,2-9,5/9,1-9,2/8,0-8,6
         | 
        
          5
         | 
        リンク | 
| 15 | 
          5,0-6,4/2,1-6,4/3,8-3,9
         | 
        
          8
         | 
        リンク | 
| 16 | 
          0,4-6,9/4,1-6,9/7,6-9,7
         | 
        
          18
         | 
        リンク | 
| 17 | 
          0,0-5,5/0,1-2,8/5,3-9,4
         | 
        
          17
         | 
        リンク | 
| 18 | 
          0,2-5,6/5,6-8,7/0,1-2,6
         | 
        
          16
         | 
        リンク | 
| 19 | 
          7,2-8,4/1,0-6,8/1,3-7,6
         | 
        
          26
         | 
        リンク | 
| 20 | 
          4,3-9,3/0,0-6,5/0,0-4,8
         | 
        
          31
         | 
        リンク | 
| 21 | 
          3,4-4,6/2,2-4,8/2,0-8,4
         | 
        
          11
         | 
        リンク | 
| 22 | 
          1,2-6,5/0,5-4,7/2,8-2,9
         | 
        
          4
         | 
        リンク | 
| 23 | 
          4,1-7,5/2,1-9,9/1,7-2,9
         | 
        
          23
         | 
        リンク | 
| 24 | 
          1,6-5,6/0,3-5,7/0,2-2,6
         | 
        
          13
         | 
        リンク | 
| 25 | 
          1,3-3,4/1,4-3,4/9,2-9,9
         | 
        
          3
         | 
        リンク | 
| 26 | 
          6,3-7,6/2,2-2,3/1,3-9,8
         | 
        
          9
         | 
        リンク | 
| 27 | 
          2,2-9,7/1,8-9,8/2,2-8,9
         | 
        
          49
         | 
        リンク | 
| 28 | 
          1,2-6,9/7,6-9,9/4,3-9,9
         | 
        
          33
         | 
        リンク | 
| 29 | 
          6,0-7,5/0,4-3,8/1,4-5,8
         | 
        
          15
         | 
        リンク | 
| 30 | 
          2,0-9,7/0,5-3,8/5,1-7,7
         | 
        
          27
         | 
        リンク | 
| 31 | 
          1,2-8,7/3,1-4,3/2,3-5,8
         | 
        
          20
         | 
        リンク | 
| 32 | 
          1,0-7,7/0,1-5,4/0,0-2,3
         | 
        
          19
         | 
        リンク | 
| 33 | 
          2,0-3,7/1,1-3,7/5,3-5,9
         | 
        
          14
         | 
        リンク | 
| 34 | 
          7,2-9,8/1,0-6,8/0,2-9,9
         | 
        
          63
         | 
        リンク | 
| 35 | 
          1,1-5,3/0,3-8,7/2,3-8,7
         | 
        
          32
         | 
        リンク | 
| 36 | 
          3,4-6,6/1,0-9,1/4,0-9,9
         | 
        
          21
         | 
        リンク | 
| 37 | 
          0,0-4,7/0,5-5,9/0,2-4,5
         | 
        
          25
         | 
        リンク | 
| 38 | 
          1,1-9,9/2,2-7,4/2,4-7,7
         | 
        
          30
         | 
        リンク | 
| 39 | 
          3,2-9,9/2,0-6,6/0,5-8,9
         | 
        
          36
         | 
        リンク | 
| 40 | 
          0,1-8,8/0,5-9,8/2,3-2,4
         | 
        
          38
         | 
        リンク | 
| 41 | 
          0,0-8,6/4,3-9,9/7,1-9,9
         | 
        
          29
         | 
        リンク | 
| 42 | 
          0,0-8,8/2,4-9,8/0,1-9,2
         | 
        
          53
         | 
        リンク | 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int solve_impl( char const * src )
{
  // NOT_IMPLEMENTED
  return 0;
}
// caller should free return value memory.
char const * solve( char const * src )
{
  char buffer[ 20 ] = {0};
  sprintf( buffer, "%d", solve_impl( src ) );
  return strdup(buffer);
}
struct result
{
  int success;
  int testcount;
};
void test_( struct result * r, char const * src, char const * expected )
{
  char const * actual = solve( src );
  int okay = 0==strcmp(actual, expected );
  if ( okay ){
    ++r->success;
  }
  ++r->testcount;
  printf( "%s : %s->%s(%s)\n", (okay?"ok" : "**NG**"), src, actual, expected );
  free( (void*)actual );
}
int main(void)
{
  struct result r={0};
  #define test(src, expected) test_( &r, src, expected )
/*0*/ test( "5,1-7,9/3,2-8,6/0,5-9,5", "15" );
/*1*/ test( "0,0-9,9/0,0-9,9/0,0-9,9", "0" );
/*2*/ test( "0,0-9,9/0,0-0,9/1,0-9,9", "100" );
/*3*/ test( "2,5-7,6/0,5-7,7/2,0-8,6", "0" );
/*4*/ test( "1,9-4,9/4,9-7,9/0,3-7,4", "1" );
/*5*/ test( "6,1-6,9/5,0-7,4/5,1-7,2", "6" );
/*6*/ test( "4,0-9,8/5,1-6,8/0,2-9,7", "28" );
/*7*/ test( "2,8-8,9/7,9-8,9/8,3-8,9", "2" );
/*8*/ test( "3,3-9,4/0,1-8,4/1,2-8,9", "12" );
/*9*/ test( "2,1-8,3/0,1-3,7/8,3-8,4", "7" );
/*10*/ test( "5,4-6,9/0,0-6,0/5,3-9,8", "10" );
/*11*/ test( "1,1-9,7/1,1-3,8/3,8-7,9", "22" );
/*12*/ test( "2,4-6,7/3,2-7,8/1,0-9,4", "24" );
/*13*/ test( "0,2-1,5/8,1-8,3/1,8-6,8", "0" );
/*14*/ test( "5,2-9,5/9,1-9,2/8,0-8,6", "5" );
/*15*/ test( "5,0-6,4/2,1-6,4/3,8-3,9", "8" );
/*16*/ test( "0,4-6,9/4,1-6,9/7,6-9,7", "18" );
/*17*/ test( "0,0-5,5/0,1-2,8/5,3-9,4", "17" );
/*18*/ test( "0,2-5,6/5,6-8,7/0,1-2,6", "16" );
/*19*/ test( "7,2-8,4/1,0-6,8/1,3-7,6", "26" );
/*20*/ test( "4,3-9,3/0,0-6,5/0,0-4,8", "31" );
/*21*/ test( "3,4-4,6/2,2-4,8/2,0-8,4", "11" );
/*22*/ test( "1,2-6,5/0,5-4,7/2,8-2,9", "4" );
/*23*/ test( "4,1-7,5/2,1-9,9/1,7-2,9", "23" );
/*24*/ test( "1,6-5,6/0,3-5,7/0,2-2,6", "13" );
/*25*/ test( "1,3-3,4/1,4-3,4/9,2-9,9", "3" );
/*26*/ test( "6,3-7,6/2,2-2,3/1,3-9,8", "9" );
/*27*/ test( "2,2-9,7/1,8-9,8/2,2-8,9", "49" );
/*28*/ test( "1,2-6,9/7,6-9,9/4,3-9,9", "33" );
/*29*/ test( "6,0-7,5/0,4-3,8/1,4-5,8", "15" );
/*30*/ test( "2,0-9,7/0,5-3,8/5,1-7,7", "27" );
/*31*/ test( "1,2-8,7/3,1-4,3/2,3-5,8", "20" );
/*32*/ test( "1,0-7,7/0,1-5,4/0,0-2,3", "19" );
/*33*/ test( "2,0-3,7/1,1-3,7/5,3-5,9", "14" );
/*34*/ test( "7,2-9,8/1,0-6,8/0,2-9,9", "63" );
/*35*/ test( "1,1-5,3/0,3-8,7/2,3-8,7", "32" );
/*36*/ test( "3,4-6,6/1,0-9,1/4,0-9,9", "21" );
/*37*/ test( "0,0-4,7/0,5-5,9/0,2-4,5", "25" );
/*38*/ test( "1,1-9,9/2,2-7,4/2,4-7,7", "30" );
/*39*/ test( "3,2-9,9/2,0-6,6/0,5-8,9", "36" );
/*40*/ test( "0,1-8,8/0,5-9,8/2,3-2,4", "38" );
/*41*/ test( "0,0-8,6/4,3-9,9/7,1-9,9", "29" );
/*42*/ test( "0,0-8,8/2,4-9,8/0,1-9,2", "53" );
  #undef test
  printf( "%d / %d\n", r.success, r.testcount );
  return r.testcount==r.success ? 0 : 1;
}