Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- #include <boost/lexical_cast.hpp>
- void Run( const std::string& v, int tgt, int start ) {
- for( ; tgt >= 2 * start + 1; ++start )
- Run( v + ' ' + boost::lexical_cast<std::string>( start ), tgt - start, start + 1 );
- std::cout << v << ' ' << tgt << std::endl;
- }
- int main() {
- Run( std::string(), 10, 1 );
- getchar();
- }
- Second paraphrasing is as follows:
- #include <cassert>
- #include <cstdlib>
- #include <iostream>
- class Cpu {
- public:
- virtual int dummy( int, int ) {}
- private:
- virtual int add_( int a, int b ) { return a + b; } /* A */
- virtual int sub_( int a, int b ) { return a - b; } /* B */
- virtual int mul_( int a, int b ) { return a * b; } /* C */
- virtual int div_( int a, int b ) { return a / b; } /* D */
- virtual int mod_( int a, int b ) { return a % b; } /* E */
- virtual int and_( int a, int b ) { return a & b; } /* F */
- virtual int or_( int a, int b ) { return a | b; } /* G */
- virtual int xor_( int a, int b ) { return a ^ b; } /* H */
- };
- int main( int argc, char* argv[] ) {
- typedef int (Cpu::*Memfun)( int, int );
- union {
- Memfun fn;
- unsigned char ptr[6];
- } u;
- Cpu cpu;
- u.fn = &Cpu::dummy;
- assert( argc == 4 );
- int p1 = atoi( argv[ 1 ] );
- int p2 = atoi( argv[ 3 ] );
- char op = argv[2][0];
- assert( op >= 'A' && op <= 'H' );
- u.ptr[0] = 1 + 4 * ( op - 'A' + 1 ); // Don't look here!
- std::cout << "The answer is " << ( (cpu.*(u.fn))( p1, p2 ) ) << std::endl;
- }
- Third paraphrasing:
- #include <cassert>
- #include <cstdlib>
- #include <iostream>
- class Cpu {
- public:
- virtual int dummy( int, int ) {}
- private:
- virtual int add_( int a, int b ) { return a + b; } /* A */
- virtual int sub_( int a, int b ) { return a - b; } /* B */
- virtual int mul_( int a, int b ) { return a * b; } /* C */
- virtual int div_( int a, int b ) { return a / b; } /* D */
- virtual int mod_( int a, int b ) { return a % b; } /* E */
- virtual int and_( int a, int b ) { return a & b; } /* F */
- virtual int or_( int a, int b ) { return a | b; } /* G */
- virtual int xor_( int a, int b ) { return a ^ b; } /* H */
- };
- int main( int argc, char* argv[] ) {
- typedef int (Cpu::*Memfun)( int, int );
- union {
- Memfun fn;
- unsigned char ptr[6];
- } u;
- Cpu cpu;
- u.fn = &Cpu::dummy;
- assert( argc == 4 );
- int p1 = atoi( argv[ 1 ] );
- int p2 = atoi( argv[ 3 ] );
- char op = argv[2][0];
- assert( op >= 'A' && op <= 'H' );
- u.ptr[0] = 1 + 4 * ( op - 'A' + 1 ); // Don't look here!
- std::cout << "The answer is " << ( (cpu.*(u.fn))( p1, p2 ) ) << std::endl;
- }
- Header:
- int main () {
- int line = 1; // set the line (y coordinate) to 1 (first line)
- int p = 0; // set the position in the line (x coordinate) to 0.
- DIR dcur = EAST; // set the current direction to EAST... DIR is a int typedef
- /* ======== PROGRAM VARS ======== */
- stack <int> svar; // the program stack
- /* ============================== */
- if(isblank(getVarStr(file)[0]) || isnull(getVarStr(file)[0])) // if line[0] is empty or '\0'
- err("No initial insructions: Execution failed"); // throw error... err(const char*)
- bool string_mode = false; // not in string mode...
- while(true) { // program loop
- randSeed(); // invokes random seed: srand(time(NULL));
- char curp = seek(line, p); // char current cursor position
- if(!string_mode)
- setdir(&dcur, line, p); // set the direction based on curp... ^^^
- if(istrampoline(curp)) // if # symbol (means skip next call):
- jumpp(dcur, &line, &p); // *p+=2;
- else // if 'curp' is normal (not '#')
- nextp(dcur, &line, &p); // ++*p
- trypush(seek(line, p), &svar); // if 'curp' is number 0-9: svar.push(curp-'0');
- /* ========================= parse 'curp' =============== */
- /* ... */
RAW Paste Data