***************************************************************************** * www.FindStat.org - The Combinatorial Statistic Finder * * * * Copyright (C) 2019 The FindStatCrew * * * * This information is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * ***************************************************************************** ----------------------------------------------------------------------------- Statistic identifier: St000681 ----------------------------------------------------------------------------- Collection: Integer partitions ----------------------------------------------------------------------------- Description: The Grundy value of Chomp on Ferrers diagrams. Players take turns and choose a cell of the diagram, cutting off all cells below and to the right of this cell in English notation. The player who is left with the single cell partition looses. The traditional version is played on chocolate bars, see [1]. This statistic is the Grundy value of the partition, that is, the smallest non-negative integer which does not occur as value of a partition obtained by a single move. ----------------------------------------------------------------------------- References: [1] [[wikipedia:Chomp]] ----------------------------------------------------------------------------- Code: @cached_function def statistic(pi): """Return the Grundy value of the Ferrers diagram pi for Chomp. sage: statistic(Partition([1])) 0 sage: statistic(Partition([1,1])) 1 sage: statistic(Partition([2,1])) 0 """ def children(la): for row, col in la.cells(): if (row,col) != (0,0): yield Partition(la[:row] + [min(r, col) for r in la[row:]]) pi = Partition(pi) if pi.size() == 0: return elif pi.size() == 1: return 0 else: l = [statistic(la) for la in children(pi)] i = 0 while i in l: i += 1 return i ----------------------------------------------------------------------------- Statistic values: [2] => 1 [1,1] => 1 [3] => 2 [2,1] => 0 [1,1,1] => 2 [4] => 3 [3,1] => 3 [2,2] => 2 [2,1,1] => 3 [1,1,1,1] => 3 [5] => 4 [4,1] => 2 [3,2] => 0 [3,1,1] => 0 [2,2,1] => 0 [2,1,1,1] => 2 [1,1,1,1,1] => 4 [6] => 5 [5,1] => 5 [4,2] => 4 [4,1,1] => 1 [3,3] => 4 [3,2,1] => 1 [3,1,1,1] => 1 [2,2,2] => 4 [2,2,1,1] => 4 [2,1,1,1,1] => 5 [1,1,1,1,1,1] => 5 [7] => 6 [6,1] => 4 [5,2] => 3 [5,1,1] => 6 [4,3] => 0 [4,2,1] => 5 [4,1,1,1] => 0 [3,3,1] => 3 [3,2,2] => 3 [3,2,1,1] => 5 [3,1,1,1,1] => 6 [2,2,2,1] => 0 [2,2,1,1,1] => 3 [2,1,1,1,1,1] => 4 [1,1,1,1,1,1,1] => 6 [8] => 7 [7,1] => 7 [6,2] => 6 [6,1,1] => 7 [5,3] => 6 [5,2,1] => 7 [5,1,1,1] => 7 [4,4] => 5 [4,3,1] => 4 [4,2,2] => 0 [4,2,1,1] => 1 [4,1,1,1,1] => 7 [3,3,2] => 1 [3,3,1,1] => 0 [3,2,2,1] => 4 [3,2,1,1,1] => 7 [3,1,1,1,1,1] => 7 [2,2,2,2] => 5 [2,2,2,1,1] => 6 [2,2,1,1,1,1] => 6 [2,1,1,1,1,1,1] => 7 [1,1,1,1,1,1,1,1] => 7 [9] => 8 [8,1] => 6 [7,2] => 5 [7,1,1] => 4 [6,3] => 3 [6,2,1] => 3 [6,1,1,1] => 6 [5,4] => 0 [5,3,1] => 1 [5,2,2] => 1 [5,2,1,1] => 0 [5,1,1,1,1] => 0 [4,4,1] => 6 [4,3,2] => 5 [4,3,1,1] => 2 [4,2,2,1] => 2 [4,2,1,1,1] => 0 [4,1,1,1,1,1] => 6 [3,3,3] => 5 [3,3,2,1] => 5 [3,3,1,1,1] => 1 [3,2,2,2] => 6 [3,2,2,1,1] => 1 [3,2,1,1,1,1] => 3 [3,1,1,1,1,1,1] => 4 [2,2,2,2,1] => 0 [2,2,2,1,1,1] => 3 [2,2,1,1,1,1,1] => 5 [2,1,1,1,1,1,1,1] => 6 [1,1,1,1,1,1,1,1,1] => 8 [10] => 9 [9,1] => 9 [8,2] => 8 [8,1,1] => 5 [7,3] => 8 [7,2,1] => 8 [7,1,1,1] => 5 [6,4] => 7 [6,3,1] => 6 [6,2,2] => 8 [6,2,1,1] => 2 [6,1,1,1,1] => 1 [5,5] => 7 [5,4,1] => 5 [5,3,2] => 0 [5,3,1,1] => 5 [5,2,2,1] => 5 [5,2,1,1,1] => 1 [5,1,1,1,1,1] => 1 [4,4,2] => 7 [4,4,1,1] => 7 [4,3,3] => 6 [4,3,2,1] => 1 [4,3,1,1,1] => 5 [4,2,2,2] => 7 [4,2,2,1,1] => 5 [4,2,1,1,1,1] => 2 [4,1,1,1,1,1,1] => 5 [3,3,3,1] => 6 [3,3,2,2] => 7 [3,3,2,1,1] => 0 [3,3,1,1,1,1] => 8 [3,2,2,2,1] => 5 [3,2,2,1,1,1] => 6 [3,2,1,1,1,1,1] => 8 [3,1,1,1,1,1,1,1] => 5 [2,2,2,2,2] => 7 [2,2,2,2,1,1] => 7 [2,2,2,1,1,1,1] => 8 [2,2,1,1,1,1,1,1] => 8 [2,1,1,1,1,1,1,1,1] => 9 [1,1,1,1,1,1,1,1,1,1] => 9 [11] => 10 [10,1] => 8 [9,2] => 7 [9,1,1] => 10 [8,3] => 5 [8,2,1] => 4 [8,1,1,1] => 4 [7,4] => 3 [7,3,1] => 5 [7,2,2] => 7 [7,2,1,1] => 7 [7,1,1,1,1] => 2 [6,5] => 0 [6,4,1] => 1 [6,3,2] => 9 [6,3,1,1] => 1 [6,2,2,1] => 1 [6,2,1,1,1] => 8 [6,1,1,1,1,1] => 0 [5,5,1] => 8 [5,4,2] => 3 [5,4,1,1] => 1 [5,3,3] => 3 [5,3,2,1] => 2 [5,3,1,1,1] => 2 [5,2,2,2] => 2 [5,2,2,1,1] => 2 [5,2,1,1,1,1] => 8 [5,1,1,1,1,1,1] => 2 [4,4,3] => 8 [4,4,2,1] => 4 [4,4,1,1,1] => 2 [4,3,3,1] => 4 [4,3,2,2] => 4 [4,3,2,1,1] => 2 [4,3,1,1,1,1] => 1 [4,2,2,2,1] => 1 [4,2,2,1,1,1] => 1 [4,2,1,1,1,1,1] => 7 [4,1,1,1,1,1,1,1] => 4 [3,3,3,2] => 8 [3,3,3,1,1] => 3 [3,3,2,2,1] => 3 [3,3,2,1,1,1] => 9 [3,3,1,1,1,1,1] => 7 [3,2,2,2,2] => 8 [3,2,2,2,1,1] => 1 [3,2,2,1,1,1,1] => 5 [3,2,1,1,1,1,1,1] => 4 [3,1,1,1,1,1,1,1,1] => 10 [2,2,2,2,2,1] => 0 [2,2,2,2,1,1,1] => 3 [2,2,2,1,1,1,1,1] => 5 [2,2,1,1,1,1,1,1,1] => 7 [2,1,1,1,1,1,1,1,1,1] => 8 [1,1,1,1,1,1,1,1,1,1,1] => 10 [12] => 11 [11,1] => 11 [10,2] => 10 [10,1,1] => 11 [9,3] => 10 [9,2,1] => 6 [9,1,1,1] => 11 [8,4] => 9 [8,3,1] => 8 [8,2,2] => 6 [8,2,1,1] => 6 [8,1,1,1,1] => 3 [7,5] => 9 [7,4,1] => 7 [7,3,2] => 3 [7,3,1,1] => 9 [7,2,2,1] => 8 [7,2,1,1,1] => 9 [7,1,1,1,1,1] => 3 [6,6] => 8 [6,5,1] => 4 [6,4,2] => 0 [6,4,1,1] => 8 [6,3,3] => 0 [6,3,2,1] => 4 [6,3,1,1,1] => 0 [6,2,2,2] => 0 [6,2,2,1,1] => 0 [6,2,1,1,1,1] => 1 [6,1,1,1,1,1,1] => 3 [5,5,2] => 5 [5,5,1,1] => 2 [5,4,3] => 7 [5,4,2,1] => 6 [5,4,1,1,1] => 6 [5,3,3,1] => 1 [5,3,2,2] => 1 [5,3,2,1,1] => 1 [5,3,1,1,1,1] => 0 [5,2,2,2,1] => 6 [5,2,2,1,1,1] => 0 [5,2,1,1,1,1,1] => 9 [5,1,1,1,1,1,1,1] => 3 [4,4,4] => 9 [4,4,3,1] => 1 [4,4,2,2] => 1 [4,4,2,1,1] => 1 [4,4,1,1,1,1] => 0 [4,3,3,2] => 1 [4,3,3,1,1] => 1 [4,3,2,2,1] => 6 [4,3,2,1,1,1] => 4 [4,3,1,1,1,1,1] => 8 [4,2,2,2,2] => 2 [4,2,2,2,1,1] => 8 [4,2,2,1,1,1,1] => 9 [4,2,1,1,1,1,1,1] => 6 [4,1,1,1,1,1,1,1,1] => 11 [3,3,3,3] => 9 [3,3,3,2,1] => 7 [3,3,3,1,1,1] => 0 [3,3,2,2,2] => 5 [3,3,2,2,1,1] => 0 [3,3,2,1,1,1,1] => 3 [3,3,1,1,1,1,1,1] => 6 [3,2,2,2,2,1] => 4 [3,2,2,2,1,1,1] => 7 [3,2,2,1,1,1,1,1] => 8 [3,2,1,1,1,1,1,1,1] => 6 [3,1,1,1,1,1,1,1,1,1] => 11 [2,2,2,2,2,2] => 8 [2,2,2,2,2,1,1] => 9 [2,2,2,2,1,1,1,1] => 9 [2,2,2,1,1,1,1,1,1] => 10 [2,2,1,1,1,1,1,1,1,1] => 10 [2,1,1,1,1,1,1,1,1,1,1] => 11 [1,1,1,1,1,1,1,1,1,1,1,1] => 11 ----------------------------------------------------------------------------- Created: Jan 05, 2017 at 20:33 by Martin Rubey ----------------------------------------------------------------------------- Last Updated: Jan 05, 2017 at 20:33 by Martin Rubey