program Palindromes { // return a palindrome if it can be generated from given letters char[] load() char[] res; char in; int c, num; { print('l'); print('?'); read(num); res = new char[num]; c = 0; while (c= 97 && ord(s[i]) <= 122) { letters[ord(s[i]) - 97]++; } i++; } oddChar = ' '; palindrome = new char[len(s)]; counter = 0; i = 0; ret = 1; while (i < len(letters) && ret != 0) { if (letters[i] > 0 && letters[i] % 2 == 0) { j = 1; while (j <= letters[i] / 2) { palindrome[counter] = chr(i + 97); counter++; j++; } } else if (letters[i] > 0 && oddChar == ' ') { oddChar = chr(i + 97); j = 1; while (j <= letters[i] / 2) { palindrome[counter] = chr(i + 97); counter++; j++; } } else if (letters[i] % 2 != 0 && oddChar != ' ') { ret = 0; } i++; } palindromeRes = copy(palindrome, counter); if (ret == 0) { return null; } else if (oddChar != ' ') { return concatA(concatC(palindromeRes, oddChar), reverse(palindromeRes)); } else { return concatA(palindromeRes, reverse(palindromeRes)); } } void main() char[] input; int response; { input = load(); printArr(input); printArr(findPalindrome(input)); } }