İki sayı eklemek için en uzun kod [kapalı]


38

Görev:

Biliyorum ki hepimiz kısa rakamları kullanarak iki rakam ekleyebiliriz +. Göreviniz, iki giriş numarası eklemek için en uzun kodu oluşturmaktır.

Kurallar:

  • Kodun tümü konuyla ilgili olmalıdır (uzunluk eklemek için kod eklenmeyen kodla doldurmayın)
  • Sayı karakter cinsindendir, ancak sekmeleri, boşlukları veya yeni satırları saymaz.
  • Fazladan uzun değişken isimleri kullanmayın.
  • Bu , bu yüzden en uzun cevap kazanır!

2
Giriş numaralarının aralığı nedir (maksimum ve minimum)? Programın tamsayılarla mı yoksa yüzerlerle mi çalışması bekleniyor? Negatif sayılar eklemesi bekleniyor mu? Belirli bir giriş formatı var mı? (Örneğin, sayı sistemi? Yani ondalık / ikili vb.)
ace_HongKongIndependence

3
Sayılır mı a + b - b + b...? Sonsuz olurdu
phuclv

1
İki sayı eklemek için en uzun algoritma (oldukça önemsiz) kesin olarak sınırsızdır. Bu problem için kazanan, sadece en uzun olandan (en zor olandan değil) en yaratıcı ve en doyurucu (bir zorluktur) olmalıdır.
J ...

Biz saymak gerekmiyor herhangi boşluk ve yeni satır veya yalnızca işlev için program için gerekli olmayanlar? İkincisinin daha akıcı olacağını söyleyebilirim.
nyuszika7h

