Move 1988-2004 entries into subdirs
We we move 1988-2004 entries from all of a year's winning entries in a single directory to each winner being in their own sub-directory under the given year directory.
This commit is contained in:
1 parent
1e82e8aa3e
commit
d2a42f42e8
478 files changed
No files matched your search
@@ -0,0 +1,103 @@
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <setjmp.h>
|
||||
#include <time.h>
|
||||
|
||||
#define I ??(i??)??(j??)
|
||||
#define K ??(i-1??)??(j??)
|
||||
#define S strtok(NULL,",\n\0")
|
||||
#define P printf(
|
||||
#define NB_MSGS 42
|
||||
#define C( f, m ) mNb = m;\
|
||||
s = setjmp( sT??( sI++ ??) );\
|
||||
if (!s) goto f;
|
||||
#define bck longjmp( sT??( --sI ??), 0 );
|
||||
|
||||
jmp_buf sT??( 256 ??);
|
||||
int m5??(84??),sI=0,c1='J'%2,mNb=0,s=0,mI=0,r=1;
|
||||
unsigned long m1??(32??),q=0,z;
|
||||
unsigned char m??( NB_MSGS ??)??( 11 ??);
|
||||
|
||||
int main( int argc, char *argv??(??) )
|
||||
{
|
||||
time_t tmT = time( NULL );
|
||||
struct tm *tmS = localtime( &tmT );
|
||||
char tms??( 7 ??);
|
||||
int hr,n,i=1,j=0;
|
||||
FILE *info = NULL;
|
||||
char iS??( 2048 ??);
|
||||
|
||||
if ( argc > 1 ) info = fopen( argv??(1??), "r" );
|
||||
strftime( tms, 7, "%H:%M\n", tmS );
|
||||
if ( info != NULL ) {
|
||||
fgets( iS, 2048, info );
|
||||
m5??( 0 ??) = atoi( strtok( iS, ",\0" ) );
|
||||
for ( hr = 1; hr < 85; hr++ ) m5??(hr??) = atoi(S);
|
||||
for ( hr = 0; hr < 32; hr++ )
|
||||
m1??( hr ??) = strtoul( S, NULL, 10 );
|
||||
for ( hr = 0; hr < NB_MSGS; hr++ )
|
||||
for ( n = 0; n < 11; n++ )
|
||||
m??(hr??)??(n??) = (unsigned char)atoi( S );
|
||||
fclose( info );
|
||||
hr = atoi( strtok( tms, ":\0" ) );
|
||||
n = atoi( strtok( NULL, ":\0" ) );
|
||||
C( mA, 0 )
|
||||
C( out, 40 )
|
||||
s = setjmp( sT??( sI++ ??) );
|
||||
if ( s ) {
|
||||
s = setjmp( sT??( sI++ ??) );
|
||||
if ( s ); else goto doHr;
|
||||
} else goto doMin;
|
||||
} else {
|
||||
P "%s", tms );
|
||||
goto eoj;
|
||||
doMin:
|
||||
z = 22;
|
||||
C( doIt, 0 )
|
||||
bck
|
||||
doHr:
|
||||
hr = ( n >= 36 ) ? hr+1 : hr;
|
||||
if ( hr == 24 ) hr=0;
|
||||
if (hr&&hr!=12)(hr<12)?(P "%d ",hr)):(P "%d ",hr-12));
|
||||
n = hr + 61;
|
||||
q = 0;
|
||||
r = 1;
|
||||
z = 16;
|
||||
C( doIt, 0 )
|
||||
P "\n" );
|
||||
bck
|
||||
doIt:
|
||||
if ( r & m1??( m5??(n??) ??) ) {
|
||||
if (z == 22) q = q << 1;
|
||||
C( out, q )
|
||||
if (z == 22) q = q >> 1;
|
||||
}
|
||||
r = r << 1;
|
||||
q++;
|
||||
if ( q < z ) goto doIt;
|
||||
bck
|
||||
out:
|
||||
mI = 0;
|
||||
mNb += c1;
|
||||
while ( m??( mNb ??)??( mI ??) )
|
||||
P "%c", m??( mNb ??)??( mI++ ??) );
|
||||
bck
|
||||
mA:
|
||||
129<=m I ? 137>=m I ? m K=m I-32
|
||||
: 145<=m I ? 153>=m I ? m K=m I-39
|
||||
: 162<=m I ? 169>=m I ? m K=m I -47
|
||||
: j : j : j : 125==m I ? m K=39
|
||||
: 64==m I ? m K=32 : j;
|
||||
j++;
|
||||
if (m I) goto mA;
|
||||
i+=2;
|
||||
j = 0;
|
||||
if ( i < NB_MSGS ) goto mA;
|
||||
bck
|
||||
}
|
||||
|
||||
eoj: exit( 0 );
|
||||
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
0,1,1,1,1,1,2,2,2,2,3,4,4,5,5,6,7,7,8,8,9,10,10,10,10,10,11,11,11,11,12,13,13,13,13,13,14,14,14,14,15,16,16,17,17,18,19,19,20,20,21,22,22,22,22,22,23,23,23,23,24,25,26,26,26,27,27,27,27,27,27,27,27,28,29,29,29,29,30,30,30,31,31,31,31,256,2560,561152,557312,166400,143360,139520,140800,200704,196864,199168,544768,540928,542208,331776,327936,329216,274432,270592,271872,299008,295168,296448,4096,0,1,20,68,256,1028,4100,16384,0,0,0,0,0,0,0,0,0,0,0,148,137,132,149,137,135,136,163,64,0,0,0,0,0,0,0,0,0,0,0,0,0,137,149,64,163,136,133,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,133,133,64,136,150,164,153,162,64,0,0,0,0,0,0,0,0,0,0,0,0,148,150,153,149,137,149,135,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,150,150,149,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,134,163,133,153,149,150,150,149,64,0,0,0,0,0,0,0,0,0,0,0,0,133,165,133,149,137,149,135,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,163,64,149,137,135,136,163,64,0,0,0,0,0,0,0,0,0,0,0,0,0,133,167,129,131,163,147,168,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,164,162,163,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,134,163,133,153,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,129,162,163,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,147,148,150,162,163,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,64,152,164,129,153,163,133,153,64,0,0,0,0,0,0,0,0,0,0,0,0,136,129,147,134,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,133,149,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,166,133,149,163,168,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,134,163,133,153,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,163,137,147,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,129,162,163,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,163,125,162,64,0,0,0,0,0,0
|
||||
|
||||
@@ -0,0 +1,65 @@
|
||||
Most Timely Output:
|
||||
|
||||
Craig Schneiderwent
|
||||
WI, USA
|
||||
|
||||
|
||||
Judges' Comments:
|
||||
|
||||
To build:
|
||||
|
||||
make schneiderwent
|
||||
|
||||
To run:
|
||||
|
||||
./schneiderwent schneiderwent.data
|
||||
|
||||
Very nice play by the rules and portable text obfuscation.
|
||||
This far surpasses old tricks like adding or subtracting 1
|
||||
from every character in a C string.
|
||||
|
||||
Translating the messages into your language of preference while
|
||||
keeping the program portable between different encodings
|
||||
(Chinese, Japanese, Russian - anyone?) may be an entertaining task.
|
||||
|
||||
|
||||
Selected Author's Comments:
|
||||
|
||||
This entry displays the current time to the console, for example:
|
||||
|
||||
it's just after ten 'til 6 in the evening
|
||||
|
||||
FWIW, none of the compilers with which this entry was tested issued
|
||||
any warnings or errors in compiling the source for this entry. No
|
||||
doubt lint will complain about the goto statements.
|
||||
|
||||
The schneiderwent.data file consists of the values used by multiple
|
||||
table lookups. This is simply good program design, separating
|
||||
these values from the source code allows changing the behavior of
|
||||
the application without recompiling.
|
||||
|
||||
Having learned COBOL at an early age, the pthreads of my thought
|
||||
processes tend to be translated into code in a verbose manner. Some
|
||||
of the #defines in this entry's code are to mitigate this personal
|
||||
deficiency.
|
||||
|
||||
Obfuscation in this entry consists of:
|
||||
|
||||
> printfing console messages stored as EBCDIC character values - this
|
||||
is not an attempt at encryption, but rather at cross platform
|
||||
compatibility
|
||||
> ASCII character values are calculated from the EBCDIC in a
|
||||
particularly ugly abuse of the '?' operator
|
||||
> detection of whether to print the ASCII or EBCDIC values is done by
|
||||
taking the remainder of dividing the character 'J' by 2 - the ASCII
|
||||
value of the character is even, the EBCDIC value is odd
|
||||
> the messages to be printfed are determined via multiple table
|
||||
lookups and bitmasked values
|
||||
> for minutes, the bit position turned on is multiplied by two
|
||||
to determine the message to be printfed
|
||||
> for hours, the straight bit position is used
|
||||
> this entry mostly eschews function calls for the often overlooked
|
||||
setjmp/longjmp combination
|
||||
> the trigraphs are not there as obfuscation nor are they there to
|
||||
annoy the judges - it's just the easiest way to get around the
|
||||
absence of square brackets in a normal 3270 environment
|
||||
@@ -0,0 +1,103 @@
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <setjmp.h>
|
||||
#include <time.h>
|
||||
|
||||
#define I ??(i??)??(j??)
|
||||
#define K ??(i-1??)??(j??)
|
||||
#define S strtok(NULL,",\n\0")
|
||||
#define P printf(
|
||||
#define NB_MSGS 42
|
||||
#define C( f, m ) mNb = m;\
|
||||
s = setjmp( sT??( sI++ ??) );\
|
||||
if (!s) goto f;
|
||||
#define bck longjmp( sT??( --sI ??), 0 );
|
||||
|
||||
jmp_buf sT??( 256 ??);
|
||||
int m5??(84??),sI=0,c1='J'%2,mNb=0,s=0,mI=0,r=1;
|
||||
unsigned long m1??(32??),q=0,z;
|
||||
unsigned char m??( NB_MSGS ??)??( 11 ??);
|
||||
|
||||
int main( int argc, char *argv??(??) )
|
||||
{
|
||||
time_t tmT = time( NULL );
|
||||
struct tm *tmS = localtime( &tmT );
|
||||
char tms??( 7 ??);
|
||||
int hr,n,i=1,j=0;
|
||||
FILE *info = NULL;
|
||||
char iS??( 2048 ??);
|
||||
|
||||
if ( argc > 1 ) info = fopen( argv??(1??), "r" );
|
||||
strftime( tms, 7, "%H:%M\0", tmS );
|
||||
if ( info != NULL ) {
|
||||
fgets( iS, 2048, info );
|
||||
m5??( 0 ??) = atoi( strtok( iS, ",\0" ) );
|
||||
for ( hr = 1; hr < 85; hr++ ) m5??(hr??) = atoi(S);
|
||||
for ( hr = 0; hr < 32; hr++ )
|
||||
m1??( hr ??) = strtoul( S, NULL, 10 );
|
||||
for ( hr = 0; hr < NB_MSGS; hr++ )
|
||||
for ( n = 0; n < 11; n++ )
|
||||
m??(hr??)??(n??) = (unsigned char)atoi( S );
|
||||
fclose( info );
|
||||
hr = atoi( strtok( tms, ":\0" ) );
|
||||
n = atoi( strtok( NULL, ":\0" ) );
|
||||
C( mA, 0 )
|
||||
C( out, 40 )
|
||||
s = setjmp( sT??( sI++ ??) );
|
||||
if ( s ) {
|
||||
s = setjmp( sT??( sI++ ??) );
|
||||
if ( s ); else goto doHr;
|
||||
} else goto doMin;
|
||||
} else {
|
||||
P "%s", tms );
|
||||
goto eoj;
|
||||
doMin:
|
||||
z = 22;
|
||||
C( doIt, 0 )
|
||||
bck
|
||||
doHr:
|
||||
hr = ( n >= 36 ) ? hr+1 : hr;
|
||||
if ( hr == 24 ) hr=0;
|
||||
if (hr&&hr!=12)(hr<12)?(P "%d ",hr)):(P "%d ",hr-12));
|
||||
n = hr + 61;
|
||||
q = 0;
|
||||
r = 1;
|
||||
z = 16;
|
||||
C( doIt, 0 )
|
||||
P "\n" );
|
||||
bck
|
||||
doIt:
|
||||
if ( r & m1??( m5??(n??) ??) ) {
|
||||
if (z == 22) q = q << 1;
|
||||
C( out, q )
|
||||
if (z == 22) q = q >> 1;
|
||||
}
|
||||
r = r << 1;
|
||||
q++;
|
||||
if ( q < z ) goto doIt;
|
||||
bck
|
||||
out:
|
||||
mI = 0;
|
||||
mNb += c1;
|
||||
while ( m??( mNb ??)??( mI ??) )
|
||||
P "%c", m??( mNb ??)??( mI++ ??) );
|
||||
bck
|
||||
mA:
|
||||
129<=m I ? 137>=m I ? m K=m I-32
|
||||
: 145<=m I ? 153>=m I ? m K=m I-39
|
||||
: 162<=m I ? 169>=m I ? m K=m I -47
|
||||
: j : j : j : 125==m I ? m K=39
|
||||
: 64==m I ? m K=32 : j;
|
||||
j++;
|
||||
if (m I) goto mA;
|
||||
i+=2;
|
||||
j = 0;
|
||||
if ( i < NB_MSGS ) goto mA;
|
||||
bck
|
||||
}
|
||||
|
||||
eoj: exit( 0 );
|
||||
|
||||
}
|
||||
Reference in new issue
Block a user