color(red). color(blue). color(green). color(yellow).

neighbor(StateAColor, StateBColor) :- 
    color(StateAColor),
    color(StateBColor),
    StateAColor \= StateBColor.

germany(SH, MV, HH, HB, NI, ST, BE, BB, SN, NW, HE, TH, RP, SL, BW, BY) :- 
neighbor(SH, NI), neighbor(SH, HH), neighbor(SH, MV),
neighbor(HH, NI),
neighbor(MV, NI), neighbor(MV, BB),
neighbor(NI, HB), neighbor(NI, BB), neighbor(NI, ST), neighbor(NI, TH),
neighbor(NI, HE), neighbor(NI, NW),
neighbor(ST, BB), neighbor(ST, SN), neighbor(ST, TH),
neighbor(BB, BE), neighbor(BB, SN),
neighbor(NW, HE), neighbor(NW, RP),
neighbor(SN, TH), neighbor(SN, BY),
neighbor(RP, SL), neighbor(RP, HE), neighbor(RP, BW),
neighbor(HE, BW), neighbor(HE, TH), neighbor(HE, BY),
neighbor(TH, BY),
neighbor(BW, BY).

switzerland(AG, AI, AR, BE, BL, BS, FR, GE, GL, GR, JU, LU, NE, NW, OW, SG, SH, SO, SZ, TG, TI, UR, VD, VS, ZG, ZH) :-
neighbor(AG, BE),
neighbor(AG, BL),
neighbor(AG, LU),
neighbor(AG, SO),
neighbor(AG, ZG),
neighbor(AG, ZH),
neighbor(AI, AR),
neighbor(AI, SG),
neighbor(AR, SG),
neighbor(BE, FR),
neighbor(BE, JU),
neighbor(BE, LU),
neighbor(BE, NE),
neighbor(BE, NW),
neighbor(BE, OW),
neighbor(BE, SO),
neighbor(BE, UR),
neighbor(BE, VD),
neighbor(BE, VS),
neighbor(BL, BS),
neighbor(BL, JU),
neighbor(BL, SO),
neighbor(FR, NE),
neighbor(FR, VD),
neighbor(FR, VS),
neighbor(GE, VD),
neighbor(GL, GR),
neighbor(GL, SG),
neighbor(GL, SZ),
neighbor(GL, UR),
neighbor(GR, SG),
neighbor(GR, TI),
neighbor(GR, UR),
neighbor(JU, NE),
neighbor(JU, SO),
neighbor(LU, NW),
neighbor(LU, OW),
neighbor(LU, SO),
neighbor(LU, SZ),
neighbor(LU, ZG),
neighbor(NE, VD),
neighbor(NW, OW),
neighbor(NW, SZ),
neighbor(NW, UR),
neighbor(OW, UR),
neighbor(SG, SZ),
neighbor(SG, TG),
neighbor(SG, ZH),
neighbor(SH, TG),
neighbor(SH, ZH),
neighbor(SZ, UR),
neighbor(SZ, ZG),
neighbor(SZ, ZH),
neighbor(TG, ZH),
neighbor(TI, UR),
neighbor(TI, VS),
neighbor(UR, VS),
neighbor(VD, VS),
neighbor(ZH, ZG).

