Contest 44: Crazy Calculator

Online C++ programming contests.

Moderators: Darobat, RecursiveS, Dante Shamest, Bugdude, Wizard, raimo

Postby gamma » Wed Feb 16, 2005 4:16 pm

Topic hijackers ;-)
while (true){sleep(28800);work(57600);}
"Free" as in speech is so much better than "free" as in beer.
User avatar
gamma
 
Posts: 178
Joined: Mon Dec 01, 2003 9:16 am
Location: The Netherlands

Postby Togra » Wed Feb 16, 2005 4:21 pm

Alvaro wrote:The guy that writes the problems for mathschallenge.net (let's call him Euler), has screwed up a couple of times, either proposing a problem with poor or incorrect wording, or introducing the wrong number as the answer. A few other members of the "100% club" and I offered our help with testing the problems before they are released.
Good thinking of you guys, I've also had some problems with his way of posing the problem.

Alvaro wrote:So, actually, I have already solved the three problems :). I will probably send in the solutions one day after the problems are released.
That's fair, true sportmanship!

[edit]
@Gamma: whoops, I'm shutting up now. And you still have time left to figure out how to loose those 4 tokens (or even more... ??), so use that time! ;)
Togra
 
Posts: 188
Joined: Wed Jul 28, 2004 8:51 am
Location: NL

Postby gamma » Wed Feb 16, 2005 5:59 pm

Damn, time limit exceeded. Stuck @ 103.
while (true){sleep(28800);work(57600);}
"Free" as in speech is so much better than "free" as in beer.
User avatar
gamma
 
Posts: 178
Joined: Mon Dec 01, 2003 9:16 am
Location: The Netherlands

Postby Darryl » Wed Feb 16, 2005 8:06 pm

Ok I am pumped up now...What's the next contest
User avatar
Darryl
 
Posts: 1342
Joined: Wed Sep 01, 2004 10:50 am
Location: Cayman Islands

Postby Beer Hunter » Thu Feb 17, 2005 12:20 am

Well, now that we've hit the time limit, here's my 117-token entry:
Code: Select all
#include "fstream"

main()
{
    int value=1, pos=31, op=1;
    char grid[832];
   
    std::ifstream f("input.txt");
    while (f.getline(grid+op++*32, 32));
   
    while (op)
    {
        int delta = "AAAAAAAAAAAAAAAAAAAAAAAAAAA `?A `?A `?A"[op]-64, g = grid[pos+=delta] - '0';
        op<31 ? value*=g : value += op<35?g:-g;
        op = "The quick brown fox jumps over a lazy dog. The quick brown fox jumps over a lazy dog. Out of spac\035  \036\000\041\040\042\043\045\044\046      \034\037  \033"[grid[pos+=delta]];
    }
    printf("%i\n", value);
}
User avatar
Beer Hunter
 
Posts: 912
Joined: Sat Dec 13, 2003 7:12 pm
Location: Australia

Postby gamma » Thu Feb 17, 2005 2:25 am

Beer Hunter wrote:Well, now that we've hit the time limit, here's my 117-token entry:<snip>
I think you should have exploited the fact that globals are initialized at zero and that x - y == x + -y. Furthermore, the while loop can be one statement (comma operator).

One of my 103 solutions (I never that my code was understandable):[syntax="cpp"]#include "fstream"

char
* input = new char [1024];
int
num
,
answer;

main()
{
std::ifstream filein("input.txt");
while (filein.getline(input + 26 * num++, 26))
;

while (num)
num <= 40
?
answer += "\0\1\2\3\4\5\6\7\10\11.1234567890123456789012345678901234567\0\1\2\3\4\5\6\7\10\11..."[*input]
*
//01 2 3 4 5 6 7 8 910 1 2 3 4 5 6 7 8 920 1 2 3 4 5 6 7 8 930 1 2 3 4 5 67 8 9 0
"\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\0\0\1\1\1\1.\377\377\377\377"[num]
:
answer *= *input - '0',

// 0 1 2 3 3 4
// 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 67 8 9 0
input += "\0\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\0\0\1\32\377\346 \1\32\377\346 \1\32\377\346"
[
num = "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456\54bc\52\0\42\41\40\50\47\46\45mnopqr\53tuv\55xyz"
[*(input += "\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\0\0\1\32\377\346 \1\32\377\346 \1\32\377\346"[num])]
];

printf("%d\n", answer);
}[/syntax]Num is a code that translates a command like 's','l' into a number. The while loop consists of one statements, saving tokens on the parentheses.

This was my first 103 solution:[syntax="cpp"]#include "fstream"

char
* map = new char [1024]; // Should be enough. 26 * 26 = 676.
int
result,
val
;

//int
main()
{
std::ifstream file("input.txt");
while (file.getline(map + 26 * val++, 26));
while (*map - 'e')

val =
map["\0...............................................\0\0\0\0\0\0\0\0\0\0.......................................\377..\1.\377\32\1\346\377\32\1......\32\346..\346 "
[*map]] - '0'
,

"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\1\0\0\0"
[*map]
?
result *= val
:
result += val * "\1...............................................\1\1\1\1\1\1\1\1\1\1.......................................\377bc\377e\1\1\1\377\377\377\377mnopqrs\1uvwxyz"
[*map],
map += "\1...............................................\1\1\1\1\1\1\1\1\1\1.......................................\376bc\2e\376\64\2\314\376\64\2mnopqr\64\314uv\314xyz"
[*map];

printf("%d\n", result);
}
[/syntax]
while (true){sleep(28800);work(57600);}
"Free" as in speech is so much better than "free" as in beer.
User avatar
gamma
 
Posts: 178
Joined: Mon Dec 01, 2003 9:16 am
Location: The Netherlands

Postby Corsix » Thu Feb 17, 2005 3:12 am

My 112 token code:[syntax="cpp"]#include "fstream"
//TheInstructions: 32x32 array ([Row][Column]) of the instructions
//Cursor: Current offset into TheInstructions
//TheResult: The running total
//Operation: The selected operation (w,s,a,d,t,f,g,h,i,j,k,l)
//Temp: FileIO: Offset into TheInstructions Processing: The number (0-9)

int Cursor, TheResult, Operation = 'h', Temp;
char TheInstructions[1024];
main()
{
std::ifstream TheFile("input.txt");
while(TheFile.getline(TheInstructions+32*Temp++,32));
while(Operation != 'e')
Temp = TheInstructions[Cursor] - '0',
TheResult += "\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x1\x1\x1\xFF\xFF\xFF\xFF\x0\x0\x0\x0\x0\x0\x0\x1\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0"[Operation]*Temp,
TheResult += TheResult*"\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x1\x0\x0\x1\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x1\x0\x0\x0\x1\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0"[Operation]*--Temp,
Cursor += "\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\xFF\x0\x0\x1\x0\xFF\x20\x1\xE0\xFF\x20\x1\x0\x0\x0\x0\x0\x0\x20\xE0\x0\x0\xE0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0"[Operation],
Cursor += "\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\xFF\x0\x0\x1\x0\xFF\x20\x1\xE0\xFF\x20\x1\x0\x0\x0\x0\x0\x0\x20\xE0\x0\x0\xE0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0"[Operation = TheInstructions[Cursor]];
printf("%i\n",TheResult);
}
[/syntax]And an entry in CorsixScript:[syntax="CorsixScript"]include "io.cxs" "string.cxs" "logic.cxs" "math.cxs"
fopen "input.txt" "r" $if
set $fd ""
section $rl
set $l ""
fscan $if $l
strlen $l $ll
lt $ll 32 $ne
if $ne
call $el
add $fd $l
feof $if $ie
ifnot $ie
jump $rl
set $c 0
set $o 104
set $r 0
set $1 "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbcccaaaabbbbbbbcbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
set $2 "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbcbbcbbbbbbbbbbbbbbcbbbcbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
set $3 "TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTSTTUTStU4StUTTTTTTt4TT4TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT"
section $m
eq $o 101 $ae
if $ae
jump $nd
getchar $fd $c $t
sub $t 48
getchar $1 $o $tc
sub $tc 98
set $tn $t
mul $tn $tc
add $r $tn
sub $t 1
getchar $2 $o $tc
sub $tc 98
mul $tc $t
mul $tc $r
add $r $tc
getchar $3 $o $tm
sub $tm 84
add $c $tm
getchar $fd $c $o
getchar $3 $o $tm
sub $tm 84
add $c $tm
jump $m
section $nd
print $r
end
section $el
add $l " "
strlen $l $ll
lt $ll 32 $ce
if $ce
jump $el
end[/syntax]
Last edited by Corsix on Mon Feb 21, 2005 9:20 am, edited 1 time in total.
Code: Select all
#include <stdio.h>
char*_="XxTIHRCXCxTIHRXRCxTIHXHRCxTIXIHRCxTXTIHRCxXxTIHRCX";
int main(int l){for(l+=7;l!=putchar(010);++l);if(*(++_))main
(*_!=88?(putchar(*_^073)|putchar(33))&1:0xffff2a8b);}
User avatar
Corsix
 
Posts: 1181
Joined: Fri Jul 23, 2004 9:33 am
Location: Berkeley, UK

Postby Pests » Sun Feb 20, 2005 4:25 pm

Interesting code but I have no idea whats going on. Think anyone can try to explain?
Pests
 
Posts: 52
Joined: Thu Dec 11, 2003 5:28 pm

Previous

Return to Contests

Who is online

Users browsing this forum: Yahoo [Bot] and 0 guests