I had a spare fifteen minutes and decided that I should tidy up my monorepo. The work of tidying up is not finished; this is a small step in the right direction. TL;DR - Created a tools directory - Created a scratch directory (see README.md for more information) - Added README.md to third_party - Renamed delete_dotfile_symlinks -> symlinkManager - Packaged symlinkManager as an executable symlink-mgr using buildGo
		
			
				
	
	
		
			49 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| from collections import Counter
 | |
| import unittest
 | |
| 
 | |
| 
 | |
| ################################################################################
 | |
| # Impl
 | |
| ################################################################################
 | |
| # palindromifiable :: String -> Boolean
 | |
| def has_palindrome_permutation(x):
 | |
|     bag = Counter(x)
 | |
|     odd_entries_ct = 0
 | |
| 
 | |
|     for _, y in bag.items():
 | |
|         if y % 2 != 0:
 | |
|             odd_entries_ct += 1
 | |
| 
 | |
|     return odd_entries_ct in {0, 1}
 | |
| 
 | |
| 
 | |
| ################################################################################
 | |
| # Tests
 | |
| ################################################################################
 | |
| class Test(unittest.TestCase):
 | |
|     def test_permutation_with_odd_number_of_chars(self):
 | |
|         result = has_palindrome_permutation('aabcbcd')
 | |
|         self.assertTrue(result)
 | |
| 
 | |
|     def test_permutation_with_even_number_of_chars(self):
 | |
|         result = has_palindrome_permutation('aabccbdd')
 | |
|         self.assertTrue(result)
 | |
| 
 | |
|     def test_no_permutation_with_odd_number_of_chars(self):
 | |
|         result = has_palindrome_permutation('aabcd')
 | |
|         self.assertFalse(result)
 | |
| 
 | |
|     def test_no_permutation_with_even_number_of_chars(self):
 | |
|         result = has_palindrome_permutation('aabbcd')
 | |
|         self.assertFalse(result)
 | |
| 
 | |
|     def test_empty_string(self):
 | |
|         result = has_palindrome_permutation('')
 | |
|         self.assertTrue(result)
 | |
| 
 | |
|     def test_one_character_string(self):
 | |
|         result = has_palindrome_permutation('a')
 | |
|         self.assertTrue(result)
 | |
| 
 | |
| 
 | |
| unittest.main(verbosity=2)
 |