This file contains 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
// Copyright Chris Patuzzo 2016, Brendan Jackman 2019 | |
// This is a modification of Chris Patuzzo's original Sentient example for | |
// finding self-enumerating pangrams - you can see the original here: | |
// https://sentient-lang.org/examples/self-enumerating-pangram | |
// I've added some comments and extended it | |
// a) to work on larger values (the original assumed that there would be no | |
// more than forty of any given letter), and | |
// b) to also find "near-miss" solutions - because for longer seed texts you | |
// usually find there are no solutions. This hack lets you write a seed | |
// text, find near-solutions, then tweak letters in your seed text to make | |
// it accurately self-enumerating! This massively increases the runtime of | |
// the program. The measure of a "near" solution is controlled by the maxErr | |
// and numErrs variables. | |
// I also made lookupTable start from zero instead of one, this is just for | |
// convenience of certain added code. | |
function^ pangram () { | |
function^ main () { | |
// Working with values up to 999 so we need 10 bits of our integers. Plus | |
// the sign bit makes 11 | |
array26<int11> sentenceSeed, letterCounts; | |
// How "wrong" can a given letter tally be? | |
int11 maxErr; | |
// How many letters can have a non-zero error? | |
int numErrs; | |
// Now we count up how many of each letter will appear in the overall | |
// sentence. The key unit of data here is a 26-length array, counting the | |
// occurences of each letter in a piece of text. | |
numberOfPlurals = letterCounts.countBy(*moreThanOne?); | |
// We translate each letterCount into one of those array26s | |
lettersForEachNumber = letterCounts.map(*lettersForNumberWord); | |
// Now we flatten the above into a single array26 | |
numberOfEachLetter = lettersForEachNumber.transpose.map(*sum); | |
// Now we add the "mandatory letter", the "s" for plurals, and the seed text | |
numberOfEachLetter = numberOfEachLetter.map(*addMandatoryLetter); | |
numberOfEachLetter = numberOfEachLetter.addArray(sentenceSeed); | |
numberOfEachLetter = numberOfEachLetter.addPlurals(numberOfPlurals); | |
// Now we calculate the error in the counts for each letter. The original | |
// code effectively just required that these values were zero. | |
// Helpful analogy: [a, b].transpose in Sentient is like zip(a, b) in Python. | |
errors = [numberOfEachLetter, letterCounts].transpose.map(function^ (pair) { | |
return pair.first - pair.last; | |
}); | |
// No error can exceed maxErr | |
invariant errors.all?(function^ (e) { return abs(e) <= maxErr; }); | |
// There can be no more than numErrs non-zero errors | |
invariant errors.countBy(function (e) { return e != 0; }) <= numErrs; | |
// The below are just optimisations | |
invariant sentenceSeed.all?(*inBounds?); | |
invariant letterCounts.all?(*inBounds?); | |
expose sentenceSeed, letterCounts, maxErr, numErrs; | |
}; | |
function moreThanOne? (n) { | |
return n > 1; | |
}; | |
function^ lettersForNumberWord (n) { | |
// For letter words up to ninety-nine we just use a lookup table. But | |
// extending the lookup table up to 1000 entries made the computation way | |
// too slow. So instead this function implements the generation of larger | |
// number phrases logically. There are four components to the number phrase, | |
// for example: 999 becomes ["nine", "hundred", "and", "ninety-nine"]. | |
// For phrases that don't include all for components we use lookupTable[0] | |
// which contains all zeroes (representing the empty string). | |
// So 100 -> ["one", "hundred", "", ""] | |
// 21 -> [ "". "", "", "twenty-one"] | |
// So 101 -> ["one", "hundred", "and", "one"] | |
hundreds, remainder = n.divmod(100); | |
parts = [ | |
lookupTable[hundreds], | |
(hundreds > 0) ? hundredLetters : lookupTable[0], | |
(hundreds > 0 && remainder > 0) ? andLetters : lookupTable[0], | |
lookupTable[remainder] | |
]; | |
// Now we squash the four parts by summing "vertically" like we did for | |
// lettersForEachNumber. | |
return parts.transpose.map(*sum); | |
}; | |
function addMandatoryLetter (n) { | |
return n + 1; | |
}; | |
function addArray (self, other) { | |
return [self, other].transpose.map(*sum); | |
}; | |
function addPlurals (self, numberOfPlurals) { | |
return self.map(function^ (n, index) { | |
return isPlural?(index) ? n + numberOfPlurals : n; | |
}); | |
}; | |
function isPlural? (index) { | |
return index == 18; # S | |
}; | |
function inBounds? (n) { | |
return n >= 0 && n <= 999; | |
}; | |
main(); | |
}; | |
hundredLetters = [0, 0, 0, 2, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0]; # HUNDRED | |
andLetters = [1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; # AND | |
lookupTable = [ | |
# A B C D E F G H I J K L M N O P Q R S T U V W X Y Z | |
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], # (zero - does not appear) | |
[0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], # ONE | |
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0], # TWO | |
[0, 0, 0, 0, 2, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0], # THREE | |
[0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0], # FOUR | |
[0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0], # FIVE | |
[0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0], # SIX | |
[0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0], # SEVEN | |
[0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0], # EIGHT | |
[0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], # NINE | |
[0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0], # TEN | |
[0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0], # ELEVEN | |
[0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0], # TWELVE | |
[0, 0, 0, 0, 2, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0], # THIRTEEN | |
[0, 0, 0, 0, 2, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0], # FOURTEEN | |
[0, 0, 0, 0, 2, 2, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0], # FIFTEEN | |
[0, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0], # SIXTEEN | |
[0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0], # SEVENTEEN | |
[0, 0, 0, 0, 3, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0], # EIGHTEEN | |
[0, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0], # NINETEEN | |
[0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 2, 0, 0, 1, 0, 1, 0], # TWENTY | |
[0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 0, 0, 0, 0, 2, 0, 0, 1, 0, 1, 0], # TWENTY-ONE | |
[0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 3, 0, 0, 2, 0, 1, 0], # TWENTY-TWO | |
[0, 0, 0, 0, 3, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3, 0, 0, 1, 0, 1, 0], # TWENTY-THREE | |
[0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 2, 1, 0, 1, 0, 1, 0], # TWENTY-FOUR | |
[0, 0, 0, 0, 2, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 2, 0, 1, 1, 0, 1, 0], # TWENTY-FIVE | |
[0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 2, 0, 0, 1, 1, 1, 0], # TWENTY-SIX | |
[0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 1, 2, 0, 1, 1, 0, 1, 0], # TWENTY-SEVEN | |
[0, 0, 0, 0, 2, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 3, 0, 0, 1, 0, 1, 0], # TWENTY-EIGHT | |
[0, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 2, 0, 0, 1, 0, 1, 0], # TWENTY-NINE | |
[0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 1, 0], # THIRTY | |
[0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 2, 0, 0, 0, 0, 1, 0], # THIRTY-ONE | |
[0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 3, 0, 0, 1, 0, 1, 0], # THIRTY-TWO | |
[0, 0, 0, 0, 2, 0, 0, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 3, 0, 0, 0, 0, 1, 0], # THIRTY-THREE | |
[0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 2, 0, 2, 1, 0, 0, 0, 1, 0], # THIRTY-FOUR | |
[0, 0, 0, 0, 1, 1, 0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 1, 0, 0, 1, 0], # THIRTY-FIVE | |
[0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 0, 0, 0, 1, 1, 0], # THIRTY-SIX | |
[0, 0, 0, 0, 2, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 2, 0, 1, 0, 0, 1, 0], # THIRTY-SEVEN | |
[0, 0, 0, 0, 1, 0, 1, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 1, 0], # THIRTY-EIGHT | |
[0, 0, 0, 0, 1, 0, 0, 1, 2, 0, 0, 0, 0, 2, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 1, 0], # THIRTY-NINE | |
[0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0], # FORTY | |
[0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0], # FORTY-ONE | |
[0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 1, 0, 2, 0, 0, 1, 0, 1, 0], # FORTY-TWO | |
[0, 0, 0, 0, 2, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 2, 0, 2, 0, 0, 0, 0, 1, 0], # FORTY-THREE | |
[0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 1, 1, 0, 0, 0, 1, 0], # FORTY-FOUR | |
[0, 0, 0, 0, 1, 2, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0], # FORTY-FIVE | |
[0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0], # FORTY-SIX | |
[0, 0, 0, 0, 2, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0], # FORTY-SEVEN | |
[0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 2, 0, 0, 0, 0, 1, 0], # FORTY-EIGHT | |
[0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 2, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0], # FORTY-NINE | |
[0, 0, 0, 0, 0, 2, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0], # FIFTY | |
[0, 0, 0, 0, 1, 2, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0], # FIFTY-ONE | |
[0, 0, 0, 0, 0, 2, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 1, 0, 1, 0], # FIFTY-TWO | |
[0, 0, 0, 0, 2, 2, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 1, 0], # FIFTY-THREE | |
[0, 0, 0, 0, 0, 3, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0], # FIFTY-FOUR | |
[0, 0, 0, 0, 1, 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0], # FIFTY-FIVE | |
[0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0], # FIFTY-SIX | |
[0, 0, 0, 0, 2, 2, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0], # FIFTY-SEVEN | |
[0, 0, 0, 0, 1, 2, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 1, 0], # FIFTY-EIGHT | |
[0, 0, 0, 0, 1, 2, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0], # FIFTY-NINE | |
[0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0], # SIXTY | |
[0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0], # SIXTY-ONE | |
[0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 2, 0, 0, 1, 1, 1, 0], # SIXTY-TWO | |
[0, 0, 0, 0, 2, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 0, 0, 0, 1, 1, 0], # SIXTY-THREE | |
[0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0], # SIXTY-FOUR | |
[0, 0, 0, 0, 1, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0], # SIXTY-FIVE | |
[0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 0, 0, 0, 2, 1, 0], # SIXTY-SIX | |
[0, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 1, 0, 1, 0, 1, 1, 0], # SIXTY-SEVEN | |
[0, 0, 0, 0, 1, 0, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 1, 1, 0], # SIXTY-EIGHT | |
[0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0], # SIXTY-NINE | |
[0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0], # SEVENTY | |
[0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0], # SEVENTY-ONE | |
[0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 2, 0, 1, 1, 0, 1, 0], # SEVENTY-TWO | |
[0, 0, 0, 0, 4, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 2, 0, 1, 0, 0, 1, 0], # SEVENTY-THREE | |
[0, 0, 0, 0, 2, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0], # SEVENTY-FOUR | |
[0, 0, 0, 0, 3, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 2, 0, 0, 1, 0], # SEVENTY-FIVE | |
[0, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 1, 0, 1, 0, 1, 1, 0], # SEVENTY-SIX | |
[0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 1, 0, 2, 0, 0, 1, 0], # SEVENTY-SEVEN | |
[0, 0, 0, 0, 3, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 2, 0, 1, 0, 0, 1, 0], # SEVENTY-EIGHT | |
[0, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 3, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0], # SEVENTY-NINE | |
[0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0], # EIGHTY | |
[0, 0, 0, 0, 2, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0], # EIGHTY-ONE | |
[0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 1, 0, 1, 0], # EIGHTY-TWO | |
[0, 0, 0, 0, 3, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 1, 0], # EIGHTY-THREE | |
[0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0], # EIGHTY-FOUR | |
[0, 0, 0, 0, 2, 1, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0], # EIGHTY-FIVE | |
[0, 0, 0, 0, 1, 0, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0], # EIGHTY-SIX | |
[0, 0, 0, 0, 3, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0], # EIGHTY-SEVEN | |
[0, 0, 0, 0, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 1, 0], # EIGHTY-EIGHT | |
[0, 0, 0, 0, 2, 0, 1, 1, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0], # EIGHTY-NINE | |
[0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0], # NINETY | |
[0, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0], # NINETY-ONE | |
[0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 2, 1, 0, 0, 0, 0, 2, 0, 0, 1, 0, 1, 0], # NINETY-TWO | |
[0, 0, 0, 0, 3, 0, 0, 1, 1, 0, 0, 0, 0, 2, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 1, 0], # NINETY-THREE | |
[0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 2, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0], # NINETY-FOUR | |
[0, 0, 0, 0, 2, 1, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0], # NINETY-FIVE | |
[0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0], # NINETY-SIX | |
[0, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 3, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0], # NINETY-SEVEN | |
[0, 0, 0, 0, 2, 0, 1, 1, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 1, 0], # NINETY-EIGHT | |
[0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0] # NINETY-NINE | |
]; | |
pangram(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment