/* What are the five numbers? in Picat. https://twitter.com/wtgowers/status/1581667648592826369 """ I'm genuinely baffled by this question from my daughter's homework. What is the intended answer? Maybe I'll find out over the next week. [ A set of five numbers has: mode of 24 median of 21 mean of 20 What are the 5 numbers? ] """ [[11,20,21,24,24],mode = 24,mean = 20,median = 21] [[12,19,21,24,24],mode = 24,mean = 20,median = 21] [[13,18,21,24,24],mode = 24,mean = 20,median = 21] [[14,17,21,24,24],mode = 24,mean = 20,median = 21] [[15,16,21,24,24],mode = 24,mean = 20,median = 21] This program was created by Hakan Kjellerstrand, hakank@gmail.com See also my Picat page: http://www.hakank.org/picat/ */ import cp. main => go. go => X = new_list(5), X :: 1..100, increasing(X), % symmetry breaking mode(X,24), median(X,21), mean(X,20), Vars = X, solve(Vars), mode(X,Mode), median(X,Median), mean(X,Mean), println([X,mode=Mode,mean=Mean,median=Median]), fail, nl. % % We assume integer values. % mean(X,Mean) => Mean*X.len #= sum(X). median(X,Median) => Median #= X[ceiling(X.len / 2)]. mode(X,Mode) => element(_,X,Mode), % Mode must be in the list % Count the number of occurrences of each number MaxVal = max([fd_max(X[I]) : I in 1..X.len]), GCC = new_list(MaxVal+1), GCC :: 0..X.len, global_cardinality(X,$[I-GCC[I] : I in 1..MaxVal]), % the max value is unique element(Mode,GCC,ModeNum), ModeNum #> 1, sum([V #= ModeNum : V in GCC ]) #= 1.