291 tokens in C for part 2 by Akke
Download solution
#include<stdio.h>
#include<string.h>
size_tNBUF=0
charBUF[1000][100]
size_tSEEN[1000][1000]={0}
size_t_nways(char*src,char*dst)
{
if(!strncmp(src,dst,3))
return1
size_ti,i1,i2,o
for(i=0,i1=NBUF,i2=NBUFi<NBUFi++)
if(!strncmp(BUF[i],src,3))i1=i
elseif(!strncmp(BUF[i],dst,3))i2=i
if(!SEEN[i1][i2])
for(o=5,SEEN[i1][i2]=1o<strlen(BUF[i1])o+=4)
SEEN[i1][i2]+=_nways(BUF[i1]+o,dst)
returnSEEN[i1][i2]-1
}
size_tnways(char*s)
{
returnstrlen(s)==3?1:_nways(s,s+3)*nways(s+3)
}
intmain()
{
while(fgets(BUF[NBUF],100,stdin))
NBUF++
printf("%ld\n",nways("svrdacfftout")+nways("svrfftdacout"))
return0
}