1
@ LưuVĩnhPhúc Bunu sonsuz yaparsanız, sanırım (Grandi'nin serisine benzer) ile eşit a + b/2değildir . a + b
Tim S.

Yanıtlar:


6

C ++ 3x10 DAHA FAZLASI ^ + 618 (BEYAZ Boşluk, sekme veya satırsonu hariç)

Bu kod mantıktan daha fazla matematik aldı! bayt sayma sayısında

KISA KOD

#include<iostream>
#include<conio.h>
long double sumofxandy(long double,long double);
int main()
{
    long double x,y;
    cin>>x>>y;
    sumofxandy(x,y);
    getch();
    return 0;
}
long double sumofxandy(long double x,long double y)
{
    ...
    ...
    ...
    if(x==0)if(y==-1)return -1;
    if(x==0)if(y==0)return 0;
    if(x==0)if(y==1)return 1;
    ...
    ...
    ...
    ...
    if(x==1)if(y==0)return 1;
    if(x==1)if(y==1)return 2;
    ...so....on.
}  

ÇIKTI

Gerçekten mi ? ciddi anlamda! çıktı görmek ister misin? bu kodun yazılması haftalar, derlenmesi aylar alır!


4
Çalmak .. err demek kuantum bilgisayar
MisterBla

@RichardA BTW grev etiketi '<strike>' ve <s> değil
Mukul Kumar

1
@TheDoctor yeni (1 gün - 2 aylık) kullanıcılar asla birinci sıraya bakmadılar ve başka bir soruya cevap verdiler
Mukul Kumar

1
Kodunuzda bir hata var. Ne olursa xveya ybir tamsayı değil mi?
Cole Johnson,

1
Bu cevabın sadece uzun kullanılması nedeniyle kabul edilmesine üzülmekle birlikte, fikir, aşağıdaki en iyi oy alan Komintern'in cevabında zaten mevcut.
justhalf

148

C - 2,739,341,494,945,868,415,002 (boşluk dahil değil)

Kazanmak için kaba kuvvet. Yalnızca tamsayıları işler ve taşma davranışını korur. İşte kodun bir parçası:

int addnumbers(int x, int y)
{
    if (x == -2147483648 && y == -2147483648) return 0;
    if (x == -2147483648 && y == -2147483647) return 1;
    if (x == -2147483648 && y == -2147483646) return 2;
    if (x == -2147483648 && y == -2147483645) return 3;
    if (x == -2147483648 && y == -2147483644) return 4;
    if (x == -2147483648 && y == -2147483643) return 5;
    if (x == -2147483648 && y == -2147483642) return 6;
    if (x == -2147483648 && y == -2147483641) return 7;
    if (x == -2147483648 && y == -2147483640) return 8;
    if (x == -2147483648 && y == -2147483639) return 9;
    if (x == -2147483648 && y == -2147483638) return 10;
    if (x == -2147483648 && y == -2147483637) return 11;
    if (x == -2147483648 && y == -2147483636) return 12;
    if (x == -2147483648 && y == -2147483635) return 13;
    if (x == -2147483648 && y == -2147483634) return 14;
    if (x == -2147483648 && y == -2147483633) return 15;
    if (x == -2147483648 && y == -2147483632) return 16;
    if (x == -2147483648 && y == -2147483631) return 17;
    if (x == -2147483648 && y == -2147483630) return 18;
    if (x == -2147483648 && y == -2147483629) return 19;
    if (x == -2147483648 && y == -2147483628) return 20;
    if (x == -2147483648 && y == -2147483627) return 21;
    if (x == -2147483648 && y == -2147483626) return 22;
    if (x == -2147483648 && y == -2147483625) return 23;
    if (x == -2147483648 && y == -2147483624) return 24;
    if (x == -2147483648 && y == -2147483623) return 25;
    if (x == -2147483648 && y == -2147483622) return 26;
    if (x == -2147483648 && y == -2147483621) return 27;
    if (x == -2147483648 && y == -2147483620) return 28;
    if (x == -2147483648 && y == -2147483619) return 29;
    if (x == -2147483648 && y == -2147483618) return 30;
    if (x == -2147483648 && y == -2147483617) return 31;
    if (x == -2147483648 && y == -2147483616) return 32;
    if (x == -2147483648 && y == -2147483615) return 33;
    if (x == -2147483648 && y == -2147483614) return 34;
    if (x == -2147483648 && y == -2147483613) return 35;
    if (x == -2147483648 && y == -2147483612) return 36;
    if (x == -2147483648 && y == -2147483611) return 37;
    if (x == -2147483648 && y == -2147483610) return 38;
    if (x == -2147483648 && y == -2147483609) return 39;
    if (x == -2147483648 && y == -2147483608) return 40;
    if (x == -2147483648 && y == -2147483607) return 41;
    if (x == -2147483648 && y == -2147483606) return 42;
    if (x == -2147483648 && y == -2147483605) return 43;
    if (x == -2147483648 && y == -2147483604) return 44;
    if (x == -2147483648 && y == -2147483603) return 45;
    if (x == -2147483648 && y == -2147483602) return 46;
    if (x == -2147483648 && y == -2147483601) return 47;
    if (x == -2147483648 && y == -2147483600) return 48;
    if (x == -2147483648 && y == -2147483599) return 49;
    if (x == -2147483648 && y == -2147483598) return 50;
    if (x == -2147483648 && y == -2147483597) return 51;
    if (x == -2147483648 && y == -2147483596) return 52;
    if (x == -2147483648 && y == -2147483595) return 53;
    if (x == -2147483648 && y == -2147483594) return 54;
    if (x == -2147483648 && y == -2147483593) return 55;
    if (x == -2147483648 && y == -2147483592) return 56;
    if (x == -2147483648 && y == -2147483591) return 57;
    if (x == -2147483648 && y == -2147483590) return 58;
    if (x == -2147483648 && y == -2147483589) return 59;
    if (x == -2147483648 && y == -2147483588) return 60;
    if (x == -2147483648 && y == -2147483587) return 61;
    if (x == -2147483648 && y == -2147483586) return 62;
    if (x == -2147483648 && y == -2147483585) return 63;
    if (x == -2147483648 && y == -2147483584) return 64;
    if (x == -2147483648 && y == -2147483583) return 65;
    if (x == -2147483648 && y == -2147483582) return 66;
    if (x == -2147483648 && y == -2147483581) return 67;
    if (x == -2147483648 && y == -2147483580) return 68;
    if (x == -2147483648 && y == -2147483579) return 69;
    if (x == -2147483648 && y == -2147483578) return 70;
    if (x == -2147483648 && y == -2147483577) return 71;
    if (x == -2147483648 && y == -2147483576) return 72;
    if (x == -2147483648 && y == -2147483575) return 73;
    if (x == -2147483648 && y == -2147483574) return 74;
    if (x == -2147483648 && y == -2147483573) return 75;
    if (x == -2147483648 && y == -2147483572) return 76;
    if (x == -2147483648 && y == -2147483571) return 77;
    if (x == -2147483648 && y == -2147483570) return 78;
    if (x == -2147483648 && y == -2147483569) return 79;
    if (x == -2147483648 && y == -2147483568) return 80;
    if (x == -2147483648 && y == -2147483567) return 81;
    if (x == -2147483648 && y == -2147483566) return 82;
    if (x == -2147483648 && y == -2147483565) return 83;
    if (x == -2147483648 && y == -2147483564) return 84;
    if (x == -2147483648 && y == -2147483563) return 85;
    if (x == -2147483648 && y == -2147483562) return 86;
    if (x == -2147483648 && y == -2147483561) return 87;
    if (x == -2147483648 && y == -2147483560) return 88;
    if (x == -2147483648 && y == -2147483559) return 89;
    if (x == -2147483648 && y == -2147483558) return 90;
    if (x == -2147483648 && y == -2147483557) return 91;
    if (x == -2147483648 && y == -2147483556) return 92;
    if (x == -2147483648 && y == -2147483555) return 93;
    if (x == -2147483648 && y == -2147483554) return 94;
    if (x == -2147483648 && y == -2147483553) return 95;
    if (x == -2147483648 && y == -2147483552) return 96;
    if (x == -2147483648 && y == -2147483551) return 97;
    if (x == -2147483648 && y == -2147483550) return 98;
    if (x == -2147483648 && y == -2147483549) return 99;
    if (x == -2147483648 && y == -2147483548) return 100;
    //etc...
}

Bu, ya buraya ya da Pastebin'e yüklemek için büyük bir yoldur, bu nedenle işte işlev için kaynak kodunu üretecek bir program (çıktıyı bir dosyaya yönlendirin - sürücü alanına sahip olduğunuz varsayılarak):

#include <stdio.h>

int main()
{
   int x, y;
   printf("int addnumbers(int x, int y)\n{\n");
   for (x=-2147483648;x<2147483648;x++) 
   {
      for (y=-2147483648;y<2147483648;y++) 
      {
         printf("\tif (x == %d && y == %d) return %d;\n", x, y, x+y);
      }
   }
   printf("}\n");
}

Fonksiyonun ne kadar süreceği konusunda titrediyorum ...

EDIT: Kesin sayımı vermek için skoru yeniden hesapla (doğru olmalı). Beyaz boşluğu kaldırdığımda 10 m² büyüklüğünde golf oynadığımı düşünmeyi tercih ediyorum.


52
Beni kodun pasajında ​​tuttun .
Dennis,

23
Ne zaman biri test odaklı bir gelişmeyi "yeni testin geçmesi için minimum olanı yapın" olarak tanımladığında, bu tür bir kod her zaman aklına gelir ...
Izkata

22
Kullanırsan bunu daha uzun süre yapabileceğini biliyorsun else if.
Radiodef

40
Ayrıca, tamsayıların her biri için ayrı adlandırılmış sabitler de tanımlayabilirsiniz ( LEFT_SIDE_NEG_2147483648 = -2147483648) ... kodlanmış değerler yerine açıklayıcı adlar kullanmak iyi bir uygulamadır.
Jason C

35
Her kod satırı için size ödeme yaptılar mı?
Pieter Witvoet

20

C ++ 3573

3573, sonra sıkıcı olmaya başlamıştı, ama daha fazla soyutlama eklemeye devam edebilirim.

#include <iostream>
#include <vector>

class Number
{
public:
   typedef int Representation;
   class InvalidNumber
   {
   };

   Number();
   Number( const InvalidNumber& invalid );
   explicit Number( const Representation& v );
   friend Number operator + ( const Number& rop, const Number& lop );

   bool operator == ( const Number& v );
   bool operator != ( const Number& v );
   bool operator == ( const Representation& v );
   bool operator != ( const Representation& v );

   bool IsValid() const;
   Representation GetRepresentation() const;
private:
   Representation mValue;
   bool mValid;
};

Number::Number()
   : mValue { 0 },
     mValid { false }
{
}

Number::Number( const Number::InvalidNumber& invalid )
   : mValue { 0 },
     mValid { false }
{
}

Number::Number( const Representation& v )
   : mValue { v },
     mValid { true }
{
}

bool Number::IsValid() const
{
   return mValid;
}

Number::Representation Number::GetRepresentation() const
{
   return mValue;
}

bool Number::operator == ( const Number& v )
{
   return ( v.mValid == mValid ) && ( v.mValue == mValue );
}

bool Number::operator != ( const Number& v )
{
   return ( v.mValid != mValid ) || ( v.mValue != mValue );
}

bool Number::operator == ( const Number::Representation& v )
{
   return ( mValid ) && ( v == mValue );
}

bool Number::operator != ( const Number::Representation& v )
{
   return ( !mValid ) || ( v != mValue );
}

Number operator + ( const Number& rop, const Number& lop )
{
   if( rop.mValid && lop.mValid )
   {
      return Number { rop.mValue + lop.mValue };
   }
   else
   {
      return Number { Number::InvalidNumber() };
   }
}

Number NumberParser( const char* numberString )
{
   const char* p = numberString;
   while( *p != '\0' )
   {
      if( !isdigit( *p ) )
      {
         return Number { Number::InvalidNumber() };
      }
      ++p;
   }
   Number::Representation value = atoi( numberString );
   return Number { value };
}

std::ostream& operator<< ( std::ostream& os, const Number& num )
{
   if( num.IsValid() )
   {
      os << num.GetRepresentation();
   }
   else
   {
      os << "Invalid number";
   }
   return os;
}

class SimpleOperation
{
public:
   typedef Number Result_t;
   typedef Number Parameter_t;
   virtual ~SimpleOperation();
   virtual Result_t operator()( const Parameter_t&, const Parameter_t& ) = 0;
};

SimpleOperation::~SimpleOperation()
{

}

class AssociativeOperation : public SimpleOperation
{
};

class SimpleSum : public AssociativeOperation
{
public:
   virtual Result_t operator()( const Parameter_t&, const Parameter_t& );
};

SimpleSum::Result_t SimpleSum::operator()( const Parameter_t& a, const Parameter_t& b )
{
   Result_t res = a + b;
   return res;
}

class PackOperation
{
public:
   AssociativeOperation::Result_t operator()( const std::vector<AssociativeOperation::Parameter_t>& );
   virtual AssociativeOperation& getOperation() = 0;
};

AssociativeOperation::Result_t PackOperation::operator()( const std::vector<AssociativeOperation::Parameter_t>& parameters )
{
   AssociativeOperation& operation = getOperation();
   AssociativeOperation::Result_t tempResult = AssociativeOperation::Result_t { 0 };

   for( auto param : parameters )
   {
      tempResult = operation( tempResult, param );
   }
   return tempResult;
}

class PackSum : public PackOperation
{
public:
   virtual AssociativeOperation& getOperation();
private:
   SimpleSum mSum;
};

AssociativeOperation& PackSum::getOperation()
{
   return mSum;
}

void print_usage()
{
   std::cout << "Sum operator1 operator2\n";
   std::cout << "print the sum of the operator \n";
}

void print_parsingError( int argIndex )
{
   std::cout << "Error while parsing argument " << argIndex << "\n";
   std::cout << "Aborting...\n";
}

void print_result( Number res )
{
   std::cout << res << "\n";
}

int main( int argc, char* argv[] )
{
   if( argc < 3 )
   {
      print_usage();
      return 1;
   }
   std::vector<Number> addends;
   int opIdx = 1;
   while( opIdx < argc )
   {
      Number n = NumberParser( argv[opIdx] );
      if( n == Number::InvalidNumber() )
      {
         print_parsingError( opIdx );
         return 1;
      }
      addends.push_back( n );
      opIdx++;
   }
   PackOperation* op = new PackSum();
   Number result = ( *op )( addends );
   delete op;
   print_result( result );
   return 0;
}

7
Korkunç olan şey, bu sıradan işler için şirketimde gördüğüm koda benziyor = d.
Serdalis

12

Ruby, 29048 (gerektiği kadar yüksek olabilir, ancak yazılar için karakter sınırını aşmam gerekiyordu)

require 'zlib'

# gzip deflated data
data = "x\x9C\x01\xA3'\\\xD8x\x9C\x01\x98'g\xD8x\x9C\x01\x8D'r\xD8x\x9C\x01\x82'}\xD8x\x9C\x01w'\x88\xD8x\x9C\x01l'\x93\xD8x\x9C\x01a'\x9E\xD8x\x9C\x01V'\xA9\xD8x\x9C\x01K'\xB4\xD8x\x9C\x01@'\xBF\xD8x\x9C\x015'\xCA\xD8x\x9C\x01*'\xD5\xD8x\x9C\x01\x1F'\xE0\xD8x\x9C\x01\x14'\xEB\xD8x\x9C\x01\t'\xF6\xD8x\x9C\x15\xD0S@%\x8A\x02@\xD1\\\x93m\xE3d\xDB\xB6m\xDB\xB6\xED\x9Al\xDB\x93m\xDB\xB6m\xFB\xBD\xFB\xB5\xBE\xF7\xF6\xC8\x06~\x05@\xAD{d\x03_\x01P\xFEc\x1F\x80\xFF\x1F+\x00\xCA\xFF\x98\x04\xB0\xFCG\x1F\x80\xFF?\x9A\x01R\xFFQ\tP\xFD\x8F<\x80\xC1\x7F$\x03\xAC\xFF#\x12\xE0\xF6\x1F~\x80\xC0\xFFp\x06\xC4\xFC\x87\x05 \xED?t\x01\x85\xFF\xA1\x04\xA8\xF9?h+\xC6\xC2dQ \x02\xF36r\xE96\x9B-\xB6\x9B+&\x9B-\xD7I\xB6\x9B\xE91I\x9C\xEB\xB5\xAF7e\xCF(//S\xE0h\x85g\xBBwS\xE0\xA6e\xE9\x1F\b\xD8Q)\xBF\x84\xC5k\x9F\b.Q\xD1\xBF\x01%\x1E?\xF1\xF6Ns\xD3\xBF\x8F\x02qw\x04\xE6G\xBD\xBF\xA0\x12r\x0F\x04\xFE\xE3\xE7\xBF\xC6\xD9\xD9\x97\xFC^c\xA2\xBFE\t:\xFB\xFC\x13\xE3\xCD\xBF$\xE1[W\xFC\xC8\xE3x\xBF\b#\xE5\x15\x88~4\x98cA\xEF+36Y\xDFj\x9B)\xEF3%\x10\xDD\xE7b\xBBa\x9F.Y\xDF\x86\xB7\xD3\xE4\xAD\xFDaH\x14\x1F\xF9\xD7\xBF\x8E\x02\xF6_\x8Ci\xBD\xDC\xD7\xE2\xF9\x1F?3\xF9H\xFE\xD0\x7F\xD5\xEC\xDE\x7Fh9\xB8\x10\xE7\xCAI_\x1F\xB3|\x9E\xF4\x81*\x91wN\xED3\xE7\xCB\x80\f\x8Fs\xEBXun\x8E_\xF3\xEC\xA0\xC7\xEB\xBC\x1CN\xF7\b\xF0\x1E\xA2f\x81j,qP\x9EFx\x0FoN\xCFQ\xC2\xB98\xB4\xA0a\x95\v#\xC8\xDB\xE3\xC9;\xDF\tL\xCCK\xC9rOKl\x8E\xBDs\xF8\xB6\x18\xA0\xADn\x9E\xE9\xAE\xFE\xF5\xB4;\xEA\xBF\x87\xB2\xF4\xD6=\xDC\xDEl\xBA\x10\x8B\xED\x10\xF8\\7\xDE\x9A\x90p\xE5\xD1\xF3/\xCF\xAD\x96\x13\xC9\x15\xCB\xC3\x84U\xCB#\x19\xE2\x0E\xDB\x83wt\xB8\xFF\x99[c\xDD%(y\xCB\xDB#\xAC\x956\xE1l\xE6\xCF\xDB\xFF\xF4\xF1\x8A\xC8\x03\xCA\\e\x91L\xCD\a@\x87u\xAD\x1EZZ\xB2\xFEB\x999\x97l8\xEB\xC4q.\xF3\xC5\x19\x1Fk\xD6\x95\xC17:\xEAI \x93?\x91(\xEDG\x0E^\x0EW\xA4\xF0\xB4\xFD\x9D\xAC\x8B\x1A\x9Fqw\x8B)J\xF2\xEB0\xE1\x01\xD0\xC4\x04\x13@/M\xEB\x13*$w?\x95fmS\xBF]>\xB7\xD9\xA4\xF8[\x1E?\xF0\xE7m|\x89\x1C\xD0-\xE7\xF7h\xDF\xC3\xC0\xF0\xC4\x12\x06\xF9\xF0\xCD\xDD\xE9\xFB\x94\x1A\x98:\x98\xD6\xAF\xC6YH\x1A2\xF0\xF2\xF9\r\xFE\x94O\xEEtm\x8F\xB7\x92xL\x88\xEA\xF9\x1CM\xA5\x89\x8D\xC4<9\xA1\x95\tJ\xE4\xDA\xF2U\xE3\x84uO\xD3\x84\xC6CN\x87\xFC{a\x99\xF9\x9D|g\xD31\xD8+*\x16\xF2YD!F\xEC\x8D[\xFA\xD3\xBE.Rs\xAD\xBC\x05\x81T\x11\x1FLJn]H\ev\xFAvB?\x99S7\x9Ad8X\xC0s\x93\xF6\x12\xB4\x8C\\\xEE)\x90\"Y`\xE5\xC7\xE6\xA4\xF1\xC1\xB0\xFE\x128V\x1A6\xE9\\\xDF\xBFVM\xAEa(\x8E\xEC .\xC4^)$B~^\xAD\x9A2\x8E\x84\x05J\x04\xCF\xA8\xD2\x82\xB4-\x06RvfU? \x02j\xF0\xDE\e\xCC\xD3\x1FW\xAA\xF2\xD6\xCD\xB21a\x8D\xCE\xC7\xAC\xC6eH\xA2\xF6E\x97\xE9\x1D\x1F\x1A2\x85\xFF\xC7\xD5'\xA2\xDD\xCE\xEBk\x11l\x93\xB1\a)/\xA1i\xBF\x9E\xE3\x82m\xF8|\x9E\x13Y#\xE5\x9C\xED0p\f\xC3\x97_\xBEB\xFE\xB0\xE4\xF0\xC4\xF5bu\x84n\x16\xF2\x12\xBE\xFE\x05<\xDD\xB5\x8E\xDE\xCAq\e\xB6\x17\xDE$\x1F\xD4V8Le\xDC\xDB\xC2\xAB\xF1\x03\xCE\xEF\xA22\xDD\xE3cxt\xB8\xD9\x97*d{\x8F\xC7\xF0\x9F\xF5\xB7L\x8D\xED\t V\x1D\b\xABz\xF2\x82\xFB\xFE\xE0~/z\x7F\xCA\xD2\xF2\x1F\x01\xEDD\x9CM\xDE4t\xFE|\xAF\xE3\xC8\x90E\xB8\\\xAC\xFDs\xFB\xDF:\xF0h\xE5K\x18\xD3\x14\x80\xDC\xB8we\xA2!\x83\r\xF71\x9C\x82\xA9K\x84\xB0\x98b\x13\x85\xAF\xD4\x10\xF0\xC0\x05\x94\t\xA1j\xF4v\xA7\x7F\xD8\x89\x18\aj\xAD<Ymvv\xC7\xA9L\xC7\xE2\x93\xFE}F&\n\xDD\bE\x9B\xDC^jW/g\xDA\xF5\xA6\x87\v\xE3\e`d\xC7\x9F\xF1\v\xCA\x9As\xA0\xB3\r\xDCt\xC1\x9AL\xEDU\xCF\x03\xAD\x181\x18|?\x16\xF2\xB7\xCD\xC1x=B\xB4'\xD0E\xE8\x00\xDA\xC7F\x14\xD1H\x13%\xC18\x16\x82\xF8I\x92\xE5\xE9\aw\xFD\x93$\xB1\xB5\x98d\xD4\xBF\x9A<\x1F\xC9\x0F\xFD\xAB\x82\xF5\x0E\x92i&\bQ\xAA\x9Eb\xEDg\vF6\xC6\xC0i\xDBF\xE0\x06[U\xA8\x82\xA8\x17\xF8\xDA\xA0\xB9\xED}J\xF0>\x91\xEB\x0F\x8F\xC3\x96\xA9\xF0\x02\x9C\xA1\x1F]\xFC\xE2X\x11)\xDF\xC5F\xC1*\xD6Y\xEB\x05F\xD7VI\xCF\x1D\xBD\x1E\x13\x8EN~t\xD8(\x81\xC2\xCC\xE97\xC3\x91\xAC\x10\x18\r\xA8\x9D\xC9S\xD4\x81\"d\x81\xF9c\x8A\xF3\xDAe\xE6~\xEFan\x03\xBEQ\xB2\xFD\x9A\xFC\x13\xDCkz\xB8\xBDa\xAD\x15\xAC9\x9C>\xDC\x00\xD1\xE6\xAB\xC7\xC4\x0F\x1A\x9B\x9E:\xC3\xE2\x14\xF7\xC8hz\xC0\x1CT\x06\xC3=\xCD}j\xE7\xDD\x90\xF2\xCD!\x9E\x95\x8A6\x01\xE2\xBAfw<\xD3I\x88\x80\x80\xD8\xA8\xD3\x96\x91o\nFY\xDB\eg\x84\xB5\x0E\xEE\x04\b-\xA6\e\x05\xE5\xF1\x99\x92w\x1A\\|\xE8\xE8K\xD1\xCD\x99\xC69\xDC\x87\x16\xC4\x12uJ\x87b\x80\xDF&}\xF3\xEF\x83\xBA\x8F\x95\x9A\xCDD\x01\xA7\xC9\xB3u\xE5$\f\x05\xBD\x94\xD3\x90\x0FX\xDC\xED\xB6\x8A*9\xB7\xCE?\x0E\xDBl\xC6J\xFC\xBD-\rna\x94\x0E\x18*U\xF5\xC9\a\x197\x9A\xD9\xB9Q+,'\xDC\x1A\xBD\x83\x9DV\t\x7Fak\xBE~'\xBDb\xDAL*\x98\xF6\xB6Xbpvx\xD8\xCC\x12\xB6\xFB\xBDG\x18\xB5qE:q\xD8\xB4\xE0\x04\xBB\xAB\"\x1AF\xAB;\xC7_\xE5\x8Cg\xAFQ3\xACN\x91\f<\xAF\xE9Zh\"7\xA3N[Q93\xBA\xEFp\xDDQ@\xBC|\xF9/\xD6\x949\xD9\xCA,\xB5\xD9s\xCC\x03b@\xB7\xEE\xD8HR\x1A#%\"~\x93\x95\x7F\x90~ZR\x8Fsm\xC0\x9C\xCD%J\x00\x90\x84\x992\xE8\x87\xC9\xE2\xDCj\x1DF\x03\xC5\x19\x85\x15\xBE\xF2\xA4\xF1\xB1j\xAA\x93\xA8\xA9\x82\xD1|\xC5\xC3\xD2\xF9\xAC\x16\b\xAD\xABE|\xE7\xF9`\xE7A2;\xA8\x98\xF5:\xD0\x8C\x94\xDF\xD8\x04\xFC\a\xE3vU\xA2L\x8AnE\x8A\x12S\av\xE9\xAD\x9B\x92\xEA\xD2\xD4s\x0E\x14 \xE3\x89m'\x8EY\x95,9\xC2\xC8\xDEM\xCE\xEC_\xD3\x1Eec\xE4\x8C\xAB&\xD4\xC0\x1C\xB0\x87\x10\xE3km\xCF\x96\xBB,\n\x9B\xE8g,\xDE\x06\x03\xD4\x1FGG\x91~\x10Fw\xC1\xD1\x8A\xC7>2\xE6\xD4F\a\xC8\xDD8\xCA+\xEE\xE6s\xB6h\x87\x12\xBFL\xEE\xE8T\x96\xCD\xC4X\xB1VK\xCF&\xCE\x9C\x05Q\xD4\xC1r\xFE\x0F\xE8L\xD1\xD9\xDCb\x8F\xAA3\xE5\xBC\xD5\x8B\xBB\x8A\"Q\r\xC5\x84{\xCB|\xDB\xAC\x90\x1Ei\xD6\xE0GIc_\xDE(\xF9d\xFA\xA0\x9C.\xF7\x8Cc\n\xA4\xB9\a\xD7\xB1\xA10\xA5i\xEBW\x8B\xF5VV~\a\xEE_\x9F\x85\x18\xD3 \xC8\x14\x10\xE4\xB4\vDf\x0E&\x96\xAE\x180\xCFX\x01\xCB\x80&\x9E\xDC\xF4\xB9\rx\xB2\\i\xAA\xE5^\x9C\x15\x8FY\x10\x03H\xEB\xBC,c\xA3k\x84>\x88|\xA3K\xCFD\xE5\x92\x8Ev\x80\xE3\xED\xB2I3\x0EH-Kh%3;\xFD\x8BfS\xE0\x82z\xBF\x1E\x8A(W\xF8P\xA0\xBF\x1F$\xBA3s\f\x92\xD5w\xA4m\x1D\x0Fa\x10\x10\xF74\x02<\t\xB4$k\x15%\xD2m\x85\xB8n\t]dv\xE1\r\x93!k\x8C\xC4\xC1\xE776>a8\xAC-\x1A\x03\xC6Uj~\x8A\x91F\x0E\xEDM\xEF\x9B\xD2\xDBY\xAE\xF8K\xB7n\xA4\xD4\xA0i\xFAa\xF7\xD6\xDFn\x13s\x8E\x98`\xE3Ku`\xE9\xDD\xDB;\x8A\xDE\x0E\x87\xA7\xA4\xF4c:\xE2\xB9\xBBf*\xEE\x03\x80E\x1F\xD7\x92\xE9\xB3\x14\x18\x1D\xE3\xBF\xF0`\xE3\"\xFE\xC4d\x82eqq\xE7\x83\xB2\xFE\x8BH\x01\x8Fe\x850>V\x8A\xE2\xD50 \xCF\xAE5]\x9F\xDFdm\xF6\x9Dr\x86\xF7\xF7#z)\x87\xCE\xA1\x86\xB9\xF7\xF6XO\xC5\xD7P\x0Fx5\xA8\xD4Buj\xDD\xD7\x83\b\xE3\xBF\xEA~\xB6\xA5\xBC>\x8A\x99Gp\x87\n\xA6s\x9A\x11\xC0\xE1VD\xE0\xB4\xF3\x9A\xE9\xA5\x89\xB6\xF7oQ\xD7\xEF<\x7FB\xC9/p2\xEE\xD4\xDD\xE5;\xAAc\x1F\xECWP\xB0/\xAE:\xEE1\xF8\x9D\xEF\x94\xD1\x87i\x82it\x0E\x86\xEAA\x9C\x1A\xC7*\xFA\xAA\x05\xC8l\xCD\xD3\x84W\xB0\\\x9F\xA9\xDD\xFF\xF2`8\xDF_,\xB8\xA7q\xE07=V %\xE1\x9DX\x80\e\x15k\xCDe\x18k \xAAz\xCCb\xD3\xDD[\xAC,\xFE\xCB\x1D\xBC\xA6\xD8\xED\x7F\xC9f-\x1C\x8B\xF6\xDF\xCA\x05\xBE\xEC\x15q\xB7[=\r,R\xC5|\xAFX\xAAR\xCBd~\x8D\x1Fs\xD8Ow\xE4\x1F\x18\xF4A$\xF7k\x11\xB0\x10E\xB0>\x12\xE5\x99\x88\xF7n'\xAAPg\x1A\xD0\xC7\x1E!\xBF\x85\xBF\xF7aL\x9E\xF0\xA7\x9D\x91c\xAC-%s\xFFT\xC1\f\x84X\x1D\x06\xA8\x13\xF2T\xF0V*\x8Ay4\x84\xE8Z\x83Q\x9A\xA0D\xC1\x1D$=0\xEB?\xB4\x94\x91K\xBF\xB6\x8C\x1C\x82\xB2\xC5\xB3\x9D\xE3]\x00aU\xB4\x8F\xCB\eo\x8F\x8E\xF5\xB7.h\f+9\e\x8F5\xD8s<\x11O\xEC\x84\x02\a\x1A\xA1\xEFy\xE6\xA2d/\x03\xB7\x87ey:\x93\xC6eL0-\xA69%~\xE6C\xB7\x8A!i\xD5>b\xA2\x91\x19\xF2\xFB\xB4b\xEF\xA2E \x8Amm\xAE\x97\xDC\x98\xFAH%h\xBE\xC7\xDAk\x9E\t\x7F\xE2\xE5\xEF8\x8A\xE3\xF0\x99\x94\xA8#K\xFB\xF5s|\x13\xF6$\x9A\xDFg@\x8D\xEF.]\xDB\xFBw\xA2\xCB\n6r\x9Ex\x9A\xCC\x88\x80\xF2\xF2\xC5x)q&\xFD\xFD]\x11h\xD9M\x924\xAB\x83\xDE\xAE\xB8\x87\xDF\x93\xFF\xFB[\x8F\xBF\xCAM{#\x11I\x849\xA7\xC1\xE9-\xFD\xFA\x11\v\xE7\x13\xE0\xF8\x02\xDD%\xF6\xBD\x06\x18\x8A\xA7n\xA8rh\xD5\xFA}\x1E\xC1Gee\rrx\xC3\xA8\x80~y\xED@\x8B\x99\x91\x81\x93y\xD3\xF0\v5E\x12\xFD\x19{\xF0B\x8Fr\x12J-\x9A|x\xEF\xBD\xA8\x96\xA3_\xA8\x96\xF3-\xEB\\/\xF6\x03\xEFGf\xA6\xB1)\xF2?ex\f\r\xD7\x16\x16y\x7F\xD3\xD6j\x81\x9C\xFE\x90\xB7\xD8\xE6\x83\x02NG\xE8p\xEC,r{\v=\x03\xE0\xC9\xD6\x8A\xF1\xCD}\xBFjTf$Ezw|\xBD\x92\x03A`\vn\xB4\xE8\x86\v\x04\xDB\xCA\xEB \x8F\xDC\xFFx%|\xE5\xE7F\xD1K\xCE\x9F\x86\xD8\xA5o\xDB$\xDD\x86\x8E\xE6\xF88t\xFB\xF9\xFC#\x19\xDBtA\x1Een}\x90\xEEZndo\x99D!W\x8E\xF6\xFB\x03w8\x0E\xC6\xB2\x96f\xF2\x9C\x12Y\xFA\x84G\x8A\xF8\x1A\xB0\xAE*$\x82{\xF3\xC3\xCEc\x87\x03\xFF\xEF\xC0s\xD0&8\xA5\xF7\xC5X\x11\x1C+\xF5X\xA9\x05\x04\xDE4\x1A\xD3\xB1\xCB\x9C\x8F\\\xB7\xE5\xE2\x83\xC9\xB1\xC8\x88b \x8E\xA3\xC1+Q<\x05=\xA6d\xE9%?\x18\xA5\a;\xF5\xD9\xF8`\xC2\xAA\xE7\x1DZ\xD2\xEE\xEEw\xEA3\xC9\x9D\xE4\xDB\xFF\xBBM\xEC\xFC\x1E\xCA\xDBf\xB1\xBEE\x82\xB8A\xAC\xE5\x9Ab\xFAU\xC7\xF1!\x16z\x03\x99`\xD8\xF1D\xF2\xD0\xE1\xD2\x85\"\xDC.\xFE\x98\n\xD2\x18\x06\x81!\xBB\xA8\x01F\x0F\x0F\xDF\"\n^\xD8R\xFF\xDF\xA5\x04'<y\x95m\x97\xDA\xB6\xD9\xD2\xF4\x976\xB2\xACw\x83[\x8B\x18\xDD\x99opw\x93T\xD2.\x91O\xA8\x91\x80\x86\xB7a\xB8\xEF\xFA\xA6\xCBIB\xFD\"\x1A}\bk\xD5\x98\xA4i\xFCj\xA40\xEB-#\xF1\x17\xDF\xD3(\xB5\x85K\xE3\xDD\x94\xD9\xAA\xDBo\x94\xF4\x04\xA1;\xAC\xB0\x186[},\x1Ee \xBB\xD6V\xC1\xC4J\xD3\x00\x9D\xEDD\xA6\xC9\x87\xFA.7eN\xD4:\x9B\x85\x989N\xC5\xEE\xE4\xE2\xB5\xCBE\xE8\xF8H<\xF23\xCA\xD4\xDEy|'\xCF\xE7G,\xB3\n\x18\xC8\x81G\xA0\xDBm\x1D\xA7Q\xC5\xCF\xB3\x03a\xB1\xEF\xBAuL&\enD\x89\f\x8E\xFB\xB9\xC73mT\f\xB3\xEFJ\xC6\xA0_k3\x84}\xD1%r\xAB\xB5\xBD\x05\x01K(\xAD\n\xE1\x1D\xA0\xF4R\fA{\xF5W\xF3%\xE9\xFA\xF0\xE4\x98\xAF\x05\\c\v\x98\xB7a\x8B\xD9\xD6\"\r\xC74p\x9D\x8C\xB0:\xFD\x8E\xBB]\xEB\xC7OR\xBF\t'|B\xC1\xFC`\x85\xAF\xE8y7\x11\x82p\xA4\xFDF\xA4\xFB'iD\x95p\x88\xC9\x94\xE1\xBB\xBD\x91\xA5\xF9\xAFTL\xB1\xD4C\x01\xF3\xC7\xFE\xD0\x8C \x82})\x1E\x7F\x99\xAF\xD4%a\x03\xC1\xFE\xB7#\x11\xDA\x9F\x82\x93\xB5nq\x11|\x03\x99\xC4\xD3\xA8\xBB\xC5&<z\xE4\xFAE6c:\x02\x13r\xF3#\xB9\xB5I\x9E\x05C<\x052\x92\x7F6\v\tIt\x0E\xAA\x1C\x1Cw\xB0C\x99[\xDD\xEB\xD0\x12\x84\xED\f\xA3\xD82\xAC,d'\xB5\x12g\xD74\xFC\xF3\xE2\x8AB\xB4{r\xB7\xFE\xDB:\xFC\b2\xAA\xD5\x06\xEFS\xBB,\x834\xE2\xB7D\xD4x\xB9!\e\xA1\x10\xE1#\xF3_\xA6\x9F[\xA5\xFE7g\x8A&_/`\xC4\xAD\x8FB\xE5\xFC.\x96\xB0\vn\xB6c\x17\xF1\x8F\x1E{r=\xABQ\xE0 \x1C\xC7\x1A\xFC\xE5w\xEEbl/lW\xBB\x9B\xE6\xA6\xAF\x01<%\xF0\x12\xAA*\xB3\xEC\xF8\x84=\x16\x1D\x91:\xE3ss\xCFg\x18n\v\xD7Q\x93.\xFA\x9B-U\x86K\x06xn\xF9\xB1\xE9\x8E\x7F\x03\xDB\x91\xF1\xE1\xEC\r[\xFD\xBF[\x1Ajkpc5\x1D\xCA\xCB\xC44_\x1F\xB4\xB3\x15\xC8\xC3\x8A\xD33O~K,$\x1C@\xB2s8\x81\xFC\xBC\x89,L\xD8\xA0\xC6\xBC\xB4\x88Y\xEDE\xF9~\xC805\nAc\xFE~\x11\xDF\xBA&\xA1591\xDC]\xD6\xE8\xA5D\xE1\xD0}>\xAA\x9A\xF8\x19\t\xCB\xD6s\xEA=\x99=\xDBac\x81R\xD9\xBBN\xB4S\x95\x1A\xF9\tpz\xFD\x8D\xFF\x90#|\xF5:\xE4#\xE8\x8F\xFA\xA7Y\xF6%\x82\r\x97X#wTS1b\xFE\xA2I\x1D}\x97\x88\xAC\xD6\x17\xB3\xA2\xB6~\xF0#X\xE1\xF6\xDA\xBC'G\xF1!\x8F*\xC3nb\xA5\x80\x9D\x81.\x14\xA0\xF3\xD8\x9E^$\x89\x7F\xB9\bU@,J$\x1A\xB3\xCB\xD4\xB3|\x82*^\xCAn\xF3\xF0**V\x17\f.\xF3\xAD\x91\x1Eh\xEA\x98\xB4\xC1h\xE0\xFD\b4\xE9\x8E\xB5v\x03\x9Er\x82A\x03\vA;\xC6B\xF1\xB3\xFD\x9A\x8C:\xC2!\xBC\xB1\xDC3Z\xEA\r\x9D\xCF\"\xBE\x92mK\x9F<\x9E\x06/\xD6\xF1\xEC\xC8\xD8\xFC\x9E9\xFE\\\x99z\xDF\x90,\xA9'\x9E\x9DS\xE96\xBC\x96as\xB3x\xC9S\xCC\x96\xEAqg\x02\xA5\xDE\x17=\x80\xBC'\xAD\xF0f=\x9C\x84g:\xAD]\xA4\xE0/\x9D\xF5\xA0\xBA\x1E\xBC\xA1\x86\x99\x98\xB3\xA5\xA4\xE5j'\xB7),b\xED\aR\x96%HM\x1E\xC9\x837\xB5w-\xD9(\x17\xF5\x9B\x9D\xBC\xCB\x89\x1D\x11\x16RO\xC7f\xB1z\x16K\xBA6\xE6\xAA\xF5\x9C\xD9\x1E\xDFz:oE(\xC9\xD2m\x19\xCA\x93\xAF\xD7k\xC4\xFAB\x11N\xFCw\fp\xD6\x8B\x04\\\xBC\x04\x04v\r\xE5\xC3\xA4\xC0\x0F5\xE7\xD1\xA2\xD7\xE4\xF9\\c\x1C,\x00\x054\xCD\x94;\xF6\xF5t1\x7F\x99qj\xCF\xD8\xDC\xB83\x9C1\xB0-\\\xDFA\xE9\xF2\x00%XQ\xD7\xA3Lb\aF\xEB\xD3\xF2\xF5\x93=\x1C\x19h\x90n\xFCB\xAF\x9B\xDC\xCDo\xC0W\xCD\x0E\xC8 qO\xBA\x97<\xEF)\x98\xEB[\xB4wD\xE9\xEEQ\rD3\x97\a\xC7\x912\xD1\xE6aq'\xEC\x1A\xE4\xBF\xC9\xE093\xCF\xECy!>\x14:_\xCA\xFF\xB8\xC1u\xBF\xE7?\x90O\xEFv\aa\x8Ex\x1A\xCC\xC0\xAAO:\x84\xFF2\xA6\xA4H\b\x06]\x93N\x88\xD3\xBFx\xD5U]\x92\xC4\xE1\xC1\xDB\xC1\xFCq8Se\xE2\x931\xCD\xB7\x8C\xCF\xD4\">\a\x8DS\e\tH\xC5\xEB\rM\xDD%\x0F\xA2\xF8\x9D\xA0\nZ\xDE(\x17\xB0\xCF\xCD\xB9\xE8\x9F\xFA\xFFh#x\xCB\x8C\x1F\xC7\x19~\xCD\xB8FI1\x96\xEA\t\x02\x14\xAB\x0FV#m\x16\x92;LU\x81\xBB6\x1C\x03\xE5\x90p\xA2\xEF\xC3\x8E\xFC\x0EF\xBD\xF7{({jC\xB7<R\xB1=%\xC7\xA2\xAD\x03\xE9\x91\xE9\xF7\xAAb\n~\x92\xF7\xE1\x16\xA1]\xF2\xFD8\xA2\\0\xC7\xEA\a\xE8\x14\x1E/\xF2=X\t\xE7\x99N\x93\xFC\xB1A\x89\xD2\xED2\xAA\xF9&\xF7\xB3\xD0ls\xFC\xD23\xCB\xA1\x84%HP\xF6G3\x8B\xA0\x82ga\x82I\xFB{\bqY\xC2\x97\xD5\xF8\xCF\xD7\x99\xA9\xA6\x01\xD0\x0FH\x99*Deu\xA9\xFD|\xF6BI\xC8\xD79}\xD1\x14>~>p\xBDh[T\x88\xFDk[N\xB3\x8E\xAA\xDA<\x89\x83\xDE\xF0\xEF\x0E\xB6\xCF\x9A]\xFA\xFA\x10\xFB\x96\xFE~\xEAs\xEE\xA7\xB7|\xCC\x9C9Yh\xFC-\xFC{6W\x8B\x95\xA5-\xDC\x1C\t\x1A\x9F\xF9\xF4m\x8B#\xFB;\xE0\xA6\xA8\xA7|<\xAF\v\xE3\xF6\x10r\xBD\xCFW12\xE5E\xD6\xC1\xC2.\xD6hr\xEC\x13\xD2\x84\n\xD8\x1Eyd\xE4_\xAB\xA9K\x8D<;\x11[\\,\x04\xE2\"\x92uQ\xE3\x83\xD1zt\x16+\xE4<Y[#\x06\x8C\xD95\xAD\xF5\xD1\x1C\xE9f\xEF\x06EAW\x90\xA2jK\xFA\x9BW\xE4/\xD9\x8F\x02L\xB8\x7Fx\xD7\xCC\xAB\xFA\xCC\xF7FY\xF4$\t\x1E\xCD\xED\xAF\x99\x92(\xAC\xC2\xAF\x17e\xAC\xB0iP\xFAp\xA0}5\f2\xAFp\xFAL\xE9\xC1\x8A\xC8\x10\xDC\xE2\xD3\xD5a\xCF#e\x19\xCE\xE9S\x8A\xD4.F0?\x04 \x9CQ$z\x8E\xDD\\Q\x95\x90\x01\xEF\xBC\xD7\x88\xF5\x97\xD8\xF7g\a\x1D\xAD\xF8Z\x85\xC2\xD5\xF6\xC9'\xA2n\xB7\xA3\x9A,\xCD=K\xE4\xF8\x8A\xDE\xBF\"\x99\xBD\\GN\x99M\x89\x93\x10\xFC\xBF\xCC\x03\xEES\xAE\b)\xBC\xDE\xDB\xA6\x01+%\xBCdW![-\x91\x85|\x89 \f\x1DI\x1Fpq\xD1\xFF\x1C\xD3*3\xB3\xF4\x03\xF2\xA4\\\a\x14\xCF\xF6u*\xB3D(zS \xE6\x17\xB6d4\x99\x88\xAE\xCD\x99\xBD\xF5.\xE9\xE7G6\"\f\x00x8`9\xD7\xD9\x19\xC1\xE9\xE3\xD2\xFF\x8F+{`\x1C\xA9\xA7\x8D\x0E-\xD5\x02I\xB8\x82]B\xA2T\xA7\xB9\x18\xDB\xCA\x86]\xCC>\xB4\xC59\xB8`\xAD\x84\x17\x94\xBCg\xD1\xDB@\x1E\x93o\x0Fo?\x00\xDF\xD2\xD3\x95\x925\xAF%\xC8\x957O\x95\xC2\xD2C0\xF2Ci\xBD\xEE\xB2uZRL\xF9\tY;f\xE2\xD5!w?\xA5\xA93\x96\xBE\xB8\xD3w\x14\xED\xAB[\x94\x0F\x98\xF4\xFB\x80=f/\xDF\xAB\x05\xBD\xDA\x11\x03>\xE7\xC6\xAC-e\xDCb\xE6:\x85!<\xEC\xFF\x82\x82j\x9B\xE1\x05\xD9\x138N\x9C\x0E\xB3{\xD0\xF1\xE9\v7\b\xDF\xBDU\x176&\xFF\xD3W\xC2\xFD\x8D\xFF\x84\x03\x0E\xD87\x83\xC1\xB2\xB1\xF6S\xF19\xA9\xF0\xB2l\xA0r\x0F\xDC\xA1A\ae\xF1\x9D(\r\x97)y\x14\xEFi\xBD\xFE\xBC\xB3\e\xFB\x9B\xC4wTD\xF5\nc\x99\xBDW}lJ\x1A\xC7J0*\x8A\x9F\xD4u\xD7T\xB8\x04\xFDm\xD2\x93\xE5J\x1E\n>\xEF~\xAE\e\x9442\xD6K]\x89Y45\xBC\x9E\"P\xC0)6,)\xAB\f\xED\xF3\x9C\x85\x80\xAD\"\x8C\x8A*\xA7\xCB\xDAz\xCCk\xF8\xA2(C\xDA\xDEB\xE4\x12\xED\xDAa4\xB6\x14\xB9S\xB2\xB8!\xC1\x18eH\xB9\xD5\xF4M\xDEg`\xEE\x9B\xD4\x91\xFCl\x92\x15\xF1\"@\x7F#\x7F\xC1\x10p\xC8%C'\xF3R=\xCD\xD0\xE7|\n\xBB\xB7<\xB6\xEE\xF3X\xA2O9\xFE]+\xB0#\x91\xFA&\xD3\xE4e\x9C4\xA1\xB3\xDF\xA8r\xCF\x8F\xC8\xC3\x92\x04\x02e=T\xD6QO\x88i\x920g\xA4u\x18\a\xBB\xC1\xAAY\x13\xBA\xCDt#<\x9C\x80\x11\xE4N\xA9\xE2!W\xC2\x7Fb\x1D\xBEU\x86\xE0%\x18\xAF=a5\x96\xC4\v\xBF\x88\x86>S\x84\xC8\xEC\x9CR\xABk3\xDA\x7FXh\xA3\at\xF6\xE2\x97\xCF\xB2\x8C\xA3\xDB}b\xC9\x95\x91\xCE3\xC70\xA0\xDD[Sv \x95\n\x96\xEC\x97Ti\xE6\x91\xB9\xE9w\x96f>OH\x03x\x1C\xB4?G\e4k\xC2\x11\xA9\xB4'\xF2\x06\xAA]\xE4\x0F\x93\x98\x84t\xFA\v\xDB*\t\xB9\xDB\xC3\xEA\xF4\x81O4\xD3\xF1]6\xBA\x89\x94\xD6\x1A\x9D\xE1\xB6\xEF\xE25\x10\x1F\x16\x00QK\x06\x8B4\x17%\x95\x85\xAF\x89?^\xE6\xC1+\xAF\xFFK\x04\xE6\xBB_\x81\xCB\x93PU\xF4\x05A\x97\x99\xE7\xF7f\x9C\xD9\xE1%\xA2\xF4\xDD\xD2\xA7J:\xA4\xA3\x8E\x90\xE2\xC5\xF9F\xDAr\xC2\x96B\xEB\xAD\x8F\x84u\xEA\xDF\e\x14Y\xFEp\xAF{nJ\xBF\xE3\xE0\x17\xADRq\xB2k`\xC0\x9D\x92\b\x1D\xFE\x9CKU]\xDD2\xC2\xA8\xA08\xF0\xE2\xD1T\xAF\x97\xE5\xDEl\xC6|Ju\x88-r\xD3C\x16\xC1$\xBB,?\xA2\xF1\x95\xF5\xF6\x00\xDA\x0E]\x8E\x1D\xA3S'c\x91\xAA(\xDF/d2g\xA3\xDD\xEDp\xD8X\xB1\xDA\xD5xfn3\xBB\xD0\x9B;\x02\xDBAI\xDE)\xED7\x17\xDB5\xEEL\x137\x0E\xE7\xDC\xD0M\x98\xE2\x18\f\xE6\x19\xFE\x14\xBF.\xCF9H\ek\xF9\xC5Lz\xB8\xC8\xD3L\x95\v&\x16\fS\xB1c\xB5\xAE\x04S\x8A\x8Cgf!:gr\xBAf\x01\x8FI,\xBA\xDC\r\xAF!v\xA1\xF0)\n\xDC;)\xF9!\x84\x8E\x0F\xCE\x1A\xC89\x1A\xF2(\xA7\xF5Nu\xD6\x19\xCB\x98\xFE\xFD\x80\x89w$i\xEA\n\xA7\xB2\xCD\xDB\xD5\v$\vt\x98C/\x8E\xCF/\x83\xAE\xB3VD\xD2\xE9\xB4\x9E\xEEv\x8AV\xAAq\xAF\x8D\xED\xE4\xEFL;=\xE2\xACOf\x15R\x86WP\xFE\xD7\xA5J\xEDDl\x8B\x1A2ws\xE3udc\xA6I.\xF8p\xAE\x85\xBA\x83%\xFF\xC9\x13\xDB\xDD/v\xD2\x1FR:\x80\xDF\xAFC9\xBC\xA8\xF9i\xFC\xB1(\xCA\x13\xCB\xCFt7\\V\x90:\x13\x82$\x15\x1F\xBD\xB6\xBD>\x15\xEA\xE2K\xCB\xB2\xEF\xA2\xD1\xCD4\xF7\xF9\xCF\xDD\xBF(\xAB\xE9\xBB\x14r\x93\xA2R2\eY\r\xD8\x18<s\xC85\r\xCA\xC1_\xD7^S\xD5./\x18\xD8K\xEF\xE8\x8A\xD1\eg&\xC8\xEB\x94\xB3$dv\"b\xD67\f\xF7\x93\x13mI\xA7\xA8/Y\xC73sl\x884\x9E\xCA@\x04\x818\xAF,e\x85m\x97Hp\xAC-*#\xCC\xDE\x8CVQ\xD8\xE3\xE2\xDE0wp\xCEI%b^<Dq\x8F\x1AZb\xEB\t\xF6{\xA3\xD2\xEE\xCDp\xED\xC7\xADiv\xB0\x9C\xF3\xB5\xEC\x19\xB6\xE7\x95\xA5\x05yFf\x02\xBA]\x1A*x\x06\xE5\xDD\xE0\xC1\\\xDE!\x97\x194\xDE\xFDAPX\x19\x97(\x1C\xB0\x8F\x05\x99]mZ\x14Z\xC8\xFA\xAC\x89n\xA4EC\xF6\xC3\x0Ee\xB0\xD6\x05T\xF2z\xF7\f\xD9\x91p\xD1\xD4\x10\e\xF9\xC1\x962\xFBy\x1D\xDB\x81R\x83\xE0O\xFCF\xCC\xCC`\x06D\xC9\xF1\xD0\x1A0\x04\xA1\xD0\x0E\xEAw\xA6u\xBE\xB0\xE3/2\x9B*\xBC8i\xFBL\rLt\x920\x1E\t\x1D\x0F -\xF9w\x0F!\xCE`m\xFE\xE6\n$\x1D\xC6qp\xA8qq\xD1\xD4\x86\xA8\x83\x02\xA3\x02\x81\x83TI\x86\xBB\x12\xC0*\f\xF3^\x95\x0Ek\xFB2\xB1\xF2\x81\xBD\xC4^\x14\xFF\xF3\xBETv\xF6[\a\x83W\xB7WT5\xD0\xC1mV\vZ\x95\xF5\xDC\xAB\x97<b\x92N\xA3\x80\xF8\xDEU\xA7J\x81-*\xB4\x91\x96i\x00\xB7\n\xA9S\xF5G\xBDv\x9A\xCC\xA1\xC2P\x97\xDCc\xAC3x\xAC\x02\x17\xE0)!\xD2\x03\x90E\x1C\x04\a\x1E\x06a\x15\xBE\x8Fz\xDB_\xC5u|\xF3`\x1F#\x99\x91\x16\x00\xDDF\xD0\x82\x92\xF6\xCA3W\xAF\xA0\xD4a\xBF\xC7\x81QIm\xEE'\xA0\x9F\xBF\xCE\xA0\x9FmZ\t\xEF\x89\xEA2+\xCBp\x87\x11b\vP=\xFB\xB3\xD9\xE9\xD2\xDE\x1D\fVS\xD6\xF4NO\xF7\xC7bt>\xA8\xAE\xF0pf\xD6\t\xA8v\xFE\x00\x03 \x84V\xB6\x88%s\xB3\xA9\xDBv-\x85$\xBF\x192\xD7\xA9XY\xF9Q'\x1E>\xB2>\\y,\x84B;\x03\x16#\xFBY\xF2\xDA }\x8D\r\"M\x9D 8N\x9C,E\x8A\x16\xF9\xA8\xFB\x87\xFA\xC7\xA0/\r\x1Ed\xDE\xC6\xDCArD\x13\xD3\xD4\xFA\x89\xCA\n\xFF$\xD9\xCEB\xD4w\x8A1\x9Dm\xDDU\x18f\xCFz\xDDD\x9Dd\xFC\xA0\x95\xD1\xCC!\xA0\xE2J\x006\xF8\xE3\xF11?.U\xA2\xF2>\x05\xE7\xAD\x8BY\xCB\xF8\x89\xBB:\x17\xC8N\xDD['{\a\xF1\x1Ec:]\xAE\x100\xD2\x9E\x18\xF3X\x8C\x8EWH\x94\ry\xECf\x8B>\x1C\x90p\xEF\xF2r\xCFq\x7F\xD6\x86\xDF\x17;\xC0\x91\x9A\xEF%\xBB\xF4\x03n\xC5\x05\xE5*\xAE\xFD\x03\x94\xB3\xA81y\xB1]\xC9,4\xCA\xC4\xA9\xCEn\xFB\xD5\x9F\x8C\xF4\xFB\xB3M\"\xCA7\xE6\x16<+\xEB\xD0\x8A\x88\xB3\x17\x9C^\xEC6\xAA\x0EQ\xDA\xED+\xB6s\xD0\xE8\xB5k(%\x95~\x10z5\x86o\xE0F]\x9EB\xAD\x8D\x15g\xF4^\xE6lKQ\xD8Q\xC36\x1A\x82\xF1\xD1\xB1Q\xC5X\xF8\x84\xE8\xCC\xA0\x9B\fC\xCC\x10,\xC1{_{\xB5\x1DR( 8\x9B'8\xB4\xCD\xFFf\x8F\b\x959\xD4t\xCEH\xDF\x1FQ\xF3s\xE9\xBB\xCC=\xD4\x96(\x86\xE5\xDFt\xD7_\xA3A\xFF\x8B\xDAE\xEF#M\xDDH\x03SvHy;\x88d\xBE\x9D<\x1A\xF6\xFD|;\xE9\xB4\xCF$\a\xE6bF\x851\n\x8A=4\x95r50\x81\x89T4\x80\xA7\xABz\xDA/\xFF\xAE\xEF\xA5;\xACq\x03\e#E\x13\x06\xA6zD\xD0\xDB}+\xCF\x8Fp\x1E\x10AI\xE5\v^\xF2\xF7X\xA2HIv\xDB\xBB\xFC\xDF9\xD6t[\x94\xF7\xD9\xFE\x91\xD8\xFEZ\xC5C\x0EZ\x0F\xFF\x96\xB6\xF2~\x01'4\xAA\xA9\xD8\x11a\xD0\x9F%\xB9\xD7_\xE4\x8D0\xAAr\x80~\x10\xE5t\xC7of~\xBC\xE2pImR\xA4\xAB\xD2\xDCkx\x19\x96\xFDG\xDA\x02\x1F\xD1,\x7F\xA4C1\xC7\x95\v\x02r;\xA1^!\x90\x9B]+_\xC1\x11\x14\x13\xE8\xEE\xD3\x06\x11Fq\xC2dB\xBF}\x16c\xB4C\xAB\xA6\xDA\xD4\xD0\xFB\x86\xA6\x9B4\xF0\x85|J\xA9ES\xA3[\xCF\x0E)\"\xFA\x90\x17\x82\x82r\xB3\xD5LVJ\xD7\f=\xB1S\x9E\n=\xE3\x9B+k(\xFE\x8Eh\x1DI\xDE9\x96\xAEVlT\xB4\x97\x04j\x92S\xBD+\xD7\xB9u\xAE\xD2L\xD8\xA1\xC3\xCE\xD66n\xCEXO=\xD6\xA4s\xE4\xDB\x8F\ewz\x93\xB7\x15x\x96\xA2\xDB\xA1\x9A\x10\x92\xE1\xCE\xE7\xF5\xDA\x8E\xE50\x81\xC2@\x81\xF8\xFBru\x9Co\xF8O]\x82\x15H-\x93\xF8\xC5g\x13R\xB9\xCF',\xC1\x93\xD97\xEF^w\xB0M\xD4\x8D\xE6@\x85\xED\x9E\xE5\x9EG]\xA5\xDF\f\xE7H\xC6\xCAJ]\xE4\x9C\xE0\x9A\xB1_3%\xB7\x93\xA7\x9A\xE1\xA3H!AU\xED\xDD<a\xBB\xA7\xC6\x99_\xB1\x8D\x8Aty2\xBC\xC1\xC3P\xFE\x84B8\xD9\xBA\xD2\x81+0\xF6\x05\x97\xD4\x8D\xD5h\x94I\xE2\x1CDMu\x96\xFE\xB8\x93,At\xDE\xE6[\x01\xEFh\xB6\xB7\x8F\xB2\x11/\xEA\xC7\x1E\xCB\xD44\xF8\x02\xFF\r\xEED\xA5\xAA7$<\xCCr\xAC\xBFJe\x8C\xB6\x13T\xDBQZ/{0\x96\xCDuc\xBA\xD3\xB2(\xA8\xC6-Q$}\xF3\x82\xA6%\x18d\xDF\xD8\xE6\x81v1\xA3\rl\xB9\x14\xF8%\x87|\x10'\xEAj\x15?\xF9\xE8\xF8\xBD\x80\#{\xCFAD\xB16\xDF|\xAFFp\xD47\xEA\x95\xA3\xAC\x92v\xDD\x9E[\x91\t\xF7\xD9%\xCC).\eG\t\xA8\x83\xE9\xEEl\xAE\x93K\rG\x80\xF4v\b'\xAB\xF3c\"\xDB\xA9e\xD1\xF5\x1F6Q\x15k\x10a\xFA\xCEG=\xDC\xA8Dr\xDB%\xA23Nt\xC2\xEF\x7F\xF9\x14\x87q\x06ih\xB7;\xA9\x1F4\x05\xC9Qm\xDC\xD3\xCC0\\\\<\xF4\x9FL\xEE\x84Wj$F\x92\x1D\xAF\xC7\x16\xA3\xB4$F\x88.&\x11\x98\x94\xB9\x94C\x96\xA4\xBE$a\x8B\x1F4C\x892MotV\x82\xB0\xEF\r.Fh)b\x1D\xD4eP\nt_\xC95\xBE\xE0#!7\xC6k9zo\x03\xC3s\x05\xC5\xF8E\xC4p\xD0\xEA\"^\v\xFE\x98|\a\xC2\xDA\xD1\xF1\x0F\x85<\xDC9\xB9\x0E\x8F@\xB3\xB9c\x03\x9A\xE7\xD5U\n\xA9\xE0\xD9\xD4\xD0\xD4\x90\xF6\xA9\xA3M\xD6\xBCom \xC2\xDBe9\xA3\xEF\xC2q\xC57\xB5hTr\xED\xCE\xED^\xF0w\xAC\xE7\x91Z\x11\x9E\x91\x87\x133L\xB6/D\xE6\xF1aN\xF0h\xA8\x1F\x8B\xD3\f\xA8\xFE\x87\xBDh$\x94\x91\xB8,\xB7\x1C\xCE\xE3SP4\xD1B\v\x13\xBA8\\\xFAi\x82\\\x9E\xBC.\xCE<W\xFF\x1CL\r\xD9\xCA\xED\e!K\xD2\x12\"</\x1Eo\x16\x1C\xB2\x87\x12p0\t3\xEC?s\xD3\xB5\xE93\x15ne\x15G\xAE\xCB\xD1\xE2P\xDFG\x82\x1D\x87s\x1Fm\xC8k\xD8\xEC\xDF\xFA\xDB\xAB\xDF\x90\xB6\f\xE3\xE5*\xB8\xB8t\x81HgH\xAD\xCB\xA6X\x99F?5/\e\xFA\xEC\xBFQ\xC6WU\t\x1A\xBD\xF1\xA1\x87\xEE\x96\xC6Xd\xDDDY\xFC\xCA\"\n9V%\ep\xEF\xE0\x11\v\xA0\xE4S\x850\xFDd\xC9\xA3\e>\x18\x94\xEC<l\x92\xECb\x88m\xCE\x1E\xCE\x94\xEC\xA3\v\x11nK.\x19\x16\xE9@L\xF3\x8Cr\xF7B\xC5\xB4S\xED\xF5JR7\xC7\xB2\xDC\xBB9\xA5X\"m\xDF\x85\xD7\x05Y\xD0\xF3\x00b\x17\v\xD1m}\x89Os\xEA$j\xC9W\xDD\x16Z\xEC\x19\x88\xA7Wn\xB5W\x9D\x97\xD7c\x81\x9F\xDA@\x8A:M\xA9TN\xE6\x8B\xB1,\xFA\x17\xC2t\x13\xA7[\vlP\x10\xA5\xB6\xD9t\x88\xE7T\xC2\xCAE\xEC\xCCb\xEF\xF1\b\x82\x91\x0F\x97\xB0\x00\xF3\x11\x13\xBAf\xB2#\xE9swi\xD1\xA1\x90\xE9\\7\xAA\xE1S\xAE\x16\xC2\xDF\xB4M\xC4\xFE\x01\xFD;\xB7=\xD9:\xF4\xFB'S\x14\x8E\x93\xE6v\xF9`3\xAE\v\xAEB\xED\xED\tp\xEA%\xFAy\xC9\xAFG\xF3P\x15\xB8\vPY\x060\xDCt\x01\x92D\xDCa\x9E\x1C}!\xC0\xBA\x85\xADa\xD0\xD7\xD3`\xA6\xF4\x91\x00\xDAA\x9DtX\xD6\xC22\x9A\xBF\x9A\x94\xED$v\xEB\x90\xBAEd\x11\xB6\xFE\xDC\xF9\xD4\xBE\x8D\x83i\x90n}\xC7Io\xCC\xCC\xAA}\xA0\xF96!0\xD6#\x8F\x01\x16\x19]\xEFv\xA4+&#\xC3\xA7;\xDD\xD9}2j\n\x89@\x9F\xDA\xBB\xEF-\xB3\xE0dZ\x06W!\xF0R$F\"\xEAm\xF3\x88\xCE\ve\xE7\x97\x16\xFA#T\x15\t\x91p\v\xF3\x1F\xB2\x9A\"B\x88^3A\x9D\xA6\x93\x8A\xD6~\xF6\xA8\xECe\x10R\xCCK\xB6\x06\xC6-\x89xren\x96\xEE\xBFW,\xE6\xE8\x97\x82q\xDAl\xB1\xB7\"#\x05\xC9\xC7\x96\xCA\x10\xC0\xB5\xC9\xEB\xB4\xC2\x9DE\x06\xEE\xED\xFB\xF9H<\x9Eg\x9B\f\xEF\x1Ak\xAB\f\x1A\xA7\xBFgH\xA7'\xEFTm@|+\xD5\xE3t\xD8\x9Bl\xF8\xE7\xCEw!\x14\xD5FA\xF7\x11\xFA\xE7-\xC90\x9B\xA5\x10\xBC\x12\xEC\x9B\xD0\x8B1\xF2\xE3\x83\x9Ath\xB4\xA4\xF8`ZO\xBD\x87\xF7\x97\x81B\x7F\xBCB\xA7v\xA5.x\x82\xE3\xDE\x17\xF3g\xB3[\xC1\xE71\x95\xCB\xB4\xFE\x00\xD8\xEF\x15$H\xCEeU\x91de\x1D\xEEs\x922]\v\xF7#q\x16HJ\xC0e\a\xFC\xD8)\xF35A\x10<z{L\x15\\\xA3\x9F\xCB\xD99\x8D\xC8g\x8AL\xCC\f\x89\x04\xF2\x1E\xC2\x98\x87\x00\xB2\xE1\x9DMP\"R.\xB6b8\xA5\x16\x14\x9Fm\xBC\xEA\xFC\xF1\xB4u0\x03\x82\xCDL\xE9\xB6\xB3\x19X\x87\x99}F?tM\x94\xC6\xB8j\x03\x96\xE7T\xB5N\xB7\v\xC0\r\xD3\x93\x06\xA0\xD7[v\xD7K\x0E[!\r\xE5\x9D\x0F\xE2K\xDF\x8C/\x1AE\xE0\xF0t}\x9D\x81\x02Fb5\x8A\xF5\x0E\xC8\xA4hS\x94L:\xFE\x99\x15O\v<\xA3\x98\x985\x06$\x1E\xB0\xC0:H\x05\x90\x8C\x7F|\x1E\xE6\xC4\x90\e\x1D\xB8I\xB4\x01\xEB\xEC\x17o.\xE3\xEB\xDA'n\x8F\xB6`\xD6\x9C\xD5p \xFF\xA2\x1DY_\xBE\xA1p\xD8\xD2\xFD\xA8\x8E\x9E\xE1\x8BZ\x8F^P\x19\xF1\xA0i\xE6\x9D]\xAB\x7F\xBA\xE5s\xE7\a%\x85\x1E\eTJl\xD4\v\xE4\x06\x93\xC0\x93\xDD1\xCC/6V\xC1\xB6\x9B$m\xC6\xCF\xD1\xEE\xB0\xF1\x8D\xE1g\xB9i\x9A\xB5\xAA \x88\bM\xEF\x18\xF7U\xD9\\2U\xCE\xB9\x9D\x17L%w\x16\x87}f\xBB\xE3!3\xB2\xEB\xEF\x8Cm\xC3\xAE\xDB\xE0\xDA#\xAB\x81\xD0\xE6\x9Bj\xD9C\b>\x94\x9E\xB4>H\xC46c\xD0;@\x9B\xBB\x01k\xBB\x17uuI\xC3\x8D\xD5Q\x17*uj\x03\xA54\xEB\xD4N\xC6\e\xD8\x83&HR\x12:06\xDB\x17\x1F!\xB8p\xE2\x7F\xAA7\x17\xD0\xF7\x05<3F\xFC\xFE\xC0oZL\xDD\xB6\xAD?\xEF\xA0O\x8A\x9E\xCC[&\x1A\xB3=\xCB\xA8/\x1E\t$\x89\xCF\xBF\x90;\xFF\x92%Y\xED\x8C\xF5\x17\xB5\xE7r-x\xEC\"\xD6\xC5\xFF\r%\xF1\x98\xDA_P\x90\xAA\x9F\x0F/de\x86\xCBl\xB7\xCE\xD8\x80wj\xCD\x1E\x9D\x15\"\xDC\xB4\xF0\xA3LhYEJ\x9D\x0F\xC9]\xC6\xD8\x13\x87\x1Aw#\xC9\x1FL\xD3l@\xBC\xF1\b\xC4?\x9DwF\e\xD2\xCB\xB1\xB0O\\\x9E\xF4\a.S\xD0\xD9k$w\xE8}\x99\xC5M\v\xC4\x90\xC3\xE1v\x8C\xA0\xB5\x8F3Z\x1F\x00\xB3\x0E\x9E\x99\x94\xFB\x88\fpV\xAE\xD8&\xF9l\x9A\xC8w= \x88\x9CxR\xE1\xFE\xA5\x83ioH\x87\xF7\xFCC\xC8\x88\xD6\x1F\xE1u\x9A\x9D\xF9\xFC\x88\xFE\x9Dt\xA0\x96S)#e\x96#\bd-\xF9\xB0\xA2\xC2\x14\xC7\xAD\xFA\x80\xCC\xAF\x18Q\xB3\xA4N9\xA9\x18\xC8\xAE\x89\x91M\x95!/\x82\xDAo\xAA#[e\xDA\xA2\x9F\x14mL\x0E\xFD\xD9/W\x01s\x9B~\x89\xB0^\xBAs`G\xEF\xDF\xA1&=4\xC8\xB0\x95Kh\x0FV\x87\xD9\xD1b\x05\ey\xF4\xB7\xDA\xC2)C\xB2\xF5\xED\x95\x83\xFE\x1F58\xF9\xBA\xC7N/:i\xDA\xCF\xA5\xEC\xECV\xF2\xE7\x8E(Wi\xBD\xFF\xA4\x17-\xD3\xF2\xB8^\xF6\x8F\xF0?\xF4PJ\x8E#\xED\xF3\x81\xE7\xBDyE\xCA\x0F\n\xA2i\xFBA\xAD\x7F\xA6\x9C\xE2\xBA\xDF\x8A\e\xE3 U\x8Brr\xFD\xC9\x8F\x87\xE6L\x7Fk6\xDA\xD1\xB9)\xF7\xB4\xA1.H\xC07\x9Ej\xD7\a&{\x04\xC3\xD5\xD1\xF2\xDA\xD2\xE9\x91#\xC4\x94\x18\xFD\b\xAD\xBA\x06^\xDD\xED\xD4\x8D\xF6\x95V4\x80\xB9\xEAW\xF8r\xDD\xA6\x85\xA2\xA5\xAB\xE2\xC2\xC4b\x92>Dh\xFF\x80Q P\xA0\xBF\xEFw\x1E}E\xB6O\xAA\xC24!\xA6\xE3\xBC\x98\x8EGm'?\xFAP\xE7\xF0g\v\xEF\x19\">z\xE9v9OP)\xFA`\xAE9\xAA\xB5\xCC.Pw\x8A\x87|\x9C\xDB\xAD\a*s\xDB\xBDt?\xE3\n_\x8B\x19\xF4\x91\x05\xA7\x87\a\x9D\xEAh\x1C\xED\x99m\xDF\xEC\xEB]\xB2B\x8BW*|%,O\xD4^\xF2\xD4\xCB\x8C\xAA\xA0\xA89\x02Bi\xBC\xC02\xDEA\xA0\xA3*52\x12l\x86\xB1r\x91=at\xAAGg\xBE\xB6\xA7\x96%\n\xA6d\x04\x8C\x11\"\xE9\x832f\xDD\xD4\xFBT\x00\xB4\xE0\xBEo\xBF\xB1PLS\xEEmQ\e\xE8\x90\xD4 \xB0\xA1\xFCGUL{* \xB6\x83\xA0\xB7\x1D\x0E\x86\x12\xFE\xF3\xD5z\xBF\xDCZX\x8D\xBBHOc\xD5\xCB\xF7\x9A\x86\xC1X\x06=\xC1CD8\x97\x9AV\xB3/\xFE\xB6\xEDRS\x8C,\xEBw\xA9\x1C\xC31\xE8$M\xA1\xE0\x81\x05\xC7\xF8\xBFG\x95,J\t%\xF7{\xC1\xD2\x9CZ\xD2\xF0X\x86\x01\\\xBDi\xFE$n\x874\xA2@\xAF\xDC\xA8\xD8Ua\x19#\xD6\x96\xFC\x18\xF7.\x89\xEA\xEB\xBAe\xBC\xD2\x02\f\xE4\xCC\xED*\xC0)\x93\xC6\xE5\xDB\xFAo\xA1;[\x1E\xA1\xE5\xE1\xA2\xCE\x92\x13_`\xD0\x01\xFA<\xB2y\xEE/\x86\"y\x82\xA5H h*\xA9\x97\xF2\xD8\xD8u(\xD1u\xFB\x83\xA7\xE5lvT\xA111\xB5\xF8N\x94\bQ&t\xC6N\xB7\\\xB9@(\xAD\xD9\xA9Q\x8B\x88c\xC2\xA8l\xB3\xD1\b\xA4!z\xA0_R\xF7\x8B\xE1H\x82K=\x9D\xE6\xCEN2}K\xA3;\x97\xD6\xCF\xCF\x88\xAF(\xA0\x9D\x13\xA8c\xDE\x8A\xF4\xB6[\xB2\xC6\xD2eS\xD7\xADu\xA4\xD2v\xD2\x9E\x7F|\xA7\t\xC7\x11y\x9Bo\x95\f\xAA\x95\x19\x9D\x16V#\x7F:0\xE1\x1C\r\x9B\x1F\xEFz\xA6x\xD8\xC8p9j\xF4\xB6\f=Q\xA0\xEB47\x90\xA4\x13\xD0\xFA\x1E\xAF\x89ouVG\x8A\xFD+\xDC\xE1\x10\x19o&\xEB\x8D\t\x9B2*\xDB\xAE\x16{{\xF0_W2\xBF\xBC\xCE\x033\xF6]Cb\xB5\xAFZ\x05\xAF\x10\x12\xDFsB\xD9\xEF\xB0#\xA4\x7F\x0E}\x1AC\xB79\xC4\xDD\x85\x9E\xFE\xB4E\xAE%Z#H3o\x9B3N9Ne\x13\x88\xAA\xBF\xCE\xD5\xE8g\xE1g\xE2\xA9\xCE\xCC\x8E]\xA5.\xFF\xCE\xD7\xC8\x90 \x8E\x02\x00\xCF,\x14\xBE\xEB2\xDD'\x03\xB8N\x9F5\xB1\x9Fl<\xE3\x86\xA8t#\xB8'\xB5Ig\\\xC4\x93f\xE1$\xE3F\f\xC8\x82KB\xF5'\xA9\x8Fz\x16\xBA\xE1\x1C\x8E2/\x83\x94\xBE\xCFh$\xE2g\xACf\x9A-\x85\xDA\x1F\xE6{\xDE[\xE5r\x8A>\xAC\xD7C\x99=\xDAnU?\x93|5\xFF\xB4\xF5/,\x8D^xOE\xA2\xC8<Z\xFE@\x9F\b\xC1K\x13\xCF\xB0\xB6Z\xA0\xCDR\x93ha\x0F>\xB3\xF75\xC6\xD0\xE9\x90\x9E\x80L-\xA6jt\xB7\x10\xFF\xED\xC4\x0F\xD8T\xA9+\x8F_\x14u\x17\xF6Cp\x9F\x13\xBB,\xA0\x87\t\xCCnM+8s\xBE\x93\xB1\x96\xA0,\n\xF4m\x8A\x80\x9C\xF6= \xB2\xAE\"$\t0\xC2\xDA\xDA]\xBC\x91\xD6I\xA4\xC5\x91\x1Cw\xA4@\xA5\xC7Km]\xC64\x95\xD1\x16\xD2\b\xBA\xB1\xE2\"lfV\x88\x04$n)Wb\xD5\b\xFC\x85\xEE>\\\x8B\xD1\x0F\xEDV.\x94\xEBGi&\xCF\xD9\xD9\xB8N\xCA\xF0\xA1\x7F\xE78G7\x1C\xB43\x10\xB9\xAC[-\x82\xC9\xAC\x17\xAF\xFFQ\xD8\xC45\xF7\xBD(1S0\xE2X4\xBE\xF6X81\x9E\xA7Yod\xAFvi&\xD0I\xCCf\t\xB7\xD0\xB2\xD5~\xC9\x84Y\x1E\xC4\xC7\x81\xC9U\xAFgnk\x0F\xD0\x15\x0E83\x96\x89A\x00\xCEJlZ\xD7\xD4\xCFD7\xD3\x02\xC5<t!q\x8B\x1D\a\n!\xBA\x87b\xA0\x06/6\xC4\x1Ed\xDAk\xE0\xC1O\x91\xE6\x02\xC3\xA7\xF9\xA4\xF5\xCC\xCA\xC7-\x06\xA2\xEDL\x86\xD4a\n\x152J\xD9y_\xB4\xD7y\xD0\xDC\xA8\xE2R4\xF9\x9Dk\x1D\x18'~s\x0ExX\x9C:'\xDE\xE9\xA6\xDEfy\x8A\xD0$0\xE3C\x88h\xC3\xFA!N\xF7I\xC6\xD7\x97h\x9F\xCA\xAA;\xBA\x19\x95\xF0:\xF4\xED\x17\xE5\x9C}!!\xDF\xFF:a\\\eO<*/\xA2\x9AB\x8C\xB8t\x83\xC4\xAD\x1F\xC9zZ9\xAF\x9E\xC6J\xC5Y\xB0\xA2A`\x7F\xEC\x00\xA6dK\x1Dtrc\xC5\xDAU\e\x8C\xB0f'\b\xD2\x9E\x9B\xBFE\xCF(\xBEx\xF9\x95\\\x8B\xA1\xA8 \x97\x9F\xA9R\x80\x82\xE43\xCD\xF6\x8E\xAB(\a\x9F\x9A\x11\xEC\xBA\xA5\xD8m\x9A\xA5,\x8B\xB0k0\xFF\xB4\xBD\xE66\xB2\xA8!\x0F\xBAH\x14\\\x133 \xEBX\x81\xEB\x0F\x05[\x00\a\xDFr\xBA^\"\x0E\xD3s\x18\xB8\xBE0E\x9A<\xDFCY@\xD7R\xDEu]7\x97\x02\xA2\xD9\x15\xFB\xB6\x8F\xF7\x8D\tB[\xCA\xCE\x05~;YH\"\x87\xFF\xD80\xD4+\x9B,\xAF5\xD9B\xF4\x83p]\xAFm\b,\xCC3*\x00\xBC\x92\x17\x8D\xB9\xAB\xB7\x06y\xDA#\xF2\xA8\xB2\x1C\xE2\xA1;7\x82u\x04\xF9\xA7\b\x85\xAF@\xC5\xE3\xB5\xE0}\x9D\#@\x1D\xD9\xC9\xB7\xA8\xB2\xD1\xD5%\x06\" F\x98\xD5\xF9\xF1.\xEB\xDF\x98\x8A\xED\xCD\b\xFB\xCD\xF1c\x9ADd\xAE\xA7\x94\xCFY\xF1`\xD6\x06\xED\xAC\xBD\xFF\x82\xEA\x9E\xE2\x13\xBDn\x99J\x04\xCC[m\nd8\x84\xB0\xBD\xBB\x9A\x18\x17z\xF9\x8F8\xF9\xFF5H\n\xB9`d\x8A\xD2c\xA7\x8C\xEBr8H\xF2<\x90I\xBF\x88\xBE\xCF\xAD\xB1\xBB,\x0E\x8FJ\xAE\xC4\xDF\x8E\xAB\xC30\xCFk\xD2\xFE\x1F'P\xB9\x83\x06\xE7\xD2\vr\x14\xD6\xE8\x12\xC7\xDC?\xEA\xAA\xE1F\xFB\xB9\xE7\x14FA\xEC\xD6\xC69\xF22~\xE7\xF7ho~\xFD?\x97\xC4\x02\x8A\xF6\xA8\a\x84\x8C\x96\f\xC0W\xC3\x11\xC1X\x99\x16\xC0\x8E\xE1\e\x9A"

# inflate compressed data
937.times do |counter|
    data = Zlib::inflate(data)
end

# request input
puts "Please input two numbers, each on its own line, to add."

# run data code
eval(data)

Ve o muazzam ipi nereden buldum soruyorsun? Bu onu üretmek için kullandığım program:

require 'zlib'
code = 'a,b=gets.to_i,gets.to_i;p a+b'
oldcode = nil
count = -1
until code.inspect.length > 29000; oldcode = code; code = Zlib::deflate code; count += 1; end
File.open(ARGV.shift, 'w') do |f| f.puts oldcode.inspect; end
puts count

"Sıkıştırma" için Yay! : P

Gördüğünüz gibi, dizenin uzunluk sınırını Stack Exchange gönderileri için uzunluk sınırının hemen altında olan 29000 olarak belirledim, ancak istediğim kadar yüksek yapabilirim.


9

PHP - 1299

Kurallar harici kütüphanelerin kullanılmasını yasaklamaz, bu yüzden SimplePHPEasyPlus'ın kullanıldığı kod şöyledir :

use SimplePHPEasyPlus\Number\NumberCollection;
use SimplePHPEasyPlus\Number\SimpleNumber;
use SimplePHPEasyPlus\Number\CollectionItemNumberProxy;
use SimplePHPEasyPlus\Parser\SimpleNumberStringParser;
use SimplePHPEasyPlus\Iterator\CallbackIterator;
use SimplePHPEasyPlus\Operator\AdditionOperator;
use SimplePHPEasyPlus\Operation\ArithmeticOperation;
use SimplePHPEasyPlus\Operation\OperationStream;
use SimplePHPEasyPlus\Engine;
use SimplePHPEasyPlus\Calcul\Calcul;
use SimplePHPEasyPlus\Calcul\CalculRunner;


$numberCollection = new NumberCollection();

$numberParser = new SimpleNumberStringParser();

$firstParsedNumber = $numberParser->parse('1');
$firstNumber = new SimpleNumber($firstParsedNumber);
$firstNumberProxy = new CollectionItemNumberProxy($firstNumber);

$numberCollection->add($firstNumberProxy);

$secondParsedNumber = $numberParser->parse('1');
$secondNumber = new SimpleNumber($secondParsedNumber);
$secondNumberProxy = new CollectionItemNumberProxy($secondNumber);

$numberCollection->add($secondNumberProxy);

$addition = new AdditionOperator('SimplePHPEasyPlus\Number\SimpleNumber');

$operation = new ArithmeticOperation($addition);

$engine = new Engine($operation);

$calcul = new Calcul($engine, $numberCollection);

$runner = new CalculRunner();

$runner->run($calcul);

$result = $calcul->getResult();
$numericResult = $result->getValue(); // 2

10
Bu kütüphanenin neden yazıldığıyla gerçekten ilgileniyorum.
marczellm

2
@ marczellm Belki daha erken bir kod bowling mücadelesi için.
gerrit

8

32 bit işaretsiz girişler için C (perl yoluyla) - 170,141,183,381,241,069,554,076,045,499,751,727,125 (bu, 1,70141183381241e + 38)

Benim felsefem, sıfırdan ekleme yaparken, 2, 3, 7 ya da 65535 gibi önceden hesaplanmış Kostantlara güvenmenin akıllıca olmadığı! 0 ve 1, ihtiyacımız olan tek sabit olmalı, değil mi?

Bu nedenle, herhangi bir sabitleri önceden hesaplamam - bunları anında görüldüğü gibi hesaplarım! 8 bit işaretli tamsayı girişini desteklemek için, 20.461.843 boşluk olmayan karakterlerin kaynak koduna ihtiyacınız vardır. 32-bit işaretli tamsayı girdisini uygulamak için, uzunluk kaynağı koduna ihtiyacınız var 1.70141183381241e + 38 ;-)

8 bit işaretli tamsayı kodunun küçük bir snippet'ine hazır mısınız? Buyrun:

int add(int i, int j) {
  if (i == -1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1) {
    if (j == -1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1) return -1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1;
    if (j == -1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1) return -1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1;
    if (j == -1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1) return -1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1;
    ...
    if (j == 1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1) return -1-1-1;
    if (j == 1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1) return -1-1;
    if (j == 1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1) return -1;
  }
  if (i == -1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1) {
    if (j == -1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1) return -1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1;
    if (j == -1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1) return -1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1;
    if (j == -1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1) return -1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1;
    ...
    if (j == 1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1) return -1-1;
    if (j == 1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1) return -1;
    if (j == 1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1) return 0;
  }
  if (i == -1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1) {
    if (j == -1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1) return -1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1;
    if (j == -1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1) return -1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1;
    if (j == -1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1) return -1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1;
    ...
    if (j == 1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1) return -1;
    if (j == 1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1) return 0;
    if (j == 1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1) return 1;
  }

  ...

  if (i == 1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1) {
    if (j == -1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1) return -1-1-1;
    if (j == -1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1) return -1-1;
    if (j == -1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1) return -1;
    ...
    if (j == 1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1) return 1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1;
    if (j == 1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1) return 1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1;
    if (j == 1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1) return 1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1;
  }
  if (i == 1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1) {
    if (j == -1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1) return -1-1;
    if (j == -1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1) return -1;
    if (j == -1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1) return 0;
    ...
    if (j == 1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1) return 1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1;
    if (j == 1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1) return 1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1;
    if (j == 1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1) return 1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1;
  }
  if (i == 1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1) {
    if (j == -1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1) return -1;
    if (j == -1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1) return 0;
    if (j == -1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1) return 1;
    ...
    if (j == 1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1) return 1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1;
    if (j == 1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1) return 1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1;
    if (j == 1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1) return 1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1;
  }
}

