Created
October 12, 2021 23:42
-
-
Save Lydxn/5cc75ab94c18056427823b9d4b67dc02 to your computer and use it in GitHub Desktop.
Brute force program for solving "https://codegolf.stackexchange.com/questions/199638/egg-sausage-bacon-and-spam-lovely-spam/" in Python.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// find solutions in the form: | |
// lambda s:hash(s+'????')%3 | |
#include <stdio.h> | |
#define NUM 32 | |
#define MIN 1 | |
#define MAX 127 | |
#define HBASE 1000003 | |
long long v[24][32] = { | |
{3567998172912873408LL, 3567998172913873411LL, 3567998172914873414LL, 3567998172916873420LL, 3567999172918873417LL, 3567999172917873414LL, 3567999172916873411LL, 3567999172922873429LL, 4568007172939873435LL, 4568007172938873432LL, 4568007172941873441LL, 4568007172943873447LL, 4568006172933873426LL, 4568006172934873429LL, 4568006172931873420LL, 4568006172929873414LL, 4461916972878738865LL, 4461916972877738862LL, 4461916972876738859LL, 4461916972882738877LL, 4461915972872738856LL, 4461915972873738859LL, 4461915972874738862LL, 4461915972876738868LL, 3461907972851738838LL, 3461907972852738841LL, 3461907972849738832LL, 3461907972855738850LL, 3461908972857738847LL, 3461908972856738844LL, 3461908972859738853LL, 3461908972853738835LL}, | |
{3567998172912873408LL, 3567999172918873417LL, 3568000172924873426LL, 3568002172936873444LL, 3567998172913873411LL, 3567999172917873414LL, 3568000172925873429LL, 3568002172937873447LL, 4568007172939873435LL, 4568006172933873426LL, 4568005172927873417LL, 4568011173059873759LL, 4568007172938873432LL, 4568006172934873429LL, 4568005172926873414LL, 4568011173058873756LL, 4461916972878738865LL, 4461915972872738856LL, 4461918972858738787LL, 4461920972870738805LL, 4461916972877738862LL, 4461915972873738859LL, 4461918972857738784LL, 4461920972869738802LL, 3461907972851738838LL, 3461908972857738847LL, 3461905972743738532LL, 3461903972731738514LL, 3461907972852738841LL, 3461908972856738844LL, 3461905972744738535LL, 3461903972732738517LL}, | |
{3567998172912873408LL, 3567998172913873411LL, 3567998172914873414LL, 3567998172916873420LL, 4568007172939873435LL, 4568007172938873432LL, 4568007172941873441LL, 4568007172943873447LL, 3567999172918873417LL, 3567999172917873414LL, 3567999172916873411LL, 3567999172922873429LL, 4568006172933873426LL, 4568006172934873429LL, 4568006172931873420LL, 4568006172929873414LL, 4461916972878738865LL, 4461916972877738862LL, 4461916972876738859LL, 4461916972882738877LL, 3461907972851738838LL, 3461907972852738841LL, 3461907972849738832LL, 3461907972855738850LL, 4461915972872738856LL, 4461915972873738859LL, 4461915972874738862LL, 4461915972876738868LL, 3461908972857738847LL, 3461908972856738844LL, 3461908972859738853LL, 3461908972853738835LL}, | |
{3567998172912873408LL, 3567999172918873417LL, 3568000172924873426LL, 3568002172936873444LL, 4568007172939873435LL, 4568006172933873426LL, 4568005172927873417LL, 4568011173059873759LL, 3567998172913873411LL, 3567999172917873414LL, 3568000172925873429LL, 3568002172937873447LL, 4568007172938873432LL, 4568006172934873429LL, 4568005172926873414LL, 4568011173058873756LL, 4461916972878738865LL, 4461915972872738856LL, 4461918972858738787LL, 4461920972870738805LL, 3461907972851738838LL, 3461908972857738847LL, 3461905972743738532LL, 3461903972731738514LL, 4461916972877738862LL, 4461915972873738859LL, 4461918972857738784LL, 4461920972869738802LL, 3461907972852738841LL, 3461908972856738844LL, 3461905972744738535LL, 3461903972732738517LL}, | |
{3567998172912873408LL, 4568007172939873435LL, 5568016173062873750LL, 7568034173084873708LL, 3567998172913873411LL, 4568007172938873432LL, 5568016173063873753LL, 7568034173085873711LL, 3567999172918873417LL, 4568006172933873426LL, 5568017173068873759LL, 7568035173090873717LL, 3567999172917873414LL, 4568006172934873429LL, 5568017173067873756LL, 7568035173089873714LL, 4461916972878738865LL, 3461907972851738838LL, 2461898972728738523LL, 8461920972794738685LL, 4461916972877738862LL, 3461907972852738841LL, 2461898972727738520LL, 8461920972793738682LL, 4461915972872738856LL, 3461908972857738847LL, 2461897972722738514LL, 8461919972788738676LL, 4461915972873738859LL, 3461908972856738844LL, 2461897972723738517LL, 8461919972789738679LL}, | |
{3567998172912873408LL, 4568007172939873435LL, 5568016173062873750LL, 7568034173084873708LL, 3567999172918873417LL, 4568006172933873426LL, 5568017173068873759LL, 7568035173090873717LL, 3567998172913873411LL, 4568007172938873432LL, 5568016173063873753LL, 7568034173085873711LL, 3567999172917873414LL, 4568006172934873429LL, 5568017173067873756LL, 7568035173089873714LL, 4461916972878738865LL, 3461907972851738838LL, 2461898972728738523LL, 8461920972794738685LL, 4461915972872738856LL, 3461908972857738847LL, 2461897972722738514LL, 8461919972788738676LL, 4461916972877738862LL, 3461907972852738841LL, 2461898972727738520LL, 8461920972793738682LL, 4461915972873738859LL, 3461908972856738844LL, 2461897972723738517LL, 8461919972789738679LL}, | |
{3567998172912873408LL, 3567998172913873411LL, 3567998172914873414LL, 3567998172916873420LL, 3567999172918873417LL, 3567999172917873414LL, 3567999172916873411LL, 3567999172922873429LL, 4461916972878738865LL, 4461916972877738862LL, 4461916972876738859LL, 4461916972882738877LL, 4461915972872738856LL, 4461915972873738859LL, 4461915972874738862LL, 4461915972876738868LL, 4568007172939873435LL, 4568007172938873432LL, 4568007172941873441LL, 4568007172943873447LL, 4568006172933873426LL, 4568006172934873429LL, 4568006172931873420LL, 4568006172929873414LL, 3461907972851738838LL, 3461907972852738841LL, 3461907972849738832LL, 3461907972855738850LL, 3461908972857738847LL, 3461908972856738844LL, 3461908972859738853LL, 3461908972853738835LL}, | |
{3567998172912873408LL, 3567999172918873417LL, 3568000172924873426LL, 3568002172936873444LL, 3567998172913873411LL, 3567999172917873414LL, 3568000172925873429LL, 3568002172937873447LL, 4461916972878738865LL, 4461915972872738856LL, 4461918972858738787LL, 4461920972870738805LL, 4461916972877738862LL, 4461915972873738859LL, 4461918972857738784LL, 4461920972869738802LL, 4568007172939873435LL, 4568006172933873426LL, 4568005172927873417LL, 4568011173059873759LL, 4568007172938873432LL, 4568006172934873429LL, 4568005172926873414LL, 4568011173058873756LL, 3461907972851738838LL, 3461908972857738847LL, 3461905972743738532LL, 3461903972731738514LL, 3461907972852738841LL, 3461908972856738844LL, 3461905972744738535LL, 3461903972732738517LL}, | |
{3567998172912873408LL, 3567998172913873411LL, 3567998172914873414LL, 3567998172916873420LL, 4568007172939873435LL, 4568007172938873432LL, 4568007172941873441LL, 4568007172943873447LL, 4461916972878738865LL, 4461916972877738862LL, 4461916972876738859LL, 4461916972882738877LL, 3461907972851738838LL, 3461907972852738841LL, 3461907972849738832LL, 3461907972855738850LL, 3567999172918873417LL, 3567999172917873414LL, 3567999172916873411LL, 3567999172922873429LL, 4568006172933873426LL, 4568006172934873429LL, 4568006172931873420LL, 4568006172929873414LL, 4461915972872738856LL, 4461915972873738859LL, 4461915972874738862LL, 4461915972876738868LL, 3461908972857738847LL, 3461908972856738844LL, 3461908972859738853LL, 3461908972853738835LL}, | |
{3567998172912873408LL, 3567999172918873417LL, 3568000172924873426LL, 3568002172936873444LL, 4568007172939873435LL, 4568006172933873426LL, 4568005172927873417LL, 4568011173059873759LL, 4461916972878738865LL, 4461915972872738856LL, 4461918972858738787LL, 4461920972870738805LL, 3461907972851738838LL, 3461908972857738847LL, 3461905972743738532LL, 3461903972731738514LL, 3567998172913873411LL, 3567999172917873414LL, 3568000172925873429LL, 3568002172937873447LL, 4568007172938873432LL, 4568006172934873429LL, 4568005172926873414LL, 4568011173058873756LL, 4461916972877738862LL, 4461915972873738859LL, 4461918972857738784LL, 4461920972869738802LL, 3461907972852738841LL, 3461908972856738844LL, 3461905972744738535LL, 3461903972732738517LL}, | |
{3567998172912873408LL, 4568007172939873435LL, 5568016173062873750LL, 7568034173084873708LL, 3567998172913873411LL, 4568007172938873432LL, 5568016173063873753LL, 7568034173085873711LL, 4461916972878738865LL, 3461907972851738838LL, 2461898972728738523LL, 8461920972794738685LL, 4461916972877738862LL, 3461907972852738841LL, 2461898972727738520LL, 8461920972793738682LL, 3567999172918873417LL, 4568006172933873426LL, 5568017173068873759LL, 7568035173090873717LL, 3567999172917873414LL, 4568006172934873429LL, 5568017173067873756LL, 7568035173089873714LL, 4461915972872738856LL, 3461908972857738847LL, 2461897972722738514LL, 8461919972788738676LL, 4461915972873738859LL, 3461908972856738844LL, 2461897972723738517LL, 8461919972789738679LL}, | |
{3567998172912873408LL, 4568007172939873435LL, 5568016173062873750LL, 7568034173084873708LL, 3567999172918873417LL, 4568006172933873426LL, 5568017173068873759LL, 7568035173090873717LL, 4461916972878738865LL, 3461907972851738838LL, 2461898972728738523LL, 8461920972794738685LL, 4461915972872738856LL, 3461908972857738847LL, 2461897972722738514LL, 8461919972788738676LL, 3567998172913873411LL, 4568007172938873432LL, 5568016173063873753LL, 7568034173085873711LL, 3567999172917873414LL, 4568006172934873429LL, 5568017173067873756LL, 7568035173089873714LL, 4461916972877738862LL, 3461907972852738841LL, 2461898972727738520LL, 8461920972793738682LL, 4461915972873738859LL, 3461908972856738844LL, 2461897972723738517LL, 8461919972789738679LL}, | |
{3567998172912873408LL, 3567998172913873411LL, 3567998172914873414LL, 3567998172916873420LL, 4461916972878738865LL, 4461916972877738862LL, 4461916972876738859LL, 4461916972882738877LL, 3567999172918873417LL, 3567999172917873414LL, 3567999172916873411LL, 3567999172922873429LL, 4461915972872738856LL, 4461915972873738859LL, 4461915972874738862LL, 4461915972876738868LL, 4568007172939873435LL, 4568007172938873432LL, 4568007172941873441LL, 4568007172943873447LL, 3461907972851738838LL, 3461907972852738841LL, 3461907972849738832LL, 3461907972855738850LL, 4568006172933873426LL, 4568006172934873429LL, 4568006172931873420LL, 4568006172929873414LL, 3461908972857738847LL, 3461908972856738844LL, 3461908972859738853LL, 3461908972853738835LL}, | |
{3567998172912873408LL, 3567999172918873417LL, 3568000172924873426LL, 3568002172936873444LL, 4461916972878738865LL, 4461915972872738856LL, 4461918972858738787LL, 4461920972870738805LL, 3567998172913873411LL, 3567999172917873414LL, 3568000172925873429LL, 3568002172937873447LL, 4461916972877738862LL, 4461915972873738859LL, 4461918972857738784LL, 4461920972869738802LL, 4568007172939873435LL, 4568006172933873426LL, 4568005172927873417LL, 4568011173059873759LL, 3461907972851738838LL, 3461908972857738847LL, 3461905972743738532LL, 3461903972731738514LL, 4568007172938873432LL, 4568006172934873429LL, 4568005172926873414LL, 4568011173058873756LL, 3461907972852738841LL, 3461908972856738844LL, 3461905972744738535LL, 3461903972732738517LL}, | |
{3567998172912873408LL, 3567998172913873411LL, 3567998172914873414LL, 3567998172916873420LL, 4461916972878738865LL, 4461916972877738862LL, 4461916972876738859LL, 4461916972882738877LL, 4568007172939873435LL, 4568007172938873432LL, 4568007172941873441LL, 4568007172943873447LL, 3461907972851738838LL, 3461907972852738841LL, 3461907972849738832LL, 3461907972855738850LL, 3567999172918873417LL, 3567999172917873414LL, 3567999172916873411LL, 3567999172922873429LL, 4461915972872738856LL, 4461915972873738859LL, 4461915972874738862LL, 4461915972876738868LL, 4568006172933873426LL, 4568006172934873429LL, 4568006172931873420LL, 4568006172929873414LL, 3461908972857738847LL, 3461908972856738844LL, 3461908972859738853LL, 3461908972853738835LL}, | |
{3567998172912873408LL, 3567999172918873417LL, 3568000172924873426LL, 3568002172936873444LL, 4461916972878738865LL, 4461915972872738856LL, 4461918972858738787LL, 4461920972870738805LL, 4568007172939873435LL, 4568006172933873426LL, 4568005172927873417LL, 4568011173059873759LL, 3461907972851738838LL, 3461908972857738847LL, 3461905972743738532LL, 3461903972731738514LL, 3567998172913873411LL, 3567999172917873414LL, 3568000172925873429LL, 3568002172937873447LL, 4461916972877738862LL, 4461915972873738859LL, 4461918972857738784LL, 4461920972869738802LL, 4568007172938873432LL, 4568006172934873429LL, 4568005172926873414LL, 4568011173058873756LL, 3461907972852738841LL, 3461908972856738844LL, 3461905972744738535LL, 3461903972732738517LL}, | |
{3567998172912873408LL, 4568007172939873435LL, 5568016173062873750LL, 7568034173084873708LL, 4461916972878738865LL, 3461907972851738838LL, 2461898972728738523LL, 8461920972794738685LL, 3567998172913873411LL, 4568007172938873432LL, 5568016173063873753LL, 7568034173085873711LL, 4461916972877738862LL, 3461907972852738841LL, 2461898972727738520LL, 8461920972793738682LL, 3567999172918873417LL, 4568006172933873426LL, 5568017173068873759LL, 7568035173090873717LL, 4461915972872738856LL, 3461908972857738847LL, 2461897972722738514LL, 8461919972788738676LL, 3567999172917873414LL, 4568006172934873429LL, 5568017173067873756LL, 7568035173089873714LL, 4461915972873738859LL, 3461908972856738844LL, 2461897972723738517LL, 8461919972789738679LL}, | |
{3567998172912873408LL, 4568007172939873435LL, 5568016173062873750LL, 7568034173084873708LL, 4461916972878738865LL, 3461907972851738838LL, 2461898972728738523LL, 8461920972794738685LL, 3567999172918873417LL, 4568006172933873426LL, 5568017173068873759LL, 7568035173090873717LL, 4461915972872738856LL, 3461908972857738847LL, 2461897972722738514LL, 8461919972788738676LL, 3567998172913873411LL, 4568007172938873432LL, 5568016173063873753LL, 7568034173085873711LL, 4461916972877738862LL, 3461907972852738841LL, 2461898972727738520LL, 8461920972793738682LL, 3567999172917873414LL, 4568006172934873429LL, 5568017173067873756LL, 7568035173089873714LL, 4461915972873738859LL, 3461908972856738844LL, 2461897972723738517LL, 8461919972789738679LL}, | |
{3567998172912873408LL, 4461916972878738865LL, 5355803772556603746LL, 7143737372840334852LL, 3567998172913873411LL, 4461916972877738862LL, 5355803772557603749LL, 7143737372841334855LL, 3567999172918873417LL, 4461915972872738856LL, 5355804772562603755LL, 7143738372846334861LL, 3567999172917873414LL, 4461915972873738859LL, 5355804772561603752LL, 7143738372845334858LL, 4568007172939873435LL, 3461907972851738838LL, 6355812772583603773LL, 8143746372835334783LL, 4568007172938873432LL, 3461907972852738841LL, 6355812772582603770LL, 8143746372834334780LL, 4568006172933873426LL, 3461908972857738847LL, 6355811772577603764LL, 8143745372829334774LL, 4568006172934873429LL, 3461908972856738844LL, 6355811772578603767LL, 8143745372830334777LL}, | |
{3567998172912873408LL, 4461916972878738865LL, 5355803772556603746LL, 7143737372840334852LL, 3567999172918873417LL, 4461915972872738856LL, 5355804772562603755LL, 7143738372846334861LL, 3567998172913873411LL, 4461916972877738862LL, 5355803772557603749LL, 7143737372841334855LL, 3567999172917873414LL, 4461915972873738859LL, 5355804772561603752LL, 7143738372845334858LL, 4568007172939873435LL, 3461907972851738838LL, 6355812772583603773LL, 8143746372835334783LL, 4568006172933873426LL, 3461908972857738847LL, 6355811772577603764LL, 8143745372829334774LL, 4568007172938873432LL, 3461907972852738841LL, 6355812772582603770LL, 8143746372834334780LL, 4568006172934873429LL, 3461908972856738844LL, 6355811772578603767LL, 8143745372830334777LL}, | |
{3567998172912873408LL, 4461916972878738865LL, 5355803772556603746LL, 7143737372840334852LL, 3567998172913873411LL, 4461916972877738862LL, 5355803772557603749LL, 7143737372841334855LL, 4568007172939873435LL, 3461907972851738838LL, 6355812772583603773LL, 8143746372835334783LL, 4568007172938873432LL, 3461907972852738841LL, 6355812772582603770LL, 8143746372834334780LL, 3567999172918873417LL, 4461915972872738856LL, 5355804772562603755LL, 7143738372846334861LL, 3567999172917873414LL, 4461915972873738859LL, 5355804772561603752LL, 7143738372845334858LL, 4568006172933873426LL, 3461908972857738847LL, 6355811772577603764LL, 8143745372829334774LL, 4568006172934873429LL, 3461908972856738844LL, 6355811772578603767LL, 8143745372830334777LL}, | |
{3567998172912873408LL, 4461916972878738865LL, 5355803772556603746LL, 7143737372840334852LL, 3567999172918873417LL, 4461915972872738856LL, 5355804772562603755LL, 7143738372846334861LL, 4568007172939873435LL, 3461907972851738838LL, 6355812772583603773LL, 8143746372835334783LL, 4568006172933873426LL, 3461908972857738847LL, 6355811772577603764LL, 8143745372829334774LL, 3567998172913873411LL, 4461916972877738862LL, 5355803772557603749LL, 7143737372841334855LL, 3567999172917873414LL, 4461915972873738859LL, 5355804772561603752LL, 7143738372845334858LL, 4568007172938873432LL, 3461907972852738841LL, 6355812772582603770LL, 8143746372834334780LL, 4568006172934873429LL, 3461908972856738844LL, 6355811772578603767LL, 8143745372830334777LL}, | |
{3567998172912873408LL, 4461916972878738865LL, 5355803772556603746LL, 7143737372840334852LL, 4568007172939873435LL, 3461907972851738838LL, 6355812772583603773LL, 8143746372835334783LL, 3567998172913873411LL, 4461916972877738862LL, 5355803772557603749LL, 7143737372841334855LL, 4568007172938873432LL, 3461907972852738841LL, 6355812772582603770LL, 8143746372834334780LL, 3567999172918873417LL, 4461915972872738856LL, 5355804772562603755LL, 7143738372846334861LL, 4568006172933873426LL, 3461908972857738847LL, 6355811772577603764LL, 8143745372829334774LL, 3567999172917873414LL, 4461915972873738859LL, 5355804772561603752LL, 7143738372845334858LL, 4568006172934873429LL, 3461908972856738844LL, 6355811772578603767LL, 8143745372830334777LL}, | |
{3567998172912873408LL, 4461916972878738865LL, 5355803772556603746LL, 7143737372840334852LL, 4568007172939873435LL, 3461907972851738838LL, 6355812772583603773LL, 8143746372835334783LL, 3567999172918873417LL, 4461915972872738856LL, 5355804772562603755LL, 7143738372846334861LL, 4568006172933873426LL, 3461908972857738847LL, 6355811772577603764LL, 8143745372829334774LL, 3567998172913873411LL, 4461916972877738862LL, 5355803772557603749LL, 7143737372841334855LL, 4568007172938873432LL, 3461907972852738841LL, 6355812772582603770LL, 8143746372834334780LL, 3567999172917873414LL, 4461915972873738859LL, 5355804772561603752LL, 7143738372845334858LL, 4568006172934873429LL, 3461908972856738844LL, 6355811772578603767LL, 8143745372830334777LL} | |
}; | |
_Bool outp[NUM] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0}; | |
int perm[24][4] = {{0, 1, 2, 3}, {0, 1, 3, 2}, {0, 2, 1, 3}, {0, 2, 3, 1}, {0, 3, 1, 2}, {0, 3, 2, 1}, {1, 0, 2, 3}, {1, 0, 3, 2}, {1, 2, 0, 3}, {1, 2, 3, 0}, {1, 3, 0, 2}, {1, 3, 2, 0}, {2, 0, 1, 3}, {2, 0, 3, 1}, {2, 1, 0, 3}, {2, 1, 3, 0}, {2, 3, 0, 1}, {2, 3, 1, 0}, {3, 0, 1, 2}, {3, 0, 2, 1}, {3, 1, 0, 2}, {3, 1, 2, 0}, {3, 2, 0, 1}, {3, 2, 1, 0}}; | |
long long v0[NUM], v1[NUM], v2[NUM]; | |
char order[4]; | |
int main() { | |
for (int p = 0; p < 24; p++) { | |
for (int c0 = MIN; c0 <= MAX; c0++) { | |
for (int i0 = 0; i0 < NUM; i0++) v0[i0] = (v[p][i0] ^ c0) * HBASE; | |
for (int c1 = MIN; c1 <= MAX; c1++) { | |
for (int i1 = 0; i1 < NUM; i1++) v1[i1] = (v0[i1] ^ c1) * HBASE; | |
for (int c2 = MIN; c2 <= MAX; c2++) { | |
for (int i2 = 0; i2 < NUM; i2++) v2[i2] = (v1[i2] ^ c2) * HBASE; | |
for (int c3 = MIN; c3 <= MAX; c3++) { | |
for (int i3 = 0; i3 < NUM; i3++) | |
if (((v2[i3] ^ c3 ^ 8) % 3 == 0) != outp[i3]) | |
goto next; | |
for (int i = 0; i < 4; i++) | |
order[i] = "esbS"[perm[p][i]]; | |
printf("found: (%d,%d,%d,%d) [%s]\n", c0, c1, c2, c3, order); | |
next:; | |
} | |
} | |
} | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment