Day 11: Plutonian Pebbles

Megathread guidelines

  • Keep top level comments as only solutions, if you want to say something other than a solution put it in a new post. (replies to comments can be whatever)
  • You can send code in code blocks by using three backticks, the code, and then three backticks or use something such as https://topaz.github.io/paste/ if you prefer sending it through a URL

FAQ

  • sjmulder@lemmy.sdf.org
    link
    fedilink
    arrow-up
    5
    ·
    edit-2
    14 days ago

    Zee

    Zee is my Dutch dialect of C. Since Dutch has compound words, so does Zee: “const char **” becomes vasteletterverwijzingsverwijzing, not vaste letter verwijzing verwijzing, which would be incorrect. A pointer to a long long unsigned int is, obviously, a zeergrootnatuurlijkgetalverwijzing.

    Code
    #ingesloten "zee.kop"
    #ingesloten "algemeen.kop"
    
    besloten getal
    splits(
        zeer groot natuurlijk getal x,
        zeergrootnatuurlijkgetalverwijzing a,
        zeergrootnatuurlijkgetalverwijzing b)
    {
    	zeer groot natuurlijk getal m;
    	getal n, g;
    
    	mits (!x) lever 0;
    	voor (n=0, m=1; m<=x;  n++, m*=10) ; mits (n%2) lever 0;
    	voor (g=0, m=1; g<n/2; g++, m*=10) ;
    	volg a = x/m;
    	volg b = x%m; lever 1;
    }
    
    #definieer GEHL (1024*1024)
    besloten zeer groot natuurlijk getal geh[GEHL][76];
    
    besloten zeer groot natuurlijk getal
    afdalen(zeer groot natuurlijk getal w, getal n)
    {
    	zeer groot natuurlijk getal a,b;
    
    	mits (n<1 ) lever 1;
    	mits (w==0) lever afdalen(1, n-1);
    	mits (w<10) lever afdalen(w*2024, n-1);
    	mits (w<GEHL && geh[w][n])        lever geh[w][n];
    	mits (!splits(w, naar a, naar b)) lever afdalen(w*2024, n-1);
    
    	lever w<GEHL ? geh[w][n] =
    	    afdalen(a, n-1) + afdalen(b, n-1) :
    	    afdalen(a, n-1) + afdalen(b, n-1);
    }
    
    getal
    aanvang(getal parametersom, vasteletterverwijzingsverwijzing parameters)
    {
    	zeer groot natuurlijk getal d1=0,d2=0, waarde;
    
    	mits (parametersom > 1)
    		VERWERP(heropen(parameters[1], "r", standaardinvoer));
    
    	zolang (invorm(" %llu", &waarde) == 1) {
    		d1 += afdalen(waarde, 25);
    		d2 += afdalen(waarde, 75);
    	}
    
    	uitvorm("11: %llu %llu\n", d1, d2);
    	lever 0;
    }
    

    And of course we don’t have a Makefile but a Maakbestand:

    alles: €{DAGEN}
    
    schoon:
    	€{WIS} -f €{DAGEN} *.o
    
    ...
    
    .TWIJFELACHTIG:	alles schoon oplossingen
    .UITGANGEN:	.zee .o
    
    .zee.o:
    	€{ZEE} €{VOORWERKVLAG} €{ZEEVLAG} -o €@ -c €<
    
      • sjmulder@lemmy.sdf.org
        link
        fedilink
        arrow-up
        3
        ·
        edit-2
        15 days ago

        No it’s just me messing about with macros (but it does work!)

        I do want to explore the type naming rules, see if I can write a parser for it. The C rules are funky by themselves but this is another level. “vaste letterverwijzing” is “char * const” but “vasteletterverwijzing” (without the space) is “const char *”. Then there’s grammatical gender: “vast getal” (const int) but “vaste letter” (const char)