Bu kodun bir şekilde golf yapıldığına dikkat edin - örneğin:

if(x==1 and y==1) ...
if(x==1 and y==1+1) ...
if(x==1 and y==1+1+1) ...

X'in her seferinde birine eşit olup olmadığını kontrol etmenize gerek yok, değil mi? Yani kodum çok daha verimli † ve özlü † ve bunun yerine:

if(x==1) {
  if(y==1) ...
  if(y==1+1) ...
  if(y==1+1+1) ...
}

Kesinlikle daha az özlü bir yönteme değiştirerek kod uzunluğunu daha da uzatabilirim =)

Ve işte bu canavarları üretmek için kullandığım kaynak kod, ancak dikkatli olun - bu formatta 24 bitlik bir tamsayıyı (her biri 33 MB) temsil etmek, makinemde 1GB'den fazla bellek yemeye neden olur. Emrinizde 512GB'tan fazla bellek varsa, devam edip 32 bit tamsayılarla deneyebilirsiniz.

#!/usr/bin/perl

use strict;
use warnings;

my ($MININT, $MAXINT);
my $abbrev;
if($ARGV[0] =~ /-a(?:=(\d+))?/) {
  $abbrev = defined $1 ? $1 : 3;
  shift @ARGV;
}
if($ARGV[0] =~ /^(\d+)([su]?)$/ && !defined $ARGV[1]) {
  my $unsigned = $2 && $2 eq "u"; #default to signed
  my $bits = $1;
  my $range = 2**$bits;
  $MININT = $unsigned ? 0          : 2**($bits-1)-$range;
  $MAXINT = $unsigned ? $range - 1 : 2**($bits-1)-1;
} else {
  $MININT = shift @ARGV;
  $MAXINT = shift @ARGV;
}

