g | x | w | all
Bytes Lang Time Link
100Some Spreadsheet250728T205527Zdoubleun
490Standard Pascal250728T183917ZQOO-OOKA
333Python250728T183348ZQOO-OOKA

Some Spreadsheet, 100 bytes

=let(y,year(C1),m,month(C1),d,day(C1),index(A:A,mod(y*m*d,20)+1)&" "&index(B:B,mod((y+m)*d^2,20)+1))

The formula will work in Some Spreadsheet that happens to have those words in columns A and B and the target date in cell C1. Not sure where you should go to download Some Spreadsheet but I'm confident it exists.

screenshot

Standard Pascal, 490 bytes

function f(y,m,d:integer):string;const a:array[0..19] of string=('Little','Magnetic','Gentle','Enough','Efficient','Inefficient','Grand','Cute','Gaming','Important','Master','Light','Heavy','Hard','Soft','Easy','Awesome','Real','Dirty','Fake');n:array[0..19] of string=('Bomb','Speaker','Mission','Feather','Arrow','Action','Focus','Animal','Computer','Cloud','Sun','Mouse','Wine','Cake','Money','Panel','Diamond','Chair','Wall','House');begin f:=a[y*m*d mod 20]+' '+n[(y+m)*d*d mod 20]end;

The reason it's longer than python answers is pascal lacks dynamic types, lists and symbols (mod is worse than % of python)

y is year, m is month and d is day.

Tested and worked on delphi.

Python, 333 bytes

f=lambda y,m,d:'Little0Magnetic0Gentle0Enough0Efficient0Inefficient0Grand0Cute0Gaming0Important0Master0Light0Heavy0Hard0Soft0Easy0Awesome0Real0Dirty0Fake'.split('0')[y*m*d%20]+' '+'Bomb0Speaker0Mission0Feather0Arrow0Action0Focus0Animal0Computer0Cloud0Sun0Mouse0Wine0Cake0Money0Panel0Diamond0Chair0Wall0House'.split('0')[(y+m)*d*d%20]

y is year, m is month and d is day.

Uses a smart way. First splits values with separator of 0, and uses .split('0') to turn to list type exactly. Then, reads with index of result.