sub componentize {
  my $x = shift;
  return $x < 0 ? "-1" x abs($x) :
         $x > 0 ? "1".("+1"x abs($x-1)) :
         0;
}

my @range = $abbrev ? ($MININT..($MININT+$abbrev), "x", ($MAXINT-$abbrev)..$MAXINT)
                    : ($MININT..$MAXINT);

my $indent="  ";
print "int add(int i, int j) {\n";
for my $i (@range) {
  if($i eq "x") { print "$indent...\n"; next };
  print "${indent}if (i == ".componentize($i).") {\n";
  for my $j (@range) {
    if($j eq "x") { print "$indent$indent...\n"; next };
    print "${indent}${indent}if (j == ".componentize($j).") return ".componentize($i+$j).";\n";
  }
  print "$indent}\n";
}
print "}\n";

Vay, işte bu =)


1
† kaçırdığınız takdirde, alaycı =)
skibrianski

7

Java - 2406 (beyaz boşluklu 3220)

Hepimiz bilgisayarların bit işlemede iyi olduğunu ve her şeyde o kadar iyi olmadığını biliyoruz. Bu nedenle programım etkin bitsel toplama kullanarak ekleme işlemini gerçekleştiriyor!

/**
 * Solution for PCG22921.
 * 
 * The program adds two natural numbers using efficient bit addition.
 */
public class PCG22921 {
    /**
     * Contains the program.
     * 
     * @param   args    Exactly two integer numbers.
     */
    public static void main(String[] args) {
        // check whether sane arguments were given
        if (args.length != 2) {
            throw new IllegalArgumentException("You must provide exactly two numbers");
        }

        // transform the arguments into integer
        int number1 = Integer.parseInt(args[0]);
        int number2 = Integer.parseInt(args[1]);

        // convert number1 into bits
        String bits1 = "";
        while (number1 > 0) {
            bits1 = (number1 % 2) + bits1;
            number1 = number1 / 2;
        }

        // convert number2 into bits
        String bits2 = "";
        while (number2 > 0) {
            bits2 = (number2 % 2) + bits2;
            number2 = number2 / 2;
        }

        // ensure both numbers have the same length
        while (bits1.length() < bits2.length()) {
            bits1 = "0" + bits1;
        }
        while (bits2.length() < bits1.length()) {
            bits2 = "0" + bits2;
        }

        // stores whether the last addition overflowed
        boolean overflow = false;

        // bits of the result
        String resultBits = "";

        // keep adding until the bits are empty
        while (bits1.length() > 0) {
            // grab the last bit of each number
            char lastBit1 = bits1.charAt(bits1.length() - 1);
            char lastBit2 = bits2.charAt(bits2.length() - 1);

            // Quick lookup table to speed up addition!
            if (lastBit1 == '1' && lastBit2 == '1' && overflow) {
                resultBits = "1" + resultBits;
                overflow = true;
            }
            else if (lastBit1 == '1' && lastBit2 == '1' && !overflow) {
                resultBits = "0" + resultBits;
                overflow = true;
            }
            else if (lastBit1 == '1' && lastBit2 == '0' && overflow) {
                resultBits = "0" + resultBits;
                overflow = true;
            }
            else if (lastBit1 == '0' && lastBit2 == '1' && overflow) {
                resultBits = "0" + resultBits;
                overflow = true;
            }
            else if (lastBit1 == '1' && lastBit2 == '0' && !overflow) {
                resultBits = "1" + resultBits;
                overflow = false;
            }
            else if (lastBit1 == '0' && lastBit2 == '1' && !overflow) {
                resultBits = "1" + resultBits;
                overflow = false;
            }
            else if (lastBit1 == '0' && lastBit2 == '0' && overflow) {
                resultBits = "1" + resultBits;
                overflow = false;
            }
            else if (lastBit1 == '0' && lastBit2 == '0' && !overflow) {
                resultBits = "0" + resultBits;
                overflow = false;
            }
            // error handling is importent
            else throw new RuntimeException("This should not happen");

            // remove the processed bits
            bits1 = bits1.substring(0, bits1.length() - 1);
            bits2 = bits2.substring(0, bits2.length() - 1);
        }
        // check whether there is overflow left
        if (overflow) resultBits = "1" + resultBits;

        // Convert the bits into a result number again
        int result = 0;
        int bitValue = 1;
        while (resultBits.length() > 0) {
            char lastResultBit = resultBits.charAt(resultBits.length() - 1);

            if (lastResultBit == '1') {
                result = result + bitValue;
            }
            resultBits = resultBits.substring(0, resultBits.length() - 1);

            // each bit is twice as worthy as the last one
            bitValue = bitValue * 2;
        }

        // show the result
        System.out.println(result);
    }
}

Toplamak için bazı hatalar ekleyebilirsin ...
Yoda

3
Java sürümünün BitFactory, BitFactoryStrategy, bir sürü XML konfigürasyon dosyası ve benzeri kullanmasını beklerdim.
RemcoGerlich

@RemcoGerlich Genelde Java geliştiricisi değilim, bunu diğer dillere kıyasla oldukça ayrıntılı olduğu için seçtim.
TimWolla

4

Java - 309 731 759

En uzun değil, en mantıklı yanlış yorum olabilir.

düzenleme: Üzgünüz, sadece bu olmadığını fark ettim .

Bir bitden daha büyük sayılar eklemek, önceki bitimden iki bit ve bir geçişi alan bir toplam toplayıcı kullanarak bireysel bitler ekleyerek yapılır ve toplam bit ile bir bit bitini çıkarır. Basit bir ekleme için, ilk aşamada taşınması sıfır olmalıdır.

public class Adder {
    public static void main(String[] args) throws Exception {
        int a = 135;
        int b = 87;

        int result = 0;
        int carryIn = 0;

        // Assume 8 bits, so we have 8 full-adders:
        for (int i = 0; i < 8; i++) { // Assume numbers are 8 bits long
            // Get the Nth bits from the numbers
            int bitA = a >> i & 1;
            int bitB = b >> i & 1;

            // Full adder, using the truth table:
            int bitC = 0;
            int carryOut = 0;
            if (bitA == 0 && bitB == 0 && carryIn == 0) {
                bitC = 0;
                carryOut = 0;
            }
            else if (bitA == 0 && bitB == 0 && carryIn == 1) {
                bitC = 1;
                carryOut = 0;
            }
            else if (bitA == 0 && bitB == 1 && carryIn == 0) {
                bitC = 1;
                carryOut = 0;
            }
            else if (bitA == 0 && bitB == 1 && carryIn == 1) {
                bitC = 0;
                carryOut = 1;
            }
            else if (bitA == 1 && bitB == 0 && carryIn == 0) {
                bitC = 1;
                carryOut = 0;
            }
            else if (bitA == 1 && bitB == 0 && carryIn == 1) {
                bitC = 0;
                carryOut = 1;
            }
            else if (bitA == 1 && bitB == 1 && carryIn == 0) {
                bitC = 0;
                carryOut = 1;
            }
            else if (bitA == 1 && bitB == 1 && carryIn == 1) {
                bitC = 1;
                carryOut = 1;
            }

            // Append the bits to the result
            result |= bitC << i;

            // Carry for next stage
            carryIn = carryOut;
        }

        // Verify the result
        System.out.println("Result = " + result + ", CarryOut = " + carryIn);
        System.out.println("Should be: " + (a + b));
    }
}

Sonuç = 222, Gerçekleştirme = 0
Olması gereken: 222


1
Kariyerimin ilk birkaç yılında, bir programlama dili gibi görünen ama aslında bir çip üzerinde uygulanacak kapıları tanımlayan bir şey üzerinde çalışıyordum. Bu acı verici bir şekilde tanıdık geliyor ... ... çünkü bunu for"giriş veriyolunun bütün bitlerine kopyala" demek için bir döngü kadar zarif bir şeyimiz olmadığını düşünmüştüm . (Usul sözdizimi ve işlevsel uygulama ile bir dil hayal edin ... burada düzenleme için birincil aracın akış çizelgeleri olarak oldukça işlemsel bir sunum olduğu ... ne diyebilirim, erken bir çabaydı.)
keshlam

3

Python 2.7 (iyi yolu ekleyerek)

def add(x,y):
    while True:
        a = x & y
        b = x ^ y
        x = a << b & 0xffffffff
        y = b
        if a == 0:
           break
    return b

number_1 = int(raw_input("Please enter a number(1)"))
number_2 = int(raw_input("Please enter a number(2)"))

print "result is: %d" % add(number_1, number_2)

kredi https://stackoverflow.com/questions/366706/bitwise-subtraction-in-python adresine gidiyor


Bu Python 2 mi?
Hosch250,

1
@ hosch250, yep: (python3'te) baskının desteklenmeyen versiyonunu kullanır
puckipedia 6'14

2
@puckipedia Yep, çünkü biliyordum raw_input(). OP'ye dili belirtmenin iyi bir uygulama olduğunu ima ediyordum.
Hosch250,

2
function add(a, b)
{
    while (b) {
        a ^= b;
        b &= a ^ b;
        b <<= 1;
    }
    return a;
}

Bu hangi dil? JavaScript kabul ediyorum?
Outgolfer Erik

@EriktheGolfer Vay, evet, bu benim en eski önerilerimden biri olmalı.
Neil

0

C # - 5395

Yayarlar sağlar dinamik yöntemi kullanılarak ek kodunu. Aslında kodunu yayarım ki bu da tamsayı toplama çağırmak için kod yayar. Aşağıdaki işlev Add(), çalıştırıldığında tamsayı toplama çağırmak için dinamik bir yöntem oluşturur.

using System;
using System.Reflection.Emit;

namespace JA
{
class Program
{
    static void Main(string[] args)
    {
        int z=Add(1, 2);
        // z = 3
    }

    // Emit MSIL to emit MSIL
    public static int Add(int x, int y)
    {
        Type delegate_type=typeof(Func<int, int, int>);
        DynamicMethod method=new DynamicMethod(typeof(int).ToString()+".op_Addition",
            typeof(int),
            new Type[] { typeof(int), typeof(int) }, typeof(Program));
        ILGenerator generator=method.GetILGenerator();

        LocalBuilder method1=generator.DeclareLocal(typeof(DynamicMethod));
        LocalBuilder generator1=generator.DeclareLocal(typeof(ILGenerator));
        LocalBuilder add1=generator.DeclareLocal(typeof(Func<int, int, int>));
        LocalBuilder args1=generator.DeclareLocal(typeof(Type[]));
        generator.Emit(OpCodes.Ldtoken, typeof(int));

        generator.Emit(OpCodes.Call,
            typeof(Type).GetMethod("GetTypeFromHandle",
                System.Reflection.BindingFlags.Public|
                System.Reflection.BindingFlags.Static));
        generator.Emit(OpCodes.Callvirt,
            typeof(object).GetMethod("ToString",
                System.Reflection.BindingFlags.Public|
                System.Reflection.BindingFlags.Instance));
        generator.Emit(OpCodes.Ldstr, ".op_Addition");
        generator.Emit(OpCodes.Call,
            typeof(string).GetMethod("Concat",
                new Type[] { typeof(string), typeof(string) }));
        generator.Emit(OpCodes.Ldtoken, typeof(int));
        generator.Emit(OpCodes.Call,
            typeof(Type).GetMethod("GetTypeFromHandle",
                System.Reflection.BindingFlags.Public|
                System.Reflection.BindingFlags.Static));
        generator.Emit(OpCodes.Ldc_I4, 2);
        generator.Emit(OpCodes.Newarr, typeof(Type));
        generator.Emit(OpCodes.Stloc_3);
        generator.Emit(OpCodes.Ldloc_3);
        generator.Emit(OpCodes.Ldc_I4, 0);
        generator.Emit(OpCodes.Ldtoken, typeof(int));
        generator.Emit(OpCodes.Call,
            typeof(Type).GetMethod("GetTypeFromHandle",
                System.Reflection.BindingFlags.Public|
                System.Reflection.BindingFlags.Static));
        generator.Emit(OpCodes.Stelem_Ref);
        generator.Emit(OpCodes.Ldloc_3);
        generator.Emit(OpCodes.Ldc_I4, 1);
        generator.Emit(OpCodes.Ldtoken, typeof(int));
        generator.Emit(OpCodes.Call,
            typeof(Type).GetMethod("GetTypeFromHandle",
                System.Reflection.BindingFlags.Public|
                System.Reflection.BindingFlags.Static));
        generator.Emit(OpCodes.Stelem_Ref);
        generator.Emit(OpCodes.Ldloc_3);
        generator.Emit(OpCodes.Ldtoken, typeof(Program));
        generator.Emit(OpCodes.Call,
            typeof(Type).GetMethod("GetTypeFromHandle",
                System.Reflection.BindingFlags.Public|
                System.Reflection.BindingFlags.Static));

        generator.Emit(OpCodes.Newobj,
            typeof(DynamicMethod).GetConstructor(
                new Type[] { typeof(string), typeof(Type), typeof(Type[]), typeof(Type) }));

        generator.Emit(OpCodes.Stloc_0);
        generator.Emit(OpCodes.Ldloc_0);
        generator.Emit(OpCodes.Callvirt,
            typeof(DynamicMethod).GetMethod("GetILGenerator",
                Type.EmptyTypes));
        generator.Emit(OpCodes.Stloc_1);
        generator.Emit(OpCodes.Ldloc_1);
        generator.Emit(OpCodes.Ldtoken, typeof(int));
        generator.Emit(OpCodes.Call,
            typeof(Type).GetMethod("GetTypeFromHandle",
                System.Reflection.BindingFlags.Public|
                System.Reflection.BindingFlags.Static));
        generator.Emit(OpCodes.Callvirt,
            typeof(ILGenerator).GetMethod("DeclareLocal",
                new Type[] { typeof(Type) }));
        generator.Emit(OpCodes.Pop);
        generator.Emit(OpCodes.Ldloc_1);
        generator.Emit(OpCodes.Ldsfld,
            typeof(OpCodes).GetField("Ldarg_0",
                System.Reflection.BindingFlags.Public|System.Reflection.BindingFlags.Static));
        generator.Emit(OpCodes.Callvirt,
            typeof(ILGenerator).GetMethod("Emit", new Type[] { typeof(OpCode) }));
        generator.Emit(OpCodes.Ldloc_1);
        generator.Emit(OpCodes.Ldsfld,
            typeof(OpCodes).GetField("Ldarg_1",
                System.Reflection.BindingFlags.Public|System.Reflection.BindingFlags.Static));
        generator.Emit(OpCodes.Callvirt,
            typeof(ILGenerator).GetMethod("Emit", new Type[] { typeof(OpCode) }));
        generator.Emit(OpCodes.Ldloc_1);
        generator.Emit(OpCodes.Ldsfld,
            typeof(OpCodes).GetField("Add",
                System.Reflection.BindingFlags.Public|System.Reflection.BindingFlags.Static));
        generator.Emit(OpCodes.Callvirt,
            typeof(ILGenerator).GetMethod("Emit", new Type[] { typeof(OpCode) }));
        generator.Emit(OpCodes.Ldloc_1);
        generator.Emit(OpCodes.Ldsfld,
            typeof(OpCodes).GetField("Stloc_0",
                System.Reflection.BindingFlags.Public|System.Reflection.BindingFlags.Static));
        generator.Emit(OpCodes.Callvirt,
            typeof(ILGenerator).GetMethod("Emit", new Type[] { typeof(OpCode) }));
        generator.Emit(OpCodes.Ldloc_1);
        generator.Emit(OpCodes.Ldsfld,
            typeof(OpCodes).GetField("Ldloc_0",
                System.Reflection.BindingFlags.Public|System.Reflection.BindingFlags.Static));
        generator.Emit(OpCodes.Callvirt,
            typeof(ILGenerator).GetMethod("Emit", new Type[] { typeof(OpCode) }));
        generator.Emit(OpCodes.Ldloc_1);
        generator.Emit(OpCodes.Ldsfld,
            typeof(OpCodes).GetField("Ret",
                System.Reflection.BindingFlags.Public|System.Reflection.BindingFlags.Static));
        generator.Emit(OpCodes.Callvirt,
            typeof(ILGenerator).GetMethod("Emit", new Type[] { typeof(OpCode) }));
        generator.Emit(OpCodes.Ldloc_0);
        generator.Emit(OpCodes.Ldtoken, typeof(Func<int, int, int>));
        generator.Emit(OpCodes.Call,
            typeof(Type).GetMethod("GetTypeFromHandle",
                System.Reflection.BindingFlags.Public|
                System.Reflection.BindingFlags.Static));
        generator.Emit(OpCodes.Callvirt,
            typeof(DynamicMethod).GetMethod("CreateDelegate",
                new Type[] { typeof(Type) }));
        generator.Emit(OpCodes.Isinst, typeof(Func<int, int, int>));
        generator.Emit(OpCodes.Stloc_2);
        generator.Emit(OpCodes.Ldloc_2);
        generator.Emit(OpCodes.Ldarg_0);
        generator.Emit(OpCodes.Ldarg_1);
        generator.Emit(OpCodes.Callvirt,
            typeof(Func<int, int, int>).GetMethod("Invoke",
                System.Reflection.BindingFlags.Public|System.Reflection.BindingFlags.Instance));
        generator.Emit(OpCodes.Ret);

        Func<int, int, int> add2=method.CreateDelegate(typeof(Func<int, int, int>)) as Func<int, int, int>;

        return add2(x, y);
    }
}
}

1
PS. Kod yayan kod vermeye çalıştım, ama sonunda {System.SystemException}: {"JIT Compiler encountered an internal limitation."}
ja72

0

Kodun n karakterden daha uzun olmasını istediğinizi söyleyin. Aşağıdaki kod çok daha uzun.

public class Add
{
    int main(int a, int b)
    {
        return (a + (b/2^1) + (b/2^2) + (b/2^3) ... (b/2^n) + (b/2^n));
    }
}

0

C

#include<stdio.h>

int Max(int a,int b)
{
    if(a>b)
    return a;
    else
    return b;
}
int Min(int a,int b)
{
    if(a<b)
    return a;
    else
    return b;
}
int main(void)
{
    int a,b,sum,i,m;
    i=0;
    m = Min(a,b);
    scanf("%d", &a);
    scanf("%d", &b);

    if(Min(a,b) == Max(a,b))
    {
        sum = 2*a;
        printf("%d", sum );
    }
    else
    {
        do
        {
            i++;
            m++;
        }while(m < Max(a,b));



        sum = i + 2 * Min(a,b);
        printf("%d", sum);
    }
    return 0;
}

Çok sayıda için iyi çalışmıyor, ancak bununla değiştirilebilir

#include<stdio.h>

int Max(int a,int b)
{
    if(a>b)
    return a;
    else
    return b;
}
int Min(int a,int b)
{
    if(a<b)
    return a;
    else
    return b;
}
int main(void)
{
    int a,b,sum,i,m;
    i=0;
    scanf("%d", &a);
    scanf("%d", &b);

    if(Min(a,b) == Max(a,b))
    {
        sum = 2*a;
        printf("%d", sum );
    }
    else
    {
        i = Max(a,b) - Min(a,b);
        sum = i + 2 * Min(a,b);
        printf("%d", sum);
    }
    return 0;
}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.